[PATCH] Fixes for TMS570 BSP

Robin Müller robin.mueller.m at gmail.com
Fri Jul 16 11:59:47 UTC 2021


Hello,

 I think this patch was forgotten. Pushing it up :-)

Kind regards
Robin

On Tue, 20 Apr 2021 at 16:56, Robin Müller <robin.mueller.m at gmail.com>
wrote:

> I am currently extending the lwIP port provided by you for the
> STM32H743ZI-Nucleo. I am also extending it to be more easily adaptable to
> other BSPs and new ports:
> https://github.com/rmspacefish/rtems-lwip/tree/78ec73e89644c2ffa3b66c94239e1dc6ccf8a2f8
> .
>
> I've managed to receive UDP packets via RAW Api, and I will test the other
> lwIP APIs and TCP soon as well.  It would be amazing if you can test
> whether your port still works properly after I have tested everything.
> I managed to compile it with the BSP fixes some time ago, but some other
> files have changed again.. I can notify you when I have tested everything.
>
> Kind Regards
> Robin
>
> On Mon, 19 Apr 2021 at 21:02, Pavel Pisa <ppisa4lists at pikron.com> wrote:
>
>> Hello Robin and Gedare,
>>
>> (sent again to pass into the list)
>>
>> On Monday 19 of April 2021 19:13:29 Gedare Bloom wrote:
>> > Hi Robin, Pavel:
>> >
>> > On Mon, Apr 19, 2021 at 2:57 AM Robin Müller <robin.mueller.m at gmail.com>
>> wrote:
>> > > If this was intentional, I can also adapt the lwIP port sources to use
>> > > ti/herc. I was not sure about that.
>> >
>> > I think Pavel should comment. I believe at the time care was taken to
>> > avoid importing TI HalCoGen code generation, and maybe this missing
>> > ti_herc is an artifact from that. I think over time TI has moved
>> > toward providing a slightly better license (2-clause BSD with hardware
>> > restriction) on their HAL/SOC libs. We won't merge code with the
>> > hardware restriction clause. So it can be a little problematic to get
>> > things working nicely, it has to be well documented the steps to
>> > reproduce setups based on restrictive vendor-provided code.
>> >
>> > That's what I remember anyway. Pavel may explain better.
>>
>> Yes, the main problem has been incompatible license, other problem
>> is that HalCoGen header files was and probably is still different
>> for different family members. It seems to make header files to be
>> generated
>> partly by hand and by different people, some code fills hexadecimal
>> numbers
>> into registers without using predefined bit fields etc., basically
>> basically the code quality which should never go into any safety related
>> application.
>>
>> Premysl Houdek has workend o project as part of thesis work and GSoC.
>> He converted complete fields description from the manual to the JSON
>> files and then generated all header files according to format,
>> which has been declared as the best one by Embedded Brains for other
>> BSPs. Se the project with headers generation
>>
>>   https://github.com/AoLaD/rtems-tms570-utils
>>
>> But we have added option to compile RTEMS BSP with HalCoGen
>> generated files the first. Then we have written UART
>> and other parts from scratch, because there was not full documentation
>> for test subsystem init, there has been some parts taken
>> from Ti example files and where possible tidied up to use
>> symbols for bitfields. When BSP is compiled with
>>
>>   TMS570_USE_HWINIT_STARTUP=1
>>
>> it can start without external initialization or loader.
>>
>> Long term plan has been to add support for TMS570LC4357
>> as well but cooperation with other universities, open-source
>> and RTEMS has been of no interrest of my former head...
>>
>> The work on this BSP is on my very long todo list, but
>> with very low priority....
>>
>> Anyway, we achieved to port LwIP to RTEMS BSP, TMS570 part
>> is generally rewrite from scratch, we have failde many times
>> at that time with Ti provided code even with their FreeRTOS
>> code. Our port is in omk-devel branch of the next repo
>>
>>   https://sourceforge.net/p/ulan/lwip-omk/ci/omk-devel/tree/
>>
>> Code worked with FreeRTOS and HalCoGen BSP as well as with RTEMS
>>
>>
>> https://sourceforge.net/p/ulan/lwip-omk/ci/omk-devel/tree/ports/driver/tms570_emac/
>>
>> https://sourceforge.net/p/ulan/lwip-omk/ci/omk-devel/tree/ports/os/rtems/
>>
>> But on RTEMS there is some way to go still to integrate LwIP
>> with RTEMS+NEWLIB to be usable same way as old included BSD
>> and new external BSD stack. I hope that things move forward
>> during this year GSoC.
>>
>> As for changes, I have not worked with TMS570 RTEMS for long time.
>> Again, I would like to check that BSP runs correctly before next
>> release, but time is a problem, so no promise there.
>>
>> If there is problem with defines collision, I ACK to change
>> names. In the fact, it seems to be incorrect even in past.
>>
>> I have worked with BSP before switch to YAML based build,
>> so I cannot say what is right for now. But ti_herc seems
>> to be consistet with headers location in the BSP sources,
>> so I think that the change is correct as well.
>>
>>
>> > > On Mon, 19 Apr 2021 at 10:55, Robin Mueller <
>> robin.mueller.m at gmail.com> wrote:
>> > >> When compiling the lwIP port for the TMS570, there
>> > >> were issues with the BSP. Headers are expected in a folder
>> > >> named ti_herc which did not exist. This fixes the issue.
>> > >>
>> > >> Furthermore, there were multiple warnings about define redefinitions.
>> > >> This was fixed as well.
>> > >> ---
>> > >>  bsps/arm/tms570/include/bsp/irq.h  | 6 +++---
>> > >>  spec/build/bsps/arm/tms570/obj.yml | 2 +-
>> > >>  2 files changed, 4 insertions(+), 4 deletions(-)
>> > >>
>> > >> diff --git a/bsps/arm/tms570/include/bsp/irq.h
>> > >> b/bsps/arm/tms570/include/bsp/irq.h index c37ebadbc4..0b6ea1e6fd
>> 100644
>> > >> --- a/bsps/arm/tms570/include/bsp/irq.h
>> > >> +++ b/bsps/arm/tms570/include/bsp/irq.h
>> > >> @@ -34,7 +34,7 @@
>> > >>
>> > >>  #define BSP_INTERRUPT_VECTOR_MIN 0U
>> > >>  #define TMS570_IRQ_ESM_HIGH 0
>> > >> -#define TMS570_IRQ_RESERVED 1
>> > >> +#define TMS570_IRQ_RESERVED_0 1
>> > >>  #define TMS570_IRQ_TIMER_0 2
>> > >>  #define TMS570_IRQ_TIMER_1 3
>> > >>  #define TMS570_IRQ_TIMER_2 4
>> > >> @@ -50,7 +50,7 @@
>> > >>  #define TMS570_IRQ_ADC1_EVENT 14
>> > >>  #define TMS570_IRQ_ADC1_GROUP_1 15
>> > >>  #define TMS570_IRQ_CAN1_HIGH 16
>> > >> -#define TMS570_IRQ_RESERVED 17
>> > >> +#define TMS570_IRQ_RESERVED_1 17
>> > >>  #define TMS570_IRQ_FLEXRAY_HIGH 18
>> > >>  #define TMS570_IRQ_CRC_1 19
>> > >>  #define TMS570_IRQ_ESM_LOW 20
>> > >> @@ -63,7 +63,7 @@
>> > >>  #define TMS570_IRQ_SCI_LEVEL_1 27
>> > >>  #define TMS570_IRQ_ADC1_GROUP_2 28
>> > >>  #define TMS570_IRQ_CAN1_LOW 29
>> > >> -#define TMS570_IRQ_RESERVED
>> > >> +#define TMS570_IRQ_RESERVED_2 30
>> > >>  #define TMS570_IRQ_ADC1_MAG 31
>> > >>  #define TMS570_IRQ_FLEXRAY_LOW 32
>> > >>  #define TMS570_IRQ_DMA_FTCA 33
>> > >> diff --git a/spec/build/bsps/arm/tms570/obj.yml
>> > >> b/spec/build/bsps/arm/tms570/obj.yml index 7932299c1d..36f99a700e
>> 100644
>> > >> --- a/spec/build/bsps/arm/tms570/obj.yml
>> > >> +++ b/spec/build/bsps/arm/tms570/obj.yml
>> > >> @@ -29,7 +29,7 @@ install:
>> > >>    - bsps/arm/tms570/include/bsp/tms570_selftest_parity.h
>> > >>    - bsps/arm/tms570/include/bsp/tms570lc4357-pins.h
>> > >>    - bsps/arm/tms570/include/bsp/tms570ls3137zwt-pins.h
>> > >> -- destination: ${BSP_INCLUDEDIR}/bsp/ti/herc
>> > >> +- destination: ${BSP_INCLUDEDIR}/bsp/ti_herc
>> > >>    source:
>> > >>    - bsps/arm/tms570/include/bsp/ti_herc/reg_adc.h
>> > >>    - bsps/arm/tms570/include/bsp/ti_herc/reg_ccmsr.h
>> > >> --
>> > >> 2.29.2.windows.2
>>
>> So if the code builds for you and ideally if you can report that it runs
>> well, then I ACK the change.
>>
>> I have there small local change as well. In the past, baudrate for UART
>> has not
>> been defined for some test. I have added wokaround to select 115200
>> when baudrate is not selected anywhere. But this is hack which is probably
>> solved on the other level already
>>
>> --- a/bsps/arm/tms570/console/tms570-sci.c
>> +++ b/bsps/arm/tms570/console/tms570-sci.c
>> @@ -261,6 +261,8 @@ bool tms570_sci_set_attributes(
>>
>>    /* Baud rate */
>>    baudrate = rtems_termios_baud_to_number(cfgetospeed(t));
>> +  if ( baudrate == 0 )
>> +    baudrate = 115200;
>>
>>    rtems_termios_device_lock_acquire(base, &lock_context);
>>
>> Best wishes,
>>
>> Pavel
>>
>> PS: I pose both TMS570LS3137 and TMS570LC4357 HDK and I have even access
>>     to newer TMS570LC4357 kits at Elektroline company, so I can run some
>> tests.
>>     As for development tools, I have modified OpenOCD for TMS570LS3137 but
>>     changes are based on other series, which never has got into mainline
>>       https://cmp.felk.cvut.cz/~pisa/tms570/
>>     Binary only Flash API is another problem, but it can be solved by
>> runtime ELF load.
>>     I would be happy if somebody has newer OpenOCD working with
>> TMS570LS3137
>>     and even better if somebody has already invested time to TMS570LC4357
>> support.
>>     We have nice ETHERNET based XCP loader, but former head believes that
>> he has control
>>     about that proprietary code...
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20210716/e033efab/attachment.html>


More information about the devel mailing list