本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2286475_1_1.html
前言
链接脚本
启动代码
进入用户代码
前言
为了给后边的工作打下基础,需要先了解下程序的框架,和程序执行的过程。本文以UART_Demo为例进行讲解。
前提是已经搭建好开发环境,见https://bbs.elecfans.com/jishu_2286222_1_1.html,打开UART_Demo工程。
链接脚本
从工程设置的链接器设置里找
找到链接文件如下
打开该文件
从如下信息可以看出,0x00000000处放置的就是中断向量
.vectors : { KEEP(*(.vectors )) }
. = 0x00000000;
从数据手册的第4章可以看到
从如下信息可以看出,
NDS_SAG_LMA_FLASH = 0x20000000 ;
. = 0x20000000;
PROVIDE (BIN_BEGIN = .);
对应的是FLASH存储程序使用,有效1MB,
对应 PROVIDE (FLASH_SIZE = 0x0100000);
从以下信息可以看出
PROVIDE (_STACK_TOP = 0x00a0000);
栈指针指向的是DLM_CPU的高地址处。
其他的BSS,DATA段等的分配都可以类似的去分析。
启动代码
前面通过链接脚本找到向量段.vectors
所以搜索.vectors
双击如下搜索到的结果
.global_RESET_ENTRY
和link文件的ENTRY(_RESET_ENTRY)对应,是程序的入口
_RESET_ENTRY:
j _START
第一条指令就是跳转到_START执行
后面就是相关的初始化操作
比如初始化栈指针,其中_STACK_TOP是link文件中的符号
/* Initialize stack pointer */
la t0, _STACK_TOP
mv sp, t0
比如初始化DATA段,可以对照link文件查看段地址
/* Move Data from flash to sram */
_IDATA_INIT:
la t1, _DATA_LMA_START
la t2, _DATA_VMA_START
la t3, _DATA_VMA_END
_IDATA_INIT_BEGIN:
bleu t3, t2, _IZERO_BSS
lw t0, 0(t1)
sw t0, 0(t2)
addi t1, t1, 4
addi t2, t2, 4
j _IDATA_INIT_BEGIN
比如初始化BSS段,可以对照link文件查看段地址
/* Zero .bss section in sram */
_IZERO_BSS:
lui t0, 0
la t2, _BSS_VMA_START
la t3, _BSS_VMA_END
_IZERO_BSS_BEGIN:
bleu t3, t2, _IZERO_AES
sw t0, 0(t2)
addi t2, t2, 4
j _IZERO_BSS_BEGIN
以上操作不同的芯片都是类似的,一通百通,了解一个芯片其他的芯片也就都僚机了。至于其他芯片相关的操作可以对照手册去理解,这里不再解释。
最后进入main函数,进入用户代码
la t0, main
jalr t0
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
泰凌微
+关注
关注
7文章
147浏览量
10806
发布评论请先 登录
相关推荐
【正点原子STM32H7R3开发套件试用体验】开发套件开箱报告
非常有幸,能够体验正点原子STM32H7R3开发套件。
一直以来,用了不少正点原子的产品,总的来说,体验非常的好。
收到套件快递,开箱的那一刻,觉得就是那个正点原子的味儿,一直没变。
一、套件盒子
发表于 12-12 00:54
泰凌微电子:国内首家获得Zigbee PRO R23 + Zigbee Direct认证的芯片公司
近日,基于泰凌微电子TLSR9系列SoC的Zigbee协议栈正式获得由CSA联盟颁发的Zigbee PRO R23 + Zigbee Direct的兼容平台认证证书,成为国内首家获得此
发表于 12-10 17:27
•136次阅读
C2000™ F28003x系列LaunchPad™开发套件
电子发烧友网站提供《C2000™ F28003x系列LaunchPad™开发套件.pdf》资料免费下载
发表于 11-05 09:35
•0次下载
C2000™ F280015x系列LaunchPad™开发套件
电子发烧友网站提供《C2000™ F280015x系列LaunchPad™开发套件.pdf》资料免费下载
发表于 10-31 09:25
•0次下载
泰凌微电子推出Wi-Fi 6多协议TLSR9118 SoC
泰凌微电子(股票代码:688591.SH),作为无线连接解决方案领域的创新先锋,近日正式宣布其突破性成果——TLSR9118 SoC的问世。这款里程碑式的芯片不仅标志着
泰凌微电子发布Wi-Fi 6多协议TLSR9118 SoC
近日,泰凌微电子(688591.SH)宣布推出其首颗支持Wi-Fi通信技术的多协议芯片——TLSR9118 SoC,进一步拓展了其在无线连接领域的产品布局。该芯片已经成功获得Wi-Fi认证,并向客户
发表于 08-29 10:36
•313次阅读
【xG24 Matter开发套件试用体验】1-基本情况介绍
参加[Silicon Labs xG24 Matter开发套件免费试用]活动,拿到了期待的EFR32xG24 Explorer 开发套件(一个基于 EFR32MG24 片上系统的小封装开发
发表于 07-17 12:39
低功耗再下一城!泰凌深耕Matter,降低客户开发门槛、加速产品迭代
Day期间,业内领先的物联网芯片设计企业泰凌微电子展示了公司基于TLSR9系列芯片的Matter over Thread的一站式解决方案。
【xG24 Matter开发套件试用体验】+开机启动
xG24 Matter开发套件试用体验:
1.EFR32xG24 Explorer 套件是一个基于 EFR32MG24 片上系统的小封装开发和评估平台。EFR32xG24 Explor
发表于 07-11 14:05
泰凌微电子发布国内首颗工作电流低至1mA量级的多协议物联网无线SoC
泰凌微电子 (688591.SH) 宣布推出国内首颗工作电流低至 1mA 量级的超低功耗多协议物联网无线 SoC 芯片 TLSR925x 。 这款芯片在泰
发表于 03-12 14:48
•814次阅读
泰凌微宣布推出国内首颗工作电流低至1mA量级的无线SoC芯片TLSR925x
泰凌微电子(688591.SH) 宣布推出国内首颗工作电流低至1mA量级的超低功耗多协议物联网无线SoC芯片TLSR925x。
【LicheeRV-Nano开发套件试用体验】+智能平板开发
首先感谢Sipeed矽速科技和电子发烧友给与的这次机会,得以试用LicheeRV-Nano开发套件,并与大家共同分享与学习。
鉴于试用报告格式调整,后面亦按要求展现。
申请理由: 个人多年嵌入式
发表于 03-06 23:05
【LicheeRV-Nano开发套件试用连载体验】+ 实现三麦克纳姆轮小车自主导航
【LicheeRV-Nano开发套件试用连载体验】+ 实现三麦克纳姆轮小车自主导航
非常感谢被选中成为Sipeed矽速科技、电子发烧友论坛组织的此次试用体验幸运儿,有机会参与
发表于 03-03 14:20
泰凌微电子TLSR921x系列芯片成功适配中移物联OneOS物联网操作系统
近日,中移物联网有限公司(中移物联)与泰凌微电子(上海)股份有限公司(泰凌微电子)共同宣布,泰凌
评论