这其实是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开发
-
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架构,从而进行嵌入式系统开发。
-
ARM开发文档与资源
ARM官方提供了丰富的文档和学习资源,包括:- ARM Infocenter:提供ARM处理器架构、软件接口、标准支持等基础信息。
- ABI(Application Binary Interface)文档:详细描述了ARM架构的标准接口。
- 在线文档与社区支持:ARM中国网站提供从内核下载到技术手册的全面资源。
- 书籍与教程:例如《ARM嵌入式项目开发三位一体实战精讲》《ARM应用系统开发详解》等书籍,涵盖了从基础知识到项目实例的全面内容。
-
ARM开发流程与实践
ARM开发涉及多个步骤,包括代码编写、编译、链接、调试和部署:- 代码编写:可以使用C/C++或汇编语言编写源代码。
- 编译与链接:通过armcc、armcpp等工具将源文件编译为ELF格式的目标文件,再通过armlink生成最终的ROM代码。
- 调试与测试:利用AXD或CodeWarrior IDE进行程序调试,确保代码运行正确。
- 部署与优化:将最终代码部署到目标设备,并通过性能分析工具进行优化。
-
特定领域的ARM开发
ARM架构广泛应用于嵌入式系统、Linux操作系统、图形处理等领域:- 嵌入式Linux开发:需要搭建交叉编译环境,并移植Linux内核以适配ARM硬件。
- Android ARM开发:配置Android ARM环境后,可以进行应用开发和调试。
- 图形处理与Mali GPU:ARM Mali GPU是图形处理的重要部分,相关开发资源包括OpenGL ES Emulator和图形调试器。
-
开源社区与生态支持
ARM生态系统中存在许多开源项目和社区支持:- 开源社区资源:如华为开源计算平台提供的ARM优化资源。
- GitHub与开源工具链:开发者可以利用开源工具链(如GNU Toolchain)进行开发。
-
学习与培训资源
ARM提供了多种学习和培训资源:- 在线课程与虚拟培训:由经验丰富的工程师提供,帮助开发者深入理解ARM技术。
- 实验指导书与教程:例如金陵科技学院的《ARM应用技术实验指导书》,提供了详细的实验步骤和报告格式。
综上,ARM开发资料涵盖了从基础理论到实际应用的全面内容,开发者可以根据需求选择合适的工具、文档和资源进行学习和实践。无论是初学者还是高级开发者,都可以通过这些资源提升自己的技能并完成复杂的ARM项目开发。
作者:帅得不敢出门