target使用overlay实现在squashfs只读区写操作

本文详细介绍了在OpenWRT系统中如何利用OverlayFS实现文件系统的可写操作,通过将只读的SquashFS与可写的JFFS2结合,达到在不擦除整个分区的情况下更新单个文件的目的,极大地简化了固件升级过程。

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

这其实是openwrt中的一个功能,现在把它移到普通的target中
target文件系统是squashfs,它是只读的,每升级一个文件都得整个区擦除然后重新写,很麻烦,使用overlayfs可以使只读区中单个文件进行替换修改,很方便。
根目录是squashfs只读的挂载设备是/dev/mtdblock2,其上有/overlay /rootdir文件夹, 分配出一个jffs2分区mtdblock3来做为可写区, 内核中使能overlay文件系统,
在init中实现overlay挂载
 

#!/bin/sh

init_sys()
{
    mount -t proc proc /proc
    mount -t sysfs sysfs /sys
    mount -n -t jffs2 /dev/mtdblock3 /overlay
    mount -n -t overlayfs  overlayfs  -o lowerdir=/,upperdir=/overlay  /rootdir
    mount -n /proc -o noatime,--move /rootdir/proc
    mount -n /dev -o noatime,--move /rootdir/dev
    mount -n /tmp -o noatime,--move /rootdir/tmp
    mount -n /sys -o noatime,--move /rootdir/sys
    mount -n /rootdir/overlay -o noatime,--move /overlay
}

fini_system()
{
	umount /proc
	umount /sys
	umount /dev
}

boot()
{
	fini_system
	if [ -x /sbin/init ]; then
		exec chroot /rootdir /sbin/init
	fi
}

start_shell()
{
	/sbin/getty -L ttyS1 115200 vt100 -n -l /bin/ash
}

init_sys

bootm=1
times=0
# read -n1 -t2 bootm

case $bootm in
	1)
#		echo "Boot the normal pid: $$...."
		boot
		;;
	9)
#		echo "Start the shell pid: $$...."
		start_shell
		;;
	*)
		boot
		;;
esac

ARM开发

  1. ARM开发环境与工具
    ARM开发主要依赖于集成开发环境(IDE)和工具链。例如:

    • ADS(ARM Developer Suite) :这是ARM公司推出的一套完整的集成开发工具,支持从代码编写到调试的全流程开发。ADS包括命令行工具(如armcc、armcpp)、GUI开发环境(如CodeWarrior IDE)、调试器(如AXD)以及实时库等。
    • IAR EWARM:这是另一款流行的ARM开发工具,支持C/C++语言的编译和调试,同时提供丰富的文档和在线帮助。
    • Linux下的ARM开发环境:可以通过安装交叉编译器(如arm-none-linux-gnueabi-gcc)来模拟ARM架构,从而进行嵌入式系统开发。
  2. ARM开发文档与资源
    ARM官方提供了丰富的文档和学习资源,包括:

    • ARM Infocenter:提供ARM处理器架构、软件接口、标准支持等基础信息。
    • ABI(Application Binary Interface)文档:详细描述了ARM架构的标准接口。
    • 在线文档与社区支持:ARM中国网站提供从内核下载到技术手册的全面资源。
    • 书籍与教程:例如《ARM嵌入式项目开发三位一体实战精讲》《ARM应用系统开发详解》等书籍,涵盖了从基础知识到项目实例的全面内容。
  3. ARM开发流程与实践
    ARM开发涉及多个步骤,包括代码编写、编译、链接、调试和部署:

    • 代码编写:可以使用C/C++或汇编语言编写源代码。
    • 编译与链接:通过armcc、armcpp等工具将源文件编译为ELF格式的目标文件,再通过armlink生成最终的ROM代码。

       

    • 调试与测试:利用AXD或CodeWarrior IDE进行程序调试,确保代码运行正确。
    • 部署与优化:将最终代码部署到目标设备,并通过性能分析工具进行优化。
  4. 特定领域的ARM开发
    ARM架构广泛应用于嵌入式系统、Linux操作系统、图形处理等领域:

    • 嵌入式Linux开发:需要搭建交叉编译环境,并移植Linux内核以适配ARM硬件。
    • Android ARM开发:配置Android ARM环境后,可以进行应用开发和调试。
    • 图形处理与Mali GPU:ARM Mali GPU是图形处理的重要部分,相关开发资源包括OpenGL ES Emulator和图形调试器。
  5. 开源社区与生态支持
    ARM生态系统中存在许多开源项目和社区支持:

    • 开源社区资源:如华为开源计算平台提供的ARM优化资源。
    • GitHub与开源工具链:开发者可以利用开源工具链(如GNU Toolchain)进行开发。
  6. 学习与培训资源
    ARM提供了多种学习和培训资源:

    • 在线课程与虚拟培训:由经验丰富的工程师提供,帮助开发者深入理解ARM技术。
    • 实验指导书与教程:例如金陵科技学院的《ARM应用技术实验指导书》,提供了详细的实验步骤和报告格式。

综上,ARM开发资料涵盖了从基础理论到实际应用的全面内容,开发者可以根据需求选择合适的工具、文档和资源进行学习和实践。无论是初学者还是高级开发者,都可以通过这些资源提升自己的技能并完成复杂的ARM项目开发。

作者:帅得不敢出门

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帅得不敢出门

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

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

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

打赏作者

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

抵扣说明:

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

余额充值