当前位置:网站首页>_main C:/ti/ccs1011/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/lib/rts2800_fpu32.lib<ar在线升级跳转疑问
_main C:/ti/ccs1011/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/lib/rts2800_fpu32.lib<ar在线升级跳转疑问
2022-08-09 11:16:00 【量子力学和生命科学】
kernel程序编写的时候,主函数main()的名字改成CKFAmain()。
由于该函数在RAM中运行,所以CMD中指定:
BEGINckfa : origin = 0x008000, length = 0x000002
codestart : > BEGINckfa, PAGE = 0
编译后报错:
undefined first referenced
symbol in file
--------- ----------------
_main C:/ti/ccs1011/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/lib/rts2800_fpu32.lib<args_main.c.obj>
原因:
*_c_int00函数在in RTS library中,这个库其实有汇编源文件boot28._asm,这个源文件就是 _c_int00所在的位置.
*即使是在RAM中运行,JTAG为运行准备好了运行环境,CMD 的BEGIN 指定的code_start段运行CKFA_Start.asm中的code_start函数,这个函数调用_c_int00,跳转到main,
*但是在库中,main无法修改,所以要找到库中的源文件,自己修改,也就是boot28._asm这个文件,把main修改成CKFAmain,然后在工程中加入boot28._asm,
*于是工程就不再调用库中的那个boot28._asm了。这样就不会报错没有定义main了
三者关系:BOOT ROM中的程序,DSP2803x_CodeStartBranch.asm和 rts lib
CPU上电复位,复位向量里面装的跳转指令将BOOT ROM中程序的首地址给了PC,运行BOOT ROM中的程序,默认情况下,
该程序退出后,跳转到0x3F7FF6,而这个地址里面装的就是跳转指令LB _c_int00,该指令就在DSP2803x_CodeStartBranch.asm中,
_c_int00函数在rts lib中,正常情况下,要包含该库,且该函数做完一些列动作后,调用main函数,
但是在SBL程序中,主函数的名字,要改一下,改成SBLmain(),所以直接调用rts lib,会报错,说main符号没有定义,
所以就要把rst lib库中,函数 _c_int00对main的引用改成对SBLmain的引用,但是rts lib库没办法该,不过这个库也是源文件生成的,
直接把 _c_int00所在的源文件boot28.asm复制到工程中来,在其中重新定义一个全局变量SBLmain,然后替代main的应用,在工程配置文件中,
不再配置对rts LIB的引用,编译后,程序直接使用boot28.asm
BOOT ROM 中的函数,本工程中的函数,RTS LIB中的函数 关系式底层,中层,上层
边栏推荐
猜你喜欢
实现strcat函数
PTA 实验7-5 输出大写英文字母(10 分)
[Essence] Analysis of the special case of C language structure: structure pointer / basic data type pointer, pointing to other structures
[工程数学]1_特征值与特征向量
This application has no explicit mapping for /error, so you are seeing this as a fallback
MySQL传统方案和通过SSH连接哪个好?
链表基本操作(详解)
x86异常处理与中断机制(1)概述中断的来源和处理方式
Redis高可用部署
x86 Exception Handling and Interrupt Mechanism (1) Overview of the source and handling of interrupts
随机推荐
【C language】动态数组的创建和使用
bat文件(批处理文件)运行时一闪而过解决方法
MDK添加注释模板
The use of gdb tui
链表基本操作(详解)
golang源代码阅读,sync系列-Cond
数论知识点
Numpy常用操作博客合集
Open3D 点云平均点间距评估
STM32启动方式及BootLoader
golang 三种指针类型具体类型的指针、unsafe.Pointer、uintptr作用
PTA习题 分类统计字符个数(C)
PAT1008
[现代控制理论]3_Phase_portrait 相图 相轨迹
mysql参数学习----max_allowed_packet
Julia资料收集
redis缓存如何保证数据一致性
激光条纹中心提取——Steger
x86 Exception Handling and Interrupt Mechanism (3) Interrupt Handling Process
Use gdb to debug multi-process programs, debug parent and child processes at the same time