文档库 最新最全的文档下载
当前位置:文档库 › imx6 去掉uboot延迟等待用户进入命令行的方法

imx6 去掉uboot延迟等待用户进入命令行的方法

imx6 去掉uboot延迟等待用户进入命令行的方法

Uboot在进入kernel前,都会设定几秒延迟,等待用户使用debug串口的时候按任意键进入uboot下的命令行模式,让用户对uboot进行一些如启动参数配置的操作。下面介绍如何去掉此延迟,直接进入kernel的方法:

Uboot-imx源码目录下/include/configs/mx6solo_sabresd.h文件

把其中的:

#define CONFIG_BOOTDELAY 3

修改为#define CONFIG_BOOTDELAY 0

修改后重新编译uboot-imx此部分源码,烧写到珠海鼎芯的imx6板子上就可以。

u-boot启动分析

背景: Board →ar7240(ap93) Cpu →mips 1、首先弄清楚什么是u-boot Uboot是德国DENX小组的开发,它用于多种嵌入式CPU的bootloader程序, uboot不仅支持嵌入式linux系统的引导,当前,它还支持其他的很多嵌入式操作系统。 除了PowerPC系列,还支持MIPS,x86,ARM,NIOS,XScale。 2、下载完uboot后解压,在根目录下,有如下重要的信息(目录或者文件): 以下为为每个目录的说明: Board:和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,子目录存放和开发板相关的配置文件。它的每个子文件夹里都有如下文件(以ar7240/ap93为例): Makefile Config.mk Ap93.c 和板子相关的代码 Flash.c Flash操作代码 u-boot.lds 对应的链接文件 common:实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c cpu:与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录mips等。它的每个子文件夹里都有入下文件: Makefile Config.mk Cpu.c 和处理器相关的代码s Interrupts.c 中断处理代码 Serial.c 串口初始化代码 Start.s 全局开始启动代码 Disk:对磁盘的支持

Doc:文档目录。Uboot有非常完善的文档。 Drivers:Uboot支持的设备驱动程序都放在该目录,比如网卡,支持CFI的Flash,串口和USB等。 Fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。 Include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目下configs目录有与开发板相关的配置文件,如 ar7240_soc.h。该目录下的asm目录有与CPU体系结构相关的头文件,比如说mips 对应的有asm-mips。 Lib_xxx:与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。 Net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。 Tools:生成Uboot的工具,如:mkimage等等。 3、mips架构u-boot启动流程 u-boot的启动过程大致做如下工作: 1、cpu初始化 2、时钟、串口、内存(ddr ram)初始化 3、内存划分、分配栈、数据、配置参数、以及u-boot代码在内存中的位置。 4、对u-boot代码作relocate 5、初始化malloc、flash、pci以及外设(比如,网口) 6、进入命令行或者直接启动Linux kernel 刚一开始由于参考网上代码,我一个劲的对基于smdk2410的板子,arm926ejs的cpu看了N 久,启动过程和这个大致相同。 整个启动中要涉及到四个文件: Start.S →cpu/mips/start.S Cache.S →cpu/mips/cache.S Lowlevel_init.S →board/ar7240/common/lowlevel_init.S Board.c →lib_mips/board.c 整个启动过程分为两个阶段来看: Stage1:系统上电后通过汇编执行代码 Stage2:通过一些列设置搭建了C环境,通过汇编指令跳转到C语言执行. Stage1: 程序从Start.S的_start开始执行.(至于为什么,参考u-boot.lds分析.doc) 先查看start.S文件吧!~ 从_start标记开始会看到一长串莫名奇妙的代码:

如何能在PPT中插入动画、视频、音频、解说等简单方法

如何在PPT中插入动画、视频、音频、解说等简单方法 一、在PowerPoint 中插入flash影片的方法 二、在PPT中插入视频 三、P owerPoint中插入声音的几种方法。 四、在用PowerPoint制作课件时加入解说词 在PPT中能插入的动画和视频、音频格式 动画:swf gif 视频:avi mpg wmv 音频:avi mpg wav mid mp3(有的不支持) 一、在PowerPoint 中插入flash影片的方法 法一:利用控件插入法 1.调出工具箱。操作步骤:启动powerpoi nt ,从主菜单中选择一视图一工具栏一控件工具箱。如图 1 2.在控件工具箱中选择“其他控件”,这时会列出电脑中安装的

