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. python gdal 读取栅格数据

    1.gdal包简介 gdal是空间数据处理的开源包,其支持超过100种栅格数据类型,涵盖所有主流GIS与RS数据格式,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff) ...

  2. 高性能mysql第三版读书笔记3

    innodb以前不支持高并发,在搞病房下就是悲剧,全部卡在mutex(缓冲池mutex)上,现在通过线程调度器控制线程怎么进入内核访问数据,参数为innodb_thread_concurrency,它 ...

  3. 【poj 3261】Milk Patterns 后缀数组

    Milk Patterns 题意 给出n个数字,以及一个k,求至少出现k次的最长子序列的长度 思路 和poj 1743思路差不多,二分长度,把后缀分成若干组,每组任意后缀公共前缀都>=当前二分的 ...

  4. [hdu5392 Infoplane in Tina Town]置换的最小循环长度,最小公倍数取模,输入挂

    题意:给一个置换,求最小循环长度对p取模的结果 思路:一个置换可以写成若干循环的乘积,最小循环长度为每个循环长度的最小公倍数.求最小公倍数对p取模的结果可以对每个数因式分解,将最小公倍数表示成质数幂的 ...

  5. Jmeter-函数助手之${__RandomString(,,)}使用

    ${__RandomString(,,)}使用方法 1.在日常写脚本中,可以随机生成指定的几个字符串作为入参的value,那么jmeter 的这个工具就特别好用.  应用: 2.填写接口入参, 3.运 ...

  6. Pytorch使用分布式训练,单机多卡

    pytorch的并行分为模型并行.数据并行 左侧模型并行:是网络太大,一张卡存不了,那么拆分,然后进行模型并行训练. 右侧数据并行:多个显卡同时采用数据训练网络的副本. 一.模型并行 二.数据并行 数 ...

  7. Python 简明教程 --- 0,前言

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io Life is short, you need Python! -- Bruce Eckel 0,关 ...

  8. 今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件

    直男,直接上代码. 自己看打印的内容 主要功能如下: #如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件 import imapclient,re import pyzmail #提取邮件里 ...

  9. java ->Servlet接口

    JavaWeb核心之Servlet Servlet简介 什么是Servlet(控制器的作用) Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给 ...

  10. 两种方式实现sticky footer绝对底部

    一.什么是sticky footer 如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送,我们看到的效果就如下面两张图这样.这种效果基本是无处不在的,很受欢迎. ...