TIwilliam hill官网
直播中

周杰

7年用户 253经验值
私信 关注

请问DSP BIOS工程烧写至Flash系统不能正常运行是为什么?

本帖最后由 一只耳朵怪 于 2018-6-11 17:09 编辑

您好,我在调试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文件截图一并发给您,请您看一看问题出在哪里?
希望能够得到你们的帮助,谢谢!

回帖(6)

笪琳琳

2018-6-11 08:27:22
楼主,
应该是上电时对XINTF引脚要预先初始化,才能使用外扩的RAM。否则这些XINTF引脚默认是GPIO,而不是XINTF。
具体请参考下面这个帖子,我之前回复的,应该和你的情况类似。
www.deyisupport.com/.../281.aspx
                                                                         如果您认为此问题已被解答,请在“这是否解答您的问题” 后,点击“是”按钮! 谢谢您的合作!
举报

周杰

2018-6-11 08:46:02
谢谢您的回复,我也注意到您提出的上电时对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初始化的问题吗,还有其他可能的问题吗?
举报

陈飞

2018-6-11 09:05:14
引用: jing5656 发表于 2018-6-11 08:46
谢谢您的回复,我也注意到您提出的上电时对XINTF初始化的问题,所以在我原帖的第二段中提到“另外,我使用TI的另一个,使用RAM的BIOS例程(F28335_example_BIOS_ram.pjt)调试时,将.ebss段的分配由原来的L4SARAM(片内RAM空间)改为ZONE7(片外RAM空间),编译下载后系统可以正常运行(我在CCS中使用了28335dspBIOS.gel文 ...

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

周杰

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

我用您所说的方法解决了最初的问题,谢谢了。
但我还有一个疑问:我在一个DSP_nonBIOS例程中,将.ebss段分配到片外RAM,上电时未初始化xintf接口,程序可以正常下载运行;但在一个DSP_BIOS例程中,如果将.ebss段分配到片外RAM,就必须上电时先初始化xintf接口,否则程序就不能正常运行,这是为什么啊?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分