Active X 控件,找到Shockwave Flash Object 控件。如图2。3.这时,鼠标变成“ + ” ,在幻灯片中需要插入flash动画的地方画出一个框。如图3。 4.在框中点击鼠标右键,点击属性,如图4,然后出现Shockwave Flash Object 属性设置栏,如图5。 5?左键双击“自定义”,在弹出的对话框中,在影片URL(M)后的输入栏中,填上要插入的swf档案的路径和文件名,当然,直接读取网上的swf文件也是可以的。如图6。 注意:在填写影片URL时需填写上文件的后缀名.swf。另外选中“嵌入影片”,即将flash动画包含到ppt文件中,复制ppt的同时不需复制动画文件,当将该ppt复制或移动到其他计算机使用时仍能正常显示flash。若未选“嵌入影片”,则需将动画文件和ppt文件同时复制,并且修改影片URL路径,否则在动画位置上将会出现白框,动画显示不正常。笔者建议选择“嵌入影片”。若计算机上未安装flash播放器也能正常运行。 保存浏览即可。 优点:1)无需安装flash播放器;2)在图6所示对话框中选中“嵌入影

加入等待航线的方法之欧阳歌谷创编

等待航线(holding pattern)是一种航空术语,指飞机待降时在等待空域的飞行航线。进入等待航线有三种方式:直接进入,偏置进入和平行进入。等待航线通常用来缓解由于各种原因导致飞机不能够着陆的交通压力。 欧阳歌谷(2021.02.01) 目录 简介 使用情景 不足 作等待航线 进入方式 速度限制 编辑本段简介

等待航线(holding pattern)是一种航空术语,指飞机待降时在等待空域的飞行航线,通常是机场高空长方形的待一片区域,飞机在这一区域中往返飞行,等待机场的允许降落指令。 等待航线在仪表飞行中通常是一个经过等待点的跑马场型航线。这个等待点可以 一个标准的等待航线 是无线电导航设备,例如NDB或者甚高频全向无电信标(VOR)。等待点也是进入等待航线的起始转弯点。飞机将向等待点飞行,之后进入等待航线,之后进入预先制定好的等待航线。一个标准的等待航线通常是一个右转的,耗时大约4分钟的跑马场型航线(两次180度转弯各耗时1分钟,两个直线部分各占用1分钟)。当等待时间很长时,也可能偏离此规则;直线部分也可以耗时2-3分钟,或者当飞机使用测距仪(DME)进行等待航线时,等待航线也可以用距离取代时间来表示。此外,左传在一些有限制的空域中也有所使用。 在缺乏无线电导航设施时,等待点也可以是任何一个空中的定位点,也可以是两个导航台的径向线的交点,还可以是一个距离VOR某处的点(此时应配合测距仪使用)。当测距仪使用时,等待航线通常用距离表示,而不是用时间表示。此外,一些使用GPS的飞机也可以完全不借助地面导航设备的情况下做等待航线。

目视飞行(VFR)的飞机通常使用一个较容易辨认的目标,例如桥梁、立交桥或者湖等物体上方作(较小的)跑马场型航线。 编辑本段使用情景 等待航线通常用来缓解由于各种原因导致飞机不能够着陆的交通压力,例如机场过于繁忙、天气不允许着陆或者跑道暂时不可用等情况。当同时有几架飞机执行等待航线时,不同飞机的垂直间距为1000英尺(300米)以上。通常后来的飞机在最高的高度,而最低高度的飞机可以先进行进近。当有飞机从等待航线脱离后,还在进行等待航线的飞机依次下降高度,如此循环。空中交通管制员负责控制整个等待航线的运行,在某些时候甚至会有人员专门负责等待航线的运行。 一架飞机可以在不同的地方做多个等待航线,这种情况在机场运行繁忙、跑道不可用时尤为明显。 当飞机遇到紧急情况时,如果可能,将忽略所有等待航线直接飞往机场。当然,这种情况会导致正在等待航线上的飞机更多的延误。 编辑本段不足 飞机进行等待航线是一个不经济(也很昂贵)的做法,进行等待航线十分耗时耗油,所以在进行等待航线时也要考虑这

UBOOT命令详解

