芯片烧写工具

问题描述

最近出了一个机器变砖的问题,一些用户使用的设备,头一天晚上用的好好的,第二天来一上电开机就起不来了。

然后就寄回来,返厂维修。一些是因为部分电子器件坏了,还有一些是文件系统问题,重新升级一下就好了。

这个文件系统问题造成的不良品返修,在出货中占比2%,影响还是很大。

维修中心负责维修,修好了再给客户寄回去。但产品出问题还是会影响到产品口碑和出货,所以品质那边就要我们工程师尽快调查这个问题。

出问题的板卡上的SPI Nor-Flash送交了原厂,出了个测试报告,结论是这个Flash是没有问题的。

这个文件系统的索引区有两个,一个作为备份,一个作为活动分区。机器启动后在Bootloader里先加载文件系统,再加载APP程序文件,完成启动。

加载文件系统时,要读取文件分区表。分区表有两个,交替选择其中一个作为活动分区,另一个作为备份。

最后大概是发现,文件系统的分区表数据读取后,要计算CRC来校验,这时出现了错误。两个分区表都出错,无法成功加载文件系统,就会格式化分区表。

原来的文件元数据就都丢失了,所以无法正常加载APP程序文件,启动失败而变砖。

我们使用工具将Flash数据读取出来,发现分区表里有个别字节数据异常,比如0xFF变成0xBF。

仅从理论分析上,原因有三,一个是Flash数据确实发生变化,一个是SPI读取Flash数据时,信号受干扰,一个是读到DRAM里后,数据出错。

最后只能软件上在CRC校验的处理中加入保护逻辑,不要随便格式化。

解决问题中使用的工具

要想调查分析这个问题,普通调试方法是无效的,机器是无法启动的,需要读取有问题的板卡上的Flash数据。所以我们从淘宝上购买了烧写Flash的工具,还有匹配我们Flash的底座。使用的底座是根据封装类型和Pin脚数目而定的。

把板子上的SPI Nor Flash吹下来,放入烧写工具的底座,将其中的数据全部dump出来,保存成一个bin文件,然后分析文件系统出错的原因。

烧写工具介绍

深圳市思泰佳电子有限公司,VS4000P通用型编程器。

思泰佳官网,编程器设备生产商,烧录设备

锁紧座脚数:40脚

支持芯片种类:约1.8万种

支持最大容量:512Mbit

通讯和供电:USB接口

支持系统:Win XP/7/8/10

标配包含:编程器主机,USB电缆,光盘(软件和使用说明)

支持芯片型号以设备为准,可在官网下载器件列表或编程器软件查看。

还可以下载VS4000P软件包(附使用说明、器件列表),2023年7月19日更新.zip,15.63MB。

支持的可烧写的芯片列表如下。

  • 常用存储器

24系列EEPROM:24C01/02/04/08/16/32/64/128/256/512/1024...   

              24LC01/02/08/16/32/64/128/256/512...

25系列EEPROM:25010/020/040...640...

25 SPIflash: 25Qxx/25Xxx/25Txx/25Dxx/25Pxx/25Dxx/25Rxxxx/25Uxxxx/25Lxxxx...

27系列EPROM:   27C32/64/128/256/512

28系列:      28C32/64/128/256...28HCxx....

39系列:      39Dxxx/39Fxxx/39Lxxx/39Vxxx...

49系列:      49Fxxx/49Vxxx...

93系列EEPROM: 93C46/56/66/76/86(8bit、16bit),93LC46/56/66/76/86(8bit、16bit),93C45/55/65/75/85...

95系列:      95010/020/040/080/160/320/640/128/256/512...

45系列:      45DB011/021/041/081/161/321/641/642...

  • 常用51单片机

ATEML:        AT89C51/52、AT89S51/52、AT89C2051、

WINDBOND:     W77E58/058/516...、W78E052/058/516...

SST:         SST89E516/516RD2...

SyncMOS:     SM8952A/B...

  • 常用PIC单片机

PIC12Cxxx/PIC12Fxxx/PIC16Cxxx/PIC16Fxxx...

PIC18Fxxxx/PIC18LFxxxx...

  • 常用AVR单片机

ATmega8/16/32/48/88/162/163/164/168/8515...

ATtiny10/11/12/13/15/24/25/28/44/45/84/2313...

AT90Sxxxx

具体使用

我手里这个是Serial Nor Flash。要根据Part No来查找芯片资料,比如根据Density(密度或容量)来查找。芯片上显示型号W25Q64JVIQ,FAE识别的型号W25Q64JVZEIQ,下载的Datasheet的名字显示型号:W25Q64JV。

可以在https://www.winbond.com/ 官网上,查找芯片手册。这个芯片是8 pin的。

选择好芯片,然后执行操作就好,很简单。可以读取Flash数据、保存文件。也可以导入一个bin文件,然后一键写入Flash。

其他烧写工具

Flash的第三方烧录器厂家有很多,可自行选择,比如可以使用dediprog SF600。

如下可供参考,烧录器厂商网站:

1. 岱镨电子的烧录器(www.dediprog.com)

2. 西尔特(www.xeltek.com)

