RISC-V 启动流程以及SDK 编译

Posted by 肥仔 on May 27, 2024

芯片资源

芯片启动

大佬说明

rom启动会去加载fip.bin里面的bl2到sram里面,然后bl2运行并初始化完ddr,会先把rtos放到内存某个地址先让小核跑起来,再把opensbi , uboot 拷贝到ddr上,去跑大核的opensbi

个人理解

fsbl 相当与bl2,需要使用fsbl 将zephy 给启动起来

不是很清楚,相关函数作用

理解相关问题

https://blog.csdn.net/zhaoxinfan/article/details/54958641

https://zhuanlan.zhihu.com/p/430922284

https://www.cnblogs.com/mkh2000/p/15811708.html

https://github.com/carlosedp/riscv-bringup/blob/master/unleashed/Readme.md

代码解读启动流程

测试fsbl 执行步骤

说明

  • fsbl 执行完成之后复位了?相关cpu 指针,串口后面打印没有输出
  • fsbl 之后执行了拉起 cpu2 freertos 的操作,从某块起始地址?
  • freertos 的移植需要先使能串口(寄存器手段),方便调试
  • 如何将freertos 的地址在ddr 上定义出来?

freertos 启动流程

串口驱动移植

总体框图

寄存器解读

波特率计算

freertos 代码使能

芯片地址划分以及相关工具说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
+--------------------------+
|                          |
|         DRAM             |
|    (0x80000000)          |
|                          |
+--------------------------+
|     FreeRTOS             |
| (FREERTOS_ADDR)          |
|                          |
+--------------------------+
|      Monitor             |
| (MONITOR_ADDR)           |
|                          |
+--------------------------+
|      OpenSBI             |
| (OPENSBI_FDT_ADDR)       |
|                          |
+--------------------------+
|      Kernel              |
| (KERNEL_MEMORY_ADDR)     |
|                          |
+--------------------------+
|      ION Buffer          |
| (ION_ADDR)               |
|                          |
+--------------------------+
|      H26X Bitstream      |
| (H26X_BITSTREAM_ADDR)    |
|                          |
+--------------------------+
|      ...                 |
|                          |
+--------------------------+
|      U-Boot Image        |
| (UIMAG_ADDR)             |
|                          |
+--------------------------+