常用U-boot命令详解(z) 2010-09-30 15:05:52| 分类:学习心得体会|字号订阅 U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的 U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。 [u-boot@MINI2440]# version U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# v U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# base Base Address: 0x00000000 [u-boot@MINI2440]# ba Base Address: 0x00000000 由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧! (1)获取帮助 命令:help 或? 功能:查看当前U-boot版本中支持的所有命令。 [u-boot@MINI2440]#help ?- alias for'help' askenv - get environment variables from stdin base - print or set address offset bdinfo - print Board Info structure bmp - manipulate BMP image data boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootelf - Boot from an ELF image in memory bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol

AM335x uboot spl分析

AM335x uboot spl分析 芯片到uboot启动流程 ROM → SPL→ uboot.img 简介 在335x 中ROM code是第一级的bootlader。mpu上电后将会自动执行这里的代码,完成部分初始化和引导第二级的bootlader,第二级的bootlader引导第三级bootader,在 ti官方上对于第二级和第三级的bootlader由uboot提供。 SPL To unify all existing implementations for a secondary program loader (SPL) and to allow simply adding of new implementations this generic SPL framework has been created. With this framework almost all source files for a board can be reused. No code duplication or symlinking is necessary anymore. 1> Basic ARM initialization 2> UART console initialization 3> Clocks and DPLL locking (minimal) 4> SDRAM initialization 5> Mux (minimal) 6> BootDevice initialization(based on where we are booting from.MMC1/MMC2/Nand/Onenand) 7> Bootloading real u-boot from the BootDevice and passing control to it. uboot spl源代码分析 一、makefile分析 打开spl文件夹只有一个makefile 可见spl都是复用uboot原先的代码。 主要涉及的代码文件为u-boot-2011.09-psp04.06.00.03/arch/arm/cpu/armv7 u-boot-2011.09-psp04.06.00.03/arch/arm/lib u-boot-2011.09-psp04.06.00.03/drivers LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-spl.lds 这个为链接脚本 __image_copy_end _end 三、代码解析 __start 为程序开始(arch/arm/cpu/armv7/start.S) .globl _start 这是在定义u-boot的启动定义入口点,汇编程序的缺省入口是 start 标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点。

uboot版本文件结构

uboot版本文件结构的更新改变 分类:ARM2011-09-22 12:57 339人阅读评论(0) 收藏举报本来是开始分析uboot代码的,但是无论是教材还是网上资料都对于我最新下的uboot原码结构不同,对于还是小白的我不容易找到相应的文件,下面是uboot版本中文件组织结构的改变,,,,, u-boot版本情况 网站:http://ftp.denx.de/pub/u-boot/ 1、版本号变化: 2008年8月及以前 按版本号命名:u-boot-1.3.4.tar.bz2(2008年8月更新) 2008年8月以后均按日期命名。 目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新) 2、目录结构变化: u-boot目录结构主要经历过2次变化,u-boot版本第一次从u-boot-1.3.2开始发生变化,主要增加了api的内容;变化最大的是第二次,从2010.6版本开始。 u-boot-2010.03及以前版本 ├── api存放uboot提供的接口函数 ├── board根据不同开发板定制的代码,代码也不少 ├── common通用的代码,涵盖各个方面,已命令行处理为主 ├── cpu与体系结构相关的代码,uboot的重头戏 ├── disk磁盘分区相关代码 ├── doc文档,一堆README开头的文件 ├── drivers驱动,很丰富,每种类型的设备驱动占用一个子目录 ├── examples示例程序 ├── fs文件系统,支持嵌入式开发板常见的文件系统 ├── include头文件,已通用的头文件为主 ├── lib_【arch】与体系结构相关的通用库文件 ├── nand_spl NAND存储器相关代码 ├── net网络相关代码,小型的协议栈 ├── onenand_ipl

uboot下载内核和文件系统的步骤

