// 文章首发于 https://zhuanlan.zhihu.com/p/28762429

// 但是不知道为什么搜索引擎还没有收录,便在博客再次发布。

0. 引言

意法半导体生产的 SH4 架构的 ST40 CPU 被广泛地用于机顶盒中。

对于DIY家庭硬件来说,救砖途径十分重要,尤其是在 FLASH 由于误操作被清空时,不能使用 u-boot 之类的 bootloader,JTAG 几乎就成了唯一较方便的救转方式。

(当然还可以用编程器直接写 FLASH,不过贴片的 FLASH 芯片用烙铁拆还是有点小怕。)

而对于 ST40 CPU 来说,需要购买 ST 官方的 ST Micro Connect 仿真器,才可使用 JTAG 进行调试与运行程序,价格比较昂贵,其实这样的一个 JTAG 适配器,是可以自己DIY制作的。

1. 准备

  • FT4232 或者 FT2232 系列模块
  • 双母头杜邦线若干
  • 目标板(此处为 STb7100 板子)
  • PC(Fedora 14 x86 与 Windows)
  • 万用表

2. 操作

2.1 目标板 JTAG

首先在目标板上,找到 JTAG 针脚(一般为20针),可以利用 Google 搜索一下板子的 Datasheet,比如我的 STb7100 板子可以在这找到:

http://www.avi-plus.com/download/STb7100MB.pdf

翻阅找到有关 JTAG 的一页,可以看到针脚是这样定义的,如下图。

由于板子上的 JTAG 针脚没有标记,而偶数针脚均为 GND,因此利用万用表测试各针脚与 GND 的连通性,能够找到所有偶数针脚,便可确定各针脚的定义。

(注意:第 7 针应为nASEBRK;第 17 针也可叫nRST)

2.2 FTDI 模块

对于 FTDI 的芯片,国内存在着大量山寨芯片,一般淘宝上比较便宜的那种,十拿九稳就是山寨芯片了,虽然功能没有影响,但性能有不同,还是强烈建议购买正版。

比较方便的模块之一是 UM232H,国内淘宝存在如下两种:前者应为国内小厂商自己山寨的模块,后者应为 FTDI 官方版本,都可以用。

一般来说,模块购买后,应该是空的,即没有进行烧写程序的;当然如果有,也不影响。

基本的思路就是将 FTDI 模块的 VID 和 PID 修改为 ST Micro Connect 对应的值,达到欺骗的效果。

将购买的模块连接至 PC,前往 FTDI 官网下载驱动后安装,下载使用 MProg 对其进行烧写。首先扫描设备 Device -> Scan,然后读取数据 Tools -> Read and Parse,进入编辑模式后,可修改其数据,修改后如下图。

之后使用闪电图标进行烧写,就完成了欺骗第一步,如果你发现烧写后发现信息错误,可以在 FTDI 的驱动 INF 文件中,加入你设备当前的 VID 和 PID,对你的设备重新安装该驱动,即可识别为 FTDI 设备,便可再次使用 MProg 进行烧写操作。

下图为连线图,使用了 FTDI 官方模块作为图例。对于 FTDI 官方模块来说,需要使用跳线帽对其电源进行设置:VIO 与 3V3,5V0 和 USB 连接;而对于山寨模块来说,一般不需要考虑电源,厂商都已经设置好,因此可直接看左下侧的连线。

根据下图将 UM232H 模块与目标板 JTAG 相连。

(注意:GND 在此可不连)

2.3 工具集

目前暂未找到 Windows 下的 ST Micro Connect 驱动程序,估计 ST 官方的 FTP 有,不过前些年流传的用户名和密码失效了。

ST 其实有个专用的 Toolset 和 Package 的,Toolset 的下载地址(Windows):

ST40 Micro Toolset R5.3.0. Get the software safe and easy.

目前我的解决方案是使用 STLinux 内置的工具集,需要安装 STLinux,下载地址:

http://archive.stlinux.com/stlinux/2.4/iso/STLinux-2.4-sh4-20141119.iso

也就是说 Windows 有工具集但缺驱动,而 Linux 下要安装一个大东西。

这玩意儿坑的我非常厉害,等有空了我再单独发一篇文章。

2.4 工具集使用

如果安装了 STLinux 或者 Toolset 并有驱动,可以打开其提供的 gdb。

对于我的 STb7100 来说,使用 mb411 的包,