3. 硕飞(www.sofi-tech.com)

4. 永创(www.forcreat.com)

5. 昂科(www.acroview.com)

6. 艾科(www.elnec.com)

7. 浦洛(www.prosystems.com.cn)

烧写芯片:存储芯片和处理器芯片

烧写芯片的目的,都是将数据写入到存储设备中。上面介绍的是专门的烧写工具,是用来裸片烧写的,可以烧写SPI Flash、EEPROM等类型的存储设备,也能烧写处理器芯片。

我上面烧写的是8MB的SPI Nor-Flash,挂在处理器(imx257)外面,存储程序和数据,而处理器里面是没有用户使用的存储空间的。

而有些存储器是和处理器集成在一起的,所以这时再烧写数据的就是处理器芯片。我们会说这个MCU或MPU的Rom是多大的,其实就是说它里面集成的闪存空间是多大的,烧写的是其内部的闪存。实际是通过处理器的端子来烧写其内部的存储设备。

对于烧写器来说,原理是一样的,将裸片IC放入合适的底座,再插入烧写器,烧写器能正确识别需要使用的端子,通过连接的端子,将数据按正确的通讯协议发送给IC,就可以了。

另外除了裸片烧录,还有板级烧录,是指在元器件都贴到PCB上以后,闪存或处理器芯片都是空数据时,进行烧录。

在实际电子产品开发和生产中,大多使用这种方法。裸片出厂只是普通物料,在贴到PCB板子上以后,才需要烧入相应的Firmware。做一个板子,烧一个程序,不会浪费物料。

板级烧录的话,一般需要定制的治具,通过顶针来连接PCB上的TP点,给IC供电,并和PCB上的IC进行通讯,来达到烧录的目的。

原理和上位机上使用的工具,同裸片烧录是类似的。

板级烧录中,还有一种情况,就是空的闪存和单纯处理器的组合,比如我使用的iMX6ULL芯片,其内部未集成客户可用的闪存,而是外挂的存储器。

这种情况下,为了提高系统的灵活性、扩展性,一般都是通过处理器来烧写外挂的Flash闪存,并不直接操作外挂的闪存。

而处理器一般也支持这种功能,使用治具和处理器进行连接,在上电后,进入烧录模式,通过处理器,再与外挂的存储器进行通讯,将数据烧写到外部闪存。

举些例子:

下面是我以前用的SONIX的8bit OTP 处理器的裸片烧写工具,也要配个底座。不像现在的芯片里的Flash都是能多次烧写,这种芯片只能烧录一次。而且资源很少,才2K ROM, 64 字节的内存。16M的处理器时钟,14个引脚。

要是通过烧写来调式或验证问题的话,烧完一个废一个。

调试器也是有的,长这个样子。

左边是我们的板卡,中间是一块接口板,右边大大的黑盒子就是来连接电脑的调试器了。

一提起芯片调试器,就想起了下面这款:

这是2007年左右,我还在开发车载音响项目,使用NEC V850芯片的调试器。

开发用的板卡上没有处理器,取而代之的是一个插座,然后插入调试器的插头。调试器另一边插入电脑,就可以设置软件断点、硬件断点、单步执行等。

当年的项目想想还有印象,当年的teammates全都没了往来,有些唏嘘。

参考:

1,松翰芯片

Writer - 松翰科技 :: Sonix Technology Co., Ltd. :: MP5-WRITER

2,美国加州的一个公司网站

https://www.ntc-tech.com/products/renesas-nec-qb-v850essx2-circuit-emulator-w-accessories-included

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/325093.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4、Redis高并发分布式锁实战

引言 在分布式系统中,保证数据的一致性和避免竞争条件是至关重要的。分布式锁是一种常用的机制,而Redis作为一款高性能的内存数据库,提供了简单而强大的分布式锁方案。本文将深入探讨如何利用Redis高并发分布式锁来解决分布式系统中的并发控…

【机器学习300问】8、为什么要设计代价函数(损失函数)?它有什么用?

一、先介绍一下线性回归模型 (1)基本概念理解 文字解释:线性回归模型顾名思义,他处理的回归问题,是监督学习的一种。线性回归模型是一种预测模型,其基础是假设目标值和输入值之间存在线性关系。通过一条最…

[zabbix] zabbix监控其他

一、温习zabbix自定义监控 二、zabbix 自动发现与自动注册 2.1 zabbix 自动发现 //zabbix 自动发现(对于 agent2 是被动模式) zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数…

71.网游逆向分析与插件开发-角色数据的获取-修复角色名与等级显示问题

内容参考于:易道云信息技术研究院VIP课 上一个内容:自动化助手UI显示角色数据-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:0049452c079867779…

vue3+vite项目构建时报错npm ERR! code EPERMnpm ERR! syscall mkdir...

vscode终端中输入npm create vitelatest vueviteproject1 -- --vue命令后报错 具体报错如下: PS D:\project> npm create vitelatest vueviteproject1 -- --vue >> npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! path D:\node\node_cache\_cac…

【软件测试】前端性能测试工具原理

