固件的烧录以及部分PCB基础

固件

固件的基础定义:

固件(firmware)一般存储于设备中的电可擦除只读存储器(允许用户通过特定的电子方式复写存储内容,在【工作情况下是只读的,并且关闭电源仍存储数据)EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。

我的理解:固件就是一个数码产品最底层工作的软件,存放着在存储介质上最基础的数据,当嵌入式板子进行上电启动时,可以从特定的位置找到这些文件数据,从而使得板子可以运行起来的东西

FLASH

FLASH芯片是一种电子存储设备,能够在断电或掉电后保持存储的数据,因此被称为“非易失性”存储器。它的工作原理基于电荷俘获效应,通过控制电压使存储单元的浮动栅极上捕获或释放电荷来实现数据的写入和擦除。FLASH芯片具有读写速度较快、耐用、体积小、功耗低和可擦写多次等特点。

文件数据

什么文件数据可以使得我们的板子可以跑起来,嵌入式在Linux系统下的经常可以用到的文件:

  • uboot:如uboot.bin

负责部署整个计算机系统,这通常体现在uboot最后的传参上。

包含操作Flash等板子上硬件的驱动,如串口打印、网络ping、Flash擦除和烧写等。提供一个命令行界面供用户操作,用于调试和配置系统。

uboot是系统启动的引导加载器,负责硬件的初始化和内核的加载。uboot主要用来启动操作系统内核。在uboot的最后一句代码,通常是启动内核的指令。

  • kernel:如uImage

Kernel是指操作系统的内核,它是操作系统的核心部分,负责管理计算机硬件、进程调度、内存管理等系统级别的任务。Kernel是操作系统的灵魂,它管理着整个系统的运行,并提供了应用程序与硬件之间的接口。

  • rootfs:如system.yaffs2文件 (root file system)

rootfs为操作系统提供了必要的文件和目录结构,使得系统能够访问和管理文件。rootfs是系统的根文件系统,它包含了系统运行所需的基本文件和目录结构。

烧录

烧录(Programming or Burning) 是指将固件(firmware)或操作系统(operating system)等软件代码写入到嵌入式系统或其他电子设备的存储设备中的过程。在嵌入式系统领域,烧录是确保设备能够按照预定的方式启动和运行的关键步骤。

我的理解:烧录的过程其实是嵌入式系统或者一些电子设备的启动必须的操作,这些设备的启动需要通过固件或操作系统等软件代码写入的到该设备的存储设备的过程,当固件被成功烧录到存储设备之后,在下一次启动时,将会在存储设备中读取这些软件代码执行。

NFS

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件

RPC

RPC(Remote Procedure Call)即远程过程调用。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去

portma

主要是把RPC程序号转化为Internet的端口号。只在第一次建立连接时候帮助网络应用程序找到正确的port,当双方正确连接时,端口就和应用绑定,portmap就无用。

img

NAND Flash

用于保存系统运行所必需的操作系统、应用程序、用户数据等。

SD卡

定义:SD卡全称Secure Digital卡,是一种小型存储设备,主要存储媒介为NAND Flash。

串口和调试接口

串口,即串行接口,与之相对应的另一种接口叫并口,并行接口。两者的区别是,传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输,而并口则将8个位一字排开,分别在8条连接线上同时传输。串口就是八位的串联,并口是八位的并连

  在相同的数据传输速率下,并口的确比串口更快,但由于并口的各个连接线之间容易互相干扰,高速情况下难以同步各连接线的数据,而且硬件成本也相对串口更高(线多),因而串口取代并口成为了现在的主流接口,较具代表性的要数Universal Serial Bus,通用串行总线,也就是USB。其它在嵌入式领域常见的串行接口还包括:I2C,SPI,RJ-45,UART,USART等。

小封装

SOP(Small Out-Line Package,小外形封装) 针脚从封装两侧引出呈海鸥翼状(L 字形),一般用于针脚不太多的芯片上 。SOP8/16 封装的 Flash 在路由器、摄像头等 IOT 设备厂较为常见。针脚有8根或16根,且一个角上有小圆点(每个芯片都有一个小圆点,小圆点所在的位置是第一针脚,然后逆时针排布第二针脚,第三针脚等),型号代码一般是24或25开头。SOP8/16 SPI Flash 一般的针脚定义如下。

SOP8/SOP16

