- 博客(218)
- 资源 (3)
- 收藏
- 关注
原创 黑猫带你学UFS协议第29篇:UFS Sense Key/Sense data详解
本文详解UFS协议中Response UPIU的Sense Data机制,重点解析其18字节格式及关键字段(VALID、SENSE KEY、INFORMATION、ASC、ASCQ),说明其在错误诊断中的作用。结合SCSI标准,明确UFS属于直连块设备(Device Type 0),并指出Sense Data仅在命令出错时存在,正常响应中长度为0。内容基于UFS JEDEC协议与实际经验,适用于UFS开发者与调试人员。
2026-11-05 23:16:37
8
原创 从一脸懵逼到心中有数:不做固件开发也要懂的固件知识
本文是存储芯片行业非固件工程师的自述与知识分享专栏导语。作者黑猫学长回顾了自己从“听不懂固件会议”到系统掌握固件架构的心路历程,强调深入理解固件对测试、开发等岗位的重要性。专栏聚焦eMMC/UFS/SSD固件通用原理,涵盖FTL、L2P、GC、磨损均衡、读写通路等核心内容,旨在帮助测试、FAE、新人等群体建立完整知识体系,提升技术竞争力。欢迎交流指正,共学共进。
2026-11-01 21:09:06
108
原创 codex CLI更新并使用5.6模型教程(code-mode-host)
本文详解Codex CLI 0.143+版本中Code Mode Host独立发布带来的工具调用问题,指导用户通过下载并配置codex-code-mode-host二进制文件,解决因缺少Code Mode导致无法执行文件操作、Git命令等关键功能的问题。步骤包括下载、解压、权限设置及环境变量配置,最终实现Codex作为真正AI Agent的完整能力。
2026-11-01 17:00:08
142
原创 存储芯片千问千答第11问:对于磨损类用例,waf越大的模型磨损的更快,还是waf更小的模型磨损的更快?
在EOL测试中,选择小WAF模型可加速磨损。尽管大WAF导致更少GC、减少命令开销,但小WAF因频繁触发GC,需多次读取数据并搬移,额外写入加剧磨损。虽GC占用时间,但其本身产生的写入操作显著提升磨损效率。综合来看,小WAF模型通过高频GC与读写交互,实现更快的寿命耗尽,故更优。
2026-10-26 23:38:12
29
原创 存储芯片千问千答第10问:FAT32支持的单个文件最大容量真的是4GB吗?
<think>我们只需要根据内容生成摘要,≤150字。内容讲FAT32限制:卷容量规范支持2TB但微软格式化工具限制32GB;单文件最大4GB-1字节,因为32位无符号整数记录文件大小。实验验证4GB不行,少1MB可以。摘要要简洁,包含关键点。</think>FAT32规范支持单卷最大2TB,但微软格式化工具将FAT32选项限制在32GB以下;单文件大小上限为4GB减1字节,因文件大小用32位无符号整数记录,最大值为4294967295字节。实验验证4GB文件无法拷贝,少1MB可以。
2026-09-06 20:01:59
157
原创 拆解一台“古董”台扇:没有电路板的纯机械时代
<think>我们只需要根据内容生成摘要,≤150字。注意摘要要简洁概括文章核心:拆解老式钻石牌风扇,发现没有电路板,只有电机、开关和定时器;定时器为发条式机械原理;电机用电容实现启动,电容让副绕组电流超前形成旋转磁场。语言精炼。</think>老式钻石牌风扇拆解:内部无电路板,仅电机、琴键开关和发条式定时器。定时器靠齿轮减速实现一小时定时;单相电机通过CBB61电容移相,使副绕组电流超前,形成旋转磁场驱动转子。简洁机械设计承载时代智慧。
2026-09-06 16:20:20
221
原创 存储芯片千问千答第9问:Nand warm-up cycle是什么
warm-up cycles是NAND闪存接口在高速信号传输时用于稳定数据同步的机制,在800MB/s以上的接口速率下使用。它通过在读写操作开始前插入几个空闲周期(dummydata),帮助DQ/DQS信号对齐采样窗口,提升数据传输准确性。具体实现上,NAND和控制器端可通过设定寄存器来配置读/写方向的warm-up周期数(可独立设置),例如Micron和KIOXIA的规格中对此有明确说明。该机制能有效改善高速信号的完整性问题,是NV-DDR2及以上接口的重要特性之一。
2026-09-06 14:38:49
61
原创 存储芯片千问千答第8问:ROM和NorFlash的关系
ROM (Read-Only Memory,只读存储器):这是一个大类,泛指那些断电后数据不会丢失的存储器。它的核心特点是“只读”(传统意义上),但现代技术已经允许在某些条件下写入。传统的 ROM 包括:Mask ROM(出厂固化,无法改写)、PROM(可编程一次)、EPROM(紫外线擦除可编程)。Nor Flash:这是一种具体的、可电擦除的非易失性存储器。它属于 ROM 这个大家族里的“现代成员”。文章为个人辛苦整理,付费内容,已加入原创侵权保护,禁止私自转载。
2026-08-30 11:35:18
21
原创 黑猫带你学UFS协议第28篇:生产状态感知(PSA)
Production State Awareness (PSA) 生产状态感知UFS的PSA功能和eMMC基本上大差不差的。UFS设备可以利用其是否在生产环境中的信息,从而在现场运作时进行不同的操作。例如,在设备低温焊接(soldering)前,将数据写入UFS,可能导致数据出错,而正在焊接期间写入数据,出错的概率可能会更大。在低温焊接之前,UFS设备可以使用一种特定的内部操作去加载内容,这样就能减少数据出错的概率,而在低温焊接后进行常规的操作就行了。
2026-08-30 11:23:21
187
原创 【驱动开发常见问题】编译找不到gcc:arm-linux-androideabi-gcc: Command not found
那这问题就好解决了,根据个人经验,这就是文件格式不对,果然,查看了arm-linux-androideabi-gcc文件时dos格式的,所以在linux上没找到这个文件。使用dos2unix arm-linux-androideabi-gcc命令,将该文件转成unix格式就好了!可是在这个路径下,明明存在arm-linux-androideabi-gcc的,但是就是说找不到。不知道是git搞鬼还是哪里的问题,把文件格式给弄出问题了,研究了半天。上面说的都尝试过了,就是不行!
2026-08-23 19:31:42
59
原创 【驱动开发常见问题】编译出现rm: cannot remove `asm/arch‘: Is a directory
代码本地编译成功,上传SVN 后再下载先来就不能编译了,报错如下:rm: cannot remove `asm/arch’: Is a directory。
2026-08-23 19:29:14
43
原创 【驱动开发常见问题】bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法
参考链接:https://blog.youkuaiyun.com/youzhouliu/article/details/79051516。常常使用linux共享文件夹,所以写代码就在windows写,在linux下执行,就容易出现这种错误。之后:wq保存退出即可。
2026-08-23 19:26:36
16
原创 【驱动开发常见问题】make报错: *** No rule to make target ‘.../Module.symvers‘, needed by ‘xxx.ko‘. stop
摘要:编译字符驱动代码时出现"Missing Module.symvers"错误,原因是内核源码未编译。解决方法是在内核源码目录下执行make modules命令生成Module.symvers文件。该文件是编译内核模块所必需的符号表,只有完整编译内核后才能在外部Makefile中正确构建驱动模块。
2026-08-23 19:24:41
18
原创 【驱动开发常见问题】~/bin/sh: ./mytest:not found
简单来说,它的作用是:把我的应用程序打包成一个标准的“描述符”结构体,并强制放在内存的一个特定区域(.apps段)里。这样LK的启动代码就可以在开机时,去这个特定区域扫描,找到所有需要启动的程序,并自动调用它们。它告诉编译器(GCC):“请把这个变量 _app_aboot,专门放到一个名为 .apps的特殊内存段(Section)里去,不要放在默认的数据段。总结一下:在lk代码里写 APP_START,实际上是在向系统的“启动清单”里提交一份简历。接下来笔者详细讲解一下。代码中的这两个宏,必须配对使用。
2026-08-23 19:05:45
28
原创 【ARM架构与汇编】第1篇:基于u64打印数值不正确来看栈指针字节对齐的要求
本文依据网络资料及工作与学习经验整理而成,如有错误请留言。文章为付费内容,已加入原创侵权保护,禁止私自转载,违者必究。文章所在专栏:《文 / 黑猫学长。
2026-08-23 18:19:03
147
原创 【kernel】第6篇:kernel中的硬件访问技术之寄存器读写
本文介绍了Linux内核中寄存器与内存访问的区别,以及读写寄存器的相关API及使用建议。主要内容包括:1)寄存器操作可能产生副作用(如中断状态寄存器读取后自动清零);2)对比了readl和ioread32等寄存器读写函数的差异,推荐使用更具通用性的ioread32系列;3)说明volatile关键字在内核中的隐式处理,无需显式声明;4)介绍了内核提供的位操作宏(如set_bit、clear_bit等),用于高效安全的寄存器位级操作。文章强调遵循内核API规范以保证代码可移植性和稳定性,适合嵌入式开发者参考。
2026-07-19 15:13:16
38
原创 【kernel】第5篇:kernel中的硬件访问技术之端口IO
本文介绍了嵌入式Linux驱动开发中的端口IO(Port I/O)操作,重点针对x86架构。文章首先对比了内存映射IO(MMIO)与端口IO的区别,指出端口IO是x86特有的硬件特性,需使用专用IN/OUT汇编指令访问独立的IO地址空间,而ARM等嵌入式架构仅支持MMIO。 内容涵盖Linux内核中端口IO的标准操作流程:1) 使用request_region申请端口资源;2) 通过inb/outb等封装函数进行读写操作(底层转换为汇编指令);3) 最后用release_region释放资源。文中提供了代码
2026-07-19 15:06:20
91
原创 【kernel】第4篇:kernel中的硬件访问技术之内存映射MMIO
本文介绍了Linux系统中硬件寄存器地址映射的两种方式:静态映射和动态映射。动态映射通过ioremap函数实现,需注意内存屏障与Cache一致性问题;静态映射通过map_desc结构在内核启动时自动完成。文章详细对比了readl与ioread32等寄存器读写API的区别,推荐使用ioread32系列以提高代码通用性。同时阐述了volatile关键字的适用场景,并介绍了Linux内核提供的位操作宏(如set_bit、clear_bit等),为嵌入式驱动开发中的寄存器操作提供了完整解决方案。文中强调通过官方AP
2026-07-18 21:01:49
247
原创 【kernel】第2篇:linux内核链表详解
本文对比了传统链表与Linux内核链表的实现差异,重点分析了内核链表的设计优势及实现原理。传统链表存在类型绑定和拓扑单一两大缺陷,而内核链表采用侵入式设计,通过纯指针钩子struct list_head实现通用性。文章详细解读了container_of宏的反向寻址机制,列举了核心操作函数(INIT_LIST_HEAD、list_add等),并通过图示分析了四种链表构建方式的拓扑结构。最后剖析了list_entry的实现原理,说明如何通过指针偏移量获取宿主数据,强调该设计具有高度可移植性。
2026-07-18 20:29:25
41
原创 【kernel】第3篇:linux进程管理子系统
本文深入解析Linux进程管理的核心机制。首先阐述进程四要素:执行实体、内核栈、task_struct结构和独立用户空间。重点剖析task_struct中的关键字段及进程六大状态(运行态、可中断睡眠、不可中断睡眠等)及其转换关系。随后详细讲解Linux调度机制,包括五种调度策略(SCHED_NORMAL、SCHED_FIFO等)、两种调度触发方式(主动/被动)以及基于preempt_count的内核抢占安全机制,最后描述进程上下文切换的四步流程。文章源自付费专栏《黑猫带你深入嵌入式系统》,提供嵌入式系统从裸
2026-07-18 19:35:21
37
原创 【Little Kernel】第1篇:LK中的自动注册机制
本文解析了LK(Little Kernel)中通过宏定义实现的应用程序自动注册机制。该机制利用APP_START/APP_END宏对将应用程序描述符结构体强制存放在特定的".apps"内存段中,并通过链接脚本标记该段的起止地址。系统启动时,apps_init()函数会遍历该内存段,自动调用所有注册应用的初始化函数。这种设计实现了模块化自动加载,核心是通过编译器指令__SECTION(".apps")将分散定义的应用程序描述符集中存放,再由链接脚本和运行时代码配合完成自动发现和初始化流程。文章通过代码示例详细
2026-07-17 23:30:00
296
原创 codex CLI使用技巧
本文介绍了在嵌入式开发中使用Codex CLI(命令行界面)的优势和实用技巧。文章首先分析了通过Windows访问Linux代码的常见问题(权限、路径错误等),以及双系统同步方案(如FileZilla)的四大痛点,建议直接在Ubuntu安装CLI工具。随后提供核心使用指南:包括基础启动方式(codex命令直接中文提问)、常用命令提示(输入/自动显示功能列表)、历史对话恢复(codex resume)和模型强度调整(/model选择推理等级)。针对权限管理,详解了通过修改config.toml文件或命令行参数
2026-07-04 15:13:16
656
原创 存储芯片千问千答第7问:在性能测试中,为什么很多应用端的厂商,比如手机厂商,要做控速测试?
手机厂商和应用开发者进行控速测试(如限制网络带宽、降低CPU/GPU性能等),旨在模拟真实用户场景中的性能瓶颈,验证产品在极端条件下的表现。测试核心目标包括还原复杂使用环境、暴露性能问题、验证功能降级策略。典型测试场景涵盖网络控速(验证弱网适应性)、CPU/GPU限制(测试低端机型兼容性)、低电量模式(检查省电策略影响)以及存储I/O限制(防止存储不足崩溃)。通过人为制造资源受限环境,厂商能提前发现并修复问题,确保应用在各类条件下保持核心功能可用,从而提升用户体验和市场竞争力。
2026-05-17 22:54:22
75
原创 存储芯片千问千答第6问:测试机台的PE板和PPB板有什么区别?
本文为付费原创内容,禁止转载。文章对比了PE板和PPB板的主要区别:PPB板是协议板卡,专门用于实现特定协议;而PE板则是用于刻时钟的通道,功能类似于FPGA。二者在用途和功能定位上存在明显差异。更多存储芯片相关内容可参阅专栏《黑猫存储芯片宝典》。
2026-05-17 22:46:27
83
原创 存储芯片千问千答第5问:不同FW版本之间FFU升降级,为什么会存在有些FW之间不能相互FFU?
摘要: 文章探讨了不同固件版本间FFU(固件现场升级)受限的两大主因:一是版本间的block布局变动导致升级后运行异常,需特殊处理但会增大代码复杂度;二是算法表格索引不适配,直接升级会破坏数据完整性。虽然技术上可通过针对性修改实现兼容,但考虑到开发成本和潜在风险,厂商通常选择限制跨版本FFU功能。该分析来自付费专栏《黑猫存储芯片宝典》,受版权保护禁止转载。
2026-05-17 22:42:51
63
原创 存储芯片千问千答第4问:存储芯片中常说的E2E是啥?
摘要: E2E(端到端)是存储芯片中保障数据完整性的关键机制,确保数据从主机写入到NAND闪存读回的全流程可校验。通过ECC、CRC等技术,保护数据在控制器DMA、SRAM等传输环节的准确性。测试时,只需验证写入后读取的数据无误即可确认E2E功能正常。(99字)
2026-05-17 22:37:38
75
原创 存储芯片千问千答第3篇:存储芯片中test mode是什么意思?
摘要: 存储芯片的测试模式(test mode)通过隔离引脚使NAND闪存与控制器电隔离,允许外部测试设备直接访问NAND组件。该模式用于故障检测、迭代测试(写入/读取数据比对)及工厂可靠性验证,便于精准定位问题并确保芯片性能。
2026-05-17 22:32:46
113
原创 存储芯片千问千答第2问:盲封TT wafer是什么意思?
本文解释了"盲封TT wafer"的含义及其应用场景。TT wafer指芯片设计初期的工程样品晶圆,用于功能验证。盲封是指跳过中测环节直接封装所有晶圆芯片的非标准流程。这种"金钱换时间"的策略常用于早期开发阶段,通过牺牲部分封装成本来加速获取样品芯片,便于快速开展系统测试和固件开发。虽然会导致封装部分不良芯片,但能确保及时获得足够数量的可用样品推进项目进度。
2026-05-17 22:27:44
124
原创 存储芯片千问千答第1问:Nand SCA是什么
SCA,即Separate Command Address,是一种将命令/地址总线与数据总线物理分离的NAND闪存接口技术。这是相对于传统的共享I/O接口而言的。在传统接口中,命令、地址和数据都通过同一组DQ引脚分时传输。而SCA接口为命令/地址分配了独立的引脚,从而实现命令/地址与数据的并发传输,是提高NAND接口带宽和降低延迟的关键技术之一,常见于高速NAND设计中,如UFS使用的NAND芯片。文章为个人辛苦整理,付费内容,已加入原创侵权保护,禁止私自转载。
2026-05-17 22:18:27
124
原创 【kernel】第1篇:image/uimage/zimage的区别
uImage 与 zImage 均为 Linux 内核镜像格式,其中 zImage 是 ARM 平台通用的压缩内核映像,而 uImage 是 U-Boot 专用的格式,在 zImage 前添加 64 字节的头信息。现代开发中,更推荐使用 zImage 配合独立的设备树文件,以减少对特定引导程序的依赖,便于维护与兼容。
2026-01-11 11:48:28
246
原创 【uboot】第2篇:UBOOT目录结构及常见文件
本文详细解析了U-Boot源码目录结构及各核心组件功能,主要包括:1)架构相关代码(arch)、开发板支持(board)、驱动(drivers)等关键目录;2)配置与编译系统(configs、tools);3)生成的镜像文件类型及用途(u-boot.bin、u-boot.imx等)。重点指出arch/arm/cpu下的链接脚本、板级相关代码路径以及NXP处理器专用镜像格式。文章强调顶层README文档的重要性,为嵌入式开发者提供了全面的U-Boot源码导航指南。
2025-12-28 17:45:26
77
原创 【uboot】第1篇:uboot简介
本文介绍了U-Boot(Universal Boot Loader)的基本概念及其应用场景。U-Boot是一种开源的bootloader,支持高级功能如液晶屏、网络和USB。文章指出实际应用中通常采用半导体厂商或开发板厂商定制的U-Boot版本,而非官方版本。文中还说明了查看U-Boot版本的方法,并提供了版本选择建议,强调应根据具体硬件选择适配的版本。最后列出了Xilinx等厂商的U-Boot源码地址。
2025-12-28 17:38:36
166
原创 【嵌入式系统基础】第1篇:MCU/单片机/SOC/CPU/MPU之间的区别和联系
本文系统梳理了CPU、MPU、MCU和SOC等处理器的核心概念与区别。CPU作为运算控制核心,包含运算器和控制器;MPU是功能更强的CPU;SOC则是集成CPU、外设控制器、存储等的系统级芯片;MCU为芯片级计算机,可视为简化版SOC。文章指出,现代芯片多采用SOC方案,集成度越来越高,CPU已很少单独存在。同时解释了单片机(SCM)作为MCU前身的历史沿革,并配图展示了CPU与外设的交互关系。这些概念在嵌入式系统开发中具有重要指导意义。
2025-12-26 23:45:00
293
原创 【嵌入式系统基础】第2篇:什么是uboot/kernel/根文件系统/BootLoader/操作系统/bios/设备树
本文深入解析了嵌入式系统中的关键概念与技术要点。首先阐述了内核与操作系统的区别,指出内核是操作系统最核心的部分,负责硬件驱动和核心功能。其次详细介绍了uboot与bootloader的关系,说明uboot是通用型bootloader,并分析了其启动流程和生命周期。文章还对比了BIOS与uboot的区别,并解释了根文件系统的特殊作用,包括管理块设备、提供初始进程和系统配置等功能。最后简要说明了不同文件系统类型在嵌入式设备中的应用场景。全文从底层原理到实际应用,系统性地梳理了嵌入式开发中的核心知识点。
2025-12-26 23:45:00
497
原创 黑猫带你学eMMC协议第34篇:一文搞懂eMMC的CRC机制及模2除法
本文介绍了eMMC协议中的CRC校验机制,主要包括CRC7和CRC16两种类型。CRC7用于命令、非R3类型响应及CSD/CID寄存器;CRC16用于块数据传输保护。文章详细说明了CRC错误处理机制,包括命令响应、数据传输出现CRC错误时的状态变化与处理流程。同时深入讲解了CRC计算原理,重点解析模2除法的运算过程,并提供了CRC7和CRC16的具体计算公式。最后指出实际应用中可通过CRC计算器进行复杂运算,并注明CRC16的校验范围限制。
2025-09-20 11:43:47
391
原创 黑猫带你学UFS协议第27篇:UFS的后台操作详解(BKOPS)
本文介绍了UFS协议中的后台操作(BKOPS)机制及其实现原理。BKOPS允许UFS设备在空闲时执行NAND相关操作(如GC、磨损均衡等),分为服务于host的前台操作和设备自主执行的后台操作。关键机制包括:通过wExceptionEventStatus的URGENT_BKOPS位和bBackgroundOpStatus属性标识操作紧急程度;fBackgroundOpsEn标志控制BKOPS开关;bBackgroundOpsTermLat寄存器规定操作终止延迟。与eMMC不同,UFS仅支持自动后台操作。该机
2025-09-07 22:18:03
483
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