Problems in boot_card() with configuration

Gedare Bloom gedare at rtems.org
Fri Feb 15 14:22:34 UTC 2013


I usually would start with the hello world and ticker samples for new
BSP development. That limits the uncertainty I have.

Are you planning to release your BSP / submit it to be included with RTEMS?

On Fri, Feb 15, 2013 at 9:20 AM, Matthew J Fletcher <amimjf at gmail.com> wrote:
> Joel,
>
> I simply had not put
> #define CONFIGURE_INIT
> #include <rtems/confdefs.h>
>
> Anywhere in the code,  bit of a schoolboy error so the Configuration
> structure was not setup. I was creating my own bsp and just forgot that I
> needed bits from on of the samples as well.
>
> On 15 Feb 2013 14:10, "Joel Sherrill" <Joel.Sherrill at oarcorp.com> wrote:
>>
>> Could you post or privately email the broken code? I am curious if we can
>> do anything to help avoid this or at least make it easier to debug or know
>> what tolook for in the future.
>>
>> Thanks
>>
>> Matthew J Fletcher <amimjf at gmail.com> wrote:
>>
>> Thanks all, but my problem was much simpler, not including confdefs.h I
>> copied one of the included samples and am getting much further.
>>
>> On 14 Feb 2013 20:14, "Joel Sherrill" <joel.sherrill at oarcorp.com> wrote:
>>>
>>> On 2/14/2013 2:00 PM, Matthew J Fletcher wrote:
>>>>
>>>> On 14/02/13 19:38, Gedare Bloom wrote:
>>>>>
>>>>> On Thu, Feb 14, 2013 at 2:16 PM, Joel Sherrill
>>>>> <joel.sherrill at oarcorp.com> wrote:
>>>>>>
>>>>>> On 2/14/2013 1:09 PM, Matthew J Fletcher wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I am using RTEMS 4.10.2, and a custom BSP based on the ARM rtl22xx.
>>>>>>>
>>>>>>> I am running through the asm startup ok and calling into boot_card(),
>>>>>>> stepping through its all working fine, work_area_start,
>>>>>>> work_area_size,
>>>>>>> heap_start and heap_size are setup as i expect from my linkscript.
>>>>>>>
>>>>>>> But the test of "work_area_size <= Configuration.work_space_size"
>>>>>>> fails
>>>>>>> because Configuration.work_space_size looks like 0xfffffff, the only
>>>>>>> place that assigns to Configuration.work_space_size is a few lines
>>>>>>> further down.
>>>>>>>
>>>>>>> Does this code presume that the BSP has set the Configuration
>>>>>>> structure
>>>>>>> to zero, or the whole memory ? even so the aforementioned test seems
>>>>>>> odd
>>>>>>> as its just testing memory has been initialised.
>>>>>>>
>>>>> We do assume the .bss section is initialized to 0, although I'm not
>>>>> sure if that is still a necessary assumption. But I don't think that
>>>>> is the problem here, because if the value of
>>>>> Configuration.work_space_size was 0 then this test would still fail.
>>>>>
>>>>> The work_space_size calculation is done in the
>>>>> cpukit/sapi/include/confdefs.h file, but that can be a bit messy to
>>>>> try to figure out.
>>>>>
>>>>>>> Or am i missing some RTEMS initialisation call that needs to be done
>>>>>>> before boot_card() ?
>>>>>>
>>>>>> No but there may be some basic C language assumptions not
>>>>>> being met. Configuration is in the .data section and that value
>>>>>> does not look like it was initialized to.
>>>>>>
>>>>>> Is your download correct?
>>>>>>
>>>>> You can disassemble your binary image and inspect the value of the
>>>>> Configuration.work_space_size field in the data section.
>>>>
>>>> Sorry i dont seem to have the objdump skills, i did a -D (disassemble
>>>> all sections), although it produced massive output i dont see a
>>>> structure called 'Configuration', i get a block like
>>>>
>>>> 814085f4 <Configuration>:
>>>> 814085f4:       00000000        andeq   r0, r0, r0
>>>> 814085f8:       00010830        andeq   r0, r1, r0, lsr r8
>>>
>>> This isn't code but this is enough to see that what is in memory and used
>>> by the code is NOT what was in the object. The workspace_address field
>>> is 0. The second field is the size and is 0x00010830. You saw
>>> 0xFFFFFFFFF.
>>>
>>> Either the download didn't go where you thought, memory access isn't
>>> setup write, etc.
>>>
>>> Download and look at those two addresses BEFORE you run at all.
>>> If you don't see those values, it is nothing to do with RTEMS. :)
>>>
>>> .bss is uninitialized global and static date. It gets zeroed.
>>> .data is your global and static data that is initialized.
>>>>
>>>> 814085fc:       00000000        andeq   r0, r0, r0
>>>> 81408600:       00002710        andeq   r2, r0, r0, lsl r7
>>>> 81408604:       00000032        andeq   r0, r0, r2, lsr r0
>>>> 81408608:       8118d3a0        tsthi   r8, r0, lsr #7
>>>> 8140860c:       00001000        andeq   r1, r0, r0
>>>> 81408610:       00001000        andeq   r1, r0, r0
>>>>         ...
>>>> 81408620:       00000002        andeq   r0, r0, r2
>>>> 81408624:       00000002        andeq   r0, r0, r2
>>>> 81408628:       8140868c        smlalbbhi       r8, r0, ip, r6
>>>> 8140862c:       00000001        andeq   r0, r0, r1
>>>> 81408630:       8140866c        cmphi   r0, ip, ror #12
>>>>
>>>> is it possible to pretty print that in some way ?
>>>>
>>>>
>>>>>>> - Matthew
>>>>>>> _______________________________________________
>>>>>>> rtems-users mailing list
>>>>>>> rtems-users at rtems.org
>>>>>>> http://www.rtems.org/mailman/listinfo/rtems-users
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Joel Sherrill, Ph.D.             Director of Research & Development
>>>>>> joel.sherrill at OARcorp.com        On-Line Applications Research
>>>>>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>>>>>> Support Available                (256) 722-9985
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> rtems-users mailing list
>>>>>> rtems-users at rtems.org
>>>>>> http://www.rtems.org/mailman/listinfo/rtems-users
>>>>
>>>> _______________________________________________
>>>> rtems-users mailing list
>>>> rtems-users at rtems.org
>>>> http://www.rtems.org/mailman/listinfo/rtems-users
>>>
>>>
>>>
>>> --
>>> Joel Sherrill, Ph.D.             Director of Research & Development
>>> joel.sherrill at OARcorp.com        On-Line Applications Research
>>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>>> Support Available                (256) 722-9985
>>>
>



More information about the users mailing list