uboot 下载内核和文件系统的步骤 1)下载linux到系统的SDRAM运行(仅做测试之用,断电或退出后就会消失) 1>运行Uboot,设置环境变量 Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目标板 ip 地址] 目标板 ip 地址 Uboot>setenv serverip [主机 ip 地址] 主机 ip 地址 2>下载linux内核,文件系统 打开tftpserver应用程序,设置根目录路径,将内核、文件系统等拷贝到所设置的根目录下。 Uboot>tftp 21100000 ramdisk.gz 下载文件系统 Uboot>tftp 21000000 uImage 下载 linux 内核 Uboot>bootm 21000000 启动 linux 然后linux操作系统就开始运行。 2)烧写 Linux 到系统的 Flash 运行 1>设置运行Linux的环境变量 Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量Uboot>setenv image cp.b 10020000 21000000 b0000 拷贝内核到sdram Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷贝文件系统到sdram Uboot>setenv boot bootm 设置变量boot Uboot>setenv bootcmd run ramdisk\;run image\;run boot 设置默认变量bootcmd Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr 目标板 ip 地址目标板 ip 地址,由你自己决定Uboot>setenv serverip 主机ip地址主机ip地址,就是你的PC的ip Uboot>saveenv 保存环境变量 2>烧写Linux内核到Flash Uboot>tftp 21100000 ramdisk.gz Uboot>cp.b 21100000 100d0000 226000

等待航线简介与飞行方法

等待航线简介及飞行方法 参考资料:《商用飞行员教程》 《ROD地面飞行学校》 中国模拟飞行学院内部教学资料,未经允许谢绝转载

等待航线 等待航线简介: 在飞行当中经常听到管制员给这样的指令“X X机组在XXX航点加入标准等待程序”,随后会看到机组在某个地方开始沿着类似跑道形状的轨迹飞行,这就是我 们所谓的等待航线,如下图(图1)所示。其中的两条直线分别称作“入航(inbound)”和“出航(outbound)”。 (图1) 当然这个圈不是随便想怎么转就怎么转,往哪个方向转,转一圈的时间是多少,以怎样的方式进入等待程序都有严格的规定,也就是说我们要按照标准等待航线的程序来执行。标准等待航线是一种沿直角航线的机动飞行。标准等待航线采用右转弯,等待定位点可以是导航台上空或者交叉定位点(如航点),其转弯使用 的坡度为25°或标准转弯率3°/s对应的坡度,以所需坡度小者为准。非标准等 待航线改为左转弯,其他程序相同。 等待航线的航段长度也根据飞机的地速和高度的不同而不同。静风条件下,等待高度在14000ft(4250m)或以下时,出航边的飞行时间为1min;等待高度高于14000ft(4250m)时,出航边的飞行时间为1.5min。也就是说,如果飞机的地速

为120kt并且在4000m的高度做等待,那么等待航线出航边的长度约为2海里。当然在实际飞行当中也有可能出现偏差,比如说对于一个出航边为1分钟的等待航线,在入航边只飞了45秒而不是1分钟,那么修正的方法就是缩短入航边时间延长出航边时间15秒。如果在等待航线上有侧风的话还需要进行侧风修正,修正侧风影响的方法是:在入航边时判断偏流以便保持入航航迹,确定偏流后应使用3倍偏流的航向修正量在此出航边上进行侧风修正。如果不进行侧风修正很容易因为侧风影响而使飞机从新转回入航边时很难切入向台航向道。图2中左图为修正量不足的航迹,右图为正确使用3倍修正量的航迹 (图3) 当飞机速度不同的时候等待航线的范围也不同,表速越大等待航线的范围也就越大,图4所示的是根据不同的高度对应的最大等待速度(速度为指示空速)。但是在实际飞行过程中通常会小于规定的最大速度飞行。如果飞机的表速大于最大等待速度,管制员将要求飞机在到达预定等待定位点前3分钟减速。

uboot环境变量总结