Windows 下使用

(gdb) sh4tp STMCLT2333A:mb411:st40

Linux 下使用

(gdb) sh4tp STMCLT2333_A:mb411:st40

接下来就可以加载程序了,可以加载 ELF 格式的程序

(gdb) load /home/st/bootloader/u-boot

继续执行

(gdb) continue

理论上现在的串口就可以使用了。

A. 参考资料

[1] How to JTAG Interface STMCLT Clone (Rev 2) http://www.avi-plus.com/images/fbfiles/files/HOWTO_JTAG_Interface_STMCLT_Clone_REV2.pdf

[2] ST40 / STb71xx JTAG interfacing

ST40 自制 JTAG 适配器的更多相关文章

  1. 用TTL线在CFE环境下拯救半砖wrt54g路由器

    缘起:路由器被刷成半砖 Linksys wrt54gs v4路由器,已刷入 tomato-dualwlan 1.23.使用数年,未出现任何故障. 在日用的wifi网络上,通过web界面刷入了错误的to ...

  2. 自制USB wifi信号放大天线

    这是我的usb wifi天线第一个版本,灵感来自: http://www.instructables.com/id/EQARE4I72GEPUCHTHU/ http://www.usbwifi.orc ...

  3. SPI、I2C、I2S、UART、GPIO、SDIO、CAN、JTAG的区别及使用方法。

    SPI 全称及由来:SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的. ...

  4. OpenOCD安装与使用(JTAG调试)

    本文介绍openocd开源软件的安装以及搭配JTAG对Xilinx u500VC707devkit的调试 PC OS: Ubuntu20.04 LTS Target ARCH: riscv64 JTA ...

  5. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  6. 打造android偷懒神器———ListView的万能适配器

    如果你去做任何一个项目,我相信你都会跟我有一样的经历,最最普遍的就是列表显示ListView,当然,写N个自定义的适配器也是情理之中.虽说程序员本身就是搬砖,做这些枯燥无味的重复的事情也是理所当然,但 ...

  7. 打造android偷懒神器———RecyclerView的万能适配器

    转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...

  8. ListView和Adapter数据适配器的简单介绍

    ListView 显示大量相同格式数据 常用属性: listSelector            listView每项在选中.按下等不同状态时的Drawable divider            ...

  9. Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器

    一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适 ...

随机推荐

  1. 团队作业8----第二次项目冲刺(beta阶段)5.20

    Day2--5.20 1.每日讨论 会议内容:1.新成员乔桦和周迪慢慢了解项目. 2.组内负责主要编程的益靖对代码进行了大概的说明. 3.对昨天的工作进行了几点总结. 4.组长对每个成员的任务完成了分 ...

  2. 201521123087 《Java程序设计》第6周学习总结

    1. 本周学习总结 2. 书面作业 clone方法1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?                 ...

  3. 201521123100 《Java程序设计》第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...

  4. 201521123040《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  5. Geronimo tomcat: 在 Apache Geronimo 插件体系中将 Apache Tomcat 这个优秀的 Web 容器整合至其中

    Apache Geronimo 灵活的插件体系将 Tomcat, OpenJPA, OpenEJB, ActiveMQ 等第三方组件集成至其中.本文从多角度介绍了在 Apache Geronimo 中 ...

  6. 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

    32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...

  7. idea下使用Maven找不到类

    当我们配置好pom文件的时候,准备启动Tomcat,Tomcat缺报找不到类的错误.. 可是明明我们的pom文件是没有问题的,在web.xml中也是可以ctrl+鼠标左键把类找到-为啥就报这么一个错误 ...

  8. JSP知识点大纲图

    这是我整理出来的JSP知识点大纲图,具体的内容都可以在我的博文中找到-.

  9. C#中的两把双刃剑:抽象类和接口

    问题出现: 这也是我在学习抽象类和接口的时候遇到的问题,从我归纳的这三个问题,不难看出这也许是我们大多数程序员遇到问题的三个阶段, 第一阶段(基础概念):就象问题1一样,这部分人首先需要扫清基础概念的 ...

  10. Kindle 推送教程:教你用电子邮箱推送电子书

    Kindle 推送是什么意思?如何通过电子邮件附件推送?或许刚刚接触 Kindle 的朋友对这个概念不是很清楚,其实所谓 Kindle 推送是指亚马逊提供的一个"Kindle 个人文档服务& ...