请问大神一些关于DSP28335烧写的一些问题
这样的问题确实挺让人头痛的,往往这种情况还不报错,非常让人郁闷。28335我没用过。如果你用的是2812我能立即给你解决了。28335的话,我给你说一下我调试的经验吧。
1.看看编译的时候有没有错误。如果有错的话,对应的去网上搜一下,往往都能找到一些方法。
2.跑个例程看看,如果例程都不能跑通的话。先查查硬件有没有问题。
3.例程跑通之后,将你的程序改小,然后将程序刷进去看看。一般就是按例程那样先一个模块一个模块的跑。如果加上某个模块不工作了,你看看有没有明显错误。如果没有,单独跑一下这个模块。如果单独可以跑的话。很有可能是cmd段分配和ccs设置的问题了。你可以试试在项目中右击,选择Properties(Alt+Enter),在如下图所示的选项卡中选择Optimization level,将其设置为off即不优化。
4.下载进去之后,再在线调一下。在main开始处打个断点试试。如果程序是跑飞的进不了main.以2812为例,我建议你检查一下你的Boot ROM是不是选择的从内部启动。2812上有个引脚MP/MC(微处理器模式/微计算机模式),如果这个引脚为0说明被设置为从内部boot启动,你看一下28335有没有类似的引脚,建议你出现ram中能运行,flash中不能运行的问题时,首先检查这引脚的状态。
5.检查你的flash cmd文件,建议你先从Debug文件夹下的.map文件看起。.map文件是十分用于的。它包含了你编译出的所有段和定义的所有段的所有信息,包括段的起始地址、长度、使用长度和未使用长度。包括编译生成的test、cinint等段的信息,如果你发现某个段定义了但没有使用,很有可能是因为你这个段长度太小了,它放不进去就不放了。你了解一下cmd的编写对应看map文件改改看。
ps:我的版本是ccs5.5,工程项目以在ccs3.3下创建的为例。.map文件部分截图如下:
感谢大神这么详细的回答,例程跑了,通讯正常,今天我把我的程序一句一句地调试了一下, 发现在主函数中屏蔽掉initADC()和cputimer0.TCR.all=0x4001这两句话通讯就好了,但是这两句是有用的,不能删,该如何处理呢?
建议你新建一个工程,然后将语句一个一个复制到新的工程中。我以前遇到过这种问题,新建一个工程就行了,我至今也不明白为什么。估计是配置的关系。
另外,你跑不通是什么情况。是进不了main函数吗?如果是,你将这两句加上,然后去掉别的模块看看行不行。如果行,很有可能是你某个段的空间不够了,按照我上面说的方法修改cmd文件试试。
配置应该是对的,因为烧写例程成功,通讯正常, 今天试了一下,在主函数中屏蔽掉initADC()和cputimer0.TCR.all=0x4001这两句话通讯就好了,但是这两句是有用的,不能删,该如何处理呢?
MemeryCopy函数是否调用?
都是对的,今天试了一下,在主函数中屏蔽掉initADC()和cputimer0.TCR.all=0x4001这两句话通讯就好了,但是这两句是有用的,不能删,该如何处理呢?
查一下你的initADC()函数中的ADC_cal()函数,是否已经改下成 (*ADC_cal)()