前几天,赵凯同学师弟王飞说他有个JLink,于是我一时心血来潮就借来用,呵,这一玩就耗去了我几天的时间。说说经历。
第一天下午,我拿那个JLink V8在实验室台式机上试了试,可以用,心里窃喜,以后我就可以不用这破机器了,用我的自己
的笔记本好了。晚上回去再插上使用的时候,下载到RAM里的数据全是错的,当时没有在意这个问题,以为是自己线没有
接好,再试还是不行。后来,突然想到,之所以下午在实验室能用,那时因为我之前初始化过RAM,用H-JTAG在里边运行过
程序,于是我就把以前在H-JTAG里的配置,通过查找JLinkRDI使用手册里Macro宏文件的写法重写了一个,呵呵,好使,可以
运行了。后来就没管这个事了。网上说,在Linux下可以用OpenOCD+Jlink+Insight来调试程序,我一直想转到Linux下进行开发
但是苦于没有方法,所以,我就在虚拟机里安装了OpenOCD,我的天哪,这个配置整了我两天啊,当然前期是有OpenOCD里
说的东西出来了,及已经正确配置到能够连接J-Link了,CPU ID,JTAG指令寄存器等都出来,但是当我装上Insight的时候,我就
不知道下一步怎么办了,因为它的IP端口和OpenOCD默认的不同且不能改,这个倒是让我有些郁闷,于是,我决定暂时不搞这个,
我又转回到Windows下,结果发现我的Jlink下载进去的程序都是乱的,根本跑不是,我认为是我的上电顺序有问题,于是我就不停
的重新上电断电,把跳帽换来换去,不断的进行不是实质性的配置,结果还是那样,后来居然有“Cannot halt the core”,搞得我
心生恐惧,以为板子被我搞坏了,没有办法只好重回实验室拿H-JTAG重试,证明板子没有问题。但是JLink我不能就这样了啊,于是又
来了一轮上电断电的动作,因为有时候这样是能够把程序下载到RAM中正确运行的,事实证明,这些都是运气碰到的,让我造成假象,
最后,我终于被这样的上电断电搞烦躁了,昨天下午我爬完山回去后,决定重读JLinkRDI manual,对JLink有了一个更新的认识,并且
注意到它的Macro命令里有Verify这样的验证命令,于是我兴奋不已,我用这样的命令全部重写我的Macro文件,之前写特殊寄存器时用的
都是Write命令,为了验证我的内存是否正确我在寄存器配置完了之后,我WriteVerify32一个我的RAM的一个地址,我写进去的值
0x11223344,结果AXD给我弹个框,说它期待数据0x11223344,但是它得到的却是0x3344FFFFF,我意识到我的配置是有问题的。为了
进一步确认我的想法,我重写了一个LED灯程序,写了两条简短的Macro命令,但是这回我是把程序到S3C44b0自带的8KRAM里运行,呵呵
没有任何错误,程序也跑得很对,我把AXD关掉,再重新加载,还是对的,嗯,所以我的SDRAM配置是有问题的,但是我得明天再取配置了,
因为我之前的配置都是直接从自己的简单bootloder里弄过来的,我那里配置的MCLK是40MHZ的,而我进行Macro配置的时候并没有配置时钟
,因此我的MCLK还是晶振的时钟频率10MHZ。当然,上午我根据s3c44b0手册重新配置了SDRAM,一切OK。切实,我对这个问题的出现应该
早就警觉了,因为我每次把程序下载到SDRAM里都要看看SDRAM里的汇编代码是否正确,但是没有正确配置前几乎是错误的,哎,我以为是图形
界面上的配置错误。但是没有关系,我终于把问题解决了,并且知道原因,虽然用了比较长得时间。以后,自己在问题冒出来的时候,还是要去分析
问题产生的原因,然后再去动手解决,不然,盲目解决问题只有浪费时间。切忌切忌!