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
Rocket - devices - bootrom的更多相关文章
- Rocket - devices - PLIC
https://mp.weixin.qq.com/s/FR3yeLLBqy0n-fflw-ATgg 简单介绍TLPLIC的实现. 1. GatewayPLICIO PLIC是Platform-Leve ...
- Rocket - devices - CLINT
https://mp.weixin.qq.com/s/4LfZZDKCTQhiKIUjvbDKEg 简单介绍CLINT的实现. 1. 概述 CLINT即是Core Local Interrupter的 ...
- Rocket - devices - BasicBusBlocker
https://mp.weixin.qq.com/s/m1zfFQeSoGZZduJGbxEqdQ 简单介绍BasicBusBlocker的实现. 1. BasicBusBlockerParams B ...
- Rocket - devices - TLBusBypass
https://mp.weixin.qq.com/s/WviVHxlZvsNm8mea2VpfTw 简单介绍TLBusBypass的实现. 1. TLBypassNode TLBypassNode定义 ...
- Rocket - devices - CanHaveBuiltInDevices
https://mp.weixin.qq.com/s/C9iktVr4hnQ8lM0CiWtedQ 简单介绍CanHaveBuiltInDevices的实现. 1. HasBuiltInDeviceP ...
- Rocket - devices - TLError
https://mp.weixin.qq.com/s/s_6qPkT2zwdqYLw5iK7_8g 简单介绍TLError的实现. 1. 继承自DevNullDevice TLError继承自DevN ...
- Rocket - devices - TLZero
https://mp.weixin.qq.com/s/JHjUZncEcoZpRxIS1ECV5g 简单介绍TLZero的实现. 1. /dev/null /dev/null最主要的特点是写入的数据被 ...
- Rocket - devices - TLDeadlock
https://mp.weixin.qq.com/s/Zv4HE7zMBzHbsWGg3pa9fg 简单介绍TLDeadlock的实现. 1. TLDeadlock TLDeadlock是抽象类Dev ...
- Rocket - devices - DevNullDevice
https://mp.weixin.qq.com/s/rAmXl-0gDAJqWmy1R3KrlA 简单介绍DevNullDevice的实现. 1. DevNullParams DevNullPara ...
随机推荐
- (二)Redis在Mac下的安装与SpringBoot中的配置
1 下载Redis 官网下载,下载 stable 版本,稳定版本. 2 本地安装 解压:tar zxvf redis-6.0.1.tar.gz 移动到: sudo mv redis-6.0.1 /us ...
- java基础 之 从Class.forName()跟.class的区别看类的初始化
代码如下: public class Test { public static void main(String[] args) throws Exception { System.out.print ...
- 【mybatis】IF判断的坑
http://cheng-xinwei.iteye.com/blog/2008200 最近在项目使用mybatis中碰到个问题 <if test="type=='y'"> ...
- 201771010113 李婷华 《面向对象程序设计(Java)》第十七周总结
一.理论知识部分 Java 的线程调度采用优先级策略:优先级高的先执行,优先级低的后执行:多线程系统会自动为每个线程分配一个优先级,缺省时,继承其父类的优先级: 任务紧急的线程,其优先级较高: 同优先 ...
- qgis控制滚轮转动地图比例尺的变化幅度
需求:在比例尺1万-10万之间,鼠标滚轮转动比例尺的变化幅度为1万重写滚轮事件 void Xx::wheelEvent(QWheelEvent*event){ double curScale = sc ...
- 【matlab系列汇总】小白博主的matlab学习实战快速进阶之路(持续更新)
我把之前在学习和工作中使用matlab的技巧和使用教程等相关整理到这里,方便查阅学习,如果能帮助到您,请帮忙点个赞: MATLAB可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程 ...
- 可怕!CPU竟成了黑客的帮凶!
本故事根据CPU真实漏洞改编 前情回顾 还记得我吗,我是阿Q,就是那个CPU一号车间的阿Q啊.如果你忘记了我,记得看看这里回忆一下哦:完了!CPU一味求快出事儿了! 自从我们车间用上了乱序执行和分支预 ...
- uCOS2014.1.11(转载)(void*)0 的理解
一般把(void*)0定义为NULL表示这是个空指针void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据.众所周知,如果指针p1和p2的类型 ...
- Mysql 常用函数(7)- length 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html length 的作用 返回字符串的字节长度 注意: ...
- 2018-06-24 js BOM对象
BOM对象: Browser Object Model 即浏览器对象模型: 包含: window:窗口对象 alert();//警示框 confirm();//确认框 prompt();//输入提示框 ...