固件
固件的基础定义:
固件(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就无用。
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 一般的针脚定义如下。
引脚 | 定义 |
---|---|
/CS | 片选 |
DO | 数据输出 |
WP | 写保护 |
GND | 电源地 |
VCC | 电源正极 |
HOLD | 输入保持 |
RESET | 复位 |
CLK | 时钟 |
DI | 数据输入 |
扁平封装:
QFP(Plastic Quad Flat Package,方型扁平式封装技术)针脚从四个侧面引出呈海鸥翼(L)型。实现的芯片针脚之间距离很小,管脚很细,一般大规模或超大规模集成电路采用这种封装形式,其针脚数一般都在64以上。在小型IOT设备中可作为主控或协处理器。下图中的芯片就是采用 QFP 封装。
BGA(Ball Grid Array Package,球栅阵列封装) 封装的 I/O 端子以圆形或柱状焊点按阵列形式分布在封装下面,具有更小的体积,更好的散热性能和电性能。由于 I/O 端子在封装下方,提取固件则需要使用BGA返修台
拆卸下来读取,不能实现免拆提取。BGA 封装一般用于 CPU 和大容量存储。
SPI Flash是一种存储器设备,采用SPI(Serial Peripheral Interface)接口进行通信。
- SPI Flash通常是一种闪存存储器,用于存储代码、配置数据和其他非易失性数据。
- SPI Flash芯片内部包含多个存储单元,每个存储单元可以存储一个比特(0或1)。
- 这些存储单元按照特定的组织方式进行排列,通常以字节或页为单位进行读写操作。
MCU,全称Microcontroller Unit,中文名为微控制单元或微控制器单元,是一种集成了微处理器核心、存储器、输入输出接口等多种功能模块于一体的芯片。
固件提取软件:flashrom(提取flash),openocd(提取mcu)
flash:
mcu:
手册记录的固件位置:
- 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。
- 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芯片型号和位置。
步骤一:芯片拆卸
使用热风枪
- 设置温度:如果Flash芯片使用含铅焊锡焊接,将热风枪的温度设置在330-350摄氏度之间;若采用无铅焊锡,则将温度设置在350370摄氏度。
- 风量控制:根据芯片尺寸调整热风枪的风量,通常对于一般芯片可以采用风枪的3~4挡。
- 加热:用热风枪对准Flash芯片上方的脚位来回移动,确保芯片脚上的锡融化。
- 取下芯片:用镊子轻轻取下已融化的Flash芯片。
使用焊烙铁
- 加锡:在Flash芯片的两边用焊烙铁加锡。
- 加热:用焊烙铁在芯片两边不停来回加热,使锡完全融化。
- 取下芯片:在烙铁加热过程中,用镊子轻轻撬起并取下芯片。
步骤二:注意事项
- 保护周边元件:使用高温胶带包裹周围的器件,以防热风枪加热时损坏它们。
- 操作小心:务必谨慎操作,避免热风枪的风量过高将器件吹跑或损坏Flash芯片本身。
- 特殊要求:如Flash芯片对焊接温度有特殊要求,请参考芯片手册进行操作。
步骤三:后续处理
- 检查PCB板:确认Flash芯片已成功拆卸后,检查PCB板上是否有残留的焊锡或其他杂物,并进行清理。
- 准备安装新芯片:如有需要,准备好新的Flash芯片,并按照相应的安装步骤进行安装。
请注意,在进行此类操作时,务必确保具备相应的电子维修知识和经验,以免对设备造成进一步损坏。
标签:针脚,提取,芯片,Flash,串口,PCB,封装,固件 From: https://www.cnblogs.com/ovo-fisherman/p/18277822