不同于后端性能测试知识的琐碎、独立,这篇文章为你介绍前端性能测试工具WebPagetest,以一个具体网站为例,和你分析WebPagetest的用法,以及前端性能相关的主要概念与指标。 WebPagetest功能简介 WebPagetest,是前端性…

基于VGG-16的检测并清除杂草

目录 1 简介:检测并清除杂草 1.1 问题描述: 1.2 预期解决方案: 1.3 数据集: 1.4 图像展示: 2 数据预处理 2.1 数据集结构 2.2 部分数据分析 2.3 提取数据集 2.4 数据增强 2.5 构建数据集 3 使用VGG-16识别杂草图片 …

山海鲸:助力企业实现内外数据整合与价值挖掘

作为山海鲸的开发者,我们深知数字化转型对于企业发展的重要性。在不断钻研如何提升山海鲸可视化这款免费产品的实用性同时,也在不断推出各行实用解决方案,本文将介绍山海鲸企业数字化转型发展解决方案,探讨如何通过数据驱动创新&a…

WSL不同版本的Ubuntu更换清华镜像,加速Ubuntu软件下载速度

文章目录 不同版本的Ubuntu使用清华镜像,加速Ubuntu软件下载速度1. 备份源软件配置文件2. 复制镜像源3. 修改软件源配置文件4. 更新软件包列表,升级软件包等内容5. 从仓库中下载其它软件可能存在的问题 不同版本的Ubuntu使用清华镜像,加速Ubu…

Tuxera2024版本正式上线!(免费mac读写磁盘工具)

当您获得一台新 Mac 时,它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac,您需要一个附加的 NTFS 驱动程序。Tuxera 的 Microsoft NTFS for Mac 是一款易于使用的软件,可以在 Mac 上打开、编辑、复制、移动或删…

【Dart】=> [03] Dart初体验-基础语法(运算符-算术-赋值-比较-逻辑-

目录 能够使用常用运算符操作数据算术运算符赋值运算符比较运算符逻辑运算符 能够使用常用运算符操作数据 学习内容: 算术运算符赋值运算符比较运算符逻辑运算符 算术运算符 用于实现基本的算术运算 常用算术运算符: 加、减、乘、除、取整、取模、自…

2023.1.15 关于 Redis 持久化 RDB 策略详解

目录 Redis 持久化 Redis 实现持久化的两大策略 RDB 策略 手动触发 save 命令 bgsave 命令 bgsave 命令执行流程 自动触发 rdb 文件 实例演示一 实例演示二 实例演示三 实例演示四 RDB 策略的优缺点 Redis 持久化 什么是持久化? 回答: 将数据存…

纯c实现顺序表 数据结构大全

我们已经知道数组是连续的内存地址,顺序表是由数组为基础的一种数据结构,拥有比数组更多的功能,在概念上属于线性结构,跟链表不同的是,顺序表在物理结构上也是线性的 什么是数据结构? 当我们想要使⽤⼤量使…

【教3妹学编程-算法题】3006. 找出数组中的美丽下标 I

3妹:呜呜,烦死了, 脸上长了一个痘 2哥 : 不要在意这些细节嘛,不用管它,过两天自然不就好了。 3妹:切,你不懂,影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊, 工作…

AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

目录 参考概述部署安装环境准备原理和流程图一键启动启动WebAPI 服务启动WebUI服务 Docker部署知识库管理常见问题本地知识库怎么微调?回答不准确 参考 手把手教你搭建本地知识库问答AI机器人 LangChain-Chatchat:基于LangChain和ChatGLM2-6B构建本地离…

【小笔记】时序数据分类算法最新小结

2024.1.15 最近基于时序数据训练分类算法,对其进行了一番了解,主要围绕以下几点: 时序数据算法有哪些细分类?时序数据分类算法经典模型?当下时序分类算法模型强baseline?有没有现成的工具? 1…

Python - 深夜数据结构与算法之 位运算

目录 一.引言 二.位运算简介 1.二进制与十进制 2.左/右移 3.位运算 4.异或 XOR 5.指定位置的位运算 6.实战要点 三.经典算法实战 1.Number-1-of-bits [191] 2.Power-Of-Two [231] 3.Reverse-2-Bits [190] 4.N-Queens [51] 四.总结 一.引言 通常情况下我们计数采…

RequestResponse

1.Request 请求 作用:使用Request对象来获取请求数据 1.Request获取请求数据的方法 2.通用方式获取请求参数 3.POST请求参数中文乱码解决 4.请求转发 概念: 一种在服务器内部的资源跳转方式 2.Response 响应 作用:使用response对象设置响应数据 1.Response设置响应数据功能 …

【Emgu.CV教程】5.3、几何变换之金字塔变换

这一段文字描述来自百度百科: 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的图像金字塔是一系列以金字塔形状(自下而上)逐步降低,且来源于同一张原始图的图像分辨率…

OpenCV-25sobel算子(索贝尔算子)

前面所提到的滤波都是用于降噪的,去掉噪声,而算子是用来找边界,来识别图像的边缘。 一、概念 边缘是像素值发生跃迁的值,是图像的显著特点之一,在图像特征提取,对象检测,模式识别等方面都有重…