简体   繁体   English

ARM如何从SD卡引导?

[英]how does an ARM boot from a sd card?

I'm a bit lost regarding the boot concept of a modern system from a serial flash device. 对于从串行闪存设备启动现代系统的启动概念,我有些困惑。 Having programmed quite a number of simple micros ranging from 8 bit PICs to 32 bit Power Architecture down on the bare metal (always by reprogramming the normal bus-addressable flash)I wonder how modern SoCs boot from serial devices. 在裸机上编程了许多简单的微控制器,包括8位PIC到32位电源架构(始终通过重新编程普通的总线可寻址闪存),我不知道现代SoC如何从串行设备启动。 I didn't find too much on the net either as every system seems to rely on a combination of sd-card programming tool and a secondary bootloader, both receiving little to no attention. 我也没有在网上找到太多东西,因为每个系统似乎都依赖于sd卡编程工具和辅助引导加载程序的组合,而这两者几乎没有受到关注。

The 'how' is a mask-PROM based primary-boot loader baked into the SoC. “方法”是将基于掩码PROM的主引导加载程序烘焙到SoC中。 It doesn't need to do much besides initialise the SD card interface and possibly some SDRAM with enormously conservative timings (although some devices have embedded SRAM to use at this point). 除了初始化SD卡接口以及可能以非常保守的时序初始化某些SDRAM之外,它不需要做很多事情(尽管此时某些设备已嵌入SRAM以供使用)。

It then enumerates the card interface, reads the FAT from the first card it finds, and from whence, copies the secondary boot-loader into SRAM or SDRAM and executes it. 然后,它枚举卡接口,从找到的第一个卡中读取FAT,然后从那里将辅助引导加载程序复制到SRAM或SDRAM中并执行它。

Often there are restrictions such as the secondary bootloader being the first file on the card and the allocated locks being contiguous. 通常存在一些限制,例如,辅助引导程序是卡上的第一个文件,并且分配的锁是连续的。

Many systems then load yet another boot-loader at this point, which is the one which boots the operating system. 然后,许多系统此时会加载另一个引导加载程序,该引导加载程序将引导操作系统。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM