Rocket - devices - bootrom
https://mp.weixin.qq.com/s/PylfNmJDRasTUj9fGp7gLQ
简单介绍bootrom目录中各个文件的实现。
1. Makefile
1) make过程
Makefile用于简化生成bootrom.img,只需要执行make命令即可:
主要过程为:
a. 根据链接脚本,使用gcc把汇编代码,编译为elf格式的目标文件;
b. 把elf目标文件拷贝为bin格式;
c. 把bin文件拷贝128字节成为img文件;
2) Makefile
Makefile文件内容如下:
其中:
a. 默认目标为第一条规则的目标,即all;
b. all依赖于变量bootrom_img的值,也就是bootrom.img;
c. 生成bootrom.img使用如下通配规则:
这里%代表的是bootrom,先决条件是bootrom.bin,执行的命令是dd;
d. 生成bootrom.bin使用如下通配规则:
bootrom.bin依赖于bootrom.elf,使用的命令是OBJCOPY,即riscv64-unknown-elf-objcopy;
e. 生成bootrom.elf使用如下通配规则:
bootrom.elf依赖于bootrom.S和linker.ld,使用的命令是GCC,即riscv64-unknown-elf-gcc;
3) bin/img
从bootrom.bin生成bootrom.img,使用了dd命令。dd命令只是单纯的拷贝动作,并且指定拷贝128个字节。两者之间的差异是什么呢?
为了使bootrom.bin不被自动删除,我们向Makefile中添加一条.SENCONDARY规则:
-----------------------------------------------------------------------------
这是一篇付费文章,请移步付费阅读全文,谢谢!
文章链接:https://mp.weixin.qq.com/s/PylfNmJDRasTUj9fGp7gLQ