汽车ECU BootLoader升级实战:PBL与SBL两级架构及UDS刷写全流程
1. 从一次刷写失败说起为什么BootLoader值得单独拎出来讲前阵子帮一个朋友排查问题他手里一块车身控制器BCM样件用诊断仪走UDS刷写进度条卡在31%死活不动最后超时退出再上电直接变砖——应用层跑不起来连诊断响应都没了。他第一反应是Flash写坏了准备换芯片。我让他别急先看BootLoader还在不在。结果用Boot模式重新上电诊断服务能应答说明PBLPrimary BootLoader完好问题出在SBLSecondary BootLoader传输或者App校验环节。最后定位下来是SBL的段地址和Flash驱动里的擦除边界对不上擦到了不该擦的区域。这件事很典型。很多人做ECU升级把注意力全放在UDS服务怎么发上却忽略了BootLoader本身的分层设计、内存布局和刷写时序。真出问题的时候连现在跑的是哪一层都判断不了自然无从下手。这篇内容我想把汽车ECU BootLoader升级这件事从头到尾捋一遍PBL和SBL各自负责什么、UDS刷写全流程怎么走、内存怎么划分、刷写时有哪些坑。适合做嵌入式底层、诊断开发、产线刷写工具的同学参考也适合刚接触UDS刷写、想搞明白为什么要有两级BootLoader的入门者。核心关键词就几个ECU、BootLoader、PBL、SBL、UDS刷写、Flash驱动、诊断服务。下面按我实际做项目的思路展开不讲空理论讲能落地的部分。2. PBL与SBL的分工两级BootLoader到底在防什么2.1 为什么不是一个BootLoader走天下刚接触这块的人常问既然BootLoader就是用来刷App的为什么还要分PBL和SBL两级一个不够吗够但不够稳。单级BootLoader的问题在于它既要负责最底层的通信和Flash操作又要负责完整的刷写协议逻辑代码量大、依赖多。一旦这坨代码在升级过程中被破坏比如掉电、通信干扰导致误擦写整个ECU就彻底没救了只能拆壳上编程器。两级设计本质上是把保命和干活分开PBLPrimary BootLoader常驻在受保护的Flash扇区出厂后基本不动。它只做最基础的事——上电初始化、判断进入App还是刷写模式、提供最简通信通道、接收SBL并搬运到RAM或指定区域。代码极小通常几KB到十几KB逻辑简单到几乎不会出错。SBLSecondary BootLoader真正干活的刷写程序。它包含完整的UDS服务处理、Flash擦写驱动、校验算法、段地址管理。它本身是可被替换的每次刷写时由PBL加载进来跑在RAM里或者临时区域。打个比方PBL是保险柜的机械锁芯结构简单、极难破坏SBL是每次开柜时临时插进去的电子钥匙功能复杂但用完就撤。钥匙坏了换一把就行锁芯不能坏。2.2 PBL的职责边界与最小可信原则PBL的设计有一条铁律能少做就少做。我见过一些项目把CRC校验、多帧传输、甚至部分UDS服务都塞进PBL结果PBL膨胀到几十KB反而增加了自身被破坏的风险。一个合格的PBL通常只包含时钟、看门狗、基础外设初始化判断启动条件App是否有效、是否有刷写请求标志一个极简的通信引导比如只支持进入编程会话、请求下载SBLSBL的接收与校验通常只做长度和简单校验和跳转到App或SBL。这里有个关键点PBL判断App是否有效的依据。常见做法是在App区末尾或固定地址放一个有效性标志校验值PBL上电后算一遍通过就跳App不通过就停在刷写模式。这个校验值怎么算、放在哪直接决定了变砖的判定逻辑后面第4节会细讲。2.3 SBL承担的重活UDS服务与Flash驱动SBL才是刷写流程的主角。它需要实现UDS诊断服务至少包括0x10会话控制、0x27安全访问、0x34请求下载、0x36传输数据、0x37请求传输退出、0x31例程控制用于擦除和校验、0x11ECU复位等。Flash驱动擦除、写入、读取且必须与目标MCU的Flash控制器寄存器严格对应。地址与段管理把UDS传来的逻辑地址映射到物理Flash地址处理段边界。完整性校验CRC32或厂商自定义算法刷完必须校验。SBL通常被加载到RAM中运行因为Flash在擦写期间不能同时执行代码同一Bank内。如果MCU支持RWWRead-While-Write或者有多Bank也可以让SBL跑在Flash的另一个Bank里但RAM运行是最通用的方案。注意SBL跑在RAM里意味着它的大小受RAM容量限制。我遇到过RAM只有32KB的MCUSBL编译出来28KB加上栈和堆几乎顶满稍微加点调试打印就溢出。所以SBL要精简别把用不上的服务都编进去。2.4 两级之间的握手SBL是怎么被请进来的PBL和SBL之间的交接是整个刷写流程里最容易出问题的环节之一。典型流程是诊断仪发送进入编程会话请求PBL应答诊断仪请求下载SBL0x34PBL返回最大块长度诊断仪分块传输SBL数据0x36PBL写入RAM缓冲区传输完成0x37PBL校验SBL校验通过PBL跳转到SBL入口控制权移交。这里有个细节PBL接收SBL时缓冲区开多大。开小了传输次数多、慢开大了占RAM。常见做法是开一个几KB的环形或线性缓冲区配合流控。另外SBL的入口地址、栈指针初始化必须在跳转前设置好否则一跳过去就HardFault。3. UDS刷写全流程拆解从会话进入到复位重启3.1 刷写前的会话与安全解锁UDS刷写不是上来就传数据得先进门。标准流程0x10 0x02进入编程会话Programming Session。注意默认会话下很多刷写相关服务是被禁止的必须先切会话。0x27 0x01 / 0x27 0x02安全访问。先请求种子SeedECU返回一个随机数诊断仪用预置算法算出密钥Key发回ECU验证通过后解锁。安全访问的算法是各家自己定的常见的有固定密钥、基于种子做异或/查表/AES等。这里不展开算法细节但要强调一点种子必须是真随机或高质量伪随机固定种子等于没锁。我见过用固定种子的项目任何人抓一次报文就能复现刷写安全性形同虚设。解锁后通常还要用0x31例程控制做一些前置检查比如检查刷写条件电压、温度、App是否在运行等。3.2 请求下载与数据传输0x34/0x36/0x37的配合这是刷写的核心三段式0x34 请求下载诊断仪告诉ECU我要往这个地址写这么多字节。报文里包含数据格式标识、地址和长度addressAndLengthFormatIdentifier。ECU收到后要校验地址是否在允许刷写的范围内防止误擦PBL区校验长度是否合法擦除对应Flash区域有些实现把擦除放在0x31例程里有些放在0x34里看厂商约定返回maxNumberOfBlockLength告诉诊断仪每包最多传多少字节。0x36 传输数据按0x34协商的块长度分块传输。每包带一个块序号blockSequenceCounter从1开始循环。ECU收到后写入缓冲区再刷进Flash。这里的关键是流控和超时如果ECU处理慢诊断仪发太快会丢包如果ECU等太久诊断仪会超时。通常用NRC 0x78请求正确接收响应挂起来告诉诊断仪我还在处理别急。0x37 请求传输退出所有数据传完后诊断仪发0x37ECU做最终校验CRC返回结果。3.3 擦除、写入与校验的时序陷阱时序上最容易踩的坑是擦除和写入的先后与粒度。Flash擦除是按扇区Sector或页Page来的写入是按字Word或半字来的。如果App大小不是扇区大小的整数倍最后一个扇区擦除后只写一部分剩下的保持擦除态0xFF这没问题。但如果先写后擦或者擦除范围算错就会把相邻数据擦掉。我那个朋友的问题就出在这SBL里擦除起始地址做了对齐但结束地址没做向上对齐结果少擦了一个扇区写入时那个扇区还是旧数据校验自然不过。更坑的是有些Flash控制器在写入未擦除区域时会报错甚至锁死。另一个陷阱是写入过程中的掉电。如果写到一半掉电App区就是半新半旧的状态。所以PBL的有效性校验必须能识别这种不完整状态——通常靠一个刷写完成标志只有全部写完并校验通过才置位。没置位就认为App无效停在刷写模式。3.4 复位与App有效性确认刷完、校验通过后诊断仪发0x11复位ECU。ECU重启PBL重新判断App有效标志置位了、校验通过了跳转到App。这里有个常见误区校验通过不等于App能跑。CRC只保证数据完整不保证逻辑正确。如果刷错了固件比如刷了不匹配的版本CRC照样过但App跑起来可能立刻跑飞。所以有些项目会在App里加一个心跳或启动确认机制App启动后主动置一个标志如果PBL下次上电发现标志没置就回退到刷写模式。这个机制叫A/B分区回滚或启动计数回退在要求高可靠性的场景很值得做。4. Flash内存布局PBL、SBL、App、标定区怎么排4.1 典型分区方案与地址对齐一个典型的ECU Flash布局以某32位MCU为例具体地址因芯片而异区域起始地址大小说明PBL区0x0800000016KB受保护出厂不擦PBL参数区0x080040004KB存App有效性标志、刷写计数App区0x08005000448KB应用代码标定区0x0807500032KB标定数据可单独刷SBL临时区RAM视RAM而定SBL运行区这个布局的核心原则PBL和它的参数区必须放在独立扇区且擦除App时不能波及。很多MCU的扇区大小不均匀比如前几个扇区小、后面大布局时要对着参考手册的扇区表排别想当然。4.2 为什么PBL区要锁死PBL区锁死有两层含义物理保护通过Flash的写保护寄存器如选项字节、WRP把PBL所在扇区设为不可擦写。这样即使SBL的Flash驱动有bug也擦不到PBL。逻辑保护SBL的地址校验里明确拒绝任何落在PBL区的擦写请求。物理保护是最后一道防线。我强烈建议所有量产项目都开启写保护调试阶段可以临时关量产必须开。见过太多因为没开保护、一个地址算错就把PBL擦了的案例那真是只能拆芯片。4.3 App有效性标志与回滚设计App有效性标志一般放在PBL参数区结构大致是typedef struct { uint32_t magic; // 固定魔数如0x5A5A1234 uint32_t app_crc; // App区CRC32 uint32_t app_size; // App大小 uint8_t valid; // 有效性标志 uint8_t boot_count; // 启动尝试计数 uint8_t reserved[2]; } AppHeader_t;PBL上电流程读参数区检查magic若valid且CRC匹配跳App若CRC不匹配或valid未置位进刷写模式若配置了启动计数App启动后需在限定时间内喂狗确认否则计数超限回退。回滚设计的关键是boot_count的更新时机。必须在跳App之前就递增并写回App确认成功后再清零。如果App启动后自己清零那App跑飞时根本没机会清计数就不会超限回退机制失效。5. 刷写工具链与实操从CAN报文到脚本自动化5.1 诊断仪与上位机工具选型刷写工具分两类商用诊断仪如主流诊断设备支持UDS刷写配置好CDD/ODX文件即可。优点是稳定、有技术支持缺点是贵、定制化难。自研上位机用Python/C#/C配合CAN卡如Vector、周立功、PCAN等自己写。优点是灵活、能深度定制缺点是要自己处理所有细节。我个人的经验产线刷写用商用工具保稳定研发调试用自研脚本保灵活。自研脚本推荐Python python-can udsoncan这套组合上手快社区资料多。5.2 用Python跑通一次完整刷写下面是一个简化的刷写流程伪代码展示各步骤的调用顺序基于udsoncan风格import can from udsoncan.connections import PythonIsoTpConnection from udsoncan.client import Client import isotp # 1. 建立ISO-TP连接 stack isotp.CanStack(buscan.Bus(interfacepcan, channelPCAN_USBBUS1, bitrate500000), paramsisotp.socket_params) conn PythonIsoTpConnection(stack) with Client(conn, request_timeout5) as client: # 2. 进入编程会话 client.change_session(0x02) # 3. 安全访问 seed client.request_seed(0x01) key compute_key(seed) # 厂商算法 client.send_key(0x02, key) # 4. 请求下载SBL client.request_download(memory_address0x20000000, sizelen(sbl_data)) # 5. 分块传输SBL for i in range(0, len(sbl_data), block_size): client.transfer_data(i // block_size 1, sbl_data[i:iblock_size]) # 6. 退出传输 client.request_transfer_exit() # 7. 跳转SBL通常用例程控制0x31 client.routine_control(0x01, 0xFF00) # 8. 后续用SBL刷App流程类似 # ... # 9. 复位 client.ecu_reset(0x01)这段代码看着简单但每一步背后都有坑。比如request_download的地址格式、transfer_data的块序号循环、routine_control的例程ID都要和ECU端严格对齐。5.3 块长度、超时与流控参数怎么定maxNumberOfBlockLength不是随便定的它受限于CAN帧长度经典CAN单帧8字节ISO-TP多帧传输有开销实际有效载荷更少CAN FD可到64字节。ECU缓冲区大小ECU端接收缓冲区多大就最多能接多大的块。诊断仪发送能力上位机处理速度。经验值经典CAN下块长度设512字节到4KB比较常见CAN FD下可以设到4KB到64KB。设太小传输次数多、慢设太大ECU缓冲不够会丢包。超时参数P2、P2*也要匹配。P2是ECU响应普通请求的时间P2*是发NRC 0x78后的延长超时。刷写时ECU擦除Flash可能耗时几百毫秒到几秒必须用0x78挂起否则诊断仪早超时了。5.4 产线刷写的自动化与防错产线刷写和研发调试完全是两码事。产线要求快、稳、防错。快并行刷写多台、优化块长度、减少不必要的服务交互。稳重试机制、断点续传如果支持、异常自动恢复。防错刷写前校验ECU型号、软件版本、硬件版本防止刷错件刷写后自动校验并记录日志。防错这块我踩过坑有次产线把两个相似型号的ECU混在一起刷写脚本没做型号校验结果刷错固件整批返工。后来加了刷写前的0x22读数据读取硬件版本号比对才杜绝了这类问题。6. 那些年踩过的坑刷写失败排查实录6.1 卡在31%SBL传输中断的定位过程回到开头那个案例完整排查链路是这样的现象刷写卡在31%超时退出ECU无响应。第一步确认PBL是否存活。用Boot模式上电诊断能应答PBL正常。第二步抓CAN报文看卡在哪一步。发现是SBL传输到第N包时ECU不再回流控帧。第三步怀疑SBL缓冲区溢出。查SBL代码发现接收缓冲区是4KB但诊断仪按协商的8KB块长度发送第2包就溢出。第四步为什么协商成8KB查0x34响应ECU返回的maxNumberOfBlockLength是8192但SBL实际缓冲区只有4096。根因0x34响应里的块长度和SBL实际缓冲区不一致是配置错误。修复把0x34响应的块长度改成4096或把SBL缓冲区扩到8KB。选了前者因为RAM紧张。这个案例的教训协商参数必须和实际实现一致。0x34返回的块长度不是越大越好要如实反映ECU能力。6.2 校验总不过CRC算法与字节序的坑另一个高频问题刷完校验总失败。排查下来八成是CRC算法或字节序对不上。CRC多项式CRC32有多个变种如CRC-32/ISO-HDLC、CRC-32/MPEG-2多项式、初值、异或值、反射方式都不同。诊断仪和ECU必须用同一个。字节序CRC计算时按大端还是小端读数据结果不同。计算范围从哪个地址算到哪个地址是否包含头部必须一致。我的做法是在SBL和上位机里用同一份CRC参考代码先拿一段已知数据对拍确认两边算出来一样再上真实刷写。别等到刷完才发现对不上那时候排查成本高得多。6.3 刷完变砖App有效性判断的逻辑漏洞刷完变砖最吓人的一种是刷写明明成功了复位后却起不来。常见原因有效性标志没置位SBL刷完忘了写valid标志PBL认为App无效。跳转地址错误App入口地址算错跳过去跑飞。栈指针没初始化跳转前没设MSP一进去就HardFault。中断向量表没重映射App有自己的向量表PBL跳转前要设置VTOR寄存器指向App的向量表。这几个点里中断向量表重映射最容易被忽略。很多MCU默认向量表在Flash起始地址App如果不在起始地址必须改VTOR否则中断一来就跳到PBL的向量表行为完全错乱。6.4 掉电保护刷写中断后的恢复策略刷写过程中掉电是必须考虑的场景。恢复策略分两种可恢复PBL检测到App无效停在刷写模式重新刷即可。前提是PBL和参数区没被破坏。不可恢复PBL被擦或参数区损坏只能拆机。要做到可恢复关键是刷写过程中绝不碰PBL区和参数区的关键字段。valid标志的更新要放在最后一步且用先擦后写的原子操作。有些实现用双备份参数区A/B两份交替写进一步降低损坏风险。7. 关于BootLoader升级我个人的几条实操心得做这块这些年有几个体会是文档里不会写、但实际项目里特别值钱的第一PBL的代码要无聊到极致。越简单越可靠。任何能在SBL里做的事绝不放进PBL。PBL里每多一行代码就多一分被破坏的风险。第二刷写参数一定要实测标定。块长度、超时、重试次数别照抄别人的配置。不同MCU、不同CAN负载、不同诊断仪最优值都不一样。拿实际硬件跑几轮用示波器或总线分析仪看时序比拍脑袋强。第三校验和回滚机制要设计进去不是补上去。很多项目前期不做回滚后期想加发现内存布局、标志位都没预留改起来伤筋动骨。一开始就把AppHeader、boot_count、双备份这些设计好后面省心。第四产线刷写和研发刷写要分开工具链。研发要灵活、能看细节产线要稳定、防错、快。用同一套工具往往两头不讨好。第五永远保留一个救砖通道。不管PBL多可靠都要有一个物理或特殊的进入刷写模式的方式比如特定引脚拉高、特定CAN报文序列。这是最后的保险。最后分享一个小技巧调试刷写时在SBL里加一个分段校验功能——每传完一段就校验一段而不是全部传完再校验。这样一旦出错能立刻定位是哪一段的问题比最后统一校验高效得多。代价是稍微慢一点但调试阶段非常值得。量产时可以关掉或者只在特定调试模式下启用。

相关新闻

STM32+华为云IoT+Qt:从传感器到界面的物联网智能家居实战

STM32+华为云IoT+Qt:从传感器到界面的物联网智能家居实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:25:45 阅读更多 →
MTK高通展锐版本升级烧录全解析:SP Flash Tool/QFIL/ResearchDownload实战

MTK高通展锐版本升级烧录全解析:SP Flash Tool/QFIL/ResearchDownload实战

简介:面向手机方案公司、嵌入式开发与维修技术人员,这份资源汇整了联发科、高通、展锐三大芯片平台的版本升级与固件烧录工具链,涵盖各平台官方线刷工具的核心组件、配置范例与工程化目录结构。资源包共1031个文件,压缩后约181.59…

2026/10/18 1:25:45 阅读更多 →
端到端WebRTC智能摄像头链路:NeuroCast架构解析与落地实践

端到端WebRTC智能摄像头链路:NeuroCast架构解析与落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:25:45 阅读更多 →

最新新闻

NPU/TPU硬件加速本质:软硬协同的决策框架与落地实践

NPU/TPU硬件加速本质:软硬协同的决策框架与落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:13:56 阅读更多 →
20倍光学变焦迷你机芯CM8210AP:小体积如何兼顾远距离高清观测

20倍光学变焦迷你机芯CM8210AP:小体积如何兼顾远距离高清观测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:13:56 阅读更多 →
智能穿戴APP开发服务商怎么选?四个维度评估硬件适配能力

智能穿戴APP开发服务商怎么选?四个维度评估硬件适配能力

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:13:56 阅读更多 →
MT5风控插件开发实战:架构、性能优化与稳定性部署

MT5风控插件开发实战:架构、性能优化与稳定性部署

1. 风控插件的定位与整体设计思路1.1 为什么风控插件是MT5搭建后的第一优先级MT5服务器部署完成、VPS稳了、交易终端连上了,这只能算完成了1%。真正决定这套平台能不能长期跑下去的关键,是风控插件。我见过太多团队在搭建阶段兴奋得不行,觉得…

2026/10/18 2:13:56 阅读更多 →
RH850 GHS编译链路全解析:从.c到.elf的工程实践

RH850 GHS编译链路全解析:从.c到.elf的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:13:56 阅读更多 →
2026年AI接口聚合服务深度横评:从调用稳定性看词元之河与硅基流动的中小团队适配度

2026年AI接口聚合服务深度横评:从调用稳定性看词元之河与硅基流动的中小团队适配度

2026年5月完成的一轮 AI 接口聚合服务实测横评,方法论为 72 小时连续压测、12 类典型调用场景模拟与 37 位一线开发者访谈。行业背景值得关注:据《中国AI基础设施白皮书(2026Q1)》,超过 68% 的中小技术团队在大模型应用…

2026/10/18 2:12:56 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →