[U-Boot] [PATCH] driver/mxc_i2c: Move static data structure to global_data
York Sun
yorksun at freescale.com
Tue Feb 11 20:46:05 CET 2014
On 02/11/2014 11:25 AM, Troy Kisky wrote:
> On 2/10/2014 7:34 PM, York Sun wrote:
>> On 02/10/2014 02:02 PM, York Sun wrote:
>>> This driver needs a data structure in SRAM before SDRAM is available.
>>> This is not alway the case using .data section. Moving this data
>>> structure to global_data guarantees it is writable.
>>>
>>> Signed-off-by: York Sun <yorksun at freescale.com>
>>> CC: Troy Kisky <troy.kisky at boundarydevices.com>
>>> ---
>>> drivers/i2c/mxc_i2c.c | 18 ++++++++----------
>>> include/asm-generic/global_data.h | 3 +++
>>> 2 files changed, 11 insertions(+), 10 deletions(-)
>>>
>> Troy,
>>
>> Following Tom's suggestion, I am trying to use linker script to put the srdata
>> into SRAM. But I still have a concern regarding initializing the srdata. I don't
>> see it is initialized anywhere. Do you presume the data is wiped out before the
>> driver runs? If that's the case, I need to clear the data somewhere in my code.
>>
>> York
>>
>> .
>>
> As I understand it, the .data section follows the .text section and is
> relocated with it. Thus,
> if your program is loaded into sram, the .data will be there as well.
> The .data section
> also contains the initial value, so no need for code to initialize it.
> If later your code
> is relocated to sdram, the .data section should be relocated as well.
> But if the data
> has pointers initialized in code to point at sram, those will not be
> relocated and
> will need some kind of fixup routine. I'm not very familiar with the SPL
> code
> so take whatever I say with a grain of salt.
Troy,
Thanks for the insight. I am not using SPL either. I need this driver to run
before u-boot relocates to DDR. Everything is in flash. I need to find a
writable location for the variable srdata. I can put this section in linker script
.data.sram :
{
drivers/i2c/built-in.o (.data)
} > sram
It works before and after the relocation. But the address after relocation is
not what I want. It is simply the original SRAM address plus the offset. It
lands the variable into DDR below U-boot. I am hoping to find a way to put it
into stack.
York
More information about the U-Boot
mailing list