On 06/01/2018 06:08 AM, Daniel Thompson wrote:
> On Thu, May 31, 2018 at 06:08:09PM -0400, William Mills wrote:
>> Hello,
>>
>> My notes on "requiring" (or strongly recommending) separate storage.
>>
>> A couple of times we have gone around the issue of "is it reasonable to
>> require new platforms have separate storage for firmware".
>>
>> Pros:
>> P1) No disk partition plan etc
>> P2) Runtime var storage is much easier
>>
>> Cons:
>> C1) Cost
>> C2) Boot speed
>> C3) Board becomes "state full" and brick-able
>> C4) Need Buy-in from board makers
>>
>> I hope we understand the pros so I won't go deep on those.
>>
>> WRT C1 & C2: Cost & boot speed
>>
>> Pocket Beagle ($25) has a 2Kx8 I2C EEPROM built into the SIP (system in
>> package).  This allows a single binary SPL to boot from uSD on multiple
>> boards (PocketBeagle BBW, BBB, BBBlue, TI EVM, etc) as the EEPROM has
>> board ID info.
>>
>> I looked for other low cost boards with dedicated firmware storage.
>> PINE A64-LTS ($32) and SOPINE ($30) have 16MB of SPI flash.
>> The original PINE A64 ($15) has no on board storage.
>>
>> Are there other boards I should look at?
>>
>> What would this look like if we put:
>> * SPL & vars only into SPI flash
>> * SPL & U-boot & vars into SPI flash
>> * SPL/U-boot or EDK2 + vars into QSPI
>>
>> I assume 64KB for SPL, <500KB for SPL+Uboot, and 1MB for EDK2.
> 
> I think this is rather optimistic w.r.t. EDK2.
> 
> I'd have pretty serious concerns about trying to running EDK2 port from
> 2MB of FLASH. You'd either have to aggressively restrict the feature
> set, load most of the drivers from the EFI partition (which rather
> defeats the point of using SPI flash in the first place) or make running
> a DEBUG build impossible.
> 
> 
> Daniel.
> 

I tend to agree.  That is why I quoted 1MB and 2MB flash parts for EDKs.
However for boot time I use 1MB.

I got 1MB by downloading the debian buster qemu-efi-aarch64 package:
https://packages.debian.org/buster/all/qemu-efi-aarch64/download


bill@gtwmills:/usr/share/AAVMF$ hexdump AAVMF_CODE.fd
00f7520 ffac ffff ffff ffff ffff ffff ffff ffff
00f7530 ffff ffff ffff ffff ffff ffff ffff ffff
*
0200000 0000 0000 0000 0000 0000 0000 0000 0000
*
4000000

So ~1MB of code, 1MB of FF's, and 62MB of 0's

(/usr/share/qemu-efi-aarch64/QEMU_EFI.fd is just the first 2MB of above)

(/usr/share/AAVMF/AAVMF_VARS.fd is 64MB of 0's)

Bill

> 
>> QSPI:
>>      1MB $0.67
>>      2MB $0.70
>>      16MB $1.62  (PINE A64-LTS)
>>      133MHz == 66MB/s
>>      U-boot, 500KB in 7ms
>>      EDK2, 1MB in 14ms
>>
>> SPI:
>>      128KB $0.28
>>      1MB   $0.33
>>      104Mhz == 13MB/s
>>      SPL only, 64KB in 5ms
>>      U-boot, 500KB in 38ms
>>
>>
>> I2C:
>>      ID only 256x8   $0.09
>>      BBB etc 4Kx8    $0.13
>>      32bytes @100KHz = 2.5ms
>>

_______________________________________________
boot-architecture mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to