分享
分销 收藏 举报 申诉 / 71
播放页_导航下方通栏广告

类型UBOOT基础知识PPT.ppt

  • 上传人:快乐****生活
  • 文档编号:11692576
  • 上传时间:2025-08-05
  • 格式:PPT
  • 页数:71
  • 大小:544.50KB
  • 下载积分:16 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    UBOOT 基础知识 PPT
    资源描述:
    单击此处编辑母版标,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,UBOOT,中 嵌,Teacher Xie,1,提 纲,理论:,BootLoader,介绍,Uboot,介绍,Uboot,命令,Uboot,工作流程,Uboot,移植,Uboot,烧写,实验:,移植,Uboot,Uboot,使用,2,第一节,BootLoader,介绍,3,概念,什么是,BootLoader?,4,软件层次,一个嵌入式系统从软件角度来看分为三个层次:,1.引导加载程序,包括固化在固件(,firmware),中的,boot,代码(可选),和,BootLoader,两大部分。,2.,Linux,内核,特定于嵌入式平台的定制内核。,3.文件系统,包括了系统命令和应用程序。,5,软件层次,一个同时装有,BootLoader、,内核的启动参数,、,内核映像,和,根文件系统,映像的固态存储设备的典型空间分配结构图:,6,回忆,PC,PC,机中的引导加载程序由,BIOS(,其本质是一段固件程序),和位于,硬盘,MBR,中的引导程序(,GRUB,或,LILO),一起组成。,BIOS,在完成硬件检测和资源分配后,将硬盘中的引导程序读到系统内存中然后将控制权交给引导程序。引导程序的主要任务是,将内核从硬盘上读到内存中,然后跳转到内核的入口点去运行,即启动操作系统。,7,定义,在嵌入式系统中,,通常,没有像,BIOS,那样的固件程序,,因此整个系统的加载启动任务就完全由,BootLoader,来完成,。比如在一个基于,ARM7TDMI,core,的嵌入式系统中,系统在上电或复位时都从地址,0,x00000000,开始执行。而在这个地址处安排的通常就是系统的,BootLoader,程序。,8,定义,简单地说,,BootLoader,就是在操作系统运行之前运行的,一段小程序,。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备,。,9,功能,BootLoader,的,主要任务,是,初始化硬件(如:串口,内存),,然后将内核映象从,Flash,中读到,RAM,中,然后跳转到内核的入口点去运行,也就是,启动操作系统,。,10,安装,系统加电或复位后,所有的,CPU,通常都从,CPU,制造商预先安排地址开始执行,。,比如,,S3C2410,在复位后从地址0,x00000000,起开始执行,。,而嵌入式系统则将固态存储设备(比如:,FLASH,)安排在这个地址上,,而,bootloader,程序又安排在固态存储器的最前端,,,这样就能保证在系统加电后,,CPU,首先执行,BootLoader,程序。,11,移植,Q:,什么叫,bootloader,移植?,Q:,为什么需要移植?,12,移植,每种,不同的,CPU,体系结构,都有不同的,BootLoader。,除了依赖于,CPU,的体系结构外,,BootLoader,还依赖于,具体的嵌入式板级设备的配置,,比如板卡的硬件地址分配,外设芯片的类型等。这也就是说,对于两块不同的开发板而言,,即使它们是基于同一种,CPU,而构建的,但如果他们的硬件资源或配置不一致的话,,要想在一块开发板上运行的,BootLoader,程序也能在另一块板子上运行,还是需要作修改。,13,流程,BootLoader,的启动过程可分为,单阶段,(,Single-Stage),和,多阶段,(,Multi-Stage),两种,通常多阶段的,BootLoader,具有更复杂的功能,更好的可移植性。从固态存储设备上启动的,BootLoader,大多,采用两阶段,,即启动过程可以分为,stage 1,和,stage2:stage1,完成初始化硬件,为,stage2,准备内存空间,并将,stage2,复制到内存中,设置堆栈,然后跳转到,stage2。,14,流程,BootLoader,的,stage1,通常包括以下步骤:,硬件设备初始化,为加载,BootLoader,的,stage2,准备,RAM,空间,拷贝,BootLoader,的,stage2,到,RAM,空间中,设置好堆栈(,why?),跳转到,stage2,的,C,入口点,15,流程,BootLoader,的,stage2,通常包括以下步骤:,初始化本阶段要使用到的硬件设备,将内核映像和根文件系统映像从,flash,上读到,RAM,中,调用内核,16,内存分布,17,第二节,UBOOT,介绍,18,作用,Uboot,是德国,DENX,小组开发的用于,多种嵌入式,CPU(MIPS、x86、ARM、XScale,等,),的,bootloader,程序,UBoot,不仅支持嵌入式,Linux,系统的引导,还支持,VxWorks,QNX,等,多种嵌入式操作系统,。,19,下载,从下面地址可以下载到,uboot,的源代码:,common,|cpu,|disk,|doc,|drivers,|dtt,|examples,|fs,|include,21,目录树,|lib_arm,|lib_generic,|lib_i386,|lib_m68k,|lib_microblaze,|lib_mips,|lib_nios,|lib_nios2,|lib_ppc,|net,|post,|rtc,tools,22,目录结构,(,展示,),Board,和开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,比如:,SMDK2410,子目录中存放与开发板相关的文件。,Common,实现,Uboot,支持的命令。,Cpu,与特定,CPU,架构相关的代码,每一款,Uboot,下支持的,CPU,在该目录下对应一个子目录,比如有子目录,arm920t,等。,23,Disk,对磁盘的支持。,Doc,文档目录。,Uboot,有非常完善的文档,推荐大家参考阅读。,Drivers,Uboot,支持的设备驱动程序都放在该目录,比如各种网卡、支持,CFI,的,Flash、,串口和,USB,等。,目录结构,(,展示,),24,目录结构,(,展示,),Fs,文件系统的支持,。,Include,Uboot,使用的头文件。该目录下,configs,目录,有与开发板相关的配置头文件,如,smdk2410.h。,该目录下的,asm,目录,有与,CPU,体系结构相关的头文件。,25,目录结构,(,展示,),Net,与网络协议栈相关的代码,例如:,TFTP,协议、,RARP,协议的实现。,Tools,生成,Uboot,的工具,如:,mkimage,crc,等等。,26,编译,Uboot,的,Makefile,从,功能上,可以分成两个部分:,1、执行每种,board,相关的配置,2、编译生成,uboot.bin,文件,27,编译,(,演示,),Uboot.bin,的生成也分为两步,以,smdk2410,为例来说明,如下:,1.对于,board,进行配置:,$,make smdk2410_config,2.进行编译生成,u-boot.bin:,$make CROSS_COMPILE=arm-linux-,28,第三节,UBOOT,命令,29,常用命令,(,演示,),尽管,UBOOT,提供了丰富的命令集,但不同的单板所支持的命令并不一定一样(,可配置,,How?,后面章节,),help,命令可用于察看当前单板所支持的命令。,2410#,help,autoscr-run script from memory,base-print or set address offset,bdinfo-print Board Info structure,boot-boot default,i.e.,run bootcmd,bootm-boot application image from memory,bootp-boot image via network using BootP/TFTP protocol,30,环境变量相关,(,演示,),Printenv,打印环境变量,usage:,printenv,-print values of all environment variablesprintenv name.,-print value of environment variable name,Uboot printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5,31,环境变量相关,(,演示,),Setenv,设置新的变量(修改已有变量,),setenv name value.,-,set,environment variable name to value.,setenv name,-,delete,environment variable name,Uboot setenv myboard AT91RM9200DKUboot printenv,ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5,myboard=AT91RM9200DK,32,环境变量相关,(,演示,),Saveenv,保存变量,将当前定义的所有变量及其值存入,flash,中。,33,文件下载,(,演示,),Tftp,通过网络下载文件,*使用,tftp,,需要先配置好网络,Uboot setenv ethaddr 12:34:56:78:9A:BC,Uboot setenv ipaddr 192.168.1.1,Uboot setenv serverip 192.168.1.254,(tftp,服务器的地址),例:,Uboot tftp 32000000 vmlinux,把,server(IP=,环境变量中设置的,serverip),中服务目录,下的,vmlinux,通过,TFTP,读入到0,x32000000,处。,34,内存操作命令,(,演示,),Md,显示内存区的内容。,md,采用十六进制和,ASCII,码两种形式来显示存储单元的内容。,这条命令还可以采用长度标识符.,l,.w,和.,b:,md.b,.w,.l address,md.w 100000,00100000:2705 1956 5050 4342 6f6f 7420 312e 312e .VPPCBoot 1.1.,00100010:3520 284d 6172 2032 3120 3230 3032 202d 5(Mar 21 2002-,00100020:2031 393a 3535 3a30 3429 0000 0000 0000 19:55:04).,35,内存操作命令,(,演示,),Mm,修改内存,地址自动递增。,m,m,.b,.w,.l address,Mm,提供了一种互动修改存储器内容的方法。它会显示地址和当前值,然后提示用户输入。如果你输入了一个合法的十六进制数,这个新的值将会被写入该地址。然后提示下一个地址。如果你没有输入任何值,只是按了一下回车,那么该地址的内容保持不变。如果想,结束输入,,则,输入空格,然后回车,。,=,mm 100000,00100000:27051956?0,00100004:50504342?AABBCCDD,00100008:6f6f7420?01234567,36,Flash,操作命令,(,演示,),Flinfo,查看,Flash,扇区信息,Usage:Uboot Flinfo,37,Flash,操作命令,(,演示,),Protect,Flash,写保护,打开或关闭扇区写保护,用法:,protect off all,关闭所有扇区的写保护,protect on all,打开所有扇区的写保护,protect off start end,关闭从,start,到,end,扇区的写保护(,start,为要关闭的第1个扇区的起始地址,,end,为要关闭的最后一个扇区的结束地址,),protect on start end,打开从,start,到,end,扇区的写保护,38,Flash,操作命令,(,演示,),Erase,擦除,flash,扇区,用法:,erase start end,擦除从,start,到,end,的扇区,,start,为要擦除的第1个扇区的起始地址,,end,为要擦除的最后一个扇区的结束地址(,在使用,cp,命令向,Nor,型,Flash,写入数据之前必须先使用,erase,命令擦除,flash,,因为,nor flash,按字节写入时,无法写入1,所以必须通过擦除来写入1,)。,例:,erase 30000 1effff,。,39,Flash,操作命令,(,演示,),Cp,数据拷贝,。,Cp.b,.w,.l saddress daddress len,Cp,提供了一种内存与内存,内存与,Flash,之间数据拷贝的方法。,例:,cp.b 30008000 20000 100000,将内存地址0,x30008000,处的数据(长度为0,x100000),拷贝到 地址0,x20000,处(,Flash,中),cp.b 30800000 130000 70000,将内存地址0,x,30800000,处的数据(长度为0,x70000),拷贝到 地址0,x130000,处(,Flash,中),40,程序执行指令,(,演示,),Go,执行内存中的二进制代码,一个简单的跳转到指定地址,go addr arg.,-start application at address addr,,passing arg as arguments,41,程序执行指令,Bootm,执行内存中的二进制代码,bootm addr arg.,-boot application image stored in memory,passing arguments arg.;when booting a Linux kernel,arg can be the address of an initrd image,要求二进制代码为,制定格式,的。通常为,mkimage,处理过的二进制文件。,42,信息类指令,bdinfo,显示开发板信息,bdinfo,命令(简写为,bdi),将在终端显示诸如,内存地址,和,大小、时钟频率、,MAC,地址,等信息。这些信息在传递给,Linux,内核一些参数时可能会用到。,43,技巧,(,演示,),设置自动启动,sbc2410=setenv bootcmd tftp 30008000 zImage;go 30080000,sbc2410=saveenv,44,第四节,Uboot,工作流程,45,工作模式,大多数,BootLoader,都包含两种不同的操作模式:,“,启动模式,”,和,“,下载模式,”,这种区别,仅对于开发人员才有意义,但从最终用户的角度看,BootLoader,的作用就是用来加载操作系统,而不存在所谓的启动模式与下载模式。,46,启动模式,这种模式也称为,“,自主,”,模式,是指,BootLoader,从目标机上的某个固态存储设备上将操作系统自动加载到,RAM,中运行,整个过程并没有用户的介入,。这种模式是,BootLoader,的正常工作模式,因此在嵌入式产品发布的时侯,,BootLoader,显然必须工作在这种模式下。,47,下载模式,在这种模式下,目标机上的,BootLoader,将通过串口或网络等通信手段从主机(,Host),下载文件,然后控制启动流程,。,48,流程,参考文档,uboot,启动流程,49,第五节,Uboot,移植,50,单板配置,Q:,为什么需要对,Uboot,做移植?,A:,BootLoader,依赖于,具体的嵌入式板级设备的配置,Q:,具体的板级设备的配置在哪里?,A:,单板的配置文件位于,include/configs/,.h,用相应的,BOARD,定义代替(例:,smdk2410.h,),51,单板配置,Q:Uboot,移植都需要做些什么?,A:,根据开发板硬件特性,修改配置文件是其中最重要的一项工作,Q:,配置文件中都有些什么信息?,A:,请看下页范例,(,smdk2410.h),52,Smdk2410.h,#define CONFIG_ARM920T1,/*CPU,类型*/,#define CONFIG_S3C2410 1,/*MCU,类型*/,#define CONFIG_SMDK24101,/*,开发板型号 */,53,Smdk2410.h,#define USE_920T_MMU 1,/*,使用,MMU*/,#undef CONFIG_USE_IRQ,/*,不使用,IRQ/FIQ*/,/*malloc,池大小,*/,#define CFG_MALLOC_LEN (CFG_ENV_SIZE+128*1024),#define CFG_GBL_DATA_SIZE128,/*数据段大小 128字节*/,54,Smdk2410.h,#define CONFIG_DRIVER_CS89001,/*,一个,CS8900,网卡*/,#define CS8900_BASE0 x19000300,/*CS8900A,基地址,*/,#define CONFIG_SERIAL1 1,/*,使用串口1,*/,#define CONFIG_BAUDRATE115200,/*,波特率*/,55,Smdk2410.h,#define CONFIG_COMMANDS,(CONFIG_CMD_DFL|,CFG_CMD_CACHE|,/*CFG_CMD_NAND|*/,/*CFG_CMD_EEPROM|*/,/*CFG_CMD_I2C|*/,/*CFG_CMD_USB|*/,CFG_CMD_REGINFO|,CFG_CMD_DATE|,CFG_CMD_ELF),/*,定义使用的命令,可添加额外命令,如,PING*/,56,Smdk2410.h,#define CONFIG_BOOTDELAY 3,/*,启动等待时间,*/,#define CONFIG_BOOTARGS,root=ramfs devfs=mount console=ttySA0,9600,“,/*,内核启动参数,*/,#define CONFIG_ETHADDR08:00:3e:26:0a:5b,#define CONFIG_NETMASK 255.255.255.0,#define CONFIG_IPADDR 10.0.0.110,#define CONFIG_SERVERIP10.0.0.1,57,Smdk2410.h,#define CONFIG_BOOTCOMMANDtftp;bootm,#defineCFG_PROMPTSMDK2410#,#define PHYS_SDRAM_1 0 x30000000/*SDRAM Bank#1*/,#define PHYS_SDRAM_1_SIZE0 x04000000/*64 MB*/,#defineCFG_LOAD_ADDR 0 x33000000,/*,默认的加载地址,*/,#define CFG_BAUDRATE_TABLE 9600,19200,38400,57600,115200 /*,可用的波特率,*/,58,Smdk2410.h,#define CONFIG_NR_DRAM_BANKS1,/*,有一片,SDRAM*/,#define PHYS_FLASH_1 0 x00000000,/*FLASH 1,的基地址,*/,#define CFG_FLASH_BASEPHYS_FLASH_1,/*FLASH,的基地址,*/,59,移植,Q:,怎么做,Uboot,的移植呢?,60,移植方法,移植,U-Boot,工作包括,添加开发板硬件相关的文件,、,配置选项,,然后,配置编译,。,61,移植方法,开始移植之前,首先要,分析,U-Boot,已经支持的开发板,选择出硬件配置最接近的开发板。,选择的原则是,首先,处理器相同,,其次,处理器体系结构相同,,然后是以太网接口等,外围接口相同,。,还要验证一下这个参考开发板的,U-Boot,,至少能够配置编译通过。,62,移植范例,以,SBC2410,开发板为例,该开发板采用,S3c2410,芯片。而,UBoot-1.1.4,版本支持,SMDK2410,开发板,并且,SMDK2410,同样采用,S3c2410,芯片,因此选取,SMDK2410,作为移植参考。,63,移植步骤,移植,U-Boot,的基本步骤如下:,在顶层,Makefile,中为开发板添加新的配置选项,使用已有的配置项目为例,smdk2410_config,:,unconfig,./mkconfig$(:_config=)arm arm920t smdk2410 NULL s3c24x0,参考上面2行,添加下面2行:,sbc2410_config,:,unconfig,./mkconfig$(:_config=)arm arm920t sbc2410 NULL s3c24x0,64,移植步骤,arm:,CPU,架构,arm920t:,CPU,类型,,对应,cpu/arm920t,目录,sbc2410:,开发板型号,,对应,board/sbc2410,目录,NULL:,开发者,s3c24x0:,片上系统(,SOC),65,移植步骤,2.创建一个新目录存放开发板相关的代码,并且添加文件(,如果以上文件从其他目录,copy,来的,注意修改,Makefile,)。,board/sbc2410/config.mk,board/sbc2410/flash.c,board/sbc2410/sbc2410.c,board/sbc2410/Makefile,board/sbc2410/u-boot.lds,66,移植步骤,3.为开发板添加新的配置文件,先复制参考开发板的配置文件,,再修改,。例如:,$,cp include/configs/smdk2410.h,include/configs/sbc2410.h,4.配置开发板,$,make sbc2410_config,5.,编译,U-Boot,执行,make,CROSS_COMPILE=arm-linux-,命令,编译成功可以得到,U-Boot,映像。,67,移植步骤,6.,烧写,Uboot,参考手册,sjf2410_v4.pdf,大功告成,启动开发板!,68,常见问题,编译时出现,“,invalid option abi=apcs-gnu,”,错误,解决办法:,make,时指定,CROSS_COMPILE=arm-linux-,69,实验一,移植,Uboot,移植,Uboot,到,SBC2410,板,具备,Ping,命令,70,实验二,Uboot,命令,使用,Uboot,提供的命令,71,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:UBOOT基础知识PPT.ppt
    链接地址:https://www.zixin.com.cn/doc/11692576.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork