分享系列读书笔记干货


迈入RISC-V知识体系第一步

——《RISC-V体系结构编程与实践 》读书笔记

”RISC-V指令集“是漂亮国加州大学伯克利分校设计的第五套RISC精简指令集。RISC-V指令集采用模块化设计,即设计一个最小集合和最基础的指令集。其它特殊功能的指令集可以在最小指令集的基础之上通过模块化的方式叠加实现。这个特点有别于其它指令集叠加式的发展方式,让其更易扩展。当然,我认为其最大的特点还是开源,经济上几乎没有入门门槛的特点深受高校、研究所的喜爱。

由于近些年贸易战,技术壁垒,科技封锁等问题越发突出,作为发展中国家的中国,RISC-V在商业中的应用逐渐受到各方资本的追捧。

与前几年尝鲜RISC-V不同,这次学习是带着明显的主动性,利益驱动占比也上升较高。在ARM架构下应用多年,通过本次学习也算是迈入RISC-V体系的第一步。

今天给大家分享的是书第二章,开发环境的搭建。

书中示例采用的ubuntu 20.04发行版,以及内置的QEMU。本次我也采用相同的开发环境,以减少开发环境搭建所产生的时间成本。

我们通过git下载练习资料git clone https://gitee.com/benshushu/riscv_programming_practice.git

在完成安装编译环境下的各辅助工具后,我们运行以下命令,快速测试开发环境。

cd benos
  • export board=qemu
  • make clean
  • make
  • make run
  • 复制代码

    image.png

    可以看到”Welcome RISC-V!“的打印字符。说明我们编译成功,QEMU运行良好!

    我们继续测试GDB功能,为日后在编写代码,单步调试提供技术基础与经验。

    我们打开两个终端(我这里使用了两个SSH链接窗口,以下均统称为终端)。运行以下命令,增加程序调试信息。

    make debug
  • 复制代码

    在另一个终端运行GDB调试主程序。

    gdb-multiarch --tui benos.elf
  • 复制代码

    接下来,在打开的GDB程序里输入命令

    target remote localhost:1234
  • b _start
  • 复制代码

    将我们的程序在_start位置添加break。

    然后,我们运行

    可以看到GDB控制程序在_start位置停留

    image.png

    我们再运行

    image.png

    可以看到程序输出”Welcome RISC-V!“

    看似一切行云流水,波澜不惊。我相信这仅仅是迈入RISC-V体系的一小步,困难还在后面,准备迎接挑战!我也很庆幸,我终于迈出了这一步!