共2条
1/1 1 跳转至页
entry,point,bin entry_point对生成bin文件有啥用?
问
在生成bin文件时,我们必须制定一个sactter文件(包括RO、RW段等如何放,放哪里的一个配置文件,当然,为简单起见,我们也可以在ads的连接选项里面,配置-first, -last,-entry_point等。)。
然后Linker会调用这个文件,将各个object的o文件进行连接,生成axf格式的文件,便于axd进行调试。根据资料以及我的实践,我发现sactter文件中entry_point的信息会在该文件的头部留下痕迹!除此之外,没有其他作用!
最后,fromelf把上面的文件生成bin文件时,会把entry_point唯一的痕迹都抹掉。(我采用两个不同的entry_point,生成的bin文件一模一样)。
所以,我就一直都奇怪,既然它对最后的bin文件根本一点影响都没有。 那entry_point是什么用呢? 答 1: 能回答一下吗?我一直还不是太明白。
谢谢拉。 答 2: 我也没搞懂这个问题?Entry到底有什么用呢? 在AXD仿真时,它能指示仿真器(我是软仿真)直接跳到Entry处执行代码,但对生成的实际要烧录的BIN档好像没有什么作用啊?请知道的指点一下,谢谢! 答 3: REAXF文件格式和BIN文件格式是两种完全不同的文件格式.
AXF文件包括了很多的信息:调试信息,ENTRY POINT,源文件路径等.所以,在AXD里面装载AXF文件后,AXD可以从AXF文件里面提取这些信息,根据ENTRY POINT等设置好PC,打开相应的源文件.
而BIN文件,纯粹的二进制文件.AXF文件转换成BIN文件后,BIN文件里只包括AXF文件里的程序指令和一些初始化了的全局数据.其他的调试信息全都丢失了的.
从上面可以看出,一般来说,AXF文件一般是用在调试的时候使用.BIN文件一般是在开发完成后,保存最基本的指令和数据,用来烧写到你的产品的ROM/FLASH里面的.板子上电后,就从地址0X0开始取指令执行.在开发的时候,如果你的程序是要烧写到FLASH/ROM里面,上电就执行的,你必须设置好你的程序的ENTRY POINT,保证ENTRY POINT是在地址0X0.因为实际应用的时候,不象调试,AXD会自动从AXF文件里面提取ENTRY POINT,然后帮你设置好.
希望上面的信息对你有帮助. 答 4: 谢谢twentyone的指点!因为ARM上电都是执行中断向量的跳转程序,所以是不是应该将ENTRY POINT设在中断向量表的位置?而且在实际的应用中,应该将中断向量表放在FLASH/ROM的0x00位置?
我有个假设:假如一段程序主体是没有问题的,即使ENTRYPOINT设置错了位置,但生成的BIN档烧录到FLASH里后,仍然是可以正常运行的。不知道我的假设对不对?
请大家指点!谢谢!
然后Linker会调用这个文件,将各个object的o文件进行连接,生成axf格式的文件,便于axd进行调试。根据资料以及我的实践,我发现sactter文件中entry_point的信息会在该文件的头部留下痕迹!除此之外,没有其他作用!
最后,fromelf把上面的文件生成bin文件时,会把entry_point唯一的痕迹都抹掉。(我采用两个不同的entry_point,生成的bin文件一模一样)。
所以,我就一直都奇怪,既然它对最后的bin文件根本一点影响都没有。 那entry_point是什么用呢? 答 1: 能回答一下吗?我一直还不是太明白。
谢谢拉。 答 2: 我也没搞懂这个问题?Entry到底有什么用呢? 在AXD仿真时,它能指示仿真器(我是软仿真)直接跳到Entry处执行代码,但对生成的实际要烧录的BIN档好像没有什么作用啊?请知道的指点一下,谢谢! 答 3: REAXF文件格式和BIN文件格式是两种完全不同的文件格式.
AXF文件包括了很多的信息:调试信息,ENTRY POINT,源文件路径等.所以,在AXD里面装载AXF文件后,AXD可以从AXF文件里面提取这些信息,根据ENTRY POINT等设置好PC,打开相应的源文件.
而BIN文件,纯粹的二进制文件.AXF文件转换成BIN文件后,BIN文件里只包括AXF文件里的程序指令和一些初始化了的全局数据.其他的调试信息全都丢失了的.
从上面可以看出,一般来说,AXF文件一般是用在调试的时候使用.BIN文件一般是在开发完成后,保存最基本的指令和数据,用来烧写到你的产品的ROM/FLASH里面的.板子上电后,就从地址0X0开始取指令执行.在开发的时候,如果你的程序是要烧写到FLASH/ROM里面,上电就执行的,你必须设置好你的程序的ENTRY POINT,保证ENTRY POINT是在地址0X0.因为实际应用的时候,不象调试,AXD会自动从AXF文件里面提取ENTRY POINT,然后帮你设置好.
希望上面的信息对你有帮助. 答 4: 谢谢twentyone的指点!因为ARM上电都是执行中断向量的跳转程序,所以是不是应该将ENTRY POINT设在中断向量表的位置?而且在实际的应用中,应该将中断向量表放在FLASH/ROM的0x00位置?
我有个假设:假如一段程序主体是没有问题的,即使ENTRYPOINT设置错了位置,但生成的BIN档烧录到FLASH里后,仍然是可以正常运行的。不知道我的假设对不对?
请大家指点!谢谢!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |