当前位置:网站首页>_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中的函数 关系式底层,中层,上层
边栏推荐
猜你喜欢
[现代控制理论]3_Phase_portrait 相图 相轨迹
End-to-End Object Detection with Fully Convolutional Network学习笔记
Chinese valentine's day?Programmers don't exist
wait system call
ICML 2022 | Out-of-Distribution Detection with Deep Nearest Neighbors
Arduino学习总结 + 实习项目
golang 三种指针类型具体类型的指针、unsafe.Pointer、uintptr作用
Qt读写.ini配置文件
信号量SIGCHLD的使用,如何让父进程得知子进程执行结束,如何让父进程区分多个子进程的结束
电磁场与电磁波-场论基础
随机推荐
【VIBE: Video Inference for Human Body Pose and Shape Estimation】论文阅读
wait system call
PTA 计算天数
【DB运营管理/开发解决方案】上海道宁为您提供提高工作便利性的集成开发工具——Orange
七夕?程序员不存在的~
【Basic model】Transformer-实现中英翻译
抗积分饱和 PID代码实现,matlab仿真实现
使用.NET简单实现一个Redis的高性能克隆版(四、五)
PAT1009
Use gdb to debug multi-process programs, debug parent and child processes at the same time
使用gdb调试多进程程序、同时调试父进程和子进程
OC-块对象
PAT1010
PTA 指定位置输出字符串(c)
[现代控制理论]4_PhasePortrait爱情故事动态系统分析
CAN总线发送数据
ACM01背包问题
End-to-End Object Detection with Fully Convolutional Network学习笔记
wpf path xaml写法和c#写法对比
UNIX哲学