hightec的ld文件分析_start --Apple的学习笔记

一,前言,

之前做了一个mcal的最小工程,链接脚本用的是mcal自带的,所以想想结合link文件看看ucb配置的,结果6.8章节稍微看下基本就解决问题了,ucb0~ucb3还有这个4个copy主要是设置boot mode的,这是常用的。里面有BMI信息包括了start地址是0xA0000000。接着就发现了编译后的hex文件有些段只有十几个字节地址,为什么呢?

二,带着hex段的疑问开始查找答案

问题,编译后可以看到0xA0000000地址只有12字节?这好像是core0的开始地址,为什么只有12字节?


image.png

解答步骤

  1. 通过地址可以到ld链接文件中找到含义。


    image.png

    通过搜索0xA000000,然后搜索LCF_STARTPTR_NC_CPU0,就找到了段名。

  2. 通过段名去搜索c代码,发现是_START函数中的内容。


    image.png

    _START也是设置的第一个函数的启动地址。


    image.png
  3. 那么推断这个12字节内容就是_START中的一行代码,其它代码预计放入的是其它段地址。
    验证下这个函数是否就是12字节?通过代码调试可以看这c代码编译的二进制就是这12字节,疑惑解决了。其它12字节也是按相同方法验证。


    image.png

三,小结

因为我不喜欢看到这样散乱的地址,之后我想要自己修改链接文件,所以先要理解原来的链接文件,才能自己进行正确的修改。准备工作是需要提前做的,哈哈~

你可能感兴趣的:(hightec的ld文件分析_start --Apple的学习笔记)