linux驱动开发_文件系统本地挂载

【摘要】 介绍linux开发根文件系统挂载、nfs文件系统配置,uboot环境变量配置,完成文件系统启动。
数码相册功能:
1.​ 支持两种格式图片显示: bmp、jpg
区分两种图片格式,通过后缀名称区分。
2.​ 支持触摸屏、按键方式翻页(支持前后翻页)
建立双向链表,调用读取目录的函数(opendir),将目录下所有符合要求的图片加入到链表里。
3.​ 支持三轴加速度计,实现姿态感应。根据三轴加速度的姿态,调整图片的显示方向。
4.​ 支持图片的自适应: 居中显示,超大尺寸的图片需要自动缩小到屏幕能够显示的大小。
5.​ 居中显示。
6.​ 数码相册需要有状态栏: 当前系统的时间信息,当前图片的名称、数量。
任务1: 产品发布(本地挂载) 1.​ 在红帽子系统上将根文件系统进行压缩打包。(pc机上操作)
[root@wbyq work]# tar cvf rootfs.tar rootfs/*
2.​ 将打包之后的压缩文件,移动到rootfs目录下,方便在开发板上进行访问(pc机上操作)
[root@wbyq work]# mv rootfs.tar rootfs/
3.​ 将sd卡上内核、uboot等一些代码拷贝到emmc里面,(接下来就可以通过emmc启动)
讲解mmc命令:
开发板: 从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里: bl1bl2 uboot.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启动,复位开发板,重新进入到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号分区
将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 //复位开发板
正常没有问题的情况下,开发板文件已经挂载成功。
10.​  开发板文件系统与pc通信的方法
(1)​ 可以通过sd卡、u盘等方式给开发板拷贝文件。
(2)​ 可以通过nfs文件系统进行远程挂载: 将nfs文件服务器的目录挂载到本地。
​ 开发板nfs网络文件系统挂载
1.​ 修改pc机上nfs文件系统共享的目录
[root@wbyq /]# mkdir /code //在根目录下创建一个code目录
[root@wbyq /]# gedit /etc/exports //打开nfs服务器配置文件
2.​ 重启nfs服务器 (运行之前编写好的脚本文件)
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驱动
1.​ 如何下载官网提供的驱动源码,进行编译、配置、安装: arm
2.​ 学习wifi相关的无线管理工具。
3.​ 学习网卡自动分配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=2mset bootargs noinitrd root=/dev/mmcblk0p3 rootfstype=ext3 console=ttysac0,115200 init=/linuxrc ctp=2 lcd=s70 coherent_pool=2mset bootargs noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 console=ttysac0,115200 init=/linuxrc ctp=2 lcd=s70 coherent_pool=2m
激光传感器的脉冲仿真测试方案分析
探究亚马逊构建的机器人仓储帝国雏形!
联域光电深主板IPO受理!主打LED照明产品,募资6.59亿扩产及布局特种照明领域
人机交互的发展历程
6位编码交流电源开关
linux驱动开发_文件系统本地挂载
采集设备不能通讯怎么办 多通道振弦采集仪数采仪
三款流水灯控制电路图分享
分板机趣谈
TDA4565引脚功能的电压资料参数
硅光电池参数_硅光电池特性
Map+函数式接口如何完美的解决if-else问题?
iphone8发布会时间确定,库克亲自曝光iPhone8尺寸和最终售价曝光,十周年力作值得期待!
无线测温系统设计方案
三菱FX系列PLC的三大通讯方式
如何在Processing中制作一个程序
2022年前三季度:Exyte表现强劲,订单量、销售额和盈利稳步增长
践行绿色低碳,浪潮存储如何做到开源节流
百度信息流广告前景被市场所看好,AI助力百度广告向前发展
87N-1000A-0C压力传感器在摩托车的作用原理