登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机论坛
›
单片机应用于方案
›
浅谈RISC-V GCC之:链接脚本学习笔记(二)
浅谈RISC-V GCC之:链接脚本学习笔记(二)
[复制链接]
797
0
Yu***
注册会员
发表在
单片机/DSP
2021-11-17 11:02:00
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
上一篇介绍了部分链接脚本知识,这次我们用MRS(MounRiver Studio)中内置的CH57x系列模板工程来具体实践一下:
1 入口
ENTRY 关键字,确定程序入口在_start处
2 内存布局
内存分配,FLASH只读可执行,起始地址为0x00000000.大小为448K,448K也可以写成16进制;RAM读写可执行,起始地址为0x20003800,大小为18K。
3输出段
.init输出段,提供了两个符号_sinit和_einit,_sinit为FLASH起始地址,紧接着4字节对齐之后放的是输入段.init,这个输入段可以在start_CH573.S中看到,是起始跳转。
这两个段是将本来默认放在FLASH 中的代码放到RAM中去运行,.highcodelalign段起始地址4字节对齐,符号_highcode_lma是FLASH 中已经排布到的地址,注意.highcode段运行在RAM中,其中 ”.” 是在RAM中的地址,在这里就是RAM起始地址,_highcode_vma_start与此相同,在这个输出段中有 .vector .vertor_handler .highcode输入段,四字节对齐之后又提供了一个此段结束的地址_highcode_vma_end ,这两个输出段中定义的三个符号是为了将FALSH 中的代码搬运到RAM里取运行,同样可以在start_CH573.S中可以看到
使用和上面同样的写法,可以自定义将源码中的函数或者数据自定义到RAM中执行,只需要在源码中指定其section属性即可
__attribute__((section(".highcode")))
UINT16 Get_Calibration_Cnt_RAM( UINT16 loc ){
...
...
}
.text段是存放在FLASH,运行时地址也在FLASH中。
首先说下__global_pointer这个符号,RISC-V内核中有一个GP寄存器,可以用来访问其地址内+/- 2K的数据,只需要一条汇编语句即可,如果不在范围内,就会使用auipc或者lui配合其他包括低12位立即数的指令来访问,可以手动调整其位置,使频繁用到的数据在其访问范围内可以有效的减少代码大小。
此三段可以看成一个部分,首先.dalign中”.”的值是一个表达式,ORIGIN(RAM)是RAM 的起始地址,MAX(0x800,SIZEOF(.highcode))代表0x800和.highcode段中的最大值, “.”等于两值相加,.dlalign定义了符号_data_lma,是FLASH排布到此处的地址,.data段中_data_vma与.dalign中的”.”地址相同,因为中间没有占用RAM区的数据,_data_vma,_data_lma,_edata,三个符号为搬运数据到RAM 中提供了地址,同样可以在start_CH573.S中可以看到
其中data中的输入段具体有哪些类型变量,对应哪种段,有兴趣的可以到对应的MAP文件中查看,如下图所示
.bss存放未初始化的变量或者初始化为0的全局变量,其中COMMON段比较特殊,有机会专门在说一下,_sbss和_ebss为清零提供地址,同样可以在start_CH573.S中可以看到
设置栈,起始地址放在RAM最上层。
RISC-V
,
嵌入式开发
相关帖子
RISC-V MCU IDE MRS(MounRiver Studio)开发之: 设置函数的优化等级
RISC-V MCU IDE MRS(MounRiver Studio)开发之: 编译后打印FLASH及RAM使用占比信息
RISC-V MCU IDE MRS(MounRiver Studio)开发之: 解决编译后显示RAM占用率100%的问题
RISC-V IDE MounRiver Studio V1.60更新点介绍
RISC-V IDE MRS使用笔记(一):Target mode doesn't match
举报
回复
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
国产单片机推荐:可广泛应用于电子烟、舵机
做电子烟项目的客户一定不要错过今天的这颗单片机 这款单片机可广泛应用于电子烟、舵
国产51单片机
国产51单片机,TU8010CQF
(内附酒精检测仪主控芯片)风靡全网的“酱
Hello大家好啊,你这几天就算没有刷朋友圈没有刷微博,也一定听说过这款大名鼎鼎的“
国产单片机推荐:低至1.2v启动的国产单片机
国产单片机推荐:低至1.2v启动的国产单片机 来自无锡矽杰微电子的XC8P8507 OTP ROM:
国产单片机推荐:矽杰微电子XC8M9602
Hello,大家好,欢迎收看本周的芯推荐栏目 今天给大家推荐一款很经典的单片机,【XC8
更多
精华推荐
国产单片机推荐:可广泛应用于电子烟、舵机
有人吗
人生建议,学c/c++前一定要知道这些网站!
新手报到
国产51单片机
国产单片机推荐I 低功耗、强驱动、极具性价
(内附酒精检测仪主控芯片)风靡全网的“酱
国产单片机推荐:低至1.2v启动的国产单片机
更多
社区学堂
国产单片机推荐:可广泛应用于电子烟、
国产51单片机
国产单片机推荐:可广泛应用于电子烟、舵机
做电子烟项目的客户一定不要错过今天的这颗单片机 这款单片机可广泛应用于电子烟、舵
国产51单片机
国产51单片机,TU8010CQF
(内附酒精检测仪主控芯片)风靡全网的“酱
Hello大家好啊,你这几天就算没有刷朋友圈没有刷微博,也一定听说过这款大名鼎鼎的“
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表