引脚 定义
/CS 片选
DO 数据输出
WP 写保护
GND 电源地
VCC 电源正极
HOLD 输入保持
RESET 复位
CLK 时钟
DI 数据输入

扁平封装

QFP(Plastic Quad Flat Package,方型扁平式封装技术)针脚从四个侧面引出呈海鸥翼(L)型。实现的芯片针脚之间距离很小,管脚很细,一般大规模或超大规模集成电路采用这种封装形式,其针脚数一般都在64以上。在小型IOT设备中可作为主控或协处理器。下图中的芯片就是采用 QFP 封装。QFP MCU

BGA(Ball Grid Array Package,球栅阵列封装) 封装的 I/O 端子以圆形或柱状焊点按阵列形式分布在封装下面,具有更小的体积,更好的散热性能和电性能。由于 I/O 端子在封装下方,提取固件则需要使用BGA返修台拆卸下来读取,不能实现免拆提取。BGA 封装一般用于 CPU 和大容量存储。

BGA NAND FLASH

SPI Flash是一种存储器设备,采用SPI(Serial Peripheral Interface)接口进行通信。

  • SPI Flash通常是一种闪存存储器,用于存储代码、配置数据和其他非易失性数据。
  • SPI Flash芯片内部包含多个存储单元,每个存储单元可以存储一个比特(0或1)。
  • 这些存储单元按照特定的组织方式进行排列,通常以字节或页为单位进行读写操作。

MCU,全称Microcontroller Unit,中文名为微控制单元或微控制器单元,是一种集成了微处理器核心、存储器、输入输出接口等多种功能模块于一体的芯片

固件提取软件:flashrom(提取flash),openocd(提取mcu)

flash:树莓派连接SPI FLASH

mcu:

使用FT232H连接SWD接线图

手册记录的固件位置:

STM32F030 内存映射

  • System Memory: 从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。系统存储器是芯片内部一块特定的区域,STM32 在出厂时,由 ST 在这个区域内部预置了一段 BootLoader(boot的引领者硬件初始化加载操作系统参数传递), 也就是我们常说的 ISP 程序, 这是一块 ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的 BootLoader 中,提供了串口下载程序的固件,可以通过这个 BootLoader 将程序下载到系统的 Flash 中。
  • Flash Memory:是 STM32 内置的 Flash,一般我们使用 JTAG 或者 SWD 模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
  • SRAW:内置 SRAM,既然是 SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个 Flash,比较的费时,可以考虑从这个模式启动代码(也就是 STM32 的内存中),用于快速的程序调试。

分辨引脚

辨别方法参考,顺序:GND->Vcc->TXD->RXD

从背面看,自左往右分别编号为1,2,3,4,由于这里是垂直翻转的,从正面看和从背面看孔的顺序相同

  • GND

孔2是GND。万用表调至蜂鸣档,黑表笔接电源引脚,红表笔依次尝试接4个uart孔,有蜂鸣红灯亮的就是GND。

img

  • Vcc

路由器接电源,万用表调整至测电压20v档。黑表笔接GND,红表笔分别接其它孔,电压为3.3V或5V的为Vcc,如果有多个孔符合,则分别和GND短接,观察是否电源灯灭,短接后电源灯灭的是Vcc。

笔者测出来1号孔3.3V,3号孔0V,4号孔2.59V,那么显然1号孔是Vcc,短接1和2GND后确实发现电源灯灭。

  • TXD(Transmit Data)

电源和万用表同Vcc,黑笔接GND,红笔分别尝试剩下的两个孔,连接后按重启按钮(有的需要长按),重启时电压发生跳动的是TXD。这里显然4号孔是TXD。

  • RXD(Receive Data)

剩下的3号孔就是RXD。如果是5孔的板子,剩下的两个孔需要分别尝试接入usb转ttl设备

PCB:

蛇形线是为了同步

3W原则是为了减少干扰

电路板上的符号 R电阻 C电容 数字1表示主板电路,2表示电源电路,34为同类器件标号

B蜂鸣器D二极管F保险丝J跳线L电感Q三极管RT热敏T变压U芯片

阻抗:就是设备之间的阻抗加上本身的抗性

PCB不走直线,直线的宽度大所以会影响数据传输

使用热风枪和焊烙铁来拆Flash芯片的过程可以归纳如下:

前期准备

  • 工具准备:热风枪、焊烙铁、焊锡丝、镊子、助焊膏、高温胶带(如适用)。
  • 芯片确认:确认需要拆卸的Flash芯片型号和位置。

