CCS2.2和CCS3.1在读写GEL文件上的区别
我用的是一块从学长那儿拿过来的DSP开发板,从板子上看不出来是哪家做的,芯片型号是TMS320DM642,从芯片的型号就可以看出这块板子主要是围绕图像处理,仿真器是SEED XD510的,我从合众达的官方网站上找到了CCS2.2、3.1、3.3三个版本的驱动,并搞到了合众达另外一套试验箱图像处理方面的源程序,于是自己想在板子上跑一下。刚开始用的是CCS2.2的版本,虽然比较老,但是和win7竟然也兼容的很好,跑了一些那套程序竟然也基本兼容,看来两套板子在硬件上没什么太大的差别。后来电脑重装系统后我换了CCS3.1,在去跑那套程序发现部分程序就运行不正常了,好了下面换回正题,说一下我遇到的问题:跑灰度图像的处理没什么问题,一切正常,一旦跑彩色图像出来的图像就全花了,于是我又装了一个2.2的版本试试,发现是正常的,原程序也是2.2的版本编译的,难道2.2和3.1兼容性有问题?
先说说2.2和3.1在使用上的区别,最明显的是CCS2.2必须在目标板连接后才能打开,打开软件之后CPU的状态就是HALT,而CCS3.1在软件打开之后的状态时UNKNOWN,需要手动去debug-connect,也就是说CCS3.1需要手动连接目标版,支持离线的编译,其他方面的区别不是特别大(当然这是对于我这个小菜鸟而言)。
这里说一下gel文件,各类文件时芯片的初始化配置文件,往往不同的开发板需要用不同的gel文件,这是因为不同的开发板的硬件连接可能不同,因此很多芯片的地址也就不一样,因此需要不同的文件来进行配置。在打开之后的界面可以看到GELfiles,这里面即是初始化配置文件,因此gel文件很重要。
在我发现gel文件不一致后,我第一想法是换掉这个文件,于是我重新配置,gel文件由默认的CCStudio_v3.1/cc/gel/EVMDM642.gel换成SEEDDM642.gel。结果在打开CCS的时候弹出警告GEL:Error
首先是SEEDDM642.gel中的StartUp()
- StartUp()
- {
-
setup_memory_map(); -
GEL_Reset(); -
init_emif(); - }
EVMDM642.gel中的StartUp()
- StartUp()
- {
-
setup_memory_map(); -
-
-
-
-
-
-
-
//OnTargetConnect(); - }
从这个函数的对比就可以看到前一个在StartUp()中就已经完成了GEL和emif的初始化工作,而在后一个中就没有,这一点和前面说的软件打开时目标板的连接方式刚好一致。
因此在CCS3.1的gel文件中就多了这样一段函数:
- OnTargetConnect()
- {
-
-
-
-
-
-
-
-
-
//GEL_Reset(); -
-
init_emif(); -
-
GEL_TextOut("GEL StartUp Complete./n"); - }
即在目标板连接的时候进行初始化操作,由此就可以理解为什么前面弹出的警告了,将SEEDDM642.gel对应的部分修改后在运行警告消失,即在软件打开时不对芯片初始化,改在芯片连接时进行。
-
-
-
-
-
-
- OnReset(
int nErrorCode ) - {
-
init_emif(); - }
-
-
-
-
-
-
- OnPreFileLoaded()
- {
-
-
-
-
-
-
-
-
-
//GEL_Reset(); -
-
flush_cache(); -
IER = 0; -
IFR = 0; -
init_emif(); - }
-
-
-
-
-
-
-
-
-
-
-
- OnRestart(
int nErrorCode ) - {
-
-
-
-
-
-
*(int*)0x01848200 = 0; // MAR0 -
*(int*)0x01848204 = 0; // MAR1 -
*(int*)0x01848208 = 0; // MAR2 -
*(int*)0x0184820c = 0; // MAR3 -
-
-
-
-
-
-
*(int*)0x01A0FFA8 = 0; // CIERH -
*(int*)0x01A0FFB4 = 0; // EERH -
*(int*)0x01A0FFB8 = 0XFFFFFFFF; // ECRH -
-
*(int*)0x01A0FFE8 = 0; // CIERL -
*(int*)0x01A0FFF4 = 0; // EERL -
*(int*)0x01A0FFF8 = 0xFFFFFFFF; // ECRL -
-
-
IER = 0; -
IFR = 0; - }
由此可以更深刻的了解gel文件的作用和两个版本的区别了。