嵌入式Linux系统移植 📅 发布时间:2026/7/15 18:07:24 👁️ 浏览次数: 文章目录移植思路制作映像文件准备文件生成映像文件文件分区创建分区表创建分区烧录文件测试移植思路配置正确的CPU架构指令集问题板级适配外设不同平台相关代码编译测试修改或添加相应配置集成化构建工具buildrootyacto等制作映像文件以STM32MP157A为例准备文件准备好ARM可信任固件程序TF-A、引导程序uboot、根文件系统rootfs如tf-a-stm32mp157a-fsmp1a.stm32、u-boot.stm32、rootfs.tar生成映像文件生成一个空的sdcard.img文件sudoddif/dev/zeroofsdcard.imgcount250752文件分区创建分区表sudoparted-ssdcard.img mklabel msdos创建分区sudosgdisk --resize-table128-a1-n1:34:445-c1:fsbl1-n2:446:857-c2:fsbl2-n3:858:4953-c3:ssbl-n4:4954:250713-c4:rootfs-A4:set:2-psdcard.img-g输出如下信息及成功*************************************************************** Found invalid GPT and valid MBR;converting MBR to GPTformatinmemory. *************************************************************** Setting name!partNum is0Setting name!partNum is1Setting name!partNum is2Setting name!partNum is3Disk sdcard.img:250752sectors,122.4MiB Sector size(logical):512bytes Disk identifier(GUID): B2BD73EF-E825-44C3-828A-709BDB09A14E Partition table holds up to128entries Main partition table begins at sector2and ends at sector33First usable sector is34, last usable sector is250718Partitions will be aligned on1-sector boundaries Totalfreespace is5sectors(2.5KiB)Number Start(sector)End(sector)Size Code Name134445206.0KiB8300fsbl12446857206.0KiB8300fsbl2385849532.0MiB8300ssbl44954250713120.0MiB8300rootfs Warning: The kernel is still using the old partition table. The new table will be used at the nextrebootor after you run partprobe(8)or kpartx(8)The operation has completed successfully.烧录文件将sdcard.img文件关联到Ubuntu的loop设备$sudolosetup-Pf--showsdcard.img /dev/loop16 $ls/dev/loop16 loop16 loop16p1 loop16p2 loop16p3 loop16p4 $ls/dev/disk/by-partlabel/*-llrwxrwxrwx1root root106月1116:10/dev/disk/by-partlabel/EFI\x20System\x20Partition-../../sda2 lrwxrwxrwx1root root146月1118:06 /dev/disk/by-partlabel/fsbl1 -../../loop16p1 lrwxrwxrwx1root root146月1118:06 /dev/disk/by-partlabel/fsbl2 -../../loop16p2 lrwxrwxrwx1root root146月1118:06 /dev/disk/by-partlabel/rootfs -../../loop16p4 lrwxrwxrwx1root root146月1118:06 /dev/disk/by-partlabel/ssbl -../../loop16p3 $ls/dev/loop16* /dev/loop16 /dev/loop16p1 /dev/loop16p2 /dev/loop16p3 /dev/loop16p4loop16因设备而已不一定是16烧录固件和引导程序sudoddiftf-a-stm32mp157a-fsmp1a.stm32of/dev/loop16p1statusprogressconvfsync;sudoddiftf-a-stm32mp157a-fsmp1a.stm32of/dev/loop16p2statusprogressconvfsync;sudoddifu-boot.stm32of/dev/loop16p3statusprogressconvfsync;为第四个分区增加文件系统$sudomkfs.ext4 /dev/loop16p4mke2fs1.46.5 丢弃设备块 完成 创建含有30720个块每块 4k和30720个 inode 的文件系统 正在分配组表 完成 正在写入 inode表 完成 创建日志1024 个块 完成 写入超级块和文件系统账户统计信息 已完成创建备用文件夹sudomkdir/mnt/rootfs挂载第四个分区$sudomount/dev/loop16p4 /mnt/rootfs/ $df-h文件系统 大小 已用 可用 已用% 挂载点 tmpfs 790M2.1M 788M1% /run /dev/sda3 98G 35G 58G38% / tmpfs3.9G03.9G0% /dev/shm tmpfs5.0M4.0K5.0M1% /run/lock /dev/sda2 512M6.1M 506M2% /boot/efi vmhgfs-fuse 735G 686G 49G94% /mnt/hgfs tmpfs 790M 100K 790M1% /run/user/1000 /dev/sr14.6G4.6G0100% /media/linux/Ubuntu22.04.2 LTS amd64 /dev/loop16p4 109M 24K 101M1% /mnt/rootfs将rootfs.tar 文件解压到/mnt/rootfs/cd/mnt/rootfs/;sudotarxvf ~/test/rootfs.tar;卸载/mnt/rootfs/,并且解除关联sudoumount/dev/loop16p4;sudolosetup-d/dev/loop16;测试将sdcard.img文件烧录到tf卡启动板子进行测试sudoddifsdcard.imgof/dev/sdbbs4Mstatusprogressconvfsync
嵌入式Linux映像文件组成 文章目录arm的可信任固件程序TF-Auboot引导程序Linux内核映像文件与设备树文件根文件系统rootfsarm的可信任固件程序TF-A tf-a-stm32mp157a-fsmp1a.stm32:是一个二进制的可执行程序。是一个TF-A程序。TF-A:官网:https://www.trustedfirmware… 2026/7/15 10:59:24
嵌入式远程加载linux系统 文章目录准备工作配置uboot环境变量bootargs命令分析bootcmd命令分析内存地址映射表内存分布解析网络加载Linux系统的方式不会影响MMC设备原有的Linux系统适合于linux系统移植调试场景 准备工作 准备uImage、stm32mp157a-fsmp1a.dtb、和rootfs.tar安装配置tftp和nfs服务环境将… 2026/7/10 11:23:18
德尔泰(Delta)宏观研判:穿透360《头号玩家》的底层收割黑盒,数字资产主权危机与法理确权路径 德尔泰(Delta)宏观研判:穿透360《头号玩家》的底层收割黑盒,数字资产主权危机与法理确权路径【前言】一直以来,数字资产圈存在一个“去中心化即绝对安全”的技术乌托邦。然而,近日由国家计算机病毒应急处理中心与360等单位联合发布… 2026/7/12 18:49:16
C++ RPC框架发布端核心原理与实现:从网络通信到服务治理 1. 项目概述与核心价值最近在搞分布式系统,发现很多朋友对RPC框架的实现,特别是服务发布端这块,感觉有点“黑盒”。网上的资料要么太理论,要么就是直接上重量级框架的源码,看得人头大。正好手头有个用C从零搭建的轻量级… 2026/7/15 18:06:05
新手小白从零开始彻底把握泛程序建立 在当今数字化年代,泛程序建立才能愈发重要,关于新手小白而言,从零开始把握这门技能并非遥不行及,只需遵从科学的学习途径并锲而不舍,就能逐步把握。首要,要建立厚实的根底。泛程序涉及到多种技能࿰… 2026/7/15 18:06:05
安卓虚拟相机技术解析:从系统级Hook到视频流重定向 安卓虚拟相机技术解析:从系统级Hook到视频流重定向 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 安卓虚拟相机(android_virtual_cam)是一款基于Xpose… 2026/7/15 18:06:05
从四大强度理论到工程实践:有限元分析中的材料失效判据选择 1. 强度理论的基础概念与实际意义 第一次接触有限元分析报告时,看到满屏的应力云图和密密麻麻的数据表格,很多工程师都会感到困惑:究竟该关注哪个应力指标?为什么同样的工况,铸铁零件和钢制零件要选用不同的评判标准&a… 2026/7/15 18:04:04
Minecraft 1.21 MASA模组汉化终极指南:7步实现专业级中文界面 Minecraft 1.21 MASA模组汉化终极指南:7步实现专业级中文界面 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese MASA模组汉化资源包(masa-mods-chinese)… 2026/7/15 18:04:04
cann/asc-devkit:浮点转半精度API asc_float2half 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode… 2026/7/15 18:02:02
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41