本文主要是介绍Ehome:智能家居之嵌入式系统升级功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
10、系统功能升级
通过网络进行升级:
设备给服务器发送版本号,如果小于服务器的版本号,就使用文件操作通过socket网络通信进行文件的复制(下载),PC端需要建立服务器用来打开使用buf缓冲区来进行发送,当接收到开发板的server,然后进行文件覆盖替换(u盘挂载system执行的命令)。
通过U盘来实现升级功能:
10.1 U盘的手工挂载
#:' ls /dev/sd*
插入U盘
#:' ls /dev/sd*
/dev/sda U盘
/dev/sda1 分区
#:' mount -t vfat /dev/sda1 /mnt
// 挂载
#:' umount /mnt
// 卸载
10.2 u盘自动挂载
/dev/sda1设备文件自动创建
是由于热插拔事件产生,导致mdev程序被执行
由mdev来去创建的设备文件
其实可以通过设置让mdev在去创建/dev/sda1设备文件
的同时,可以完成u盘的自动挂载
// 涉及到的内容都在:usb.rar
问题1:如何配置让mdev既可以自动创建设备文件/dev/sda1
又可以创建后自动挂载u盘?
/* /etc/mdev.conf */
sd[a-z][0-9] 0:0 666 @/home/usb/usb_insert.sh /dev/$MDEV
sd[a-z] 0:0 666 $/home/usb/usb_remove.sh
/* /home/usb/usb_insert.sh */
#!/bin/sh
echo $1 > /dev/console
mount -t vfat -o utf8=1 $1 /mnt/usb
/* /home/usb/usb_remove.sh */
#!/bin/sh
echo $1 > /dev/console
sync
umount /mnt/usb
问题2: 如何修改mdev.conf ,语法格式?
$:' vi busybox-1.23.2/docs/mdev.txt
sd[a-z][0-9] 0:0 666 @/home/usb/usb_insert.sh /dev/$MDEV
sd[a-z][0-9] , 设备文件的规则,满足该规则的
sda1 // 满足
sdb2 // 满足
sda // 不满足
0:0 , uid:gid
666 , 权限
@ , 创建设备文件之后运行.sh脚本
/home/usb/usb_insert.sh /dev/$MDEV
// 创建sda1/sdb2...设备文件时执行/home/usb/usb_insert.sh脚本,
// 并且传递参数/dev/sda1(sdb2),$MDEV 可替换为参数
sd[a-z] 0:0 666 $/home/usb/usb_remove.sh
$ , 销毁设备文件之前
<tips>
#:' cat /proc/cmdline
// 在根文件系统中查看bootargs环境变量
#:' df
// 查看自动挂载的设备和存储空间使用大小数据
实验步骤:// env/usb.rar
1) 在rootfs/etc/mdev.conf
$:' cp /mnt/hgfs/project/env/usb/usb/mdev.conf rootfs/etc/
2) $:' mkdir rootfs/home/usb -p
$:' cp /mnt/hgfs/project/env/usb/usb/usb_insert.sh rootfs/home/usb/
创建挂载点
$:' mkdir rootfs/mnt/usb
3) $:' cp /mnt/hgfs/project/env/usb/usb/usb_remove.sh rootfs/home/usb/
10.3手工操作将u盘中uImage 更新到 // u盘中要有uImage server client
#:' dd if=/mnt/usb/uImage of=/dev/mmcblk0p1
输入文件 if指定
输出到哪去 of
10.4当点击按钮时自动更新
system(" dd if=/mnt/usb/uImage of=/dev/mmcblk0p1");
GUI: 给服务器发送命令 m
server: 收到命令m
执行system(" dd if=/mnt/usb/uImage of=/dev/mmcblk0p1");
这篇关于Ehome:智能家居之嵌入式系统升级功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!