6-制作测试固件验证串口打印
参考地址:基于qemu-riscv从0开始构建嵌入式linux系统ch4. 制作测试固件验证串口打印 — 主页 (quard-star-tutorial.readthedocs.io)
- 在
quard-star
目录下新建boot文件夹,在此文件夹下新建boot.lds
和start.s
文件,如下
start.s
文件
.section .text //定义数据段名为.text |
这里做的事情比较简单,首先读取hartid的值,如果是编号为0的hart就跳转到_core0处执行,如果不是就进入_loop循环卡住。在core0函数中就是往uart0=0x10000000
处一个字节一个字节的写数据,数据会输出到主机的控制台上。
boot.lds
文件
OUTPUT_ARCH( "riscv" ) /*输出可执行文件平台*/ |
boot.lds
是给链接器传参数的,目的是为了把start.s里的代码连接到flash处。
build.sh
修改
CROSS_PREFIX=riscv64-unknown-elf |
这里需要riscv的编译器,我使用的是riscv64-unknown-elf-gcc
,在build.sh中执行编译生成固件用于qemu启动。
run.sh
修改
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd) |
- 测试,执行
./build.sh
和./run.sh
,结果如下:可以看到在串口控制台输出了Hello Quard Star board!
- 内存布局如下
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TimerのBlog!