下面的文章节选自网络上。可以用来学习不少调试的经验。。。。待仔细阅读。
上周买的合众达C5502开发板和USB仿真器(SEED-XDSusb2.0),买的时候顺便刻了一张CSS 2.2,当时说是以防万一,然而想不到最后却被这张光盘害惨了...买的时候在那里试验了几次设置步骤,然后星期一安装CCS..安装update.. 运行setup..import C5502 XDS510 Emulator..Auto-generate board data file with extra configuration file: Seedusb2.cfg..一路next..然后save,start CCS...结果...T_T
Can't Initialize Target CPU:
...
SC_ERROR_KNL_OPEN <-141>
This utility has failed to open its kernel mode driver.
Either it has been disabled or an installl/un-install failed.
I/O Port = 240
...
运行xdsreset240.bat也是提示SC_ERR_KNL_OPEN。后来在另外两台2K上安装,也是如此。在网上搜索了一下,没有看到有用的线索,郁闷了..晚上把各种各样的驱动都装了,还是不行。一怒之下,装了个CCS 3.1,居然CCS 2.2就能进去了。而卸载CCS 3.1后就又出现Kernel-Mode driver错误...
十分好奇到底为啥到底这样,于是第二天在这个问题上耗费了几乎一天的时间。首先是用filemon和regmon比较安装CCS 3.1前后CCS的文件访问和注册表访问情况,然后用UltraEdit比较,结果看到眼花都没啥发现。后来改监视xdsreset240.bat(也就是 xdsreset.exe)的文件和注册表访问,因为装上3.1后,它的错误提示会变成SC_ERR_CTL_NO_TRG_POWER。然而情况更诡异了,似乎文件访问和注册表访问都没有区别。
无奈,只好向CCS 3.1的Installer下手。卸载CCS3.1再重新安装(还好经过试验,不装任何组建,只进行最最基本的安装也是有效的,省了不少时间)。在安装过程中,时不时暂停下来,执行一下 xdsreset240.bat,看看提示有没有变化,如果没有,清filemon和regmon的log,回Installer,resume...然而这样log里还是常常的一大串,还是不好办。
之前经过试验,发现即使把安装好的CCS 3.1的文件夹改名,CCS 2.2还是可以用的,所以怀疑我要找的东西可能是Windows文件夹里。完整地log了一下Installer,发现写入windows文件夹的有 drpkiont.sys xdsfast1.sys Xalan-C_1_8.dll XalanMessages_1_8.dll xerces-c_1_7_0.dll xerces-c_2_5_0.dll几个,而搜索一下注册表,前面两个分别跟drpkiont和xdsfast1这两个servicces有关。而在反复安装的过程中,发现Installer是在执行了InstallServices后,xdsreset240.bat的提示才发生改变的,由此推断,很可能关键就在于这两个services了。安装完3.1后,先试试net stop drpkiont,错误还是SC_ERR_CTL_NO_TRG_POWER,再试试net stop xdsfast1,错误提示终于振奋人心地变成了SC_ERR_KNL_OPEN...good,找到问题所在了。
把xdsfast1.sys复制到另外一台没被CCS 3.1玷污过的机上,从注册表里可以看到,这个文件应该位于system32/drivers下面,而这个目录里并没有xdsfast1.sys。执行 net start xdsfast1,也会提示找不到文件。把xdsfast1.sys复制进去,再net start xdsfast1,可以正常启动了。然后setup CCS, 接上开发板,终于可以正常进去了。
我又把自己机上的CCS 2彻底卸掉,再重新装,终于确认这个服务的确是由CCS2安装的(因为之前装了一堆驱动,难说会不会是其中一个驱动干的)。那到底为什么会缺少一个文件呢?正好我这里也有一个CCS2的ISO,不过下载过程中可能出现了问题(烂网啊烂网),安装时会提示文件损坏。看看它的目录结构,发现CCS目录里赫然躺着Services这个目录,而合众达给我的光盘,则是少了Services和uninstaller这两个目录的!CCS2卸掉,确定windows目录里相关文件也被一起卸掉了,把这两个目录和合众达给的CCS2拷在一起,安装,运行,这次终于不再出现奇怪的错误了。
终于发现了事情的真相…真是哭笑不得,少了这么重要的文件,居然还可以顺利安装,真不知道TI那帮家伙是怎么搞的...而那个xdsfast1,古狗了一下,好像是跟ISA总线有关的一个东东...为啥USB的仿真器会需要ISA的东西...真不知道合众达的那帮家伙是怎么搞的...