Common目录下面与环境变量有关的文件有以下几个:env_common.c,env_dataflash.c,env_eeprom.c,env_flash.c,env_nand.c,env_nowhere.c,env_nvram.c,environment.c。 env_common.c中包含的是default_environment[]的定义; env_dataflash.c,env_eeprom.c,env_flash.c,env_nand.c, env_nvram.c 中包含的是相应存储器与环境变量有关的函数:env_init(void),saveenv(void),env_relocate_spec (void),env_relocate_spec (void),use_default()。至于env_nowhere.c,因为我们没有定义CFG_ENV_IS_NOWHERE,所以这个文件实际上没有用。 environment.c这个文件时是我真正理解环境变量的一个关键。在这个文件里定义了一个完整的环境变量的结构体,即包含了这两个ENV_CRC(用于CRC校验),Flags(标志有没有环境变量的备份,根据CFG_REDUNDAND_ENVIRONMENT这个宏定义判断)。定义这个环境变量结构体的时候还有一个非常重要的关键字: __PPCENV__,而__PPCENV__在该.c文件中好像说是gnu c编译器的属性,如下: # define __PPCENV__ __attribute__ ((section(".text"))) 意思是把这个环境变量表作为代码段,所以在编译完UBOOT后,UBOOT的代码段就会有环境变量表。当然,这要在我们定义了ENV_IS_EMBEDDED之后才行,具体而言,环境变量表会在以下几个地方出现(以nand flash为例): 1、UBOOT中的代码段(定义了ENV_IS_EMBEDDED), 2、UBOOT中的默认环 境变量, 3、紧接UBOOT(0x0 ~ 0x1ffff)后面:0x20000 ~ 0x3ffff 之间,包括备份的环境变量,我们读取,保存也是对这个区域(即参数区)进行的。3、SDRAM中的UBOOT中,包括代码段部分和默认部分,4、SDRAM中的melloc分配的内存空间中。 Environment.c代码如下: env_t environment __PPCENV__ = { ENV_CRC, /* CRC Sum */ #ifdef CFG_REDUNDAND_ENVIRONMENT 1, /* Flags: valid */ #endif { #if defined(CONFIG_BOOTARGS) "bootargs=" CONFIG_BOOTARGS "\0" #endif #if defined(CONFIG_BOOTCOMMAND) "bootcmd=" CONFIG_BOOTCOMMAND "\0" #endif #if defined(CONFIG_RAMBOOTCOMMAND) "ramboot=" CONFIG_RAMBOOTCOMMAND "\0"

如何从网上下载动画视频及如何在PPT中插入动画视频

如何从网上下载动画视频及如何在PPT中插入动画视频 2008-12-18 一、动画视频下载方法 二、在PowerPoint中插入flash影片的方法 三、在PPT中插入视频 四、PowerPoint中插入声音的几种方法。 在PPT中能插入的动画和视频、音频格式 动画:swf gif 视频:avi mpg wmv 音频:avi mpg wav mid mp3(有的不支持) 不符合上述格式时要通过转换软件进行转换 一、动画视频下载方法 (一)动画下载: flash动画视频有三种下载方法: 1、在IE的临时文件夹中找。点工具—文件夹选项―查看:选择显示所有文件。再点击浏览器菜单,工具-选项-常规-临时文件-设置-查看文件,会打开临时文件夹看到上网时下载的所有文件,找到你要的动画或视频复制到你的文件中。或打开c盘Documents and Settings 文件夹下找到你的登陆用户用的文件夹,打开Local Settings——打开Temporary Internet Files——找到你要的那个flash文件——复制到你想放的地方注意:如果文件太多你不方便找,就删除该文件孤儿中所有文件后刷新网页,再刷新该文件夹找你要的文件。 2、可以使用傲游浏览器,点击flash save图标——点击save——右键点击flash文件,另存为,可以了:) 3、用迅雷下载,将鼠标移到flash上,出现下载图标,点击下载,确定即可。 (二)视频下载: 1、普通视频下载方法同动画下载方法一样 2、在视频播放器上点右键,选属性,复制位置(地址)到迅雷中下载 3、但是有的则要下面方法或专用录屏软件进行录制 如:当前流行的视频网站如ku6、YouTobe、ouou等,应当是.flv 格式的。 在C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files 文件夹里,而且这些文件名都由一连川的数字字母组成(如图)。 但是要注意的是,必须在网页上等到播放的缓存条满格才能在这个文件夹里找到。 如果是其他格式的也大同小异。但是切记,凡是这些文件都必须是完整经过缓存的,缓冲进

飞行程序设计大纲

《飞行程序设计》课程考试大纲 课程名称:《飞行程序设计》课程代码:0800 第一部分课程性质与目标 一、课程性质与特点 《飞行程序设计》是高等教育自学考试交通运输专业独立本科段的一门专业课,是本专业学生学习和掌握空域规划和设计基本理论和方法的课程。 设置本课程的目的是使学生从理论和实践上掌握以NDB、VOR、ILS等设备作为航迹引导设备时,离场程序、进场程序、进近程序、复飞程序和等待程序,以及航路的设计原理和方法。通过对本课程的学习,使学生熟练掌握目视与仪表飞行程序设计的有关知识,使之能独立完成有关机场的飞行程序设计和优化调整。 二、课程设置目的与基本要求 了解飞行程序的总体结构、设计方法;了解飞行程序的分类原则;掌握飞行程序设计的基本准则;能够独立完成有关机场的飞行程序设计和优化调整。 本课程的基本要求如下: 1.了解飞行程序的基本结构和基本概念。 2.了解终端区内定位点的定位方法、定位容差和定位的有关限制。 3.了解离场程序的基本概念,掌握直线离场、指定高度转弯离场、指定点转弯离场和全向离场的航迹设计准则、保护区的确定方法、超障余度和最小净爬升梯度的计算方法,以及相应的调整方法; 4.掌握航路设计的国际民航组织标准和我国的标准; 5.掌握进近程序各个航段的航迹设置准则; 6.掌握各种情况下,进近程序各个航段保护区的确定原则; 7.掌握进近程序各个航段超障余度和超障高度的计算方法; 8.掌握进近各个航段下降梯度的规定,以及梯度超过标准时的调整方法。 9.掌握基线转弯程序的基本概念,出航时间的确定方法,保护区的确定原则,超障余度和超障高度的计算方法; 10.掌握直角航线的基本概念,出航时间的确定方法,保护区的确定原则,超障余度和超障高度的计算方法; 11.掌握ILS进近的基本概念,精密航段障碍物评价方法,以及超障高度的计算方法;12.了解等待程序的基本概念,掌握保护区的确定方法,以及超障余度和超障高度的计算方法; 13.了解区域导航程序设计的基本概念。 三、与本专业有关课程的联系 学习本课程必须具备有领航学、航空气象学、飞机电子系统和飞行组织与实施的基础。 第二部分课程内容与考核目标 第一章序论 一、学习目的与要求 通过本章的学习,掌握引进近程序的概念和设计方法;定位点及定位容差的确定;最低扇区高度的概念、扇区划分的原则。 二、考核知识点与考核目标 (一)、飞行程序的组成及设计的基本步骤(重点) 识记:飞行程序的组成结构