步骤一:芯片拆卸

使用热风枪

  1. 设置温度:如果Flash芯片使用含铅焊锡焊接,将热风枪的温度设置在330-350摄氏度之间;若采用无铅焊锡,则将温度设置在350370摄氏度。
  2. 风量控制:根据芯片尺寸调整热风枪的风量,通常对于一般芯片可以采用风枪的3~4挡。
  3. 加热:用热风枪对准Flash芯片上方的脚位来回移动,确保芯片脚上的锡融化。
  4. 取下芯片:用镊子轻轻取下已融化的Flash芯片。

使用焊烙铁

  1. 加锡:在Flash芯片的两边用焊烙铁加锡。
  2. 加热:用焊烙铁在芯片两边不停来回加热,使锡完全融化。
  3. 取下芯片:在烙铁加热过程中,用镊子轻轻撬起并取下芯片。

步骤二:注意事项

  1. 保护周边元件:使用高温胶带包裹周围的器件,以防热风枪加热时损坏它们。
  2. 操作小心:务必谨慎操作,避免热风枪的风量过高将器件吹跑或损坏Flash芯片本身。
  3. 特殊要求:如Flash芯片对焊接温度有特殊要求,请参考芯片手册进行操作。

步骤三:后续处理

  • 检查PCB板:确认Flash芯片已成功拆卸后,检查PCB板上是否有残留的焊锡或其他杂物,并进行清理。
  • 准备安装新芯片:如有需要,准备好新的Flash芯片,并按照相应的安装步骤进行安装。

请注意,在进行此类操作时,务必确保具备相应的电子维修知识和经验,以免对设备造成进一步损坏。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang:go-querystring将struct编码为URL查询参数的库

Golang:go-querystring将struct编码为URL查询参数的库 原创 吃个大西瓜 Coding Big Tree 2024-05-09 08:30 北京go-querystring is a Go library for encoding structs into URL query parameters.译文:go-querystring 将struct编码为URL查询参数的Golang库文档https://pkg.g…

C#之缓存

原文链接:https://zhuanlan.zhihu.com/p/657458522 缓存指在中间层中存储数据的行为,该行为可使后续数据检索更快。 从概念上讲,缓存是一种性能优化策略和设计考虑因素。 缓存可以显著提高应用性能,方法是提高不常更改(或检索成本高)的数据的就绪性 既然缓存是是一种性能…

有关paddleocr在pyinstall中打包问题的解决方案

