This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP BIOS工程烧写至Flash运行遇到的问题

您好,我在调试DSP28335时遇到了一些问题,我用的是DSP BIOS建立的工程,我需要将代码下载至FLASH运行,我用TI提供的例程“F28335_example_BIOS_flash.pjt”进行了调试,没有问题,但是由于我自己编写的程序中需要定义大量的变量空间,因此我外扩了一片1M的片外RAM,用DSP的ZONE7片选。因此我对TI的例程的MEM空间分配进行了修改,将.ebss段的分配由原来的L4SARAM(片内RAM空间)改为ZONE7(片外RAM空间),编译后没有问题,但当将其下载至DSP后,程序立刻跑飞了,我在“void UserInit(void)”子函数中设了个断点,发现程序会循环进入该子函数,但总是不会进入main函数,其他程序也不运行。将.ebss段的分配再改回L4SARAM时,系统又可以正常运行了。

另外,我使用TI的另一个,使用RAM的BIOS例程(F28335_example_BIOS_ram.pjt)调试时,将.ebss段的分配由原来的L4SARAM(片内RAM空间)改为ZONE7(片外RAM空间),编译下载后系统可以正常运行(我在CCS中使用了28335dspBIOS.gel文件),这说明.ebss段是可以分配至片外RAM的,但是在上面提到的FLash的例程中怎么就不行呢?

我将以上提到的两个工程的TCF文件以及我自己修改的TCF文件截图一并发给您,请您看一看问题出在哪里?

希望能够得到你们的帮助,谢谢!

TCF文件.rar
  • 楼主,

    应该是上电时对XINTF引脚要预先初始化,才能使用外扩的RAM。否则这些XINTF引脚默认是GPIO,而不是XINTF。

    具体请参考下面这个帖子,我之前回复的,应该和你的情况类似。

    www.deyisupport.com/.../281.aspx

  • 谢谢您的回复,我也注意到您提出的上电时对XINTF初始化的问题,所以在我原帖的第二段中提到“另外,我使用TI的另一个,使用RAM的BIOS例程(F28335_example_BIOS_ram.pjt)调试时,将.ebss段的分配由原来的L4SARAM(片内RAM空间)改为ZONE7(片外RAM空间),编译下载后系统可以正常运行(我在CCS中使用了28335dspBIOS.gel文件),这说明.ebss段是可以分配至片外RAM的,但是在上面提到的FLash的例程中怎么就不行呢?”,其中提到的“28335dspBIOS.gel”文件中就有在用CCS下载程序时将外部XINTF进行初始化的指令,我也试验过如果在gel文件中不加这些初始化指令也是不行的。

    难道在gel里初始化XINTF与在Code Start Branch.asm中进行初始化有什么不同吗?仅仅是XINTF初始化的问题吗,还有其他可能的问题吗?

  • gel文件是CCS中使用的执行命令的文件,在你的菜单栏能找到gel的一些命令,用于扩展CCS的功能,调试的时候非常灵活方便。但是gel不可以被编译成可执行代码。所以建议您按照Jones Chen的方法在codestartbranch.asm中完成XINTF的初始化,然后才能完成.ebss段的分配。

  • 我用您所说的方法解决了最初的问题,谢谢了。

    但我还有一个疑问:我在一个DSP_nonBIOS例程中,将.ebss段分配到片外RAM,上电时未初始化xintf接口,程序可以正常下载运行;但在一个DSP_BIOS例程中,如果将.ebss段分配到片外RAM,就必须上电时先初始化xintf接口,否则程序就不能正常运行,这是为什么啊?

  • chen yu 说:

    但我还有一个疑问:我在一个DSP_nonBIOS例程中,将.ebss段分配到片外RAM,上电时未初始化xintf接口,程序可以正常下载运行;但在一个DSP_BIOS例程中,如果将.ebss段分配到片外RAM,就必须上电时先初始化xintf接口,否则程序就不能正常运行,这是为什么啊?

    您好!DSP_nonBIOS例程是RAM版本的还是Flash版本的?如果是RAM版本的,那么CCS帮您完成了XINTF的初始化。如果是Flash版本的肯定要进行初始化!不进行初始化怎么工作啊?!XINTF是外设,是接口!无论如何都要初始化。