介绍Linux开发根文件系统挂载、NFS文件系统配置,UBOOT环境变量配置,完成文件系统启动,数码相册功能。

数码相册功能:

支持两种格式图片显示:bmp、jpg

分辨两种图片格式,通过后缀名称分辨。

支持触摸屏、按键形式翻页(支持前后翻页)

构建单向数组,调用读取目录的函数(opendir)linux 驱动 开发,将目录下所有符合要求的图片加入到数组里。

支持三轴加速度计,实现姿态感应。按照三轴加速度的姿态,调整图片的显示方向。支持图片的自适应:居中显示,超大规格的图片须要手动缩小到屏幕还能显示的大小。居中显示。数码相册须要有状态栏:当前系统的时间信息linux 驱动 开发,当前图片的名称、数量。

驱动开发是硬件还是软件_驱动开发工程师_linux 驱动 开发

任务1:产品发布(本地挂载)

(1)在红围巾系统中将根文件系统进行压缩打包。(PC机上操作)

驱动开发是硬件还是软件_驱动开发工程师_linux 驱动 开发

[root@wbyq work]# tar cvf rootfs.tar rootfs/*

驱动开发是硬件还是软件_驱动开发工程师_linux 驱动 开发

(2)将打包以后的压缩文件,联通到rootfs目录下,便捷在开发板上进行访问(PC机上操作)

[root@wbyq work]# mv rootfs.tar rootfs/

(3)将SD卡上内核、UBOOT等一些代码拷贝到EMMC上面,(接出来就可以通过EMMC启动)

开发板:

开发板: 从SD卡启动的
mmc read  addr blk# cnt
mmc write  addr blk# cnt
mmc read 0 0x40000000 1 5
mmc write 1 0x40000000 1 5

一次性将SD卡上所有须要的数据拷贝到EMMC里:BL1BL2UBOOT.bin签名文件内核

movi r f 0 40008000;emmc open 1;movi w z f 1 40008000;emmc close 1;
movi r b 0 40008000;emmc open 1;movi w z b 1 40008000;emmc close 1;
movi r u 0 40008000;emmc open 1;movi w z u 1 40008000;emmc close 1;
movi r t 0 40008000;emmc open 1;movi w z t 1 40008000;emmc close 1;
movi r k 0 40008000;movi w k 1 40008000;

命令执行成功以后,将SD卡拔出,开发板开关拨到EMMC启动linux认证,复位开发板,重新步入到UBOOT命令行。

(4)对EMMC进行分区(UBOOT命令行里执行)

TINY4412 # fdisk -c 0 2000 1000 1000
TINY4412 # fdisk -p 0
partion # size(MB) block start # block count partition_Id
1 3301 8359120 6761931 0x0C
2 2004 134343 4104925 0x83
3 1005 4239268 2059926 0x83
4 1005 6299194 2059926 0x83

(5)对分区步入低格,安装文件系统(UBOOT命令行里执行)

TINY4412 # ext3format mmc 0:1
TINY4412 # ext3format mmc 0:2
TINY4412 # ext3format mmc 0:3
TINY4412 # ext3format mmc 0:4

将设备0(EMMC设备)的第2个分区低格陈EXT3文件系统格式。

(6)设置UBOOT环境变量,让内核使用网路形式挂载根文件系统(NFS)。(UBOOT命令行里执行)

TINY4412 # set bootargs root=/dev/nfs nfsroot=192.168.10.11:/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200 lcd=s702
TINY4412 # save //保存环境变量
Saving Environment to SMDK bootable device...
Done
TINY4412 # reset //重启开发板,进行网络文件系统挂载

(7)挂载EMMC的2号分区

驱动开发工程师_驱动开发是硬件还是软件_linux 驱动 开发

将EMMC的第2个分区挂载到/mnt目录下。

[root@tiny4412 ]#rm /dev/mmcblk* //将dev目录下原来的mmc设备节点删除掉
[root@tiny4412 ]#mdev -s //重新生成设备节点
[root@tiny4412 ]#ls /dev/mmcblk0* -l //查看生成之后的EMMC设备节点
brw-rw---- 1 root root 179, 0 Dec 10 2018 /dev/mmcblk0
brw-rw---- 1 root root 179, 8 Dec 10 2018 /dev/mmcblk0boot0
brw-rw---- 1 root root 179, 16 Dec 10 2018 /dev/mmcblk0boot1
brw-rw---- 1 root root 179, 1 Dec 10 2018 /dev/mmcblk0p1
brw-rw---- 1 root root 179, 2 Dec 10 2018 /dev/mmcblk0p2
brw-rw---- 1 root root 179, 3 Dec 10 2018 /dev/mmcblk0p3
brw-rw---- 1 root root 179, 4 Dec 10 2018 /dev/mmcblk0p4
[root@tiny4412 ]#mount /dev/mmcblk0p2 /mnt/ //将EMMC的第2个分区挂载到/mnt目录下
[ 19.635000] EXT2-fs (mmcblk0p2): warning: mounting ext3 filesystem as ext2
[ 19.635000] EXT2-fs (mmcblk0p2): warning: checktime reached, running e2fsck is recommended
[root@tiny4412 ]#cd /mnt/
[root@tiny4412 mnt]#ls //查看挂载目录
lost+found

