Ehome:智能家居之嵌入式系统升级功能

Ehome:智能家居之嵌入式系统升级功能_第1张图片

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

  $ , 销毁设备文件之前



#:' 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");


你可能感兴趣的:(Embedded,Product)