最近在调试自己做的一块2440得板子,JTAG链接上了,能够识别出内核为ARM920T。但是就是不执行指令。
由于是硬件调试,所以目前只焊了晶振电路、电源电路、复位电路、JTAG部分、LED部分以及初始化设置跳线部分,其余的外围器件都没有连接。目前做的实验是:用AXD向特殊寄存器地址中写数以点亮LED,但是没有反应。
命令行如下:
setmem 0x53000000 0x0 ;关看门狗
setmem 0x4a000008 0xffffffff ;屏蔽中断
setmem 0x4a00001c 0x3ff ;
setmem 0x4c000000 0xffffff ;locktime设置
setmem 0x4c000014 0x07 ;clkdivn
setmem 0x4c000008 0x48042 ;UPLLCON 48MHz
setmem 0x4c000008 0x78022 ;MPLLCON 256MHz
setmem 0x56000000 0x7fffff ;GPACON
setmem 0x56000010 0x155555 ;GPBCON
setmem 0x56000018 0x7ff ;GPBUP
setmem 0x56000020 0xaaaaaaaa ;GPCCON
setmem 0x56000028 0xffff ;GPCUP
setmem 0x56000030 0xaaaaaaaa ;GPDCON
setmem 0x56000038 0xffff ;GPDUP
setmem 0x56000040 0xaaaaaaaa ;GPECON
setmem 0x56000048 0xffff ;GPEUP
setmem 0x56000050 0x55aa ;GPFCON
setmem 0x56000058 0xff ;GPFUP
setmem 0x56000060 0xff95ffba ;GPGCON
setmem 0x56000068 0xffff ;GPGUP
setmem 0x56000070 0x2afaaa ;GPHCON
setmem 0x56000078 0x7ff ;GPHUP
setmem 0x560000d0 0x016aaaa ;GPGCON
setmem 0x560000d8 0x1fff ;GPGUP
setmem 0x56000054 0x0f ;GPFDAT 点亮led
老兄是牛人,做了我想做没条件做的事,不过你为什么不写一段汇编初始化代码来调试(拷贝BootLoader中的也行),你怎么确定点亮LED之前的代码或者你写
入寄存器的信息正确写入了??会不会是JTAG 口不能正常工作造成的??希望你的问题能够快速解决,向你多学习一些经验教训。
上面的程序就是我按照2440init里面的设置进行配置的,因为刚开始接触这个,写程序比较困难,呵呵!
只能看别人的程序,然后修改对应寄存器的值已达到启动的目的。但是现在没结果,我就很郁闷!
能否告诉我arm920t的内存地址是怎么分配的?之前作单片机的时候,知道特殊功能寄存器是在内部的一片ram,而2440的内部只有16k的指令/数据缓存,而且此时我没有焊接外部的sdram,那么2440访问0x4a000008这个地址是怎么访问的呢?
我看了好几遍datasheet都没弄懂!呜呜呜呜……
搞定了,setmem指令没用对,后面得设置写入数值的位数。兴奋!
很高兴楼主问题顺利解决,2440 空间地址分配在某个 .h文件中有定义 好像是 2440.h 忘了。你可以找找看。
是s2440.h文件 但要注意虚拟地址空间和实地址空间的区别
目前我没有下载代码,我是使用的axd提供的指令setmem对特殊功能寄存器进行设置,即直接对端口操作。谢谢
我要结帖了。新建了个群,希望大家能够加入64676072