Jflash-s3c2410 linux移植(转)

嵌入式开发必备:JTAG接口针脚详解与常见连接问题排查 本文深入解析了嵌入式开发中JTAG接口的针脚定义、通信本质与核心信号,并提供了详细的连接实战指南。针对JTAG接口常见的连接失败、信号不稳定等问题,文章系统性地介绍了从电源检查、静态电平测量到动态信号观测的完整排查流程与解决方案,帮助开发者高效解决调试难题,确保项目顺利推进。 阅读详情
作者:断水刀
转载自:todaygood.cublog.cn



其实不能称为移植,只是将一般的Jflash代码修改一下,以适合自己的板子。
参考文档:
常见的JTAG cable结构都比较简单,一端是DB25,接到电脑的并口上,中间经过74HC244和一些电阻实现电平转换(5V3.3V?)(也有比较猥琐的只用了 几个100 Ohm电阻的方案,似乎我这里用来烧CPLD的就是一条这样子的...),另一端的JTAG header接到目标板的JTAG interface。
并口DB25原先主要是用来连接打印机,其引脚定义如下:
25 Pin D-Sub SPP SIGNAL DIRECTION IN/OUT
1 /Strobe In/Out
2 Data 0 Out
3 Data 1 Out
4 Data 2      Out
5 Data 3 Out
6 Data 4 Out
7 Data 5      Out
8 Data 6 Out
9 Data 7 Out
10 /ACK In
11 Busy In
12 Paper Out In
13 Select In
14 /Line Feed In/Out
15 /Error In
16 /INIT In/Out
17 /Select In In/Out
18-25 Ground GND
可见,数据线Pin2~Pin9可以用来发送数据,Pin10~Pin13等可以用来接收数据。
JTAG的数据传输形式是串行,主要使用了以下引脚:
TDI (Test Data In)
TDO (Test Data Out)
TCK (Test ClocK)
TMS (Test Mode Select)
TRST (Test ReSeT) optional.
因此,DB25-JTAG实际上只利用了DB25的少数几根线。但由于DB25的8条数据线都可以作为output,市面上就出现了各种使用不同Pin Assignment的JTAG线。例如Wiggler的Pin assignment:
TMS : Pin3 (D1)
TCK : Pin4 (D2)
TDI : Pin5 (D3)
TDO : Pin11 (Busy)
SRST    : Pin2 (D0)
TRST    : Pin6 (D4)
(参见Wiggler的电路图,但最后的nSRST和nTRST可能不一定用到,并且在H-JTAG中的定义也不一样,TRST是Pin2,没有SRST)
H-JTAG里还有另外一种接法--STD,定义如下:
TMS : Pin3 (D1)
TCK : Pin2 (D0)
TDI : Pin8 (D6)
TDO : Pin13 (Select)
SRST    : N/A
TRST    : Pin4 (D2)
而S3C2410的烧写程序SJF2410用的是:
TCK : Pin2 (D0)
TDI : Pin3 (D1)
TMS : Pin4 (D2)
TDO : Pin11 (Busy)
这个可以在源代码中的jtag.h文件里看到。
除了DB25那边的Pin Assignment有多种方案,JTAG connector也有20pin, 14pin, 12pin, 10pin等几种标准。这里一块ARM9开发板配的DB25-JTAG转换板就十分好玩,上面也是只有一块244,但是有Wiggler, STD, S3C2410三个20pin接口。由于20pin connector的Pin Assignment是固定的,三个接口对应的是DB25那边的三种接法,因此开发板可以根据pc上运行的程序不同选择不同的接口来接。
20Pin Connector的定义如下(参考此图):
Vcc     1    2 NC
nTRST 3    4 GND
TDI     5    6 GND
TMS     7    8 GND
TCK     9 10 GND
GND      11 12 GND
TDO      13 14 GND
NRESET    15 16 GND
NC     17 18 GND
NC     19 20 GND
14Pin:
nTRST    1 2 GND
TDI 3 4 GND
TDO 5 6 GND
TMS 7 8 GND
TCK 9    10 GND
nSRST 11    12 n/a
DINT    13    14 Vcc
(DINT pin is used to raise Debug Interrupt. Many chips has no this pin.)
12Pin:
nTRST    1 2 GND
TDI 3 4 GND
TDO 5 6 GND
TMS 7 8 GND
TCK 9    10 GND
nSRST 11    12 GND
10Pin:
TCK 1 2 Vcc
TDI 3 4 Vcc
TDO 5 6 GND
TMS 7 8 GND
nTRST    9    10 GND
关于JTAG几个信号,在H-JTAG主页上提供了一个文档,里面有对此进行介绍:
……下面,让我们从TAP(Test Access Port)开始。
  TAP是一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。对整个TAP的控制是通过TAP Controller来完成的。TAP总共包括5个信号接口TCK、TMS、TDI、TDO和TRST :其中4个是输入信号接口和另外1个是输出信号接口。一般,我们见到的开发板上都有一个JTAG接口,该JTAG接口的主要信号接口就是这5个。下面,我 先分别介绍这个5个接口信号及其作用。
