导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→我的2407的程序超过了32k,怎么办?[ynsavage]

 *第2764篇: 我的2407的程序超过了32k,怎么办?

  
楼 主:ynsavage 2007年7月5日14:31
 我的2407的程序超过了32k,怎么办?
2407a的片内程序空间为32kw,而我的程序代码已经达到了近40kw,也就是说从debug文件夹下的.map文件中看到的结果如下:
 
MEMORY CONFIGURATION
 
           name     origin    length      used    attributes    fill
         --------  --------  ---------  --------  ----------  --------
PAGE 0: VECS      00000000  000000040  00000040     RWIX      
         PROG      00000060  00000ffa0  00009f15     RWIX      
 
PAGE 1: B2        00000060  000000020  00000000     RWIX      
         B0        00000200  000000100  00000000     RWIX      
         B1        00000300  000000100  00000000     RWIX      
         SRAM      00000800  000000800  00000100     RWIX      
         DATA      00008000  000008000  00001c14     RWIX       
    我的电路板上扩展了128k*16bit的内存,当我将MP/MC设置为MC模式时,程序空间有64K的RAM可以使用,这是我在调试时的设置,现在我的程序已基本调试完毕,需要将程序固化起来。
    首先我试图优化代码,将程序缩小至32K以内,可是效果不明显,无论我怎样优化和设置编译器也无法将代码缩小至32K以内,至此我将程序烧写到2407A片内的FLASH的努力行不通了。
    于是我想将程序烧写到片外的串行FLASH芯片M25P16中,该芯片为SPI接口的FLASH,可提供SPI方式的引导,也就是说2407A内部的BOOT ROM 中的程序将会把M25P16内的程序代码复制到2407A外部的RAM中(这些RAM位于程序空间),然后跳转到代码地址执行代码程序。
    可是2407A的SPRU357B文档中对BOOT的描述是;
    1.将XF/BOOTEN脚接下拉电阻。
    2.上拉SPISIMO/IOPC2 脚
    3.上拉SCITXD/IOPA0 脚,选择PLL*4;
    4.将MP/MC脚 接下拉电阻,选择MC模式
    问题1. 
        从上面的描述可知在设置了MC模式之后,2407A片内的地址为片内FLASH的地址空间,这已经占去了全部64K空间的一半,我的代码将该从什么地址开始存放呢,如果只能放到8000H以后的空间那么,我的代码仍然不能全部装在到RAM中。
    问题2.
        BOOTROM在运行时占用了0000H~00FFH的空间,那么被装载的代码能不能使用这段空间呢?如果不能,那么程序的中断向量是应该固化到2407A片内的FLASH中,还是该怎么使用呢?
    问题3.
        从SPI口引导代码运行的过程,用仿真器能不能进行仿真观察呢?

>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:在单相系统中,知道电压和电流,如果求相位角啊

[下一篇主题]:求助 继电器953-1C-12DG-2参数