借鉴网址python解决paddleocr打包问题_pyinstaller怎么解决paddleocr中的动态导入-CSDN博客 在打包时我使用的spec文件如下:(需要将pathe和binaries换为自己的paddleocr路径) block_cipher = Nonea = Analysis([main.py], pathex=[E:\\PyEnviroment\\Lib\\site-packages…

初始docker

前置知识 通过面向对象的知识来了解docker中的镜像和容器就很好理解了,docker是C/S架构镜像:是一个只读的模板,可以用来创建容器。类容器:是docker的运行实例,提供了一个独立的可移植的环境,可以在这个环境中运行应用程序。实例,1个或多个docker仓库:用来存储docker镜像…

【日记】度过了一个堕落的周末……(184 字)

正文昨天睡了一天觉,今天看了一天《三体》电视剧。真是堕落到没边了呢(笑。本来想写代码完成年度计划,或者多写几篇文章,但实在不想写,也不想动笔。感觉这个周末什么都没做呢,休息倒是休息好了。今天 30 号,也不知道灵平安到学校没有。本有一些想写的东西,但懒得动笔了…

BigCodeBench: 继 HumanEval 之后的新一代代码生成测试基准

HumanEval 是一个用于评估大型语言模型 (LLM) 在代码生成任务中的参考基准,因为它使得对紧凑的函数级代码片段的评估变得容易。然而,关于其在评估 LLM 编程能力方面的有效性越来越多的担忧,主要问题是HumanEval 中的任务太简单,可能不能代表真实世界的编程任务。相比于 Hum…

window 下 pyenv 安装与使用

安装 GitHub上下载这个文件 https://github.com/pyenv-win/pyenv-win 点击这个 下载到本地解压文件并且重命名为> pyenv 并放置到合理位置添加环境变量 ...\pyenv-win\bin ...\pyenv-win\shims添加完成之后执行如下命令验证 pyenv --versionpyenv的基本命令 查看支持的pytho…

RabbitMQ如何备份与恢复数据

阅读目录一、场景 二、元数据备份和还原1、操作 2、导出数据3、导入数据 4、验证数据 三、消息数据备份和还原1、确定数据目录 2、为避免数据的一致性,需先停掉服务 3、备份数据目录4、还原数据 5、修改数据目录权限 6、启动B服务器上rabbitmq服务 7、验证消息数据是否还原成功…

Codeforces Round 918 G. Bicycles (二维最短路)

G. Bicycles题意:在一个无向图里你要从1点到达n点,每条路的路径长度是该路的权值乘于你当前的慢度因子。而在每个点上我们都有一个慢度因子可以进行更换,问你到达n点所需要的最短时间。 思路:我们很容易想到每次遇到更小的慢度因子我们就要更换,但因为存在你先去绕远路拿更…

中电金信:银行业私有云何去何从

​2009年,云计算开始从概念走向实践。在这一年,Gartner在预测2010十大发展趋势中,将云计算列在榜首。在这之后,谷歌、亚马逊、IBM等科技巨头纷纷加码对云计算的研发投入。2010年正式迎来云计算时代,这一年也被定为“云元年”。2013年4月,2013中国国际云计算技术和应用展览…

使用GCOV和LCOV测试C++代码覆盖率

使用GCOV和LCOV测试C++代码覆盖率 目录使用GCOV和LCOV测试C++代码覆盖率1. GCOV和LCOV简介2. GCOV和LCOV安装3. GCOV+LCOV测试代码覆盖率 1. GCOV和LCOV简介 GCOV是一个测试代码覆盖率的工具,可以与GCC一起使用来分析程序,以帮助创建更高效、更快的运行代码,并发现程序的未测…

springboot异常解决

Circular view path [test]: would dispatch back to the current handler URL [/interceptor/test] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause问题解决 问题解释…

uniapp+thinkphp5实现微信登录

之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。前言 之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。 配置 1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecret https://mp.weixi…

用免费可视化工具做智慧城市,一屏实现城市统筹管理

在智慧城市的建设中,实现高效的统筹管理是至关重要的。通过免费可视化工具“山海鲸可视化”,这一目标可以轻松达成。山海鲸可视化是一款免费可视化工具,具备二三维融合、易用性、安全性以及高质量画面渲染等特色,是制作智慧城市可视化大屏的理想选择。山海鲸可视化的二三维…

【论文阅读】Position: What Can Large Language Models Tell Us about Time Series Analysis

原始题目:Position: What Can Large Language Models Tell Us about Time Series Analysis 中文翻译:立场:关于时间序列分析,大型语言模型能告诉我们什么 发表时间:2024-06-01 平台:ICML 文章链接:http://arxiv.org/abs/2402.02713 开源代码:NA摘要 时间序列分析对于理…

TDA4与Openvx技术开发示例

TDA4与Openvx技术开发示例 [TI TDA4 J721E]基于TDA4平台 FFmpeg / X264 的ARM平台移植 https://blog.csdn.net/AIRKernel/article/details/121483611 创建了开源的Demo演示案例库,后续会把Demo代码放到这个Gitee库里:TDA4/TI TDA4 https://gitee.com/tda4/ti-tda4欢迎大家加入…

遇到的线上问题之“动态数据源报错-recyle error java.lang.InterruptedException”

Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决 一、线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题。[][ERROR][2024-07-01 …

遇到的线上问题之“recyle error java.lang.InterruptedException”

Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决 一、线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题。[][ERROR][2024-07-01 …

构建高可用性、高性能和可扩展的Zabbix Server架构

简介 本教程讲解了一下如何设计构建一个高性能、高可靠、高扩展的Zabbix 监控集群。 架构图 架构图PDF下载: https://songxwn.com/file/Zabbix_HA.pdfPigsty 时序数据库集群 Zabbix Server 和 Grafana的数据都是存放在数据库的,而Zabbix性能很大程度取决于数据库。所以要搭建…

[JavaScript]作用域的“生产者”——词法作用域

本篇文章标题即摘要,就不赘述。 如果文中有不妥或不对的,多多交流。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18252500 出自【进步*于辰的博客】参考笔记二,P43.3、P46.1、P9.3;笔记三,P70、P71。目录先…