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的更多相关文章

  1. Rocket - devices - PLIC

    https://mp.weixin.qq.com/s/FR3yeLLBqy0n-fflw-ATgg 简单介绍TLPLIC的实现. 1. GatewayPLICIO PLIC是Platform-Leve ...

  2. Rocket - devices - CLINT

    https://mp.weixin.qq.com/s/4LfZZDKCTQhiKIUjvbDKEg 简单介绍CLINT的实现. 1. 概述 CLINT即是Core Local Interrupter的 ...

  3. Rocket - devices - BasicBusBlocker

    https://mp.weixin.qq.com/s/m1zfFQeSoGZZduJGbxEqdQ 简单介绍BasicBusBlocker的实现. 1. BasicBusBlockerParams B ...

  4. Rocket - devices - TLBusBypass

    https://mp.weixin.qq.com/s/WviVHxlZvsNm8mea2VpfTw 简单介绍TLBusBypass的实现. 1. TLBypassNode TLBypassNode定义 ...

  5. Rocket - devices - CanHaveBuiltInDevices

    https://mp.weixin.qq.com/s/C9iktVr4hnQ8lM0CiWtedQ 简单介绍CanHaveBuiltInDevices的实现. 1. HasBuiltInDeviceP ...

  6. Rocket - devices - TLError

    https://mp.weixin.qq.com/s/s_6qPkT2zwdqYLw5iK7_8g 简单介绍TLError的实现. 1. 继承自DevNullDevice TLError继承自DevN ...

  7. Rocket - devices - TLZero

    https://mp.weixin.qq.com/s/JHjUZncEcoZpRxIS1ECV5g 简单介绍TLZero的实现. 1. /dev/null /dev/null最主要的特点是写入的数据被 ...

  8. Rocket - devices - TLDeadlock

    https://mp.weixin.qq.com/s/Zv4HE7zMBzHbsWGg3pa9fg 简单介绍TLDeadlock的实现. 1. TLDeadlock TLDeadlock是抽象类Dev ...

  9. Rocket - devices - DevNullDevice

    https://mp.weixin.qq.com/s/rAmXl-0gDAJqWmy1R3KrlA 简单介绍DevNullDevice的实现. 1. DevNullParams DevNullPara ...

随机推荐

  1. 软件工程复习 WHUT

    软件过程模型: 瀑布模型:界限分明的独立阶段,计划驱动的软件过程.规范软件开发活动 (例如:可分为分析.开发.维护三个阶段) 也称生命周期模型.线性模型,采用结构化分析.设计.编程技术 不足的地方:知 ...

  2. 深入理解CSS定位

    CSS中有3种定位机制:普通流,浮动和绝对定位.除非专门指定,否则所有框都在普通流中定位.顾名思义,普通流中元素框的位置由HTML元素的位置决定.块级框一个接一个地垂直排列,框之间的垂直距离由框的垂直 ...

  3. 《ES6标准入门》读书笔记 第5章 - 正则增强

    第五章 - 正则增强 构造函数增强 允许覆写修饰符,如new RegExp(someRegex, 'ig') 字符串上的正则方法 原先match.replace等可以调用正则的方法在String的原型 ...

  4. Android广播机制(1)

    目录 简介 发送广播和接收广播方式 广播类型 接收系统广播 动态注册监听网络变化 步骤 优化 静态注册实现开机启动 步骤 注意 简介 就是因为安卓中的每个应用程序都可以对自己感兴趣的广播进行注册,这样 ...

  5. 日志系列1——slf4j日志框架原理

    目录 1.前言 2.日志门面 3.日志库 4.日志适配器 5.日志库的选用 6.logback.xml 配置文件 1.前言 ​ 说到日志工具,日常工作或学习中肯定听过这些名词:log4j.logbac ...

  6. Windows系统目录

    文件功能 编辑 ├—WINDOWS │ ├—system32(存放Windows的系统文件和硬件驱动程序) │ │ ├—config(用户配置信息和密码信息) │ │ │ └—systemprofil ...

  7. VMware Centos7 桥接 DHCP无法获得IP

    问题描述 VMware Centos7 桥接模式下,虚拟机无法获得IP,无法联网 解决方案 网络设置为DHCP自动获取IP 查看主机(不是虚拟机)的相关服务是否打开,主要是VMware DHCP 这个 ...

  8. java ->IO流_序列化流与反序列化流

    序列化流与反序列化流 用于从流中读取对象的操作流 ObjectInputStream    称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流(对象 ...

  9. Winform GDI+绘图二:绘制旋转太极图

    大家好,今天有时间给大家带来Winform自绘控件的第二部分,也是比较有意思的一个控件:旋转太极图. 大家可以停下思考一下,如果让你来绘制旋转的太极图,大家有什么样的思路呢?我今天跟大家展示一下,我平 ...

  10. Gitlab 安装、升级、备份、恢复、汉化等

    一.Gitlab安装 1. 基于yum方式安装Gitlab 安装步骤如下 (1)配置yum源 # vim /etc/yum.repos.d/gitlab-ce.repo (2)复制如下内容并保存(注意 ...