[PATCH] BSP for TMS570LS31x Hercules Development Kit from TI (TMS570LS3137)

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Aug 14 08:07:06 UTC 2014


On 14/08/14 09:48, Pavel Pisa wrote:
> Hello Sebastian,
>
> On Thursday 14 of August 2014 07:39:19 Sebastian Huber wrote:
>> Hello,
>>
>> its nice that you use the new Termios device API.  I would be happy to
>> receive comments if you found something odd about it.
>>
>> Contains the current GCC 4.8 or 4.9 branch HEAD all what is necessary for
>> your BSP?
>
> I have rebuild x86_64 -> arm-rtems4.11 toolchain after you have redone
> Cortex-R patch and all Premek's works is done by that. Even newlib
> has been updated after official single  liner correction.

Ok, good.

>
>> I recently committed a patch for the Cortex-M floating point unit.  There
>> are probably now some conflicts with your Cortex-R floating point code.
>
> As for floating-point, we use softfloat for Cortex-R still, sorry.
> Premek has been busy enough with other stuff till now.
> But I expect that after your change it should be quite straightforward
> to test with VFP-D16. We do that.
>
> As for registers and fields names, the initial fragments are generated
> by Ti manual Python parser and then adjusted by hand.
>
> https://github.com/AoLaD/rtems-tms570-utils/tree/master/parser
>
> Again, parser has not been updated after Premek's initial version too
> much because focus was to have something running first.
>
> Comments and alignments are easy. I think that registers structures
> per module are OK either. As for fields, I am not sure what to select.
> One option is to use unions in structures
>
>    union {
>      uint32_t v;
>      struct {
>         unsigned xxx : 10;
>         unsigned yy : 5;
>      }
>    }
>
> This is roughly what original Ti headers use. But problem is that
> BSP should be reusable for more TMS570 chips and in future even
> for RM48 and RM57. The last two are used in industrial area may be
> even more than TMS570 (automotive/safety) and are little endian.
> Ti has all blocks of bitfields twice with endian ifdef. I would prefer
> more Linux kernel MIPS approach if bitfields are used
>
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/inst.h?id=refs/tags/v3.15#n486

My experience with bitfields at this level is that GCC is regularly broken in 
this area.

>
> But I generally prefer more only defines used for such fields.
>
> Then it would look something like
>
>    TMS570_SCI_SCICLEARINT_XXX
>
> My notation is to add suffix "_m" for mask, "_b" for starting bit position
> if used and where are offset from base "_o". The "_m" and "_b" quite usesfull
> because C dosenit warn you when starting bit or mask is mixed and results
> of mixing are quite damaging.
>
> But use of macros leads to quite complex/long lines in the code.

Yes, I prefer this too.  You may have a look at

http://git.rtems.org/rtems/tree/c/src/lib/libbsp/arm/shared/include/arm-pl011-regs.h

>
> As for formating, the LPC BSP uses mixing of defines and structure fields
> declarations. Quite readable but on the other hand overview
> of compact structure is little lost. So may it be that compact
> structure and then list of macros with comment about field or even
> offset macros would be more readabble
>
>    TMS570_SCI_SCICLEARINT_o
>
> The alone at beginning would be easier for Premek now than inserting
> fields between already defined fields.
>
> Anyway, I expect that the parser enhancement is the right way
> and only manageable way for us if we consider all periferals
> which we already have running on Ti provided headers in our
> other projects and which we want to move to RTEMS when it
> we have solid support (SPI, CAN, FlexRay, N2HET etc.)
>    http://rtime.felk.cvut.cz/rpp-tms570/
> Because we have no resources to prepare all headers manually
> and Premek does not look at Ti headers for unclear license reasons.
>
> Best wishes,
>
>                    Pavel
>
> PS: I have not get to promissed testing of Cortex-M4F yesterday
>      and I have only LPC1788 based board at hand now. I have struck
>      mostly on consultation a helping move motion control to some
>      FPGA based Profinet stack which is diploma thesis of our other
>      student. I have testing Cortex-M4F on my list but I get to
>      it probably only next week.
>

I only tested it with the spfatal26 and spcontext01 tests so far.  These two 
tests are quite handy and may help you with the Cortex-R floating point 
support.  My next step is to figure out if the LPC4088 works better with Google 
Skia which uses 32-bit floats for the anti-aliasing calculations etc.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


More information about the devel mailing list