Test Clock Input (TCK)
TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。TCK在IEEE 1149.1标准里是强制要求的。
Test Mode Selection Input (TMS)
TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。TMS信号在TCK的上升沿有效。TMS在IEEE 1149.1标准里是强制要求的。
Test Data Input (TDI)
TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI接口一位一位串行输入的(由TCK驱动)。TDI在IEEE 1149.1标准里是强制要求的。
Test Data Output (TDO)
TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO接口一位一位串行输出的(由TCK驱动)。TDO在IEEE 1149.1标准里是强制要求的。
Test Reset Input (TRST)
TRST可以用来对TAP Controller进行复位(初始化)。不过这个信号接口在IEEE 1149.1标准里是可选的,并不是强制要求的。因为通过TMS也可以对TAP Controller进行复位(初始化)。
  事实上,通过TAP接口,对数据寄存器(DR)进行访问的一般过程是:
  1 通过指令寄存器(IR),选定一个需要访问的数据寄存器;
  2 把选定的数据寄存器连接到TDI和TDO之间;
  3 由TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过TDO读出来。
另外,可选信号nSRST的定义如下(见参考资料1):
nSRST is a "system reset" signal and acts like conventional "Reset' button.
参考资料:
[1] http://www.linux-mips.org/wiki/JTAG
[2] http://en.wikipedia.org/wiki/Jtag
[3] http://docwiki.gumstix.org/JTAG
[4] http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/JTAG_Cable
[5] http://www.bluewaternz.com/corporate/uni/unikit/jtag/
从这里明白了市场上各个板子公司的jtag接口为何有20pin, 10pin,12pin,14pin的原因。再阅读了高手
litron 的文档, http://blog.chinaunix.net/u/23070/showart.php?id=157735
把jtag.h文件改动了一下
// Pin Connections
// TCK :DATA[0] (2) // my is 4    DATA[2]
// TDI :DATA[1] (3) // my is 5    DATA[3]
// TMS :DATA[2] (4)    //my is 3 DATA[1]
// TDO :STATUS[7] (11)
//#define TCK_H         0x01
#define TCK_H         0x04
//#define TDI_H         0x02             
#define TDI_H         0x08             
//#define TMS_H         0x04
#define TMS_H         0x02
编译,烧写,
[root@hujunlinux Jflash]# ./Jflash-s3c2410    vivi    /t=5

+------------------------------------+
|      SEC JTAG FLASH(SJF) v 0.11      +
|      modified by MIZI 2002.7.13      +
+------------------------------------+
> flashType=5
> S3C2410X(ID=0x0032409d) is detected.
> K9S1208 is detected. ID=0xec76

