uboot启动流程_RISCV64 opensbi启动过程

  • Post author:
  • Post category:其他





RISC-V64 opensbi启动过程



  • 1.说明

  • 2.环境准备

    • 2.1 交叉编译工具链

    • 2.2 源代码准备

  • 3.riscv架构 gdb调试方法

  • 4.opensbi底层初始化流程

    • 4.1 从qemu的加载执行开始

    • 4.2 opensbi底层初始化

    • 4.2 opensbi设备初始化

    • 4.3 二级boot的跳转

  • 5.小结




1.说明



最近有一些riscv的项目做,虽然以前也用过例如k210之类的riscv架构的芯片,但是都止于能够做一些应用,并未特别关注其芯片的体系架构方面的东西,但是随着接触的芯片架构的种类的逐渐的增加,发现要想使用一款好芯片的,仅仅做上层应用并不能完全发挥出特定架构芯片的全部优势。比如aarch64的el层级和虚拟化的模型,mips的mmu特性,以及sparc的窗口寄存器等等,芯片架构的特点要是能够完全的发挥出来,写起应用起来,那真是觉得很爽的事情。

目前在工作上做一些riscv项目,发现自己的积累的知识不够了,还是需要深入到底层去理解,于是需要疯狂的恶补相关的知识,看文档、读代码、每天就这样深入其中,看的多了,想法也很多,很容易就忘记了,有时也做做笔记,晚上下班后再将资料整理一下,如果觉得有些价值的东西,就编写成文章,分享经验。

学习使用riscv64的芯片的架构,首先可以了解学习opensbi,作为芯片启动的Bios,其作用不言而喻。工欲善其事,必先利其器。一个良好高效的开发环境将会使得分析代码变得得心应手。本文在Ubuntu18.04环境下进行测试,在riscv64的qemu上进行gdb的单步调试,主要分析的阶段是qemu启动后,执行到opensbi,直到启动uboot的阶段。

opensbi是研究和学习riscv底层的一个比较优秀的项目,代码量小,质量也很高,很值得推荐的一个开源项目。

关于opensbi与qemu的环境搭建,我前面的文章中已经提及,这里就不赘述了。

riscv64 qemu上进行Linux环境搭建与开发记录




2.环境准备






2.1 交叉编译工具链



如果按照之前的文章下载的Linux版本的交叉编译工具链是不带有gdb工具,所以可以下载一个bare/rtos版本的gcc。建议下载sifive的riscv的交叉编译工具链

https://www.sifive.com/software

也可以到网盘下载:

https://pan.baidu.com/s/1_C-cFBD3ADVjVFm94bYzNw 
提取码: v38x 



版权声明:本文为weixin_39530269原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。