引言
前面我们已经实现从SPI Flash启动orpmon和u-boot,并利用orpmon和u-boot的tftp服务最终启动了linux。看似大功告成,其实不然。
由于SPI Flash的容量有限(2MB),无法从SPI Flash直接启动linux,如果想启动linux的话必须先启动bootloader,这就要求linux的启动过程需要人为的参与,而这是我们不想看到的。
那如何才能上电直接启动linux,并且不需要人为操作呢?
前面说过,ML501的CFI FLash是32MB,容量够大,能不能从CFI Flash启动软件呢?
本小节就以从CFI Flash启动u-boot为例,来介绍从CFI Flash启动软件的方法。
1,基本思想
编译生成针对ML501并附带sizeword信息的u-boot.szbin文件,然后制作用来将u-boot.szbin烧到CF卡里面的烧写工具(cfi_ctrl_programmer.elf),通过or32-elf-gdb将cfi_ctrl_programmer.elf下载到内存,执行cfi_ctrl_programmer.elf,根据其提供的命令将u-boot烧到CF卡。
修改ORPSoC的启动地址,修改为从CF卡启动。上电即可直接从CF卡启动u-boot。
2,操作步骤
1>u-boot.szbin文件的生成
a,下载u-boot源码到/home/openrisc目录下。
http://opencores.org/or1k/U-Boot
或者
http://git.openrisc.net/cgit.cgi/stefan/u-boot/commit/
b,解压并编译
tar xvf u-boot-master.tar.gz
make ml501_config
make
c,添加sizeword信息
用bin2binsizeword小工具,生成u-boot.szbin文件。