K9S1208 NAND Flash JTAG Programmer Ver 0.0
0:K9S1208 Program     1:K9S1208 Pr BlkPage 2: Exit

Select the function to test :0

[SMC(K9S1208) NAND Flash Writing Program]

Source size: 0x13a53

Available target block number: 0~4095
Input target block number:0
target start block number      =0
target size         (0x4000*n) =0x14000
STATUS:Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp

K9S1208 NAND Flash JTAG Programmer Ver 0.0
0:K9S1208 Program     1:K9S1208 Pr BlkPage 2: Exit

Select the function to test :2
jflash 可以烧写了,但是把vivi烧进去之后,运行minicom,串口没有输出,但是在windows下用
sjf2410烧写同样的一个vivi,正常运行,
碰到这个问题是因为我烧写vivi之后,
没有关闭电源,再打开板子, 只是按了一下板子上的Reset按钮,重新关闭再打开,串口就看到了vivi的启动信息。
这里提供我的Jflash源代码,
说明适合采用wiggler的jtag ,
// TCK :DATA[0] (2) // my is 4    DATA[2]
// TDI :DATA[1] (3) // my is 5    DATA[3]
// TMS :DATA[2] (4)    //my is 3 DATA[1]
意思是TCK->pin4,也就是DATA[2],应为pin2-pin9组成了DATA,所以pin2就是DATA[0]
依次类推TDI,TMS。TDO采用的是pin11, 因为我的jtag的TDO跟litron大侠采用的是一样的,
pin11,就没管它了。

文件:
Jflash-s3c2410_linux.tar.bz2
大小:
8KB
 
JTAG时序函数源代码 JTAG时序函数源代码,里面包含所有JTAG协议的函数代码。 立即下载

相关推荐

Jflash-s3c2410_linux

Linux下的flash烧写工具,具体使用方法可以在网上搜索一下,这也是我在网上找到的,不知道是不是修改过。

JTAG 详解

 来自 嵌入式系统Linux内核开发实战指南   http://book.chinaunix.net/showart.php?id=3258 第10章 自制简易JTAG下载烧写工具  对于普通嵌入式系统爱好者来说,不太可能花太多的钱去买比较高档的调试仿真工具来调试我们自己的目标板,最经济的做法就是自己制作一个简单JTAG线缆用来烧写flash,先将bootloader固化到

ruixj的专栏 3万+

OpenJTAG直接烧写S3C2410

OpenJTAG直接烧写S3C2410 OpenJTAG直接烧写S3C2410 OpenJTAG直接烧写S3C2410

简易JTAG线缆原理

简易JTAG线缆原理      简易JTAG线缆一端连接到PC的并口,另一端连接到目标板的JTAG接口,PC并口中的数据、I/O管脚通过一个74XX244单向驱动芯片与目标板JTAG口的TMS、TCK、TDI、TDO、TRST信号线相连,然后用PC上的软件来模拟JTAG所遵守的IEEE 1149.1标准协议,从而访问、控制目标板上处理器的I/O管脚状态,也就能访问、控制挂接在处理器总线上的

博文视点(北京)官方博客 2529

ADS1.2简介+使用H-JTAG进行代码调试(S3C2410).pdf

ADS1.2简介+使用H-JTAG进行代码调试(S3C2410)

s3c2410烧写工具

喜欢ARM的同学 可以看看这些 工程代码

JTAG电路的原理与设计

JTAG电路的工作原理1. JTAG电路简介JTAG的全称是Joint Test Action Group,即联合测试行动小组。目前,JTAG已成为一种国际标准测试协议,主要用于各类芯片的内部测试。现在大多数高级器件(包括FPGA、MCU、DSP以及CPU等)都支持JTAG协议,如FPGA、DSP器件等。标准的JTAG接口是4线接口:TMS、TCK、TDI以及TDO,分别为模式选择、时

yyt7529的专栏 1万+

