原创 AXD:如何裸奔调试44B0

2009-10-26 11:58 3700 11 13 分类: MCU/ 嵌入式
上一篇日记提到,我的板板的FLASH挂了icon所以这一篇日记讲讲如何在开发板没有uboot或者flash没有内容的情况下裸奔调试code。以下以AXD为例子,我用j-link。
大多数CPU上电正常工作之前都需要配置好各种寄存器,以确定工作环境,比如内存,总线,时钟,外设等。因此正式裸奔之前,必须初始化CPU。
PS:J-LINK在下载程序到flash的前,就需要执行一系列的初始化CPU的命令。
初始化的内容大家可以打开开发板自带的任意一个程序,找到初始化汇编文件44binit.S,这个文件就是我们开机初始化44b0的模板拉,初始化之后跳到main执行c。
44b0要初始化的寄存器包括:
setmem 0x01C00000 0x0E        8         ;SYSCFG
setmem 0x01E0000C 0x07FFFFFF 32          ;INTMSK
setmem 0x01D30000 0x0        16       ;WTCON
setmem 0x01D80000 0x0003A031 32        ;PLLCON,10MHZ OSC,66M OUT
setmem 0x01C40000 0x80001B1B 32         ;SBUSCON
setmem 0x01C80000 0x11110112 32        ;BWSCON
setmem 0x01C80004 0x00000600 32         ;BANKCON0
setmem 0x01C80008 0x00000700 32         ;BANKCON1
setmem 0x01C8000C 0x00000700 32         ;BANKCON2
setmem 0x01C80010 0x00000700 32         ;BANKCON3
setmem 0x01C80014 0x00000700 32         ;BANKCON4
setmem 0x01C80018 0x00000700 32         ;BANKCON5
setmem 0x01C8001C 0x00018000 32         ;BANKCON6
setmem 0x01C80020 0x00018000 32         ;BANKCON7
setmem 0x01C80024 0x0086041A 32         ;REFRESH
setmem 0x01C80028 0x00000016 32         ;BANKSIZE
setmem 0x01C8002C 0x00000020 32         ;MRSRB6
setmem 0x01C80030 0x00000020 32         ;MRSRB7
setmem 0x01D20000 0x000001FF 32         ;PCONA
setmem 0x01D20004 0x00000000 32         ;PDATA
setmem 0x01D20010 0x5F555555 32         ;PCONC
setmem 0x01D20014 0x00000000 32         ;PDATC
setmem 0x01D20018 0x00003000 32         ;PUPC
setmem 0x01D2001C 0x0000AAAA 32         ;PCOND
setmem 0x01D20020 0x00000055 32         ;PDATD
setmem 0x01D20024 0x00000000 32         ;PUPD
setmem 0x01D20028 0x0000556B 32         ;PCONE
setmem 0x01D2002C 0x00000357 32         ;PDATE
setmem 0x01D20030 0x00000006 32        ;PUPE
setmem 0x01D20034 0x0022445A 32         ;PCONF
setmem 0x01D20038 0x00000000 32         ;PDATF
setmem 0x01D2003C 0x000001D3 32         ;PUPF
setmem 0x01D20040 0x00000000 32         ;PCONG
setmem 0x01D20044 0x000000FF 32         ;PDATG
setmem 0x01D20048 0x00000000 32         ;PUPG
其中SYSCFG,INTMASK,WTCON,PLLCON,SBUSCON,BWSCON,BANKCON0~7,REFRESH,BANKSIZE,MRSRB6/7一定要根据自己的开发板的配置来设置寄存器的值!设置这些值的时候要参考44b0的datasheet。
61489870-3a61-4935-9403-ea725b4746ab.jpg
9e0c6905-aaf6-46ce-b4f5-d05fbe0a8553.jpg
寄存器的地址可以参考44b.h,可以少牺牲点脑细胞,呵呵。
AXD下面要用到如下命令设置寄存器的值,这里写的是set memory,好像是设置内存哦,呵呵,44b的特殊寄存器是在。。。。。。。
下面是setmem命令的说明如下:
bbedb51e-c3b1-416d-975a-f75b67b18913.jpg
大家也可以用fillmem命令
81589421-28c4-430c-9de6-faee04540758.jpg

这么多初始化命令最好用AXD的obey命令载入批处理,就是将上面的初始化命令存为txt
然后用obey载入
81aa9cf0-d962-438c-a6e9-a49a47b12854.jpg
好,let's go!
以下假设我们已经用J-LINK或者wiggler连接上AXD跟开发板
1.打开命令行
dc444c74-5e7e-484f-90eb-f2e2a42875d4.jpg

2.载入批处理txt初始化主板
点击看大图
3.初始化之后可以看到三个LED已经灭了,然后load memory
d4937301-2dc1-47e9-9189-5a4631fb3c03.jpg
4.选择无敌的Led_test.bin,注意load到的目标地址是0x0c000000及sdram起始处!
8febfe11-19ca-4ed1-9e24-dd6195f5499f.jpg
5.然后可以看到当前pc指针指向的是0x0,未定义指令,执行的话会发生异常哦。需要修改pc指针。打开处理器寄存器窗口。
点击看大图6.修改pc为0x0c000000
点击看大图

7.可爱的中断向量表呵呵出来拉,接下去可以debug了。
cd1e1b0a-f783-47a2-a52b-7da8235acea6.jpg












PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1620250 2009-12-22 22:29

我比较菜,先在win下面的ADS学44b0,然后就用virtualbox虚拟了个xp,当然以前也用vmmachine虚拟过linux,hehe,很多高手都有这个经历吧,嵌入式开发的,不用linux不行啊

用户240011 2009-12-20 21:15

看你的“软浮点的交叉编译器与arm7”,好像又是在linux下,又用了AXD,怎么办到的
相关推荐阅读
用户1620250 2013-06-14 21:21
CIMCOEdit5自动生成轮廓的G代码
做了台全自动的NC数控玻璃切割机,感觉就是一台CNC的雏形了。     不管是哪一类的机床,只要是 NC 加工,零件的加工步骤如下: 1. 分析研究零件图; 2. 选择最合适...
用户1620250 2012-12-30 22:38
STM32 FSMC与FPGA 存储器接口 读写
  STM32 FSMC与FPGA 存储器接口 读写  panasonic.lin@163.com FPG...
用户1620250 2012-01-12 21:33
DSP/BIOS:Cannot create/delete a Clock from Hwi or Swi thread
DSP/BIOS:Cannot create/delete a Clock from Hwi or Swi thread 上篇文章提到Task_sleep睡死的问题解决后,添加了系统心跳cloc...
用户1620250 2012-01-12 21:28
DSP/BIOS:Task_sleep睡死的问题
程序其中的一个任务调用了Task_sleep(100),结果睡死在里面,用ROV查看任务的状态,Blocked阻塞,但是阻塞点是Unknown. 这是因为没有添加clock模块到系统...
用户1620250 2011-12-23 00:55
TI DSP 28335 CCSV4 外置SRAM调试(二)
11.为再次确保万无一失,往外置SRAM读写校验一下   12由于板子设置了从FLASH boot,FLASH内还有程序,debug 在LOAD了程序后自动复位然后运行了flash的...
用户1620250 2011-12-23 00:38
TI DSP 28335 CCSV4 外置SRAM调试(一)
DSP28335有内置256K X 16的FLASH,34K X 16的RAM,但是如果运行一个大一点的系统,如SYS/BIOS,这么小的RAM很难容纳的下,如果在FLASH中调试的话,每次都烧写...
我要评论
2
11
关闭 站长推荐上一条 /3 下一条