简易JTAG烧写程序的执行逻辑和流程
2009-03-05 08:46
309 查看
简易JTAG烧写程序的执行逻辑和流程
本文摘自王洪辉老师的《嵌入式系统Linux内核开发实战指南(ARM平台)》一书
网上有很多种简易JTAG烧写程序,有用标准C写的,有用VC写的,有Windows系统下使用的版本,也有Linux系统下使用的版本,读者可以自行下载后作适当修改重新编译就可使用了。
不管什么版本的程序,其基本原理和执行逻辑应该是差不多的,本书附带光盘中有我所下载、修改、使用的JTAG烧写程序完整源代码,读者可以参考阅读。如图10-6所示是该程序的总体流程。
烧写程序维护两个扫描链表缓冲区,一个对应输入,一个对应输出。一个扫描链缓冲区就是一个int型整数数组,数组的长度为CPU的管脚(PIN)数,数组中的每个元素对应一个管脚的状态,一个管脚的状态只有两种:0或者1,事实上用1位就可以描述这两种状态,而程序中用一个int整数来描述是很浪费的,感兴趣的读者可以对程序进行修改优化。输入扫描链表数组用来保存刚从CPU扫描出来的每个管脚的状态,而输出扫描链表数组用来保存将扫描到CPU的管脚中的状态。
对flash芯片编成首先必须将flash芯片擦除,然后再对其进行写操作,擦除flash芯片可以逐个扇区擦除,也可以一次擦除整个芯片,对flash芯片进行擦写的时序和命令请查看具体flash芯片型号的datasheet。
通过简易JTAG线缆读写flash芯片数据必须逐个字节进行读写,操作过程都很类似,以读flash为例,操作过程如下:
1)把CPU各管脚的安全状态写入到输出扫描链表数组中;
2)将“SAMPLE”命令扫描到CPU的TAP控制器中;
3)将输出扫描链表数组中的状态扫描到CPU的TAP控制器中;
4)再次将“SAMPLE”命令扫描到CPU的TAP控制器中;
5)将“EXTEST”命令扫描到CPU的TAP控制器中;
6)执行for循环逐个字节读取数据,循环次数等于要读取的数据长度:先将要读取的flash的地址的地址管脚状态写入输出扫描链表数组对应的元素中,然后将输出扫描链表数组中的状态扫描到CPU的TAP控制器中,与此同时将CPU管脚的状态同步输入到输入扫描链表数组中,然后从输入链表数组中提取flash数据。
本文摘自王洪辉老师的《嵌入式系统Linux内核开发实战指南(ARM平台)》一书
网上有很多种简易JTAG烧写程序,有用标准C写的,有用VC写的,有Windows系统下使用的版本,也有Linux系统下使用的版本,读者可以自行下载后作适当修改重新编译就可使用了。
不管什么版本的程序,其基本原理和执行逻辑应该是差不多的,本书附带光盘中有我所下载、修改、使用的JTAG烧写程序完整源代码,读者可以参考阅读。如图10-6所示是该程序的总体流程。
烧写程序维护两个扫描链表缓冲区,一个对应输入,一个对应输出。一个扫描链缓冲区就是一个int型整数数组,数组的长度为CPU的管脚(PIN)数,数组中的每个元素对应一个管脚的状态,一个管脚的状态只有两种:0或者1,事实上用1位就可以描述这两种状态,而程序中用一个int整数来描述是很浪费的,感兴趣的读者可以对程序进行修改优化。输入扫描链表数组用来保存刚从CPU扫描出来的每个管脚的状态,而输出扫描链表数组用来保存将扫描到CPU的管脚中的状态。
对flash芯片编成首先必须将flash芯片擦除,然后再对其进行写操作,擦除flash芯片可以逐个扇区擦除,也可以一次擦除整个芯片,对flash芯片进行擦写的时序和命令请查看具体flash芯片型号的datasheet。
通过简易JTAG线缆读写flash芯片数据必须逐个字节进行读写,操作过程都很类似,以读flash为例,操作过程如下:
1)把CPU各管脚的安全状态写入到输出扫描链表数组中;
2)将“SAMPLE”命令扫描到CPU的TAP控制器中;
3)将输出扫描链表数组中的状态扫描到CPU的TAP控制器中;
4)再次将“SAMPLE”命令扫描到CPU的TAP控制器中;
5)将“EXTEST”命令扫描到CPU的TAP控制器中;
6)执行for循环逐个字节读取数据,循环次数等于要读取的数据长度:先将要读取的flash的地址的地址管脚状态写入输出扫描链表数组对应的元素中,然后将输出扫描链表数组中的状态扫描到CPU的TAP控制器中,与此同时将CPU管脚的状态同步输入到输入扫描链表数组中,然后从输入链表数组中提取flash数据。
相关文章推荐
- Android小技巧:LogHelper调试程序执行流程的小技巧
- 【Activiti工作流】6.Activiti入门程序HelloWorld演示流程的执行(下)
- [深入理解JVM 一]---Java程序执行流程
- MFC 程序入口和执行流程
- vc6之多文档程序执行流程
- 杰神之Java中的程序执行流程
- Android程序的执行流程分析
- 隐藏在程序后面的是逻辑、流程,进一步说是管理思想
- MFC 程序入口和执行流程
- 计算机程序的思维逻辑 (9) - 条件执行的本质
- 通过一个模拟程序让你明白WCF大致的执行流程
- MFC 程序入口和执行流程
- iOS学习笔记(二.iOS程序执行流程)
- etrace 跟踪程序函数动态执行流程
- MFC 程序入口和执行流程
- ClassLoader—流程观察程序执行类加载-verbose:class
- 计算机程序的思维逻辑 (9) - 条件执行的本质
- 51之51单片机程序执行流程(STARTUP.A51)
- 浅析android通过jni控制service服务程序的简易流程
- MFC 程序入口和执行流程