嵌入式linux 运行期间升级u-boot,kernel和文件系统

本文主要就是介绍,在嵌入式Linux 系统下,已经实现了nand 驱动后, 如何利用mtd 工具,进行在线升级u-boot,Linux和文件系统。

主要使用到的工具是mtd-utils-1.3.1,如果你需要源码,可以到官网下载http://www.linux-mtd.infradead.org/source.html。也可以等我有空上传到资源里面去下载。

 

在利用 mtd 工具升级系统前,需要有nand flash驱动.在目标板上使用cat /proc/mtd 命令。即可以看到你的mtd设备。

mtd-util  ,即 mtd   的 utilities  ,是 mtd  相关的很多工具的总称 ,包括常用的mtdinfo,flash_erase, flash_eraseall, nanddump, nandwrite 等,每一个工具,基本上都对应着一个同文件名的C 文件。

MTD 工具名称        功能简介

flash_erase     擦除flash (nand 戒nor )的某个部分

flash_eraseall  擦除整个mtd 的分区(某个nor 戒nand 分区)

nanddump        用亍查看当前某个mtd分区的数据(nand的话,也支持显示oob数据)

nandwrite       用亍将某个文件/数据,写入到某个mtd 分区(的某个位置)

 

升级Uboot

1.  擦除uboot 所在分区的所有数据

./util/flash_eraseall /dev/mtd0

2.擦除旧的uboot 的环境变量:

./util/flash_erase /dev/mtd1 0x700000 2

注:

A  .0x800000~0x900000  即/dev/mtd1    中的 0x700000~0x800000,  用亍存放 uboot

中的环境变量。

重新升级uboot 的同时,先把旧的环境变量擦除掉。

3.写入uboot 数据

./util/nandwrite  -p  -s 0x80000 /dev/mtd0 u -boot_addHeader.bin

注:

A. -p 参数表示,如果要写入的数据丌是页大小的整数倍,会自己加填充数据即,如需要,

自动padding。 
B. 0x80000 是当前4K 的pagesize 的nand flash 的一个块的大小。

 

升级Kernel

1.擦除旧的kernel 数据

./util/flash_erase /dev/mtd1 0 10

注:

A.  其中的参数0 ,表示从/dev/mtd1 起始位置开始擦除。

B. 参数10 是表示要擦除的block 数目。

/dev/mtd1  的物理起始地址是 0x100000 ,而0x100000~0x600000 乊间,是用亍保存

uImage 的数据,所以 :

要擦除的block 的数目

=要擦除的大小/块大小

=0x500000/块大小

=5M/512KB

=10

其中 ,当前用的是这个4K pagesize 的nand 的块大小是512KB。

2.写入kernel 数据

./util/nandwrite  -p /dev/mtd1 uImage

  

升级rootfs 
1.擦除rootfs 所在分区数据

./util/flash_eraseall /dev/mtd2

2.写入新的rootfs

./util/nandwrite  -o /dev/mtd2 rootfs.4k.arm.yaffs2

注:

A.  因为此处的rootfs 镜像文件是yaffs2 文件系统,包含了oob 数据。所以此处加上参数

-o ,意思是写入页数据同时也写入oob 数据,而且,加了-o  参数同时就丌能再像乊前的

uboot 和 uImage 一样,加-p 参数了,因为包含了oob 数据的 rootfs ,本身就是页大小

的整数倍,丌需要padding。

B. 丌论实际使用的是4K+128  还是对亍4K+218 (内部处理为4K+192 )的nand ,此处