(8)将之前打包的文件系统压缩包解压到挂载目录下

[root@tiny4412 mnt]#pwd
/mnt
[root@tiny4412 mnt]#ls
lost+found
[root@tiny4412 mnt]#tar xvf /rootfs.tar //将之前打包的rootfs文件压缩包解压到/mnt目录下
[root@tiny4412 mnt]#mv rootfs/* ./ //将解压出来的rootfs目录下所有文件,移动到/mnt顶层目录下
[root@tiny4412 mnt]#ls //移出来之后目录下的文件
bin etc linuxrc proc sys var
code home lost+found rootfs tmp work
dev lib mnt sbin usr
[root@tiny4412 mnt]#cd / //回到根目录下
[root@tiny4412 ]#umount /mnt/ //取消目录挂载

(9)重启开发板,步入到UBOOT命令行,重新设置环境变量为本地挂载

TINY4412 # set bootargs root=/dev/mmcblk0p2 rootfstype=ext3 init=/linuxrc console=ttySAC0,115200 lcd=s702 coherent_pool=2M //设置环境变量
TINY4412 # save //重启开发板
Saving Environment to SMDK bootable device...
done
TINY4412 # reset //复位开发板

正常没有问题的情况下,开发板文件早已挂载成功。

驱动开发是硬件还是软件_linux 驱动 开发_驱动开发工程师

(10)开发板文件系统与PC通讯的方式

驱动开发是硬件还是软件_linux 驱动 开发_驱动开发工程师

[1]可以通过SD卡、U盘等方法给开发板拷贝文件。

[2]可以通过NFS文件系统进行远程挂载:将NFS文件服务器的目录挂载到本地。

开发板NFS网路文件系统挂载

(1)更改PC机上NFS文件系统共享的目录

[root@wbyq /]# mkdir /code //在根目录下创建一个code目录
[root@wbyq /]# gedit /etc/exports //打开NFS服务器配置文件

驱动开发是硬件还是软件_linux 驱动 开发_驱动开发工程师

(2)重启NFS服务器(运行之前编撰好的脚本文件)

linux 驱动 开发_驱动开发是硬件还是软件_驱动开发工程师

(3)设置开发板上的网卡IP地址(开发板终端上进行操作)

[root@tiny4412 ]#ifconfig eth0 192.168.10.123

(4)挂载NFS服务器共享的目录(开发板终端上进行操作)

[root@tiny4412 ]#mount -t nfs -o nolock 192.168.10.11:/code /mnt/

(5)为了便捷后续使用,可以编撰一个脚本。

[root@tiny4412 ]#ifconfig eth0 192.168.10.123
[root@tiny4412 ]#echo "ifconfig eth0 192.168.10.123" >nfs_start.sh
[root@tiny4412 ]#echo "mount -t nfs -o nolock 192.168.10.11:/code /mnt" >>nfs_st
art.sh
[root@tiny4412 ]#cat nfs_start.sh //查看脚本文件里的内容
ifconfig eth0 192.168.10.123
mount -t nfs -o nolock 192.168.10.11:/code /mnt
[root@tiny4412 ]#chmod 777 nfs_start.sh //修改脚本权限

任务2:360WIFI驱动(与相关的无线管理工具安装)

订购的360WIFI:2代。小度WIFI(百度)。魅族WIFI(魅族)。

学习无线WIFI驱动:完整的WIFI驱动

怎么下载官网提供的驱动源码linux压缩命令,进行编译、配置、安装:ARM学习WIFI相关的无线管理工具。学习网卡手动分配IP地址,才可以访问网段:必须保证联接的热点可以上网

uboot环境变量设置:

set bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/rootfs ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200 lcd=s70 coherent_pool=2M
set bootargs noinitrd root=/dev/mmcblk0p3 rootfstype=ext3 console=ttySAC0,115200 init=/linuxrc ctp=2 lcd=S70 coherent_pool=2M
set bootargs noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 console=ttySAC0,115200 init=/linuxrc ctp=2 lcd=S70 coherent_pool=2M

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复