共2条
1/1 1 跳转至页
Main 【求助】Main()凼数的定位问题
问
本人欲将C语言的main()凼数编译后固定在一个地址,
即不管程序怎么改main()凼数的入口地址都不会变,
IAR编译器的编译顺序是按什么排序的?如果有办法让main()凼数放在程序的最前面即使后面的
程序改变main()的入口地址也将不会改变,那么本人的愿望也将实现,请多指教!!!!!!!!!!! 答 1: C编译器一般都会把MAIN()的函数放在ROM的最开始端。。 答 2: main()在上电后程序开始运行区,不好改变,你只能定义一个函数,用它代替主函数,然后在主函数在加个跳转指令,定义好新的函数的入口地址,就可以了. 答 3: 问题是我的程序编译后MAIN()凼数不在CODE的开头,我用的工具是
IAR Embedded Workbench 1.26B 版本,让其生成 HEX 格式的文件。 答 4: 这好象不影响吧?连接器会让它自动定位的 答 5: 你在.xcl把-Z(CODE)CODE,TAIVINT=。。。放在前,-Z(CODE)CSTART=。。。放在后,即倒个个,这样MAIN函数就总是从1100开始了 答 6: 谢谢大家的意见,我所作的产品需提供客户进行二次开发的功能,客户程序从串口传入,
然后写在固定的地址(比如从1700h开始),这样就必需是客户的MAIN凼数在最前面,
当要运行这段程序时只需跳转到1700即可. 答 7: 我的PROJECT包含多个C文件,每个C文件包含多个别凼数,说明如下:
一,文件file_a.c
void function_a1(void)
{
//程序代码
}
void function_a2(void)
{
//程序代码
}
二,文件file_b.c
void main(void)
{
//程序代码
}
void function_b1(void)
{
//程序代码
}
二,文件file_c.c
void function_c1(void)
{
//程序代码
}
void function_c2(void)
{
//程序代码
}
程序编译后让其生成 .hex 文件,main()凼数不会在function_a1(),function_b1(),....等凼数的
前面。
现在的问题就是,如果我修改了function_b1(),....等凼数,则MAIN()凼数的地址也会改变。
即不管程序怎么改main()凼数的入口地址都不会变,
IAR编译器的编译顺序是按什么排序的?如果有办法让main()凼数放在程序的最前面即使后面的
程序改变main()的入口地址也将不会改变,那么本人的愿望也将实现,请多指教!!!!!!!!!!! 答 1: C编译器一般都会把MAIN()的函数放在ROM的最开始端。。 答 2: main()在上电后程序开始运行区,不好改变,你只能定义一个函数,用它代替主函数,然后在主函数在加个跳转指令,定义好新的函数的入口地址,就可以了. 答 3: 问题是我的程序编译后MAIN()凼数不在CODE的开头,我用的工具是
IAR Embedded Workbench 1.26B 版本,让其生成 HEX 格式的文件。 答 4: 这好象不影响吧?连接器会让它自动定位的 答 5: 你在.xcl把-Z(CODE)CODE,TAIVINT=。。。放在前,-Z(CODE)CSTART=。。。放在后,即倒个个,这样MAIN函数就总是从1100开始了 答 6: 谢谢大家的意见,我所作的产品需提供客户进行二次开发的功能,客户程序从串口传入,
然后写在固定的地址(比如从1700h开始),这样就必需是客户的MAIN凼数在最前面,
当要运行这段程序时只需跳转到1700即可. 答 7: 我的PROJECT包含多个C文件,每个C文件包含多个别凼数,说明如下:
一,文件file_a.c
void function_a1(void)
{
//程序代码
}
void function_a2(void)
{
//程序代码
}
二,文件file_b.c
void main(void)
{
//程序代码
}
void function_b1(void)
{
//程序代码
}
二,文件file_c.c
void function_c1(void)
{
//程序代码
}
void function_c2(void)
{
//程序代码
}
程序编译后让其生成 .hex 文件,main()凼数不会在function_a1(),function_b1(),....等凼数的
前面。
现在的问题就是,如果我修改了function_b1(),....等凼数,则MAIN()凼数的地址也会改变。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |