bl602 start.S启动文件分析

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

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调试信息,详情参考

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搏哥聊技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值