UBoot操作和常用命令.ppt

上传人:公**** 文档编号:570171604 上传时间:2024-08-02 格式:PPT 页数:16 大小:461.05KB
返回 下载 相关 举报
UBoot操作和常用命令.ppt_第1页
第1页 / 共16页
UBoot操作和常用命令.ppt_第2页
第2页 / 共16页
UBoot操作和常用命令.ppt_第3页
第3页 / 共16页
UBoot操作和常用命令.ppt_第4页
第4页 / 共16页
UBoot操作和常用命令.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《UBoot操作和常用命令.ppt》由会员分享,可在线阅读,更多相关《UBoot操作和常用命令.ppt(16页珍藏版)》请在金锄头文库上搜索。

1、UBoot操作和常用命令主要内容u-boot概念解释概念解释u-boot基础指令使用介绍基础指令使用介绍u-boot环境变量环境变量u-boot NAND Flash操作命令及烧录操作命令及烧录Linux内核和文件系统内核和文件系统 BootLoader概念Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的Boot Loa

2、der 几乎是不可能的。尽管如此,我们仍然可以对Boot Loader 归纳出一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。UBoot来源U-Boot 是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开 放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM 的源码创建了 PPCBoot 工程项目,此后不断添加处理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移植到 ARM 平台上,创建了 ARMBoot 工程项目。最终,以 PPCBoo

3、t 工程和 ARMBoot 工程为基础,创建了 U-Boot 工程。而今,U-Boot 作为一个主流、通用的 BootLoader,成功地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流体系结构上的百种开发板,成为功能最多、灵活 性最强,并且开发最积极的开源 BootLoader。目前。U-Boot 仍然由 DENX 的 Wolfgang Denk 维护烧写UBootUBoot编译完成后,会在源码目录下生成u-boot.bin这个二进制文件。利用JLink工具把u-boot.bin烧写到NORFlash的0x00000000位置即可。mkimage在使用

4、UBoot引导Linux内核时,必须对Linux内核镜像文件做适当的修改让UBoot可以引导使用mkimage程序来对linux内核文件增加UBoot头。uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置, 入口点在内存的那个位置以及映象名是什么mkimage使用Usage: mkimage -l image-l = l

5、ist image header informationmkimage -x -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file:data_file. image-A = set architecture to arch-O = set operating system to os-T = set image type to type-C = set compression type comp-a = set load address to addr (hex)-e = set entry point to ep (

6、hex)-n = set image name to name-d = use image data from datafile-x = set XIP (execute in place)制作uImage 内核镜像文件mkimage -n linux-2.6.33.7 -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage烧录烧录Linux内核内核烧录Linux内核并实现自启动。1)通过mkimage工具把Linux内核镜像文件转为UBoot格式通过tftp协议烧写到开发板内存的的0x300

7、08000位置2)PC的虚拟机Linux安装ftfp服务器端并配置测试连接成功3)重启开发板ping通虚拟机linux4)配置传给linux的命令行参数5)开发板UBoot通过tftp协议和Linux进行连接,把Linux内核读入SDRAM后通过nand 命令写入nandflash的指定位置;6)根据Linux启动信息获得Linux内核默认的MTD分区并做出相应的修改后,把文件系统烧入相应位置tftp的安装和配置redhat9下载tftp-server-0.32-4.i386.rpm软件包rpm -ivh tftp-server-0.32-4.i386.rpm安装Fedora9下可以使用yum

8、在线安装tftp-serveryum install tftp-server新建tftp根目录并授予权限 mkdir /var/tftproot chmod -R 777 /var/tftproottftp server 配置 tftp server配置文件,/etc/xinetd.d/tftp修改tftp配置文件# default: off# description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot

9、diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems.service tftp disable = no /设置为设置为no,开启服务,开启服务 socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /va

10、r/tftproot -c /这里配置这里配置tftp服务器根目录,服务器根目录,-c参数表示参数表示可以写文件可以写文件 per_source = 11 cps = 100 2 flags = IPv4tftp服务器配置UBoot环境变量1)bootargs参数参数bootargs参数是启动时传递给Linux操作系统的信息,其配置语句为:set bootargs root=/dev/mtdblock3 console=ttyS0,115200 rootfstype=cramfs mem=32mbroot:/dev/mtdblock2表示从nand的第三个分区启动文件系统,Linux启动后会自