U_Boot第一启动阶段Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解)

Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解) Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解) 1 u-boot.lds 首先了解uboot的链接脚本board/my2410/u-boot.lds,它定义了目标程序各部分的链接顺序。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*指定输出可执行文件为ELF格式,32为,ARM小端*/ OUTPUT_ARCH(arm) /*指定输出可执行文件为ARM平台*/ ENTRY(_start) /*起始代码段为_start*/ SECTIONS { /* 指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置*、. = 0x00000000;从0x0位置开始 . = ALIGN(4); 4字节对齐 .text : {

cpu/arm920t/start.o (.text) board/my2440/lowlevel_init.o (.text) *(.text) } . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } . = ALIGN(4); .data : { *(.data) } /* 只读数据段,所有的只读数据段都放在这个位置*/ . = ALIGN(4); .got : { *(.got) } /*指定got段, got段式是uboot自定义的一个段, 非标准段*/ . = .; __u_boot_cmd_start = .; /*把__u_boot_cmd_start赋值为当前位置, 即起始位置*/ .u_boot_cmd : { *(.u_boot_cmd) } /* u_boot_cmd段,所有的u-boot命令相关的定义都放在这个位置,因为每个命令定义等长,所以只要以__u_boot_cmd_start为起始地址进行查找就可以很快查找到某一个命令的定义,并依据定义的命令指针调用相应的函数进行处理用户的任务*/ __u_boot_cmd_end = .; /* u_boot_cmd段结束位置,由此可以看出,这段空间的长度并没有严格限制,用户可以添加一些u-boot的命令,最终都会在连接是存放在这个位置。*/

关于uboot移植 CAMDIVN与时钟

关于uboot移植 CAMDIVN与时钟 2010-03-09 19:57 在该文件的122行附近有这样一个结构体 typedef struct { S3C24X0_REG32 LOCKTIME; S3C24X0_REG32 MPLLCON; S3C24X0_REG32 UPLLCON; S3C24X0_REG32 CLKCON; S3C24X0_REG32 CLKSLOW; S3C24X0_REG32 CLKDIVN; } /*__attribute__((__packed__))*/ S3C24X0_CLOCK_POWER; 是用来封装时钟寄存器的,我们要在其中增加一项S3C24X0_REG32 CAMDIVN,为什么加这么一个呢?因为这个寄存器是2410所没有的,而2440在配置时钟的时候又必须用到,看名字我们就知道是用来配置CAMERA时钟的,也就是配置摄像头的时钟的。 貌似和配置uboot启动的时钟没有关系?其实不然,我们在修改下一个文件的时候就可以看到其用途了, 此结构体修改后的结果为 typedef struct { S3C24X0_REG32 LOCKTIME; S3C24X0_REG32 MPLLCON; S3C24X0_REG32 UPLLCON; S3C24X0_REG32 CLKCON; S3C24X0_REG32 CLKSLOW; S3C24X0_REG32 CLKDIVN; S3C24X0_REG32 CAMDIVN; } /*__attribute__((__packed__))*/ S3C24X0_CLOCK_POWER; 第二个文件..\cpu\arm920t\s3c24x0\speed.c 在这个文件中需要修改两个函数 第一个函数在54行附近:static ulong get_PLLCLK(int pllreg) 由于S3C2410和S3C2440的MPLL、UPLL计算公式不一样,所以get_PLLCLK 函数也需要修改:

UBoot源码分析1

?UBoot源码解析(一)

主要内容 ?分析UBoot是如何引导Linux内核 ?UBoot源码的一阶段解析

BootLoader概念?Boot Loader 就是在操作系统内核运行之前运行 的一段小程序。通过这段小程序,我们可以初始 化硬件设备、建立内存空间的映射图,从而将系 统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境 ?通常,Boot Loader 是严重地依赖于硬件而实现 的,特别是在嵌入式世界。因此,在嵌入式世界 里建立一个通用的Boot Loader 几乎是不可能的。 尽管如此,我们仍然可以对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 工程项目。最终, 以 PPCBoot 工程和 ARMBoot 工程为基础,创建了 U- Boot 工程。 ?而今,U-Boot 作为一个主流、通用的 BootLoader,成功地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流体系结构上的百种开发板,成为功能最多、 灵活性最强,并且开发最积极的开源 BootLoader。目前。 U-Boot 仍然由 DENX 的 Wolfgang Denk 维护

UBoot实验2、uboot使用实验

Uboot的使用 一、 实验目的 在实验平台上使用uboot常用命令及使用Tftp工具传输文件。 二、 实验资源 硬件资源 CPU Samsung S3C2440A Nand flash Samsung K9D1208V0M 64M RAM64M 软件资源 bootloader uboot Tftp server tftpd32.exe 三、 实验前的准备 1、一台PC机。 2、实验平台。 3、串口线、网络线。 4、tftpd32.exe软件。 四、 实验步骤 1、实验前的准备 a)将串口线、网络线连接到实验平台与PC机上。 b)在PC机上运行超级终端串口软件。

2、进入Uboot命令输出状态 实验平台上电,在超级终端串口软件中按空格键进入Uboot命令输出状态。 3、查看Uboot命令 运行help命令显示uboot提供的所有命令。

4、学习U-Boot的几个常用的命令 根据每一条命令的帮助信息,说明这些命令的功能、参数和用法。 z bootm => help 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 bootm 命令可以引导启动存储在内存中的程序映像。这些内存包括RAM 和可以永久保存的Flash。 第1 个参数addr 是程序映像的地址,这个程序映像必须转换成U-Boot 的格式。 第2 个参数对于引导Linux 内核有用,通常作为U-Boot 格式的RAMDISK 映像存储地址;也可以是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。 例如: ——从内存地址0x300000启动 0x300000 bootm z cp => help cp cp [.b, .w, .l] source target count - copy memory cp命令可以在内存中复制数据块,包括对Flash的读写操作。 第1 个参数source是要复制的数据块起始地址。 第2 个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot 写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。 第3 个参数count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。 例如: cp.b 0x300000 0xFE040000 0x180000将1.5M数据从内存拷到flash 0xFE040000位

经典=Uboot-2-命令详解(bootm)

