目前在搓一整套从bootloader到kernel的东西作为业余项目,这里会记录一部分在VF2上的操作
由于工作比较繁忙,架构尽量抛弃现有架构,需要大量阅读论文和思考解决很多问题,所以推进极其之慢
3 Likes
跑在uboot之上的基础ELF内核
姑且将这个ELF文件称为内核吧
- 遵循裸机编程规范,抛弃所有依赖Linux的库,然后正常编译为riscv64的ELF文件
- 启动VF2,通过拨码开关,使VF2进入从Flash启动模式
- 连接uart串口到电脑,此时进入uboot后,打断,并进入uboot的shell,这里我使用minicom
sudo minicom -b 115200 -D /dev/ttyUSB0
- 使用uart串口传输编译好的内核文件(此时是uboot的shell)
loadx
- 此时界面会打印CCCCCCCC,等待通过modemx协议从串口接收数据,使用minicom快捷键
Ctrl+A
然后Ctrl+Z
呼出菜单,选择modemx,然后就是选择文件等等,等待传输完成 - 传输完成后uboot会打印出load到的内存地址,默认是
0xa0000000
- 下一步需要bootelf,来指定从我们加载的ELF文件启动,这里需要指定我们load文件的起始地址,也就是0xa0000000,具体用法请查看bootelf命令行参数的用法
- 成功从elf格式的内核启动
3 Likes
666,原来是bootelf,等我板子维修回来,就试试。
非常有想法呀,这里和ARM上bare-metal(裸机开放)的流程很相似呀。
提醒一下,U74-MC的L2 cache上电时默认以LIM模式工作,此时有接近2MB的片上ram可用(使用前需要清零被使用的区域要不然回报ECC错误);uboot spl目前就运行在lim中
2 Likes
老兄, github 有没有此项目?