编译器:怎么让地址连续?去掉多余的自动代码?

[复制链接]
2048|5
 楼主| 457878 发表于 2012-7-10 10:37 | 显示全部楼层 |阅读模式
编译器:PICC16
目的:Bootloader,将编译出来的代码放到“连续的低地址空间”
现象:编译后看program window,地址不连续,分成了三个地址:0 ~ 007A( 启动代码) , 06AF~ 07FF(BootLoader) 0D00~0D1F(Flash存储数据)
问题:1. 如何去掉编译器自动生成的启动代码?
        2.  如何让编译出来的地址连续?
 楼主| 457878 发表于 2012-7-10 10:40 | 显示全部楼层
如果用@定义绝对地址,又不知道该定义多大的地址值,一个一个去计算,还不如转汇编了...汇编就是连续的。
但汇编不能调用c函数,Flah,uart等驱动都是C写的,很麻烦!有没有好办法?
yewuyi 发表于 2012-7-10 11:57 | 显示全部楼层
1、自己写启动代码库文件
2、修改连接文件

以上两条一般在C编译器中已经处理好了,用户也能修改,但修改涉及到大量C语言、C编译器等的基础知识,很多人只会写C指令,所以出现看那个如同看天书的现象,没办法,只能自己去学习那些基础知识
yewuyi 发表于 2012-7-10 11:59 | 显示全部楼层
如果不是必须,建议不要修改,用C语言就要了解和熟悉它,不能总是用自己理解的那些汇编的习惯来强迫C语言遵守你的原则,显然是反其道而行之。。。
 楼主| 457878 发表于 2012-7-10 12:09 | 显示全部楼层
4# yewuyi

没有办法的事啊,BootLoader必须这样,要熟汇编就好办了,只懂C啊

PICC16好像不支持“链接文件”,要使地址连续,真不好办了。
yewuyi 发表于 2012-7-10 12:24 | 显示全部楼层
bootload一般很少用C写,基本都是汇编
您需要登录后才可以回帖 登录 | 注册

本版积分规则

270

主题

885

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部