bootm命令中地址参数,内核加载地址以及内核入口地址 分类:u-boot2010-11-04 10:472962人阅读评论(0)收藏举报downloadlinuxbytecmdheaderimage bootm命令只能用来引导经过mkimage构建了镜像头的内核镜像文件以及根文件镜像,对于没有用mkimage对内核进行处理的话,那直接把内核下载到连接脚本中指定的加载地址0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 通过mkimage可以给内核镜像或根文件系统镜像加入一个用来记录镜像的各种信息的头。同样通过mkimage也可以将内核镜像进行一次压缩(指定-C none/gzip/bzip2),所以这里也就引申出了两个阶段的解压缩过程:第一个阶段是u-boot里面的解压缩,也就是将由mkimage压缩的镜像解压缩得到原始的没加镜像头的内核镜像。第二个阶段是内核镜像的自解压,u-boot 里面的解压实际上是bootm 实现的,把mkimage -C bzip2或者gzip 生成的uImage进行解压;而kernel的自解压是对zImage进行解压,发生在bootm解压之后。 下面通过cmd_bootm.c文件中对bootm命令进行解析以及执行的过程来分析,这三种不同地址的区别: ulong load_addr = CFG_LOAD_ADDR; /* Default Load Address */ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ...... if (argc < 2) { addr = load_addr;//当bootm命令后面不带地址参数时,将默认的加载地址赋值给addr } else { addr = simple_strtoul(argv[1], NULL, 16); //如果bootm命令后面带了加载地址,则将该地址赋值给addr,所以最终有用的地址还是bootm命令后附带的地址 } ...... //

uboot环境变量设置(大地小神之个人收藏)

u-boot的环境变量 u-boot的环境变量是使用u-boot的关键,它可以由你自己定义的,但是其中有一些也是大家经常使用,约定熟成的,有一些是u-boot 自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量: 上面只是一些最基本的环境变量,请注意,板子里原本是没有环境变量的,u-boot的缺省情况下会有一些基本的环境变量,在你执行了saveenv之后,环境变量会第一次保存到flash中,之后你对环境变量的修改,保存都是基于保存在flash中的环境变量的操作。

U-boot的环境变量值得注意的有两个:bootcmd 和bootargs ◆b o o t c m d 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 ◆b o o t a r g s bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只是使用了几种而已,感兴趣的可以看看这篇文章说的很全:https://www.wendangku.net/doc/b316362733.html,/u2/79570/showart_1675071.html。bootargs非常的灵活,内核和文件系统的不同搭配就会有不同的设置方法,甚至你也可以不设置bootargs,而直接将其写到内核中去(在配置内核的选项中可以进行这样的设置),正是这些原因导致了bootargs使用上的困难。 下面介绍一下bootargs常用参数,bootargs的种类非常的多,而且随着kernel的发展会出现一些新的参数,使得设置会更加灵活多样。 A.r o o t 用来指定r o o t f s的位置,常见的情况有: root=/dev/ram rw root=/dev/ram0 rw 请注意上面的这两种设置情况是通用的,我做过测试甚至

uboot调试指南

Uboot调试参考指南 一、调试目的 Uboot的调试旨在通过观察uboot运行时状态来测试硬件问题。 二、调试步骤 1.修改代码 在uboot代码路径下,编辑uboot代码,需要做以下修改; a.修改config.mk文件,添加以下两行内容: AFLAGS += -Wa,-gdwarf2 CFLAGS += -g2 -gdwarf-2 b.修改. /arch/powerpc/lib/board.c文件 debug("Now running in RAM - U-Boot at: %08lx\n", dest_addr); printf("Now running in RAM - U-Boot at: %08lx\n", dest_addr); 将debug改为printf,如上所示。 2.编译uboot 执行make BSC9131RDB_SYSCLK100_NAND,编译uboot 3.将编译好的u-boot-nand.bin(uboot image格式)及u-boot(elf格式文件)文件拷 贝出来 4.烧录uboot 将步骤3中保存的u-boot-nand.bin烧录到目标板中,烧录过程略。 5.建立工程 a.在cw界面,点击file->import, 选择code warrior -> Power architecture ELF executable,如图1所示: 图1 建立elf工程 b.选择步骤3中保存的u-boot(elf格式文件),toolchain选择bareboard application, target OS选择none,工程名字请根据需要设置,比如我的机器上设置为example, 点击next,如图2所示:

相关文档