Tiny4412 ARM开发环境搭建—NFS网络根文件系统制作
2017-01-21 14:13
1031 查看
Tiny4412从SD卡启动的简单网络文件系统制作
Tiny4412从SD卡启动的简单网络文件系统制作简介
安装工具
1 安装交叉编译工具
2 Minicom串口工具安装及配置
3 安装fastboot工具
4 安装NFS服务
5 关闭防火墙
编译内核
编译uboot并制作SD卡
1 Build uboot
2 制作启动 Tiny4412 的SD卡
3 使用SD卡启动 Tiny4412
4 使用fastboot工具烧写内核
制作简单的网络文件系统
2 NFS服务配置
3 使用busybox编译出命令
4 添加库文件和动态链接加载器
5 添加设备文件
51 编辑启动脚本
52 编辑init进程启动配置文件
1. 简介
嵌入式系统能够在开发板上正常运行,需要先进行系统配置,一个完整的嵌入式系统应该包含的几个部分::uboot,kernel,rootfs,appfs。这几部分在ARM板Flash上的位置关系如下图所示:注:图片来源于韦东山老师的《嵌入式Linux应用开发完全手册》
rootfs可以不用添加到开发板,而是部署到PC机上,开发板在运行完kernel,要挂载rootfs时,可以通过NFS网络挂载到设定好的PC机上的文件系统上。
操作系统: 内核 + 文件(应用, 配置, 设备, ...); bootloader: u-boot (交互界面) # lsX help kernel : linux (没有交互) filesystem: rootfs android qt_rootfs ... .... .... shell
2. 安装工具
需要用到的安装工具包及源码包如下:2.1 安装交叉编译工具
交叉编译:在PC机(x86平台)上开发程序,在ARM板上运行,提高开发、编译速度。在编译uboot、内核、busybox、程序文件之前需要安装兼容开发板的交叉编译工具
参考Tiny4412 ARM开发环境搭建–交叉编译环境搭建
检测系统是否已经安装有交叉编译环境:
# arm-linux-gcc -v bash: arm-linux-gcc: command not found
安装步骤:
1. 找到arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 所在路径,并解压压缩文件
# tar xf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz # ls arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz opt // 解压后得到一个opt文件夹
在usr/local/目录下创建文件夹,并将解压缩的文件夹./opt/FriendlyARM/toolschain/4.5.1/拷贝到/usr/local/arm/目录:
# mkdir /usr/local/arm # cp opt/FriendlyARM/toolschain/4.5.1/ /usr/local/arm/ -rf
修改环境变量:
# vim /root/.bash_profile // 在文件末尾添加: PATH=/usr/local/arm/4.5.1/bin/:$PATH export PATH
注销用户,重新登录用户后生效
或者:
# source /root/.bash_profile // 使配置文件生效
检查交叉编译环境是否安装成功:
# arm-linux-gcc -v ...... gcc version 4.5.1 (ctng-1.8.1-FA) // 交叉编译环境安装成功
检测到交叉编译环境版本为4.5.1,安装成功。
2.2 Minicom串口工具安装及配置
参考Tiny4412 ARM开发环境搭建—Minicom串口工具安装及配置2.3 安装fastboot工具
2.4 安装NFS服务
现在多数Linux发行版都会自带NFS服务,一般系统安装时都会默认安装NFS服务,如果没有安装请查询资料自行安装,此处不再叙述NFS安装方法。2.5 关闭防火墙
使用NFS网络文件系统需要系统关闭防火墙,否则,系统启动过程会失败。4. 编译内核
Tiny4412编译内核linux-3.5后,将zImage烧写到SD卡中,启动过程中会出现卡死的现象在kernel编译的时候将TrustZone模块去掉,之后再编译,再烧写
5. 编译uboot并制作SD卡
参考Tiny4412光盘资料README for FriendlyARM Tiny44125.1 Build uboot
a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz) 并设置好环境变量PATH,保证可以正常使用。 b) 解压 uboot_tiny4412-20130929.tgz 并进入相应的目录 # tar xzf uboot_tiny4412-20130929.tgz # ls uboot_tiny4412_0929 uboot_tiny4412-20130929.tgz c) 配置 uboot 并编译 # cd uboot_tiny4412 # make tiny4412_config # make d) 编译 用于生成bl2 的工具 # make -C sd_fuse 或者 # cd sd_fuse; make
5.2 制作启动 Tiny4412 的SD卡
a) 先准备一张4G或以上的SDHC卡 注意:该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。 b) 如果SD卡容量大于等于32G # cd uboot_tiny4412_0929/sd_fuse/tiny4412 # vim sd_fusing.sh 36 if [ ${BDEV_SIZE} -gt 32000000 ]; then 37 echo "Error: Block device size (${BDEV_SIZE}) is too large" 38 # exit 1 39 fi 将判断SD卡容量中的处理exit 1注释掉。 c) fusing SD card # 假设SD卡已被PC Linux识别为/dev/sdb, 以root用户运行以下命令即可: # cd sd_fuse/tiny4412 # ./sd_fusing.sh /dev/sdb
5.3 使用SD卡启动 Tiny4412
a) 将已经制作好的SD卡插到Tiny4412板上,拨动S2切换到SDBOOT,同时连接串口线到PC且假设已经准备好。 b) 开发板加电,然后在串口控制台(如:Minicom),按任意键进入uboot命令行模式 c) 对SD卡进行分区 输入以下uboot命令即可对SD卡进行分区: # fdisk -c 0 320 806 518 重新分区后,可重新格式化FAT分区 # fatformat mmc 0:1
5.4 使用fastboot工具烧写内核
a) 进入fastboot模式以烧写内核镜像 使用USB线连接Tiny4412的MICRO_USB口到PC,然后输入以下uboot命令: # fastboot b) 烧写内核镜像到SD卡 首先准备好的内核镜像zImage,进入zImage所在的文件夹 在PC端输入以下命令进行烧写: # fastboot flash kernel zImage (烧写kernel)
6. 制作简单的网络文件系统
6.2 NFS服务配置
6.3 使用busybox编译出命令
解压缩:# tar xf busybox-1.17.2-20101120.tgz (linux基本命令) # cd busybox-1.17.2
编辑:
配置:
make defconfig (默认) make menuconfig (修改默认配置) Busybox Settings ---> -> Build Options -> (arm-linux-) Cross Compiler prefix ^^^^^^^^^^ 交叉编译 arm-linux-gcc 指定编译工具为交叉编译器; 在busybox中添加命令:rmmod insmod lsmod Linux Module Utilities ---> [ ] Simplified modutils [*] insmod [*] rmmod [*] lsmod [*] Pretty output [*] modprobe [*] Blacklist support [*] depmod make make install 或者: make && make install ^ ^ 编译 安装(拷贝) 注意: 编译完时提示; 执行程序需要的依赖库; Trying libraries: crypt m Library crypt is not needed, excluding it Library m is needed, can't exclude it (yet) 安装完时提示 -------------------------------------------------- You will probably need to make your busybox binary setuid root to ensure all configured applets will work properly. -------------------------------------------------- 拷贝安装完的命令: cp ./_install/* /nfsroot -rf 到这里去执行编译好的程序,会提示执行失败???? 是因为在编译时,选择使用动态链接;要解决该问题,需要将交叉编译工具中的库文件拷贝到nfsroot/lib目录下。
6.4 添加库文件和动态链接加载器
(执行命令需要依赖库)mkdir /nfsroot/lib cp /usr/local/arm/4.5.1/arm-none-linux-gnueabi/lib/* /nfsroot/lib -rf ^ arm 架构的库和加载器
6.5 添加设备文件
(应用运行需要)mkdir /nfsroot/dev /nfsroot/sys /nfsroot/proc /nfsroot/tmp mkdir /nfsroot/etc mkdir /nfsroot/etc/init.d
6.5.1 编辑启动脚本:
vim /nfsroot/etc/init.d/rcS #!/bin/sh //挂载虚拟文件系统: // proc虚拟文件系统 : ps top // kernel运行状况, 进程信息; /bin/mount -t proc none /proc // sysfs虚拟文件系统: mdev // kernel中所有的支持的设备信息; /bin/mount -t sysfs none /sys // tmpfs虚拟文件系统: // 断电清空数据/dev /tmp /bin/mount -t tmpfs none /dev // ^^^^ ///dev实时描述当前kernel中支持的所有设备的节点; // tmpfs同上; /bin/mount -t tmpfs none /tmp //mdev -s : 扫描/sys目录, 在/dev目录下生成设备节点; //busybox中有mdev, x86下没有; /sbin/mdev -s //支持热插拔; 需要kernel监听设备的插入拔出并调用/sbin/mdev命令; echo /sbin/mdev > /proc/sys/kernel/hotplug
设置脚本的执行权限:
chmod 777 rcS
6.5.2 编辑init进程启动配置文件:
vim /nfsroot/etc/inittab 系统启动自动执行脚本: ::sysinit:/etc/init.d/rcS (系统启动时执行) 执行完脚本,执行shell, 指定shell输入输出终端ttySAC0: ttySAC0::respawn:/bin/sh (任何时候都执行)
注意: 不需要添加inittab; ramdisk-u.img --> inittab --> rcS ^ 根文件系统;
相关文章推荐
- arm开发网络文件系统环境搭建 nfs
- linux开发环境搭建(3)-nfs挂载根文件系统
- 搭建tiny6410驱动开发环境_NFS起文件系统_NoSharedLibs
- 嵌入式应用/驱动开发网络环境设置-使用NFS网络文件系统挂载根文件系统
- 嵌入式成长轨迹33 【嵌入式学习阶段】【ARM环境调试】【在虚拟机下Ubuntu建立NFS网络文件系统】
- 友善之臂6410开发环境搭建之——NFS文件系统挂载。(为什么这么做,自行查,方便开发)补充
- 关于在Arm中搭建tftp服务器和搭建nfs网络系统文件服务器的步骤和代码
- NFS 网络文件系统搭建及arm-linux交叉编译的应用
- Ubuntu10.04+mini2440下ARM-linux开发环境搭建(2)----NFS服务器的配置及通过NFS启动linux
- Gentoo 下搭建NFS网络文件系统
- 嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】
- linux--嵌入式网络文件系统(NFS)搭建原理
- TIdm368开发--nfs网络文件系统启动问题集合
- 搭建tiny6410驱动开发环境_NFS共享文件
- 搭建 NFS网络文件系统(Network File System)
- OK6410开发板开发环境搭建-NFS文件启动和使用dnw2烧写镜像文件
- linux下NFS网络文件系统的搭建
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】详解为什么开发板的TFTP、NFS等网络功能神奇消失
- NFS 网络文件系统/ARM-LINUX NFS服务启动设置
- NFS网络文件系统的搭建