TMS570 BSP testing and problem with VFP enabled build
Martin Galvan
martin.galvan at tallertechnologies.com
Tue Nov 24 14:35:47 UTC 2015
I tested this both with and without the VFP, and in both cases I can't
even make it to bsp_start. Even worse, Uniflash will almost fail to
load the binaries to the board, which makes it quite cumbersome to
perform the tests. While I may've done something wrong, the errors
Uniflash is reporting are the exact same as the ones we used to have
when POM was enabled by default. So there's that.
For now we'll keep working with 4.11 prior to your changes. I suspect
your issue is different than the one I'm seeing though; you may want
to check if your loader doesn't do anything with the FP registers
before you get to bsp_start_init_registers_vfp.
On Mon, Nov 23, 2015 at 5:50 PM, Pavel Pisa <pisa at cmp.felk.cvut.cz> wrote:
> Hello Martin,
>
> On Monday 23 of November 2015 21:31:46 Martin Galvan wrote:
>> I'm about to test this on our setup. Just to be sure, does your
>> startup code perform the register initialization required by the
>> CCM-R4F? I added that to arm/shared/start/start.S a few months ago.
>
> I am aware of your change. It is correct for sure and our setup
> prepares ram first but RTEMS execution starts from _start symbol
> and disassembly shows that register setup you provided is on the
> code path
>
> (gdb) x /40i _start
> 0x80000040 <bsp_start_vector_table_end>: bl 0x8000c8bc <bsp_start_init_registers_core>
> 0x80000044 <bsp_start_vector_table_end+4>: mov r0, #211 ; 0xd3
> 0x80000048 <bsp_start_vector_table_end+8>: msr CPSR_fc, r0
> 0x8000004c <bsp_start_vector_table_end+12>: mov r0, #210 ; 0xd2
> ...
> 0x800000a4 <bsp_start_vector_table_end+100>: mov r0, #1073741824 ; 0x40000000
> 0x800000a8 <bsp_start_vector_table_end+104>: vmsr fpexc, r0
> 0x800000ac <bsp_start_vector_table_end+108>: bl 0x8000c910 <bsp_start_init_registers_vfp>
> 0x800000b0 <bsp_start_vector_table_end+112>: ldr lr, [pc, #92] ; 0x80000114 <twiddle+26>
> 0x800000b4 <bsp_start_vector_table_end+116>: orr lr, lr, #1
>
>
> (gdb) x /20i bsp_start_init_registers_vfp
> 0x8000c910 <bsp_start_init_registers_vfp>: mov r0, #0
> ....
> 0x8000c950 <bsp_start_init_registers_vfp+64>: vmov d15, r0, r0
> 0x8000c954 <bsp_start_init_registers_vfp+68>: bx lr
> 0x8000c958 <bsp_start>: push {r3, lr}
> 0x8000c95a <bsp_start+2>: movw r3, #36684 ; 0x8f4c
>
>
> The additional registers initialization by RTEMS should be another guarantee
> that registers d0 to d15 and VFP state is OK. So there should not be problem
> from this side. Other option is too small default stack size (but we tried to enlarge it)
> or something else. May it be some status register or other safety hardware
> initialization skipped??? I am not sure.
>
> Best wishes,
>
> Pavel
--
Martin Galvan
Software Engineer
Taller Technologies Argentina
San Lorenzo 47, 3rd Floor, Office 5
Córdoba, Argentina
Phone: 54 351 4217888 / +54 351 4218211
More information about the devel
mailing list