本人把这一段使用JTAG的一些心得写出来,希望能够对初学者有所帮助。
通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。
一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。
上面说的只是JTAG接口所具备
阅读全文>
发表于 @ 2007年12月04日 22:56:00|评论(loading...)|收藏
rS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个阅读全文>
发表于 @ 2007年10月08日 22:42:00|评论(loading...)|收藏
44B0的向量中断响应过程是中断发生后芯片会自动跳转到0x00000018处执行指令。ldr pc,=HandlerEINT0 ;ldr pc,=HandlerEINT1.ldr pc,=HandlerEINT2.ldr pc,=HandlerEINT3.根据44b0的DATASEET,0x18处放置的指令为b HandlerIRQ ;当程序跳转到这里执行时,芯片在这个地址取到的代码已经被后面程序中的branch instructions取代了,举个例子,如果芯片EINT3发生中断,芯片会跳转到0x18处执行,先在0x18处取指,这时取到的指令已经不是b HandlerIRQ,b HandlerIRQ已经被芯片自动替换成了ldr pc,=HandlerEINT3,然后芯片再执行此条指令。阅读全文>
发表于 @ 2007年08月25日 22:00:00|评论(loading...)|收藏
对于44b0公板,在用AXD调试代码时,将运行空间设置为SDRAM(0x0c000000),运行代码前需要对SDRAM 进行初始化可以用AXD的COMMAND LINE功能(ALT+L),也可以用H-JTAG的INIT SCRIPT功能,总之对相应的寄存器赋值就可以了 如下表所示fillmem 0x01d80000 0x01d80000 0x58061 32fillmem 0x01c80000 0x01c80000 0x11110092 32fillmem 0x01c80004 0x01c80004 0X600 32fillmem 0x01c80008 0x01c80008 0X7FFC 32fillmem 0x01c8001c 0x01c8001c 0X18000 32fillmem 0x01c80020 0x01c80020 0X18000 32fillmem 0x01c80024 0x01c80024 0x820591 32fillmem 0x01c80028 0x01c80028 0x16 32fillmem 0x01c8阅读全文>
发表于 @ 2007年08月10日 20:50:00|评论(loading...)|收藏
为阅读BLOB首先阅读了杜云海的ARM学习报告,对在ADS调试时生成的AXF和BIN文件以及GNU编译生成的ELF文件和可执行文件有了一些了解。
对于ARM学习报告1关键要理解加载域和运行时域的概念,加载域即下载到FLASH中的BIN文件的地址分配,运行时域就是在程序运行时把BIN文件的各个段拷贝到RAM中的地址分配情况。对于学习报告中给的启动代码,在ARM启动时,flash地址为0-2M
阅读全文>
发表于 @ 2007年04月18日 18:05:00|评论(loading...)|收藏
要移植BLOB,最好先看懂BLOB的工作流程。本人只针对intel开发板mtwilson来理解BLOB,相信其他板子也是一样的,BLOB对各种板子的支持在configure.in中有列出。
BLOB对各种CPU的支持在configure.in中定义,编译器直接编译出针对
阅读全文>
发表于 @ 2007年04月16日 21:08:00|评论(loading...)|收藏
一、引言
在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:
1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。
2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。
3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs。阅读全文>
发表于 @ 2007年04月13日 21:38:00|评论(loading...)|收藏