系统更新

更新板子的软件:
----------------------------

看 :<U-Boot source>/board/st/stm32mp1/README
 

一.通过网络更新

1.内核和设备树更新

由于内核和设备树在emmc的第四分区boots分区mmcblk2p2 

1)进入安装路径,我在内核源码树外新建一个build编译的

  • cd  <path to install_artifact dir>/install_artifact   ==>path to install_artifact dir = build

2) 远程把arm板的boots分区挂载到/boot启动目录来

  • ssh root@192.168.0.104 mount  /dev/mmcblk2p2  /boot

4)把boot目录下的所有编译拷贝到arm板/boot目录下

  • scp -r boot/* root@192.168.0.104:/boot/

5)卸载根目录挂载

  • ssh root@192.168.0.104 umount /boot/

2.内核模块更新

1)进入安装路径,我在内核源码树外新建一个build编译的

  • cd  <path to install_artifact dir>/install_artifact   ==>path to install_artifact dir = build

2)移除这个install_artifact/lib/modules/<kernel version>/目录下的链接文件

  •  rm lib/modules/<kernel version>/source  lib/modules/<kernel version>/build

3)可以有选择性的删除一些模块(减小每个内核模块的大小)

  • find . -name "*.ko" | xargs $STRIP --strip-debug --remove-section=.comment --remove-section=.note --preserve-dates

4)拷贝内核模块

  •  scp -r  lib/modules/*  root@<ip of board>:/lib/modules/

5)在板子上生成模块依赖清单(modules.dep)和模块符号清单(symbols)

  • ssh root@<ip of board> /sbin/depmod -a

6)同步磁盘和内存的数据

  •  ssh root@<ip of board> sync

7)重启板子进行更新

  • ssh root@<ip of board> reboot

二.在linux PC通过SDcard更新

1.内核和设备树的更新

1)进入安装路径,我在内核源码树外新建一个build编译的

  • cd  <path to install_artifact dir>/install_artifact   ==>path to install_artifact dir = build

2)确认sdcard是否已经挂载到linux PC的/media/$USER/bootfs目录下,一般通过读卡器会自动挂载到此目录

3)拷贝设备树和内核到bootfs分区

  • cp -r boot/* /media/$USER/bootfs/

4) 每个人的电脑配置不一样,有些电脑需要加上sudo命令,如下:

  •  sudo cp -r boot/* /media/$USER/bootfs/

5)正确卸载sdcard

2.内核模块的更新

1)进入安装路径,我在内核源码树外新建一个build编译的

  • cd  <path to install_artifact dir>/install_artifact   ==>path to install_artifact dir = build

2)移除这个install_artifact/lib/modules/<kernel version>/目录下的链接文件

  •  rm lib/modules/<kernel version>/source lib/modules/<kernel version>/build

3)可以有选择性的删除一些模块(减小每个内核模块的大小)

  • find . -name "*.ko" | xargs $STRIP --strip-debug --remove-section=.comment --remove-section=.note --preserve-dates

4)确认sdcard挂载到Linux PC /media/$USER/rootfs目录下,一般通过读卡器插入电脑会自动挂载到此目录
5)拷贝内核模块

  •     cp  -r  lib/modules/*  /media/$USER/rootfs/lib/modules/

    有些需要加sudo命令,这个要根据电脑配置来
    如$> sudo cp -r lib/modules/* /media/$USER/rootfs/lib/modules/
   然后卸载sdcard

6)生成模块依赖(modules.dep)和模块符号清单(modules.dep)

  •     $> ssh root@<ip of board> depmod -a

    同步数据

  •     $> ssh root@<ip of board> sync

    重启更新

  •     $> ssh root@<ip of board> reboot

三.在板子uboot通过sdcard更新

首先确认,通过uboot板子进入存取设备

a.插入sdcard

b.启动按任何键进入uboot

c.通过usb OTG端口在PC与板子插入一根usb线

d.在板子uboot界面调用大容量存取功能

 STM32MP> ums 0 mmc 0
    ums <USB controller> <dev type: mmc|usb> <dev[:part]>
例如:
SDcard:    ums 0 mmc 0
USB闪存:  ums 0 usb 0

 

1. 内核和设备树更新

1)进入安装路径,我在内核源码树外新建一个build编译的

  •     cd <path to install_artifact dir>/install_artifact

2)移除这个install_artifact/lib/modules/<kernel version>/目录下的链接文件  

  •     rm lib/modules/<kernel version>/source  lib/modules/<kernel version>/build

3)可以有选择性的删除一些模块(减小每个内核模块的大小)

  •  find . -name "*.ko" | xargs $STRIP --strip-debug --remove-section=.comment --remove-section=.note --preserve-dates

 4)确认sdcard挂载点是linux  PC: /media/$USER/bootfs

  • cp -r boot/* /media/$USER/bootfs/

    根据配置有些电脑需要加sudo

  •  sudo cp -rf boot/* /media/$USER/bootfs/

    正确卸载sdcard
    注意: 内核和设备设的名字必须与extlinux.conf文件和文件系统一致

2.内核模块更新

1)进入安装路径,我在内核源码树外新建一个build编译的

  •      cd <path to install_artifact dir>/install_artifact

 2)移除这个install_artifact/lib/modules/<kernel version>/目录下的链接文件 R

  •   rm lib/modules/<kernel version>/source  lib/modules/<kernel version>/build

    $> find . -name "*.ko" | xargs $STRIP --strip-debug --remove-section=.comment --remove-section=.note --preserve-dates

 4)确认sdcard被挂载到Linux PC目录: /media/$USER/rootfs
   然后拷贝模块到指定目录:

  •      cp -rf lib/modules/* /media/$USER/rootfs/lib/modules/

    根据电脑配置,加sudo命令
     sudo cp -r lib/modules/* /media/$USER/rootfs/lib/modules/
正确卸载sdcard

5)下次运行时,不要忘记生成一个模块依赖文件(modules.dep)和模块符号文件(modules.symbols)
    on board> depmod -a
   同步数据
    在板子上: sync
    重启板子进行更新
   在板子上: reboot

 

四.通过sd卡更新内核和设备树(自己实践更新)

1)插入读卡器,虚拟机读出sd卡分区

直接复制uImage  和stm32mp157c-dk2.dtb到boots分区

sudo  cp uImage stm32mp157c-dk2.dtb  /media/my-linux/bootfs

3.通过sd卡更新模块

 sudo cp -r lib/* /media/my-linux/rootfs/lib/

五.通过SD卡启动在arm系统中更新设备树、内核镜像

1)插入u盘,并挂载 u盘到/mnt目录

  • mount   /dev/sda1 /mnt

2)进入挂载的目录

  • cd  /mnt

3)挂载SD卡系统分区到指定目录

SD卡分区:

lrwxrwxrwx 1 root root 10 12月  4 14:34 bootfs -> ../../sdc4   //4分区是内核设备树分区

lrwxrwxrwx 1 root root 10 12月  4 14:34 fsbl1 -> ../../sdc1    //1分区是启动引导分区

lrwxrwxrwx 1 root root 10 12月  4 14:34 fsbl2 -> ../../sdc2     //2分区同1分区是启动引导分区

lrwxrwxrwx 1 root root 10 12月  4 14:34 rootfs -> ../../sdc6   //6分区是根文件系统分区

lrwxrwxrwx 1 root root 10 12月  4 14:34 ssbl -> ../../sdc3      //3分区是uboot.stm32镜像引导

lrwxrwxrwx 1 root root 10 12月  4 14:34 userfs -> ../../sdc7     //7分区是应用程序分区

lrwxrwxrwx 1 root root 10 12月  4 14:34 vendorfs -> ../../sdc5  //5分区是动态库分区

从上面分区情况可以看见4分区时内核设备树分区,所以需要把该分区挂载到其他目录:

  •  mount /dev/mmcblk1p4 /media/

4)拷贝更新,把/mnt目录下的/boot目录所有文件拷贝到该挂载分区

  • cp boot/*  /media/  -rf
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -f:覆盖已经存在的目标文件而不给出提示

5)同步,并重启

  • sync
  • reboot

 

六.有用的信息指导

1.如何在板子上生成一个数据库

在板子上: depmod -a
    (重启之前不要忘记了同步文件系统)
 在板子上: sync

2.怎么看外部模块加载清单

lsmod

3.怎么看内核模块的信息


在板子上:modinfo ./install_artifact/lib/modules/<kernel version>/kernel/drivers/leds/led-class-flash.ko
例如:
文件名字:       <build directory>./install_artifact/lib/modules/4.9.23-g3e866b0/kernel/drivers/leds/led-class-flash.ko
许可证:        GPL v2
描述:    LED Flash class interface
作者:         Jacek Anaszewski <j.anaszewski@samsung.com>
依赖:
入树:         Y
寄生:       4.9.23-g3e866b0 SMP mod_unload ARMv7 p2v8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值