【嵌入式Linux学习笔记】系统概念及底层构建

文章介绍了使用正点原子的STM32MP157开发板学习Linux系统开发的过程,包括从TF-A、U-BOOT到Linux内核的移植和配置,以及环境变量操作、内存操作、网络验证等实用技巧。此外,还提到了根文件系统构建和图形化界面配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

因为一般的MCU的性能有限,能够应用的场景也比较局限,所以需要学习功能更强大的ARM芯片,基于linux系统进行功能开发,得到更加强大的嵌入式系统。我用于学习的硬件是正点原子推出的STM32MP157开发板,感兴趣的小伙伴也可以一起交流学习。

学习视频地址:【正点原子】STM32MP157开发板

系统启动流程

在这里插入图片描述
linux系统的启动是一个链式的过程,不同于MCU只需要加载一个bin文件就可以运行,linux系统需要保证系统的稳定性,所以要先加载一些必要的系统信息,并且对相关的设备进行初始化,再运行用户的核心代码。

TF-A,U-BOOT,Linux内核都有两种形式移植到开发板

  1. 下载ST提供的源码 -> 打补丁 -> 修改MakeFile -> 修改设备树等配置文件 -> 编译 -> 烧录
  2. 下载开发板商家提供的源码 -> 编译 -> 烧录

注: 打补丁的时候可能需要权限,可以使用su root进入root模式再执行指令。

TF-A

作用:隔离硬件,为硬件提供一个安全环境并且提供安全服务,将CPU的工作状态划分为安全世界和非安全世界。
使用:TF-A由自己的官方组织开发,ST将自己的芯片移植进其中,正点原子则是基于ST修改后的源码进行开发使用。

U-BOOT

环境变量操作

修改环境变量

setenv bootdelay 5
saveenv

新建环境变量

setenv author 'console=ttySTM0,115200 root=/dev/mmcblk2p2 rootwait rw '
saveenv

删除环境变量

setenv author
saveenv

查看环境变量

print xxx # xxx为变量名

内存操作

显示内存值

md[.b, .w, .l] address [# of objects]

修改内存值

# 地址不自增
nm [.b, .w, .l] address
# 地址自增
mm [.b, .w, .l] address

填充内存

mw [.b, .w, .l] address value [count]

数据拷贝

cp [.b, .w, .l] source target count

数据比较

cmp [.b, .w, .l] addr1 addr2 count

网络操作

验证网络是否可用

ping address

获取路由器IP

dhcp

网络文件传输

# nfs
nfs [loadAddress] [[hostIPaddr:]bootfilename]
# tftp
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

UMS指令

用于将flash模拟成U盘,采用ext4格式。

ums <USB_controller> [<devtype>] <dev[:part]>

bootargs 环境变量

console=ttySTM0,115200 root=/dev/mmcblk2p3 rootwait rw

console:设置linux交互终端
toot:设置根文件系统的位置
rootfstype:指定根文件系统的类型,对于ext格式则无需指定

图形化界面

.config文件用于存储配置项,Kconfig文件是图形界面的描述文件。
作用:在.config 文件中生成以“CONFIG_”开头的变量。

make stm32mp15_atk_trusted_defconfig # 只需配置一次
make menuconfig

在这里插入图片描述

Linux内核

文件架构
在这里插入图片描述
在这里插入图片描述

根文件系统

根文件系统主要用于构建linux系统的文件架构,可以采用busybox和buildroot软件进行构建,后者也有用到前者的功能。所以主要采用buildroot进行构建文件系统。

  1. 参数配置(基于图形化界面)
make menuconfig
make xxx_defconfig
  1. 编译
make -j8

编译所得的output/images/rootfs.tar即为所需的文件,将其复制解压到目标目录即可。

在buildroot下修改busybox配置

make busybox-menuconfig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜个头头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值