无忧网站建设服务wordpress 菜单效果
无忧网站建设服务,wordpress 菜单效果,基层建设被哪些网站全文收录,怎样下载字体到wordpress一、简介#xff1a;边缘场景“升级”“生命线”无人值守#xff1a;电网塔、高速龙门架、矿山井下#xff0c;升级失败 派人爬塔#xff0c;成本 1 万元/次。实时性不能丢#xff1a;升级过程若破坏 RT 内核或 rootfs#xff0c;机械臂抖动 ≥ 5 ms → 废品率飙升…一、简介边缘场景“升级”“生命线”无人值守电网塔、高速龙门架、矿山井下升级失败 派人爬塔成本 1 万元/次。实时性不能丢升级过程若破坏 RT 内核或 rootfs机械臂抖动 ≥ 5 ms → 废品率飙升。合规要求GB/T 25000 安全更新、IEC 61508 生命周期管理均需“可回滚 原子性”。掌握“镜像备份 增量升级 AB 分区 回滚”全流程让你的瑞芯微实时 Linux 产品一次升级成功失败自动回家。二、核心概念5 个关键词先搞懂名词一句话本文出现场景AB 分区两套 rootfs kernel升级时切换失败回滚升级策略核心OTA 包增量或全量镜像压缩包网络下发文件后缀.swuSWUpdate开源升级框架支持原子、增量、签名命令行swupdate原子性写镜像过程断电仍保持旧系统可启动通过 image-checksum 双备份实现回滚新系统 3 次启动失败自动回到旧版本uboot 计数器 脚本三、环境准备10 分钟搭好“瑞芯微实验室”1. 硬件RK3568 开发板带 ≥8 GB eMMC×1USB-TTL 串口线 ×1115200-8-N-1网线 1 根千兆TFTP/HTTP 升级用2. 软件组件版本安装命令主机 OSUbuntu 20.04 x86_64本地 PC交叉工具链gcc-linaro-10.3-2021.03-x86_64_aarch64-linux-gnu下文一键脚本实时内核linux-5.15-rt35官方 patchSWUpdate2023.05apt install swupdate swupdate-client根文件系统Ubuntu Base 20.04 arm64debootstrap构建3. 一键装工具链可复制#!/bin/bash # install_toolchain.sh TOOLCHAINgcc-linaro-10.3-2021.03-x86_64_aarch64-linux-gnu wget https://releases.linaro.org/components/toolchain/binaries/latest-10.3/aarch64-linux-gnu/${TOOLCHAIN}.tar.xz sudo tar -xf ${TOOLCHAIN}.tar.xz -C /opt/ echo export PATH/opt/${TOOLCHAIN}/bin:$PATH ~/.bashrc source ~/.bashrc四、应用场景300 字某省级“边缘视觉检测工站”部署 500 台 RK3568 盒子运行 PREEMPT_RT 实时检测算法对传送带矿泉水瓶做瓶盖缺陷检测要求周期 ≤ 8 ms。现场无人值守运维中心 200 km 外。早期采用“U 盘拷镜像”升级失败率 8%且断电必变砖。引入本文 AB 分区 SWUpdate OTA 方案后① 升级包 70 MB增量原 900 MB 全包② 断电 3 次仍可回滚③ 3 次启动失败自动回旧版本④ 实时性验证 cyclictest Max 50 μs 保持不变。最终单台升级时间从 30 分钟缩到 3 分钟全年零现场维护客户将方案复制到瓶盖、标签、装箱 3 条产线成为集团模板。五、实际案例与步骤从“打包”到“回滚”全流程所有脚本放~/rk-ota/目录绝对路径避免串扰。mkdir -p ~/rk-ota cd ~/rk-ota5.1 制作 AB 分区镜像分区规划eMMC 8 GB 示例分区名字大小作用mmcblk0p1boot_a64 MBkernel dtbmmcblk0p2rootfs_a2 GB系统 Ammcblk0p3boot_b64 MBkernel dtbmmcblk0p4rootfs_b2 GB系统 Bmmcblk0p5data余下用户数据升级不碰生成镜像主机端# make_ab_image.sh ROOTFS_Arootfs_a.ext4 # 已用 debootstrap build 好 ROOTFS_Brootfs_b.ext4 # 与 A 初始内容一致 mkfs.ext4 -d $ROOTFS_A -L rootfs_a -b 4096 rootfs_a.img 2G mkfs.ext4 -d $ROOTFS_B -L rootfs_b -b 4096 rootfs_b.img 2G烧录脚本U-Boot 下# flash_ab.scr (mkimage -A arm64 -T script -C none -d flash_ab.cmd flash_ab.scr) echo flash_ab.scr: 自动烧录 AB 镜像 fatload mmc 1:1 0x40000000 rootfs_a.img mmc write 0x40000000 0x4000 0x400000 # 计算好扇区 fatload mmc 1:1 0x40000000 rootfs_b.img mmc write 0x40000000 0x404000 0x4000005.2 编译 SWUpdate# 交叉编译 swupdate git clone https://github.com/sbabic/swupdate.git cd swupdate make menuconfig # 选择 # General --- # Cross-compile prefix : aarch64-linux-gnu- # Bootloader --- # U-Boot bootcount support make make install DESTDIR$PWD/_install生成swupdate可执行文件与swupdate.cfg配置模板。5.3 生成增量 OTA 包生成 file-list# 在旧系统 A 运行 find /usr /lib /opt -type f -exec md5sum {} \; old_manifest.txt新系统编译后同样生成 new_manifest.txt计算差异# make_delta.sh sort old_manifest.txt old.sort sort new_manifest.txt new.sort comm -13 old.sort new.sort | awk {print $2} delta.lst打包tar -czf delta.tar.gz -T delta.lst cp delta.tar.gz swupdate.cfg ~/rk-ota/5.4 下发升级HTTP 模式示例主机启 HTTPcd ~/rk-ota python3 -m http.server 8080设备端升级# /usr/local/bin/ota_upgrade.sh #!/bin/bash SWUPDATE_ARGS-H prod:1.0 -e stable,upgrade swupdate $SWUPDATE_ARGS -i http://10.10.10.100:8080/delta.tar.gzU-Boot 启动计数器在bootcmd加入if test $bootcount -ge 3; then setenv boot_part 2; fi setenv bootargs root/dev/mmcblk0p${boot_part} rootwait bootcount${bootcount} saveenv新系统启动成功后在 systemd 服务里fw_setenv bootcount 0失败则计数累加3 次后自动切换回旧分区。5.5 一键回滚人工/自动# rollback.sh CUR_PART$(mount | grep on / | awk {print $1}) if [[ $CUR_PART *rootfs_a* ]]; then TARGET4 else TARGET2 fi fw_setenv boot_part $TARGET reboot六、常见问题与解答FAQ问题现象解决swupdate 报“image checksum error”增量包 md5 不匹配重新生成 manifest确保新旧系统同一基线升级后 cyclictest Max 100 μs实时性下降检查新内核是否关闭 CONFIG_PREEMPT_RT确认 cmdline 无nohzoffbootcount 不生效3 次失败未回滚确认 U-Boot 已启用CONFIG_BOOTCOUNT_LIMITeMMC 寿命担忧频繁写镜像使用 tar 增量 data分区分离减少全块写入现场无网络无法 HTTP 下载支持 U 盘离线升级swupdate -i /media/sda1/delta.tar.gz七、实践建议与最佳实践版本号管理采用product:major.minor.build四段式swupdate 支持-e硬件匹配杜绝下错包。双重校验镜像内嵌 SHA256 数字签名openssl 私钥签名公钥存放于/etc/swupdate/public.pem防止恶意包。灰度发布500 台设备按 1%-10%-50%-100% 四批升级每批观察 24 h 无异常再继续。实时监控设备上报upgrade_status到 MQTTGrafana 大屏显示“升级中/成功/失败”热力图。备份最后防线每次升级前自动dd if/dev/mmcblk0 of/data/emmc.img bs1M count100保存 boot 分区极端情况串口救砖。文档自动化使用 GitLab CI PlantUML 自动生成《升级指导书》PDF随 OTA 包一起下发始终保持“代码-文档”同版本。八、总结一张脑图带走全部要点瑞芯微 AB 分区升级 ├─ 分区boot_a/rootfs_a boot_b/rootfs_b data ├─ 工具SWUpdate U-Boot bootcount ├─ 流程增量打包 → HTTP下发 → 启动计数 → 失败回滚 ├─ 校验SHA256 数字签名 灰度 └─ 监控MQTT Grafana 自动报表实时性 无人值守 原子回滚一套方案同时满足。把脚本 push 到你的 GitLab下次产线升级只需点击 Merge Request→OTA 包自动生成→设备半夜静默升级第二天上班看 Grafana 绿灯一片——这就是工程化的力量祝你升级零事故回滚零现