简易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数据。

简易JTAG烧写程序的执行逻辑和流程相关推荐

  1. 51单片机usb烧录电路_51单片机怎么用usb烧写程序 - 全文

    单片机怎样用usb烧写程序 首先,需要安装keil软件和STC_ISP程序下载软件. 先对你想要实现对单片机的功能用keil编程,然后用STC_ISP下载软件下载到单片机上,最后打开给单片机提供电源就 ...

  2. 开发板之驱动安装与烧写程序

    硬件接口 开发板接口:板载USB串口.JTAG.usb下载口(dnw) 软件下载 USB串口连接及驱动安装 串口驱动的安装非常简单: 运行串口驱动 PL2303_Prolific_DriverInst ...

  3. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证

    xilinx Vivado的使用详细介绍(2):创建工程.添加文件.综合.实现.管脚约束.产生比特流文件.烧写程序.硬件验证 Author:zhangxianhe 新建工程 打开Vivado软件,直接 ...

  4. xilinx Vivado的使用详细介绍(2):综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证

    IO口配置(I/O Planning)/编辑约束文件(Edit Constraints Sets) 做好的模块,在烧写进板子之前,需要设置输入输出信号与板子上IO口的对应关系. IO口设置有两种方法, ...

  5. 给单片机焼写程序需要什么东西_单片机怎么烧写程序

    1.单片机怎么烧写程序 STC系列单片机为例:首先,需要安装keil软件和STC_ISP程序下载软件.先对你想要实现对单片机的功能用keil编程,然后用STC_ISP下载软件下载到单片机上,最后打开给 ...

  6. 用OpenJTAG烧写程序到Flash—— 韦东山嵌入式Linux视频学习笔记03

    说明:本文仅在Windows环境下实验. 韦东山的JZ2440(v2),可以选择从Nor Flash启动,也可以选择从Nand Flash启动,不管从哪里启动,都需要Flash上有程序,没有程序的话, ...

  7. JZ2440用U-Boot给Nand-Flash烧写程序时报错:NAND write: incorrect device type in bootloader ‘bootloader‘ is not

    JZ2440开发板使用问题,U-Boot烧写程序到Nand Flash时报错:NAND write: incorrect device type in bootloader 'bootloader' ...

  8. 51单片机下载完程序后不亮_程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍...

    单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计.方便了逻辑的设计.丰富了逻辑的输出.不同厂家的单片机需要不同编程IDE来实现编 ...

  9. atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?

    CC2640 R2是德州仪器推出的面向 Bluetooth Smart 应用的低功耗无线 MCU.该芯片运行TI的BLE协议栈,具有功耗低,外设种类丰富,射频性能好等特点.利用它可以实现许多有趣的应用 ...

  10. 瑞萨e2studio(5)----使用UART串口烧写程序到瑞萨芯片

    瑞萨e2studio.5----使用UART串口烧写程序到瑞萨芯片 概述 视频教学 csdn课程 样品申请 硬件准备 软件准备 hex文件准备 UART串口与瑞萨开发板进行接线 烧录 概述 本篇文章主 ...

最新文章

  1. elasticsearch-.yml(中文配置详解)
  2. 加速、能耗与对抗攻击:5位顶会作者解析2020 AI系统关键挑战
  3. 在sql server里,日期字段按天数进行group by查询的方法
  4. python的.arsort()函数的用法
  5. 【Leetcode | 02】二叉树、线性表目录
  6. [Note]Linux查看ASCII字符表
  7. linux网络安装gtk2,(一) linux 下gtk2,python的安装
  8. hadoop本机运行 解决winutils.exe的问题
  9. SDL2源代码分析5:更新纹理(SDL_UpdateTexture())
  10. Android Studio实现一个校园二手交易系统
  11. 关于重分类工具的其他讨论
  12. vector 详解(C++)
  13. 获取局域网电脑序列号
  14. 至强服务器性能排行,至强CPU性能排行榜,至强系列cpu天梯图2020.06
  15. 软件特性开发的流程感想
  16. 崩坏3服务器修改水晶数量,崩坏3半年不氪金能攒多少水晶 半积年攒水晶数量详情...
  17. 新能源车电机控制器源代码资料 基于TI芯片的FOC源代码资料
  18. 删除PDF文件中的空白页面
  19. android webview打开相册,Android webView不能响应h5打开相册的操作
  20. 有趣的bat(批处理)文件~~

热门文章

  1. php版本的code review软件
  2. Windows和linux(ubuntu)互传文件简便快捷的方法
  3. 在AIX系统下查询硬件信息的方法
  4. 女人不需要哲学,因为哲学不能给她们带来面包
  5. python识别文字tesseract
  6. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第7节 Arrays工具类_17_Arrays练习:字符串倒序...
  7. tcpdf中增加微软雅黑的正确方式
  8. Python全栈之路系列----之-----守护进程\进程锁\队列\生产者消费者模式\数据共享\进程池(同步,异步)\回调函数\concurrent.futures模块...
  9. 20155315 2016-2017-2 实验二《Java面向对象程序设计》实验报告
  10. CSS position属性---absolute与relative