4740|7

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】Main()凼数的定位问题 [复制链接]

本人欲将C语言的main()凼数编译后固定在一个地址,
即不管程序怎么改main()凼数的入口地址都不会变,
IAR编译器的编译顺序是按什么排序的?如果有办法让main()凼数放在程序的最前面即使后面的
程序改变main()的入口地址也将不会改变,那么本人的愿望也将实现,请多指教!!!!!!!!!!!

最新回复

我的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()凼数的地址也会改变。  详情 回复 发表于 2004-11-1 15:18
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
C编译器一般都会把MAIN()的函数放在ROM的最开始端。。
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
main()在上电后程序开始运行区,不好改变,你只能定义一个函数,用它代替主函数,然后在主函数在加个跳转指令,定义好新的函数的入口地址,就可以了.
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题是我的程序编译后MAIN()凼数不在CODE的开头,我用的工具是
IAR Embedded Workbench 1.26B 版本,让其生成 HEX 格式的文件。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
这好象不影响吧?连接器会让它自动定位的
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

6
 
你在.xcl把-Z(CODE)CODE,TAIVINT=。。。放在前,-Z(CODE)CSTART=。。。放在后,即倒个个,这样MAIN函数就总是从1100开始了
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢大家的意见,我所作的产品需提供客户进行二次开发的功能,客户程序从串口传入,
然后写在固定的地址(比如从1700h开始),这样就必需是客户的MAIN凼数在最前面,
当要运行这段程序时只需跳转到1700即可.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

8
 
我的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()凼数的地址也会改变。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表