|
但是我还是没办法让编译器将C语言编译成全部相对跳转的代码。在汇编下面倒是可以,<br />选择适当的汇编指令,就可以产生与地址无关的代码. 后来我没办法,只好将ROM地址<br />设置在RAM区. 但这样Ulink就无法完成下载. 还好,所产生的代码,汇编的启动文件部分<br />被安排在地址0,而后面的C程序部分,被安排在了RAM空间. 所以我根据产生的HEX文件,<br />将代码分成两部分,分别烧到FLASH中,然后由启动代码负责将后半部分复制到RAM中,<br />然后跳转到那里去运行。这样即使使用绝对地址跳转,也不会出问题了。<br /><br /><br /><a href="https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2496814&tp=%u5F7B%u5E95%u5012%u584C%u4E86%7E%7E%7Ekeil%u7684CARM%u7F16%u8BD1%u5668%u597D%u8C61%u4E0D%u80FD%u8BBE%u7F6E%u751F%u6210%u76F8%u5BF9%u8DF3%u8F6C%u4EE3%u7801%uFF1F" target=_blank>https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2496814&tp=%u5F7B%u5E95%u5012%u584C%u4E86%7E%7E%7Ekeil%u7684CARM%u7F16%u8BD1%u5668%u597D%u8C61%u4E0D%u80FD%u8BBE%u7F6E%u751F%u6210%u76F8%u5BF9%u8DF3%u8F6C%u4EE3%u7801%uFF1F</a><br /><br />[/url]https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2541796&tp=00%u542F%u52A8%u4EE3%u7801%u4E2D%uFF0C%u4E0D%u7406%u89E3%u7684%u7A0B%u5E8F[/url]
|