打印
[ZLG-ARM]

请教 C语言下如何把一个函数定位到一个绝对地址啊

[复制链接]
4765|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlsq910|  楼主 | 2007-6-15 15:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wlsq910|  楼主 | 2007-6-15 15:56 | 只看该作者

我准备写一段IAP的bootload函数,将之定位到2103的扇区高位,当我要升级程序的时候 跳转到这个函数 通过无线方式接收新程序 存入外部串行FLASH中 ,然后擦除低扇区 读出串行FLASH中的数据  写入低扇区  达到更新程序的目的。现在我搞不明白的是如何用C语言实现函数定位和函数跳转!请知道的朋友告之!
                                                     谢谢 !

使用特权

评论回复
板凳
wlsq910|  楼主 | 2007-6-15 16:03 | 只看该作者

我还有个想法 就是单独写个BOOTLOAD程序 编译后烧写到2103指定的高扇区 但我不知道ZLG的的LPC210X-ISP下载软件能不能指定扇区烧入

使用特权

评论回复
地板
zx1221| | 2007-6-15 16:58 | 只看该作者

IAR

ARM不清楚,不过IAR有这个功能直接可以实现按物理地址定义
#pragma location=0x1000

使用特权

评论回复
5
luhuaren| | 2007-6-15 20:06 | 只看该作者

re

用这个方式声明
void (*V_RUN_ROM)(void) = (void (*)(void))RO_BASE;


用这个方式调用
(*V_RUN_ROM)();    

RO_BASE  这个地址你可以自己定义。。。。。。。。

使用特权

评论回复
6
wlsq910|  楼主 | 2007-6-19 15:05 | 只看该作者

谢谢!

我试了怎么不行呢?我是要把一个函数定位到一个指定地址 

使用特权

评论回复
7
xillinx| | 2007-6-25 09:42 | 只看该作者

很多办法

你可以通过连接器定位。
你把你的这个函数定义到一个自己定义的section内,在连接器里面把这个section定位到你想要的地址就可以了。
第二,你可以把你的这个函数编译成为OBJ文件,然后把里面的txt,sdata等section转换成为BIN格式,再转换成为一个用C语言描述的数据,这样用C语言把一个数据存放到指定的位置就很容易了。

使用特权

评论回复
8
high| | 2007-6-25 11:17 | 只看该作者

..

使用特权

评论回复
9
wlsq910|  楼主 | 2007-6-25 12:00 | 只看该作者

谢谢大家!

我现在用KEIL MDK305版本 直接用__at就可以定义了 简单多了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

28

帖子

0

粉丝