Skip to contentSkip to conversation

u-boot spl with fat32 on arm

U-Boot Michal Simek 2 participants 3 messages Jan 28, 2014 – Jan 30, 2014

lore
Share & tools
lore
#0 lore raw

Hi guys,

I do play a little bit with u-boot spl and I am curious about fat32 implementation. There is MAX_CLUSTSIZE which is 65k and there are 3 buffers in fat.c code do_fat_read_at_block
get_contents_vfatname_block
get_dentfromdir_block

All these 3 are placed to bss section.
I have just 192k of memory for SPL that's why I tried 2 things
1. Place these 3 fat arrays to different memory which is working fine
2. Decrease MAX_CLUSTSIZE to any low value (I do use 8k).

Unfortunately if I decrease MAX_CLUSTSIZE and add them to bss section SPL doesn't work. If I add them to a different section in front of or behind bss everything is just fine.

That's why I have a question where can be the problem in this behaviour that keeping 8k MAX_CLUSTSIZE in bss section doesn't work and keeping 8k MAX_CLUSTSIZE out of bss section works.

bss relocation is not done in SPL.
Maybe someone could know where the problem can be before I look at ASM code.

Thanks for your hints,
Michal

Signature · 14 lines
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140128/fbb1f6f9/attachment.pgp>
#1 lore raw
Quoted 18 lines · Michal Simek

Hi guys,

I do play a little bit with u-boot spl and I am curious about fat32 implementation. There is MAX_CLUSTSIZE which is 65k and there are 3 buffers in fat.c code do_fat_read_at_block
get_contents_vfatname_block
get_dentfromdir_block

All these 3 are placed to bss section.
I have just 192k of memory for SPL that's why I tried 2 things
1. Place these 3 fat arrays to different memory which is working fine
2. Decrease MAX_CLUSTSIZE to any low value (I do use 8k).

Unfortunately if I decrease MAX_CLUSTSIZE and add them to bss section SPL doesn't work. If I add them to a different section in front of or behind bss everything is just fine.

Quoted 5 lines

That's why I have a question where can be the problem in this behaviour that keeping 8k MAX_CLUSTSIZE in bss section doesn't work and keeping 8k MAX_CLUSTSIZE out of bss section works.

bss relocation is not done in SPL.

To be clear, are you saying you cannot do this in your case? We support CONFIG_SPL_BSS_START_ADDR / CONFIG_SPL_BSS_MAX_SIZE which is how on TI platforms for example we put BSS into DDR, as we've configured that before needing BSS.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140129/171c59a6/attachment.pgp>
#2 lore raw
Quoted 24 lines · Tom Rini
Quoted 22 lines · Michal Simek

Hi guys,

I do play a little bit with u-boot spl and I am curious about fat32 implementation. There is MAX_CLUSTSIZE which is 65k and there are 3 buffers in fat.c code do_fat_read_at_block
get_contents_vfatname_block
get_dentfromdir_block

All these 3 are placed to bss section.
I have just 192k of memory for SPL that's why I tried 2 things
1. Place these 3 fat arrays to different memory which is working fine
2. Decrease MAX_CLUSTSIZE to any low value (I do use 8k).

Unfortunately if I decrease MAX_CLUSTSIZE and add them to bss section SPL doesn't work. If I add them to a different section in front of or behind bss everything is just fine.

That's why I have a question where can be the problem in this behaviour that keeping 8k MAX_CLUSTSIZE in bss section doesn't work and keeping 8k MAX_CLUSTSIZE out of bss section works.

Quoted 6 lines
Quoted 1 line

bss relocation is not done in SPL.

To be clear, are you saying you cannot do this in your case? We support CONFIG_SPL_BSS_START_ADDR / CONFIG_SPL_BSS_MAX_SIZE which is how on TI platforms for example we put BSS into DDR, as we've configured that before needing BSS.

I am not saying that I can't place BSS to the different location out of my 192k OCM. Moving whole BSS to DDR is possible but I would rather have it in OCM.
I was talking to Albert on IRC about this and I will debug it to see what's wrong.

Thanks,
Michal

Signature · 14 lines
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140130/5570466a/attachment.pgp>