都是使用4K+128 的rootfs 镜像。

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是嵌入Linux笔试题的中文回复: 1. 什么是嵌入Linux嵌入Linux是一种针对嵌入系统Linux操作系统,它通常运行在资源受限的嵌入设备上,如智能手机、路由器、工业控制器等。嵌入Linux具有小巧、高效、可定制等特点,可以为嵌入设备提供强大的操作系统支持。 2. Linux内核中的进程调度算法是什么? Linux内核中的进程调度算法是CFS(Completely Fair Scheduler)完全公平调度器。CFS是一种基于红黑树的调度算法,它通过动态调整进程的优先级来保证每个进程都能够公平地获得CPU时间片。 3. 请简述Linux文件系统中的inode和block的作用。 inode是Linux文件系统中的一个数据结构,用于存储文件的元数据信息,如文件的权限、所有者、大小、创建时间等。每个文件都有一个唯一的inode号码,通过inode号码可以快速定位到文件的元数据信息。 block是Linux文件系统中的最小存储单位,文件系统中的所有文件都是由一个或多个block组成的。文件系统通过管理block的分配和释放来实现文件的存储和管理。 4. 请简述Linux中的进程间通信方Linux中的进程间通信方包括管道、消息队列、共享内存、信号量、套接字等。其中,管道和消息队列是基于内核的通信方,共享内存、信号量和套接字是基于内存的通信方。 5. 请简述Linux中的虚拟内存管理机制。 Linux中的虚拟内存管理机制是一种将物理内存和虚拟内存进行映射的机制。它通过将虚拟地址映射到物理地址来实现进程的内存管理。虚拟内存管理机制可以将进程所需的内存空间分为多个页,每个页的大小通常为4KB。当进程需要访问某个页时,虚拟内存管理机制会将该页从磁盘中读取到物理内存中,并将虚拟地址映射到物理地址。当进程不再需要访问某个页时,虚拟内存管理机制会将该页从物理内存中释放,以便为其他进程或系统程序腾出空间。 <br>### 回答2: 嵌入Linux是指在嵌入系统中使用Linux操作系统嵌入系统开发需要扎实的嵌入系统基础知识和Linux操作系统的基础知识。 嵌入Linux笔试题目涵盖的内容主要包括以下方面: 1. 嵌入系统基础知识:嵌入系统中的CPU、内存、外设、时钟、引脚等硬件知识;嵌入系统中的裸机程序编写、测试、维护等软件知识。 2. Linux基础知识:Linux系统启动过程、文件系统、进程、线程、内存管理,以及Linux命令行操作等知识。 3. Linux驱动开发:了解Linux设备模型、Linux驱动框架,熟练掌握字符设备、块设备、网络设备、中断等相关知识,能够编写、调试驱动程序。 4. Linux内核调试:掌握Linux内核调试工具,如gdb、strace、ltrace等,熟练掌握内存调试、调试Linux驱动程序等技巧。 5. 网络编程:包括socket编程、TCP/IP协议、网络编程框架等知识,能够编写TCP/IP协议的网络应用程序。 6.应用层开发:理解常用应用层协议,如HTTP、FTP、SMTP等,能够编写网络应用程序、服务程序等。 除了理论知识,嵌入Linux的实战经验及项目经历也是评价嵌入Linux工程师的重要因素之一。此外,嵌入Linux工程师需要具备团队协作、沟通协调等软技能,以提高整个项目的效率和质量。 <br>### 回答3: 嵌入Linux嵌入系统起泡的一个重要方向,随着嵌入设备的普及,对于嵌入Linux工程师需求也越来越高。下面将通过答题的形来介绍一些嵌入Linux相关的笔试题。 1、请问bootloader和kernel的区别是什么? Bootloader是用来引导操作系统启动的程序,它是在硬件完成自检之后,将操作系统的内核加载到内存中运行的一个程序。而kernel是操作系统的核心部分,可以理解为linux的内核。他是由一系列的系统调用库和设备驱动程序组成,提供系统最基本的功能接口。 2、请问开发板上如何烧写U-Boot? 在开发板上烧写U-Boot可以采用两种方:一种是通过串口连接开发板,使用bootloader或者JTAG下载器烧写,另一种是用SD卡启动,将U-Boot烧写到SD卡上。 3、请问Linux内核驱动的实现流程是什么? Linux内核驱动的实现流程大致为以下几步:首先要包含系统文件,然后要实现init_module和cleanup_module函数,分别对应内核模块的初始化和卸载过程。在init_module中要进行一些初始化工作,如设备号alloction、字符设备注册等。在cleanup_module中要进行一些清理工作,如注销字符设备等。 4、请问总线和设备是什么关系? 总线是指多个设备共享的一个数据通道,他是用来连接多个设备的物理结构。而设备则是指具体的硬件设备,如串口、网卡等。总线负责在这些设备之间进行数据传输、管理各种资源。设备则在总线上完成其功能。 5、请描述Linux系统中的进程调度算法? Linux系统中的进程调度算法主要有两种,一种是时间片轮转法,另一种是抢占调度算法。其中时间片轮转法是通过给每个进程分配一个时间片,当一个进程用完他自己的时间片时,则会被暂停,并把这个时间片传递给下一个进程,形成一个轮转的机制。而抢占调度算法则是通过优先级来处理进程,当高优先级的进程出现时,低优先级的进程就会被暂停或中断,以确保高优先级的任务能够得到充分的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值