所述的ARM的指的是CortexA系列以及ARM9,ARM11,跑Linux操作系统。对于CortexM系列并不一定完全适用。谈到ARM以及启动和烧写等方面,首先我们要明确一下几个关键词:UbootCmdline,启动方式选择,文件系统格式,存储介质,如NAND,EMMC,SD卡等。

启动方式

  1. 一般CPU都可以配置为从多种介质启动,比如SPINorFlash,NAND,EMMC,SD卡,U盘等。

  2. 大致原理是CPU内部ROM有一段固化的启动代码,根据CPU配置引脚,判断启动位置,然后从外部介质读取数据启动。

  3. 启动介质的前一部分代码的作用必须是:初始化硬件参数,自我拷贝。

  4. 因为CPU内部RAM很小,只能读取部分启动介质的数据到内部RAM运行,所以Uboot前一部分的工作是将自身剩余部分拷贝到外部RAM中,然后加载运行。

Uboot

  1. 主要作用:引导Linux系统,指定从存储介质的哪个位置读取Kernel,并传递启动参数。

  2. 其他功能:支持存储控制和网络命令,主要用于引导和系统升级。

  3. 常用操作:TFTPNASFlash操作UBI操作Setenvboot等。

  4. 升级流程:使用TFTP从主机下载Kernel和文件系统,使用Flash命令烧写到存储介质,然后设定启动参数,引导系统启动。

  5. 调试流程:

  6. 使用NAS从主机加载文件系统,进行在线调试,快捷方便。

  7. 设定从SD卡启动,加载Kernel和文件系统进行调试。