一,前言,
之前做了一个mcal的最小工程,链接脚本用的是mcal自带的,所以想想结合link文件看看ucb配置的,结果6.8章节稍微看下基本就解决问题了,ucb0~ucb3还有这个4个copy主要是设置boot mode的,这是常用的。里面有BMI信息包括了start地址是0xA0000000。接着就发现了编译后的hex文件有些段只有十几个字节地址,为什么呢?
二,带着hex段的疑问开始查找答案
问题,编译后可以看到0xA0000000地址只有12字节?这好像是core0的开始地址,为什么只有12字节?
![](https://img.haomeiwen.com/i12010880/29c496586ffccda9.png)
解答步骤
-
通过地址可以到ld链接文件中找到含义。
image.png
通过搜索0xA000000,然后搜索LCF_STARTPTR_NC_CPU0,就找到了段名。
-
通过段名去搜索c代码,发现是_START函数中的内容。
image.png
_START也是设置的第一个函数的启动地址。
image.png
-
那么推断这个12字节内容就是_START中的一行代码,其它代码预计放入的是其它段地址。
验证下这个函数是否就是12字节?通过代码调试可以看这c代码编译的二进制就是这12字节,疑惑解决了。其它12字节也是按相同方法验证。
image.png
三,小结
因为我不喜欢看到这样散乱的地址,之后我想要自己修改链接文件,所以先要理解原来的链接文件,才能自己进行正确的修改。准备工作是需要提前做的,哈哈~
网友评论