为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

2016-2017年Linux系统的在线升级

2018-05-01 4页 doc 29KB 6阅读

用户头像

is_314871

暂无简介

举报
2016-2017年Linux系统的在线升级2016-2017年Linux系统的在线升级 Linux系统的在线升级 目前嵌入式Linux系统的升级,即升级uboot,kernel,rootfs等的传统的方式,都是用烧写工具去烧写,相对来说,显得很繁琐和效率比较低,而利用mtd工具的方式去升级系统,相对比较方便。 1. 系统升级前的准备工作 1.1 linux中已实现了U盘挂载,以方便拷贝要升级的文件 linux系统中已经有了USB驱动,并且已经实现了USB的自动挂载。有了U盘挂载,每次升级系统文件,包括uboot、kernel、rootfs等文件就可以放在U盘。...
2016-2017年Linux系统的在线升级
2016-2017年Linux系统的在线升级 Linux系统的在线升级 目前嵌入式Linux系统的升级,即升级uboot,kernel,rootfs等的传统的方式,都是用烧写工具去烧写,相对来说,显得很繁琐和效率比较低,而利用mtd工具的方式去升级系统,相对比较方便。 1. 系统升级前的准备工作 1.1 linux中已实现了U盘挂载,以方便拷贝要升级的文件 linux系统中已经有了USB驱动,并且已经实现了USB的自动挂载。有了U盘挂载,每次升级系统文件,包括uboot、kernel、rootfs等文件就可以放在U盘。 1.2 linux中nor flash和nand flash己能正常工作 要用mtd工具升级系统之前,肯定是对应的nand flash以及nor flash都是已经正常工作了,即除了系统正常运行外,通过:cat /proc/mtd ,可以看到对应的nor flash和nand flash所对应的分区信息了。如下图所示。 图1-1 Nand flash 分区 1.3 准备好mtd工具 使用交叉工具链编译zlib-1.2.3和mtd,可以得到mtd工具 flash_erase、flash_eraseall、nandwrite、nanddump,这四个工具的作用如下表: 表1 MTD工具简介 MTD工具名称 功能 Flash_erase 擦除flash(nand或nor)的某个部分 Flash_eraseall 擦除flash的某个分区 nandwrite 用于将某个文件/数据,写入到某个分区 nanddump 用于查看当前某个mtd分区的数据 2. 利用MTD工具实现Linux系统的升级 利用MTD工具升级系统,方法是:先用nand_eraseall擦除对应的mtd分区中的内容,再将对应的数据用nandwrite写入对应的mtd中对应的位置中。 Nand flash的MTD分区情况可以查看文件arch/arm/plat-s3c24xx /common-smdk.c,代码如下: static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "bootloader u-boot-2010.03", .size = SZ_1M, .offset = 0, }, [1] = { .name = "kernel linux-2.6.35", .offset = SZ_1M, .size = SZ_4M, }, [2] = { .name = "rootfs busybox-1.17.3", .offset = SZ_1M * 5, .size = SZ_1M * 40, }, [3] = { .name = "usrfs", .offset = SZ_1M * 45, .size = SZ_1M * 19, }, }; 0 /dev/mtd0 u-boot 100000 /dev/mtd1 Kernel 500000 /dev/mtd2 根文件系统(cramfs) 2d00000 /dev/mtd3 用户文件系统(yaffs2) 4000000 图2-1 Linux系统中的Nand MTD分区 2.1 升级u-boot 1. 擦除u-boot所在分区的数据 /tmp/usb/util/flash_eraseall /dev/mtd0 2. 写入升级的u-boot数据 /tmp/usb/util/nandwrite -p -s 0x4000 /dev/mtd0 /tmp/usb/u-boot.bin 其中,-p参数表示,如果要写入的数据不是页大小的整数倍,会自 己加填充数据;0x4000是nand flash的一个块的大小。 2.2 升级kernel 1. 擦除旧的kernel数据 /tmp/usb/util/nand_erase /dev/mtd1 0 100 其中的参数0表示从/dev/mtd1起始位置开始擦除。参数100是表示 要擦除的block数目。 2. 写入kernel数据 /tmp/usb/util/nandwrite -p /dev/mtd1 /tmp/usb/zImage 2.3 升级rootfs 1. 擦除rootfs所在分区的数据 /tmp/usb/util/nand_eraseall /dev/mtd2 2. 写入新的rootfs数据 /tmp/usb/util/nandwrite -o /dev/mtd2 /tmp/usb/rootfs.cramfs 这样,就完成Linux系统的在线升级。在我们的这个项目中,实现了 通过三种方式来升级系统: ? 通过按键; ? 通过Internet上网页的按钮; ? 通过手机发短信。 华腾科技www.huatech.net 第 6 页 共 6 页
/
本文档为【2016-2017年Linux系统的在线升级】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索