On Sun, Nov 8, 2015 at 11:11 AM, Pavel Pisa <p...@cmp.felk.cvut.cz> wrote:
> Hello Martin and others,

Hi Pavel. I'll comment on the POM and GPIO-related things, since we're
not currently using Ethernet (nor are we familiar with how the TMS
handles it).

>    The complete GPIO API or at least xx_gpio_set(), xx_gpio_clear(),
>    xx_gpio_write(), xx_gpio_get() and lpc24xx_pin_config() would be
>    nice in future. If the actual pin configuration should be reimplemented
>    to support that API or if it API should be wrapper to pinmux functions
>    is a question. The mapping between GPIO and actual pins is quite complex
>    in TMS570 case because pins are mapped by pinmux to peripherals and
>    in case, that given peripheral does not use given pin/terminal for
>    its specific purpose then peripheral includes set of registers to use
>    its available pins as GPIO.
>
>    I think that actual simple code is valuable and should be included
>    in mainline for now even if there is found time to replace it by
>    more complete one later.

If transitioning to the new API would be that problematic, then I
support keeping it as it is right now. However, I think the core
maintainers should also have a say on this. Maybe there are benefits
on supporting the new API that we're not seeing.

>  * there are some changes used for VIM, POM and other parts debugging
>    and issues solving. Most of these is not intended for mainline.
>
>  * set of changes to not use exception vectors replace if it is not required
>    (RTEMS application image starts at address 0). When replacement is 
> necessary,
>    POM is used only to deliver target addresses and not to replace jump
>    instructions now because instruction fetches from POM reveals to be 
> unreliable.
>    All related code is amended by comprehensive comments to understand
>    its function and reasons why used solution has been selected
>
>      
> https://github.com/AoLaD/rtems/commit/7dab9093bc8211816def58460efef8958b041904

I saw you added this function before tms570_pom_remap:

+void tms570_initialize_and_clear(void)
+{
+  int i;
+
+  TMS570_POM.GLBCTRL = 0 | (TMS570_POM_GLBCTRL_OTADDR(~0) &
+                            pom_global_overlay_target_address_start);
+
+  for ( i = 0; i < TMS570_POM_REGIONS; ++i ) {
+    TMS570_POM.REG[i].REGSIZE =
TMS570_POM_REGSIZE_SIZE(TMS570_POM_REGSIZE_DISABLED);
+  }
+}

I don't see the point of doing (0 | something).

I see you'll only be calling tms570_pom_remap if
bsp_start_vector_table_begin isn't zero. This looks good enough for
our use case, though I'd prefer if you didn't use the hardcoded zero.
This is merely a stylistic suggestion though.

In any case, is there a reason why you're seting the OTADDR in
tms570_initialize_and_clear if you're gonna overwrite it later in
tms570_pom_remap (or, in our case, not use it at all)? I think simply
setting TMS570_POM.GLBCTRL to zero would be clearer.

I also don't see the point of doing bsp_int_vec_overlay_start =
ORIGIN(RAM_INT_VEC) in the flash-based linker script, though since
it's not gonna be used anyway it shouldn't do any harm. A comment
explaining this would be nice.

Just to be sure, I checked the Technical Reference Manual again and
noticed the ON/OFF bits of the POM GLBCTRL must be 0x5 to activate the
POM (as opposed to the 0xA it's being passed). I know it works with
0xA (since you've been testing it like this), so perhaps it's a
documentation error? I also noticed that the 'OFF' setting says: "The
key should be written to 5h, to avoid single bit flips inadvertently
turning on the module", which seems to reinforce the 0xA value.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to