11、动搜索nand分区信息。console:表示Linux操作系统使用的控制台,我们使用第一个串口,因此是ttyS0,后面跟的115200表示串口使用的波特率。rootfstype:表示文件系统的格式,我们烧录在nand中的文件系统使用cramfs,所以在这里要填写cramfs,否则linux会尝试自动挂载,可能会出错。mem:表示Linux操作系统的内存容量,目前开发板板载32MB内存,因此填32mb。2)bootcmd参数参数bootcmd参数表示开发板上电,bootdelay结束后执行的指令。这里填写内容的含义是用tftp这条命令,将主机上的vmlinux.img(即Linux内核)加载到内

12、存的30007fc0这个地址,然后从30007fc0启动内核。如果将Linux内核烧录到nandflash上,则指令又有不同,下面会详细介绍。UBoot常用命令usb start: 起动usb 功能usb info: 列出设备usb scan: 扫描usb storage(u 盘)设备fatls:列出DOS FAT文件系统, 如:fatls usb 0列出第一块U盘中的文件fatload: 读入FAT中的一个文件,如:fatload usb 0 0x30000000 aa.txtflinfo: 列出flash的信息nfs: nfs 32000000 192.168.0.2:aa.txt , 把

13、192.168.0.2(LINUX 的NFS文件系统)中的NFS文件系统中的aa.txt 读入内存0x32000000处tftp: tftp 32000000 vmlinux, 把server(IP=环境变量中设置的serverip)中/tftpdroot/ 下的vmlinux通过TFTP读入到物理内存32000000处ping:注:只能开发板PING别的机器bootm:起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000mw: 对RAM中的内容写操作, mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF)UBo

14、ot对NandFlash操作nand info查看查看NAND Flash信息命令信息命令nand infoDevice 0: Samsung unknown 64Mb at 0x11000200 (64 MB, 16 kB sector)nand erase 地址地址 大小大小擦除擦除NAND Flash命令命令将NAND Flash中起始地址0x00100000 大小为0x00200000的内容擦除。切记NAND Flash使用前一定要先擦除。SEP4020=nand erase 0x00100000 0x00200000NAND erase: device 0 offset 104857

15、6, size 2097152 . OKnand write 内存地址内存地址 NAND地址地址 大小大小将SDRAM中地址0x31000000中大小为0x00200000的内容写入NAND Flash的0x100000地址。nand write 0x31000000 0x00100000 0x00200000NAND write: device 0 offset 1048576, size 2097152 . 2097152 bytes written: OK烧写文件系统烧写文件系统nand write.yaffs 0x30008000 0x560000 0x3b22c00文件系统的烧写UB

16、oot启动Linux内核后会在某个固定位置读取文件系统信息,这个具体位置通过Linux代码common-smdk.c文件的MTD分区来决定( arch/arm/plat-s3c24xx/目录下)Creating 5 MTD partitions on NAND 256MiB 3,3V 8-bit:0x000000000000-0x000000040000 : superviviftl_cs: FTL header not found.0x000000040000-0x000000060000 : paramuncorrectable error : 0x000000060000-0x00000

17、0560000 : Kernelftl_cs: FTL header not found.0x000000560000-0x000040560000 : rootmtd: partition root extends beyond the end of device NAND 256MiB 3,3V 8-bit - size truncated to 0xfaa0000ftl_cs: FTL header not found.0x000000000000-0x000040000000 : nandmtd: partition nand extends beyond the end of device NAND 256MiB 3,3V 8-bit - size truncated to 0x10000000MTD分区需要注意的是,不同版本的内核分区情况可能会有不同,在使用中要注意阅读内核发布时的说明文档,根据实际情况进行操作。本文档中使用上述分区方式。其中mtdblock0 留出空间可以存放Uboot或者vivi;mtdblock1 用来存放UBoot传给Linux的参数信息;mtdblock2 用来存放Linux内核镜像文件,mtdblock3 用来挂载yaffs 文件系统或其他分区。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号