F:\study\bl602\study_bl_iot_sdk\bl_iot_sdk\components\platform\soc\bl602\bl602\evb\src\boot\gcc\start.S
源码如下:
//See LICENSE for license details.
/*This is defined in sifive/platform.h, but that can't be included from
* assembly. */
/*
mstatus (Machine Status) 它保存全局中断使能,以及许多其他状态
Bit3: MIE 中断总开关,1开,0关
Bit14~bit13:FS 表示浮点单元的状态,0b00 All off; 0b01initial; 0b10 Clean; 0b11 Dirty
*/
#defineCLINT_CTRL_ADDR 0x02000000
#defineMSTATUS_FS 0x00006000 //mstaus register FS bit position
#defineMSTATUS_MIE 0x00000008 //mstatus register MIE bit position
/* risc-v汇编语法: .section name [,subsection]
* .section 伪操作 将下面代码汇编到名为name的段当中
* 这是是将下面代码汇编到.init段(section)中
*/
.section .init
/* risc-v汇编语法: .global symbol
* .global伪操作定义bl602_start 是全局的
* 我的另一篇帖子"bl602链接文件分析"中可以知道bl602_start就是程序的入口地址
*/
.globl bl602_start
/* risc-v汇编语法: .type name,type description
* .type伪操作符号类型,将bl602_start定义为函数
*/
.type bl602_start,@function
/* cpu 从这里开始执行 */
bl602_start:
/* 以.cfi_开头的汇编指示符CFI即Call Frame Information ,是DWARF2.0定义的函数栈信息,是一种调试信息
* .cfi_开头汇编指示符用来告诉汇编编译器生成相应的DWARF调试信息,详情参考

文章详细解读了一段RISC-V架构下的汇编源码,主要涉及BL602设备的启动过程,包括关闭中断、设置全局指针、加载数据段和清零BSS段等初始化步骤。此外,还提到了对libfreertos_riscv.a的优化以及FreeRTOS在RISC-V上的移植应用。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



