因为偶是个新手,所以就从这里入手的. 其实我想做arm-linux学习,以后这个方法可能用的不多,因为可以用linux下的gdb软件了.既然是学习就先从简单开始吧, 先用这个方法做以下两件事: 1.用他来调试bootlaoder 2.用他来配合linux驱动的开发,在作驱动开发前可以用ads将寄存器的设置等硬件紧密相关的部分调试好,然后将调试好的部分合并到linux驱动中,这样可以加快调试速度(对于很熟悉和简单的自然是用不着这样了) 要用ads进行在线调试目标机需要目标机有jtag或在目标机上有angel调试代理软件,因为调试代理软件要占用硬件资源,且目前jtag接口也被大多的芯片所支持,所以目前更多是用jtag方式.另外还需要wiggler小板或其他和jtag代理工具. 用jtag方式需要做的工作是: - 安装ads
- 安装并口驱动
- 安装jtag代理软件(直接运行)
- 用ads建立工程
- 设置工程(程序入口点,ro rw 存储器位置等)
- 添加程序文件和头文件
- .编译
- 调试(启动axd)
- 对axd 目标连接做好设置
- 通过axd 命令行对目标机做必要的设置
装载目标机代码进行调试 一.安装ads: 略 二.安装并口驱动: 三.连接jtag线,运行jtag代理软件: 我有arm9-jtag和H-Jtag。我用的是yl的wiggler兼容小板 四.建立ads工程文件和相关设置:
相关设置如下 设置RoRw起始地址 设置入口点 编译设置,c和汇编,c++设置类似 连接设置 五.添加文件并编译文件 六.启动和设置axd 选择options->configure Target.... 选adp.... 点Configure按钮 选Arm ethernet driver address 为127.0.0.1点OK后,如果连接没问题axd应该正确启动目标
七.通过axd命令行对目标板进行设置 因为我用的yl的2440板是配置为 nand 启动的,sdram是在0x30000000地址的,所以需要先对存储器控制寄存器进行设置,在axd下设置方法是:选 systems views->command lines interface,输入如下命令对寄存器设置 地址 值 长度 setmem 0x53000000, 0x00000000, 32 还可以将要设置的寄存器写入一个文件,在命令行用ob(obey) config.ini即可批量执行设置指令或在 options->Configure Interface 中做如下设置 我的config文件内容如下: setmem 0x53000000, 0x00000000, 32 setmem 0x4a000008, 0xffffffff, 32 setmem 0x4a00001c, 0x00007fff, 32 setmem 0x48000000, 0x2212d110, 32 setmem 0x48000004, 0x00000f40, 32 setmem 0x48000008, 0x00002e50, 32 setmem 0x4800000c, 0x00002e50, 32 setmem 0x48000010, 0x00002e50, 32 setmem 0x48000014, 0x00002e50, 32 setmem 0x48000018, 0x00002e50, 32 setmem 0x4800001c, 0x00018005, 32 setmem 0x48000020, 0x00018005, 32 setmem 0x48000024, 0x00960542, 32 setmem 0x48000028, 0x00000032, 32 setmem 0x4800002c, 0x00000030, 32 setmem 0x48000030, 0x00000030, 32 如果设置正确则开发版的SDRAM生效,则可以加载目标代码了 八.装载目标文件下载到目标机进行调试 九. 小提示: 1、因为我的开发板是nand 启动的,以上调试程序又加载到0x31f00000处执行,所以根本没有处理异常向量,所以调试过程中没有开中断,如果要开中断则要正确设置异常向量。 2、有写寄存器要尽量避免axd去读,因为这样可能导致错误的出现。
|