并口DB25转JTAG接口电路原理图

并口DB25转JTAG接口电路原理图

jflash添加芯片_Jflash用于烧录

##Jflash——用于烧录VIVI(BootloaderofMIZIResearch)的工具##------------------------查看关于Jflash-s3c2410的帮助信息:#./Jflash-s3c2410--help烧写vivi到Nandflash芯片K9F1208U0M:#./Jflash-s3c2410vivi/t=5+--------------...

weixin_36147152的博客 2248

无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制

无刷直流电机矢量控制,采用转速、电流双环控制,电流环dq解耦,d轴采用id=0控制,q轴采用转速外环。采用滑模观测器(SMO),根据电压电流信息进行电机位置角度动态估算,模型可直接运行,转速和角度跟踪精度较高。 本文整理了该方法的基本原理,介绍了在MATLAB/Simulink中的建模和仿真过程,最后附上完整的模型文件。 一、基本原理 滑模观测器(下文简称SMO)是基于滑模变结构控制方法的一种状态观测器。其针对无刷直流电机转子位置估算的实现过程如下。 假设采用矢量控...

Forster-C的博客 6868

CVAT本地部署保姆级教程:用Docker Compose在Ubuntu上5分钟搞定你的私有数据标注平台

本文提供CVAT本地部署的保姆级教程,详细讲解如何在Ubuntu系统上使用Docker Compose快速搭建私有数据标注平台。从环境准备、Docker配置到CVAT部署全流程,涵盖硬件要求、性能优化及安全加固等关键步骤,帮助开发团队5分钟内完成高效、安全的标注环境搭建。

weixin_42619742的博客 383

Jflash-s3c2410 linux移植

Jflash-s3c2410 linux移植 其实不能称为移植,只是将一般的Jflash代码修改一下,以适合自己的板子。参考文档:常见的JTAGcable结构都比较简单,一端是DB25,接到电脑的并口上,中间经过74HC244和一些电阻实现电平转换(5V3.3V?)(也有比较猥琐的只用了几个100 Ohm电阻

dongliqiang2006的专栏 1076

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

在100纳秒内完成从网卡到C++策略的响应,这是一项对技术栈每一个层面都进行极限优化的系统工程。它要求我们深入理解计算机体系结构、操作系统、网络协议和C++语言的底层机制。从物理距离的极致缩短,到高性能网卡和内核旁路技术,再到C++代码中每一个字节、每一个CPU周期的精打细算,HFT系统展现了人类对计算速度的永恒追求。这项技术不仅仅应用于金融交易,其背后的低延迟理念和实现方法,如DPDK、无锁编程、硬件加速等,正在逐渐渗透到其他对延迟敏感的领域,例如电信网络、边缘计算和工业自动化。

weixin_41455464的博客 1039

ARM系统设计JTAG接口常见问题

ARM系统的JTAG接口的设计不当往往使硬件系统无法调试,所以在设计ARM系统前要先熟悉ARM系统的JTAG接口的定义和常见问题。   1.ARM系统的

Bekars涡轮增压的Blog ^_^ 2122

基于STM32L4XX 、HAL库的STSPIN32G4三相无刷直流电机(BLDC)驱动应用C语言程序设计

/ 设置PWM模式为6步换相。│PA5-7 ├── SPI ────►│SCK/MISO│ │ 三相桥 │。– 2路电机控制高级定时器(16位,支持6路 PWM 通道)// 60度电气周期对应转速 = 60/(极对数 * 6 * 周期)// 电气角度(0-3599)

PP_Cottage的博客 147

华为服务器BMC方式安装系统-官方文档解读

华为服务器BMC方式安装系统 安装完成之后我们有两种方式去安装系统, > 一、服务器连接显示屏、键盘、鼠标和启动盘去启动服务器安装系统(弊端:需要制作单独启动盘并且需要硬件资源) > 二、使用BMC方式安装系统,也就是说使用网线连接我们的笔记本和服务器的BMC口或者mgt口去进行安装。

王明的博客 4579

JTAG各类接口针脚定义、含义以及SWD接线方式

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,用于系统仿真、调试及芯片内部测试。它通过访问芯片内部封装好的测试电路TAP(Test Access Port,测试访问端口)来实现。目前大多数的芯片都支持JTAG协议,这样通过JTAG的仿真测试可便于研发人员的开发调试。 目前JTAG接口有两种连接标准:14针接口及20针接口。接口定义如下所示。 14针接口定义: 引脚定义 引脚功能 1、13

学海无涯的专栏 14万+

反爬虫:POST 请求参数中 Sign 的加密机制详解,并设计带 Sign 校验的网站

本文介绍了API请求中sign签名的生成原理及实现方法。sign是通过对请求参数加密生成的一串字符串,用于验证请求合法性,防止参数篡改、重放攻击和伪造请求。其生成步骤包括参数排序、拼接字符串、加盐和哈希加密。文章还演示了如何在FastAPI后端实现带sign验证的新闻网站,包括参数校验、时间戳验证和签名比对等安全措施,有效提升API安全性,增加爬虫逆向难度。

数据知道的博客 4078

我的WINCE4.2历程(3)

又折腾了一整天,今天主要是尝试在目标板上单步执行程序(目前连灯都没得点,程序修改后只能用JFLASHMM烧写,太盲目了)。 1)用ADS编译EBOOT。 情况:要想完整编译EBOOT源码的话,依赖关系会是个大问题。但是只调试main函数之前的汇编代码应该是有可能的。 2)用H-JTAG作为调试代理,单步执行程序。 情况:H-JTAG可以识别PXA255,但AXD调试时提示"Error:Ca...

