在生成的固件中,每个固件分别表示从哪种介质中启动下一阶段。前面说过,spl的头部存放了一些初始化的参数变量,所以我直接通过一个脚本make_download.sh将spl的头部一些信息替换了。这样下来,就能够正常的启动spl阶段了,并且可以正常的初始化DDR。按下开发板的FEL键并且上电。
下载可以利用tools/bs目录下的xfel工具进行下载。
可以正常的启动SPL。xfel的工具是xboot大佬旨在打造全志裸机的万能开发工具,感觉用起来还是挺好。
当前xfel在d1上支持了ddr初始化,下载到SRAM和DDR3等操作,并支持运行程序。非常的强大,后面做裸机开发会经常用到,后续如果能够支持USB烧录SPI NAND Flash,那会更加的好用。那么在spl里做了哪些事情?首先SPL是运行在SRAM中的程序,这段程序受到SRAM尺寸大小的影响,并不会做的很复杂。主要功能来说:140CPU43412A 你值得拥有!!!
140CPU43412A欢迎
140CPU43412A现货供应
厦门光沃自动化设备有限公司
联系人:欧工
电话:0592-5709821
电话:18030229050
传真:0592-5917519
QQ:1878187406
邮箱:1878187406@qq.com
1.通过引脚判断是否启动JTAG
2.初始化DDR
3.使能MMU
4.根据SD CARD、SPI NAND FLASH 、SPI NOR FLASH判断初始化那种外设。
5.根据opensbi/rtos/uboot,将其搬运到DDR中执行,然后程序运行在DDR中。
4.启动opensbi
此时程序就运行在DDR中了,对于开发RISCV的人来说,opensbi并不陌生,一方面这个是后台常驻程序,提供S-mode和M-mode的转换层,另外也起到引导下一阶段程序的目的。这个d1下个阶段指的是uboot。然后opensbi就常驻在M-mode下了。作为独立的程序,我也在裸机层面去编译下载opensbi。