ads新建工程时,不使用现有模板,需要做什么工作?或者看

[复制链接]
3869|4
 楼主| xlander 发表于 2008-7-16 09:59 | 显示全部楼层 |阅读模式
我的这个工程其实是整个项目的一部分,属于项目中可更新的部分,打个比方整个项目是框架,而我这个工程只是其中的插件,可以更换甚至更新的。框架不需要知道到底安装的是什么插件,只知道位于0x80040000的插件函数地址,调用即可。<br /><br /><br />我想把框架和插件分开,放到两个工程里面分别编译和链接。<br /><br />框架部分问题不大,我现在弄插件部分出现问题了。<br /><br />举个例子我的工程里有三个文件:<br />mem_plug.scf,加载文件<br />plug.c,plug.h代码文件<br /><br />编译以后,生成hex文件,我用hjtag下载的时候提示:<br />ERROR:Destination&nbsp;Flash&nbsp;address&nbsp;is&nbsp;out&nbsp;of&nbsp;range<br /><br />我的程序存储器有2M字节,肯定不是硬件方面的原因,估计是我的工程有问题,请高人指点下。<br /><br />下面是我的文件:<br />1、mem_plug.scf<br />ROM_LOAD&nbsp;0x80040000<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x80040000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plug.o&nbsp;(install,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plug.o&nbsp;(plug)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IRAM&nbsp;0x40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack.o&nbsp;(+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;;&nbsp;&nbsp;&nbsp;ERAM&nbsp;0x81000000<br />&nbsp;&nbsp;;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heap.o&nbsp;(+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />2、plug.c<br />#pragma&nbsp;arm&nbsp;section&nbsp;code&nbsp;=&nbsp;&quot;plug&quot;<br /><br />uint8&nbsp;some_other_function(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//do&nbsp;some&nbsp;thing&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />#pragma&nbsp;arm&nbsp;section&nbsp;code&nbsp;=&nbsp;&quot;install&quot;<br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//do&nbsp;somthing<br />}<br />#pragma&nbsp;arm&nbsp;section<br /><br />请问,我还需要做什么工作,或者您能指点我看哪方面的书籍也可以。
dld2 发表于 2008-7-16 10:07 | 显示全部楼层

也许是H_flasher的配置问题

  
 楼主| xlander 发表于 2008-7-16 10:36 | 显示全部楼层

我注意到

我发现不管我怎么调整mem_plugin.scf中的地址,hflasher中的“Dst&nbsp;Addr”都是0x80000000,没有变化,但是始终是灰的(我用的烧写HEX方式)?<br /><br />难道我应该用烧写BIN方式么?<br /><br />另外,我的工程里只有这三个文件足够了么?
 楼主| xlander 发表于 2008-7-16 11:01 | 显示全部楼层

请问我的这个想法能够在ads下实现么?

或者有人实现这种做法了么?
dld2 发表于 2008-7-16 11:12 | 显示全部楼层

ads的linker选项是怎么设置的?

要把scf文件的路径和文件名填到scatter后面的框里去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

165

帖子

0

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