阅读:1943回复:6
请教:68013固件程序xdata域的地址设置问题
我的68013芯片没有外接ram,在编译固件程序的时候,我把code域设置在了0x1200-2000,xdata域一定也要设在0x2000地址以内么,我把他设在0xE000开始的地址域内可以么?
|
|
沙发#
发布于:2004-07-19 13:48
如果你在0xE000的地方外扩了一块SRAM,那么可以
否则,不可以,除非你压根没有用xdata区域。 其实你可以把xdata区域设的小一点,满足要求即可。 |
|
板凳#
发布于:2004-07-19 18:04
E000到E1FF不是片内ram么,只是把它当作外部ram来用,我一直是这么理解的,是不是这种理解不对啊.难道片内ram区只有0000-2000么,那么那些控制状态寄存器的地址和端点缓冲区都是位于片外ram区么?有点糊涂,请赐教啊!
另外,我的固件程序编译后在下面的输出窗口显示xdata=4464,code=2055,而且我用的是下到片内的monitor程序,所以code域是从1200开始的,而xdata域有4464那么大,在剩余的地方放不下啊,该如何解决呢?(这个xdata域的大小包括控制状态寄存器和端点缓冲区么) 急盼回复,多谢多谢 |
|
地板#
发布于:2004-07-21 10:43
E000到E1FF是寄存器空间,CY已经占用了,你不能再用作外部空间使用。
你可以在设置时减小Xdata区域占用的大小呀,比如从1400开始,并不一定非要从1200开始。 你的代码量并不多,为什么不行呢?难道你用了较大的数组了吗? 适当的调整一下这两个区域的大小,我觉得对你的应用应该没问题的。 |
|
地下室#
发布于:2004-07-21 12:31
我还是有些糊涂,
1.xdata域和code域应该是两个相互分开的地址空间么? 2.程序编译完成后输出窗口显示的xdata=4464包括了控制状态寄存器和端点缓冲区的大小了么,还是只是我自己编写的那部分程序(不包括framework)的外部数据区的大小 3.现在可以提供给我用的剩余空间应该是0x1200-2000(1200之前是monitor程序和中断向量表),可是我现在code域需要2055(十进制),xdata是4464(十进制),是要将这两个域都放在1200-2000区域内么,如果是的话,显然放不下啊,难道要外接ram? 另:我没有什么大的数组,就是实现简单的pc同dsp的通信(从fifo模式) |
|
5楼#
发布于:2004-07-21 12:51
用户被禁言,该主题自动屏蔽! |
|
6楼#
发布于:2004-07-21 14:55
xdata怎么那么大?是不是编辑软件的某些选项设置有问题,导致那么大的xdata其中很多都没用上啊。
|
|
|