weixin_30509393的博客 210

最新Python爬虫实战(入门爬虫篇)——案例15:微博热搜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对微博热搜 API 接口数据的批量爬取与 Excel 保存。代码采用模块化设计,包含接口请求、JSON 解析、数据提取、Excel 持久化等完整流程;通过模拟真实浏览器的请求头和 cookies,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循“API请求 → JSON解析 → 数据提取 → 保存到Excel”的标准流程,与异步加载类网站的爬取范式高度一致。AJAX 接口抓包与分析。

努力让自己发光,对的人才能迎着光而来 7万+

Stable Diffusion 模型分享:Beautiful Realistic Asians(美丽真实的亚洲人)

Beautiful Realistic Asians(BRA)模型是由作者自己训练而成的一个独立模型,它是一个真实模型,并且是一个针对亚洲人训练的模型,可以生成非常漂亮的亚洲小姐姐。条目内容类型大模型基础模型SD 1.5来源CIVITAI作者文件名称文件大小1.99GB。

水滴的博客 2157

使用SJF2410 和jtag烧写.bin的步骤及其存在的问题

1 、安装GIVEIO 驱动(1) 复制光盘中的giveio.sys 到C:\WINDOWS\system32\drivers 目录(2) 打开"控制面板->添加硬件->",按照向导进行操作:Step1:开始安装Step2:选择“是的,我已经连接了此硬件”,这时不必连接实际的JTAG 板。Step3:选择“添加新的硬件设备”。Step4:选择“安装我手动从列表选择的硬件”,如图。Ste...

weixin_33810006的博客 241

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JTAG——原理分析

JTAG(Joint Test Action Group,联合测试行动组)是一种国际标准测试协议(IEEE 1149.1兼容)。标准的JTAG接口是4线——TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 JTAG的主要功能有两种,或者说JTAG主要有两大类:一类用于测试芯片的电气特性,检测芯片是否有问题;另一类用于Debug,对各类芯片以

liyan728的专栏 8315

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: s3c2410完全开发(转)
下一篇: 箴言警句
hgd_dingjun
博客等级 码龄21年 19粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值