U-Boot的启动及移植分析
U-Boot移植问题分析及应用实例
—
在 U B o 的移植 过程 中 ,弄清楚 各个器 件 的地址 映射 。 U —o t B o 在存储空间 中的分布 ,环境变量等 参数的存放地址等足很必 ot 要的 下面以 A 9 R 2 o处理器 为例来对此 问题加 以说明。 T 1 M9 o 整个 Fah和 R M 的系统布局如图 2所示。 l s A
J l
-
题 ,地 址 映射 问题 和 参 数 设 置 问题 ,最 后 给 出 了 U—o t B o 在 A 9R 2o处理器上的移植过程 和方法 T l M9o
生异常时跳转到相应的程序去处理。 () 3 设置 C S P R状态 寄存器,使 A M 工作在 S C模式下。 R V
Pr be n y e o Bo t p ig o lms a alz fU- o otn r
a d t p l a in n I S a p i t ’ c o
( olg fA tma in ,Na jn ie st f C l eo u o t e o n ig Unv ri o y P ss& T lc mmu iain Na jn 10 3 ot ee o nc t s, n i g 2 0 0 ) o
A s r c : B o s a bt t a U- o t i Bo t o d r g a o L a er p o r m o r e n en s u c f fe a d op o r e c dei i p id o i ihn L d a d o ig a k f mb d o , s a pl f r f s ig oa e n b o n t s s o e e t e n r s sem.T e p p r a ay e U- o t b o i g e u c a d s me yt h a e n lz d B o ’ o t s q en e n o S n c u i li o t n r blmst e n r u e or n r c s n y rc a mp r t p o e . n it a h od c d P t g p o e s a d wa s i b s d o AT a e n 91 RM9 0 r c s or 2 0 po e s .
U-boot的移植研究
计算机 与网络
U— o t b o 的褚植砜夯
大连 工业 大 学 赵 波 于 忠得
[ 摘 要 ] b o 比较一般的 b o o dr具有开源、 u ot — o d ae , 功能 多样、 网络资料充足等优 点, 但在 实际项 目中, 支持直接 用于 F 2 1 不 S 4 0目标 系统。本 文通过剖 析启动流程及研 究与移植有 关的代码 等工作 , 出将 u b o一1 . O eJ A移植到 F 2 1 标 系统的具体 实 提 — ot 6 pn 1_ T S 40目 现 方法, F 2 1 在 S 4 0目标 系统上成功地完成 了移植 , 经试验测试 ,- o t 11 一 eJ A的各项功 能稳定 实现。 u b o一 .. Op nT . 6 [ 关键词 ] — o t 移植 F 2 1 u bo S40
_
( — ot U bo 版本不 同 ,文件 的存储位 置略有不 同 ,本文采 用的是 u bo — ot 1 .版本 )前 者是平 台相关 文件 , .6 1 , 后者是开发板相关文件[ 2 1 。
21 tgl阶段 .Sae
( 硬件设备初始化 , 1 ) 如关 闭 WA C D G、 T H O 关中断 、 设置时钟频 率 、 设 置 F L HC K、C K的比例 、 闭 MMU、 A H C K、 L P L 关 C C E。 ( 为 B t ae 的 S e 阶段准备 R M空间 ,配置 R M 空间的 2 ) o l dr t 2 o g a A A 1 个控制寄存器等 。 3 ( 代码搬移 ,复制 B t ae 的 S g2 3 ) o l dr t e 阶段 代码到 R M空 间 ; o a A 设 置堆栈 , 准备运行 C代码 。 ( 清除 B S ,跳人第二 阶段 c 码入 口点 l _r /o d 中的 4 ) S段 代 i a ba . b m rc s ar a t t r ot mb 函数 。 22Sae . t 2阶段 g ( 初 始化本 阶段要用 到的硬件 设备 , 1 ) 主要设置 系统时钟 、 初始化 串口。 () 2 检测 系统 内存映射 ( m r ma )一般在 相应开发板 C文件 的 me oy p , d a it r m n 函数 。 i ( 读取 N n ah 3 ) ad l 中的 kre、 o 到 内存 中。 Fs e l of n r s ( 设置 内核启 动参数 , 4 ) 传递 t 列表 。 a g () 5 通过 l — r /r iu . i amaml xc中的 d_ ot l u 启 动内核。 b n o bo i x m_ n 3U b o 移 植 过 程 .— o t 31 . 移植环境 操作系统 : b nu 01 幢 拟 机)W n o s P P ; U ut 1. 0 ; i w 3 d X S 交叉编译工具链 :r —iu — c一 ..一l e236 al l x gc 345 gi 一 ..; n n b U bo 版本 :— ot1 . O eJA — ot u bo .6 pnT G ~ 1一 开 发 板 : S 4 0 o l h M S T 9 F 6 1 F 2 1 rFa :2 S 3 V 10 ;NA D F A H: s N L S K F 2 8 网卡: S 9 0 ; D A 6 MW9 2 G D 7 ) 9 10 ; C 80 Q3 S R M: 85 6 H一 5; 4 开 发 工 具 :ue t; eue R ; pnT G E l s; n ; o re n C tFp Sc rC T O eJ A ; ci e D w Suc — p I
u_boot移植(五)之分析uboot源码中nand flash操作
u_boot移植(五)之分析uboot源码中nand flash操作一、OneNand 和Nand Flash我们已经能从Nand Flash启动了,启动之后,大家会看到如下效果:可以看出,我们的uboot默认使用的是OneNand。
需要注意的是我们的FSC100上面是没有OneNand的,有的是K9F2G08U0B型号的NAND FLASH。
前面我们了解过Nor Flash 和Nand Flash,那OneNand Flash又是什么呢?二、uboot 源码中Nand Flash部分代码分析我们从Nand Flash初始化看起,打开lib_arm/board.c文件,为了紧抓主线,以下代码只列举出了主线代码。
可以看出,我们可以通过CONFIG_CMD_NAND和CONFIG_CMD_ONENAND两个宏来选择NAND FLASH初始化还是 ONENAND FLASH初始化。
uboot 中默认定义了宏CONFIG_CMD_ONENAND,所以选择的是ONENAND FLASH初始化。
我们的FSC100上面使用的是NAND FLASH,所以我们要定义CONFIG_CMD_NAND宏,取消CONFIG_CMD_ONENAND宏的定义。
嗯!先做个记录:修改include/configs/fsc100.h,定义宏CONFIG_CMD_NAND,取消宏CONFIG_CMD_ONENAND。
好了,接下我们看看nand_init()函数时如何实现的。
看以看出,这段代码调用根据CONFIG_SYS_MAX_NAND_DEVICE宏[默认没有定义]的值来决定系统中Nand Flash设备的个数。
接着调用nand_init_chip()函数完成Nand Flash初始化,然后计算出每块Nand Flash的大小。
最终会输出Nand Flash总的容量。
嗯!做个记录:修改include/configs/fsc100.h,定义宏CONFIG_SYS_MAX_NAND_DEVICE,值为1没有看明白的地方是给nand_init_chip()函数传递的参数,接下来我们来看看他们是如何定义的。
uboot启动流程分析
uboot启动流程分析Uboot启动流程分析。
Uboot是一种常用的嵌入式系统启动加载程序,它的启动流程对于嵌入式系统的正常运行至关重要。
本文将对Uboot启动流程进行分析,以便更好地理解其工作原理。
首先,Uboot的启动流程可以分为以下几个步骤,Reset、初始化、设备初始化、加载内核。
接下来我们将逐一进行详细的分析。
Reset阶段是整个启动流程的起点,当系统上电或者复位时,CPU会跳转到Uboot的入口地址开始执行。
在这个阶段,Uboot会进行一些基本的硬件初始化工作,包括设置栈指针、初始化CPU寄存器等。
接着是初始化阶段,Uboot会进行一系列的初始化工作,包括初始化串口、初始化内存控制器、初始化时钟等。
这些初始化工作是为了确保系统能够正常地运行,并为后续的工作做好准备。
设备初始化阶段是Uboot启动流程中的一个重要环节,它包括对外设的初始化和检测。
在这个阶段,Uboot会初始化各种外设,如网卡、存储设备等,并对其进行检测,以确保它们能够正常工作。
最后一个阶段是加载内核,Uboot会从存储设备中加载操作系统的内核镜像到内存中,并跳转到内核的入口地址开始执行。
在这个过程中,Uboot会进行一些必要的设置,如传递启动参数给内核,并最终将控制权交给内核。
总的来说,Uboot的启动流程是一个非常重要的过程,它涉及到系统的硬件初始化、外设的初始化和内核的加载等工作。
只有当这些工作都顺利完成时,系统才能够正常地启动运行。
因此,对Uboot启动流程的深入理解对于嵌入式系统的开发和调试具有重要意义。
通过本文对Uboot启动流程的分析,相信读者对Uboot的工作原理有了更清晰的认识。
希望本文能够对大家有所帮助,谢谢阅读!。
U-Boot 启动流程分析与S3C2410上的移植
的命令 体 系 。U— o t 有 以太 网下 载程 序 、 Bo具 网络 启动 操 作 系统 、 烧写 f s l h等功 能 , a 是理 想 的 B ola e , o t d r将 o U— o 移植 到嵌 入式 开 发板上 可 提高 开发 效率 。 o B t
1 U— o t 动 流 程 分 析 bo 启
b o.d o t1s文件 用 来 设 置 U— o t中各 个 目标 文 件 的连 bo
引 导加 载 程序 ( o t a e ) B ol d r 点 之 一 , 同时 也 是 系统 运 行 的 基本 条
件 。 b o 是 当前 比较 流行 、 U—o t 功能 强大 的 B oL a e , o t o d r
它可 以支 持 多种 体 系结 构 的 处 理器 , 同时 提 供 了完备
S l a m/ o r . 和 u b o /o 、 b r b ad C i — o tc mmo / i. 。 面 n man c 下
因此 , 须通 知 编译 器 以使 其 知道 这个 入 口 , 工 必 该 作 可通 过修 改连 接器脚 本 文件 u b o .d —o t1s来 完成 。u —
图 1 U— B o届 动 代 码 沉 程 图 ot
开发 板上 电后 , 行 u b o 执 —o t的第 一 条 指 令 , 然后
一
st rt: a
顺 序 执行 ub o 启 动 函数 。 函数 调 用顺 序 如 图 1 —ot 所
示 。 b o 启 动 流程 主要 体现在 3个 文件上 , sat U—o t 即 tr.
维普资讯
第2 O卷
第 8期
电 脑 开 发 与 应 用
文 覃 纲 号 :0 35 5 2 0 )80 5—2 1 0 — 8 0( 0 7 0 — 0 3 0
uuboot 移植流程
uuboot 移植流程U-Boot 移植流程介绍U-Boot是一个开源的引导加载程序,常用于嵌入式系统中。
移植U-Boot可以将其适配到不同的硬件平台上,以满足特定需求。
本文将详细说明U-Boot移植的流程。
准备工作1.硬件选型:根据项目需求,选择适合的硬件平台。
2.获取源代码:从U-Boot官方网站或仓库下载最新版本的源代码。
3.安装交叉编译工具链:根据目标硬件平台的指令集架构,选择合适的交叉编译工具链,并进行安装。
4.了解目标硬件平台:熟悉目标硬件平台的架构、引导方式、存储器布局等相关信息。
移植流程1.配置编译环境:设置交叉编译工具链的环境变量,以确保正确编译U-Boot源代码。
2.配置U-Boot:修改U-Boot源代码中的配置文件,根据目标硬件平台的特性和需求进行相应配置。
–配置目标硬件平台的处理器类型、存储器布局等基本信息。
–配置启动方式,如通过网络(TFTP)或存储介质(SD卡、NAND Flash)等进行启动。
–配置启动流程,如引导加载程序的加载顺序、启动脚本等。
3.添加适配代码:根据目标硬件平台的需求,编写适配代码,包括引导加载程序和设备驱动等。
–引导加载程序:为目标硬件平台选择合适的程序入口点,配置启动参数,加载适配的设备驱动等。
–设备驱动:根据目标硬件平台的外设,编写相应的设备驱动代码,以支持外设的初始化和操作。
4.编译U-Boot:使用交叉编译工具链,编译修改后的U-Boot源代码。
–执行make clean清除之前的编译结果。
–执行make命令编译U-Boot源代码。
5.烧录和运行:将编译生成的U-Boot镜像烧录到目标硬件平台,并进行测试。
–根据目标硬件平台的烧录方式(串口、JTAG等),将U-Boot镜像烧录到目标设备。
–启动目标设备,观察U-Boot的启动信息是否正常输出,检查设备驱动是否正常加载。
6.调试和优化:根据实际情况,进行U-Boot的调试和性能优化。
–使用调试工具进行调试,如调试器、串口打印信息等。
uboot启动流程
U-Boot工作过程U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:(1)第一阶段的功能硬件设备初始化加载U-Boot第二阶段代码到RAM空间设置好栈跳转到第二阶段代码入口(2)第二阶段的功能初始化本阶段使用的硬件设备检测系统内存映射将内核从Flash读取到RAM中为内核设置启动参数调用内核1.1.1 U-Boot启动第一阶段代码分析第一阶段对应的文件是cpu/arm920t/和board/samsung/mini2440/。
U-Boot启动第一阶段流程如下:图 U-Boot启动第一阶段流程根据cpu/arm920t/中指定的连接方式:ENTRY(_start)SECTIONS{. = 0x00000000;. = ALIGN(4);.text :{cpu/arm920t/ (.text)board/samsung/mini2440/ (.text)board/samsung/mini2440/ (.text)*(.text)}… …}第一个链接的是cpu/arm920t/,因此的入口代码在cpu/arm920t/中,其源代码在cpu/arm920t/中。
下面我们来分析cpu/arm920t/的执行。
1. 硬件设备初始化(1)设置异常向量cpu/arm920t/开头有如下的代码:.globl _start_start: b start_code /* 复位*/ldr pc, _undefined_instruction /*未定义指令向量 */ldr pc, _software_interrupt /* 软件中断向量 */ldr pc, _prefetch_abort /* 预取指令异常向量 */ldr pc, _data_abort /* 数据操作异常向量 */ldr pc, _not_used /* 未使用 */ldr pc, _irq /* irq中断向量 */ldr pc, _fiq /* fiq中断向量 */ /* 中断向量表入口地址 */_undefined_instruction: .word undefined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word fiq.balignl 16,0xdeadbeef以上代码设置了ARM异常向量表,各个异常向量介绍如下:表 ARM异常向量表在cpu/arm920t/中还有这些异常对应的异常处理程序。
U-boot的启动流程分析
sr tb
r ,J1 0 rl
。
网卡芯 片 :s 9 13 mc l 1 晶振 频 率 :1 M 0
TF LCD彩 屏 T
US s/D vc B Hot e ie
/ 设 定时 钟控 制寄 存 器 / 设置 C PU 速 度和 时 钟 频 率 ,调整时 钟 , 由低速 运行 进 入 高 速运 行 阶 段 。
—
—
s a t a m bo . tr r ot
_
2 2 第二阶段 ( 开发板与宿 主机之 间的 . 建立 通信) 进 入到 C 言的入 口函数s r amb o 语 t t r ot a (,此 函数 是整 个启 动 代码 中 C语 言的主 函 ) 数 , 整 个 U— ot 主 函数 , l r 还是 b o的 在 i am/ b b adC 定义 ,主要 完成工 作如 下 : o r .中 () 始化 本阶段 用到 的硬 件设 备 1 初 c u ii / p _nt /在 c u C () p . 中定义 ,主要 内 容为 i c eea l ) 指令 cc e c h n be 打开 a ( ah b a dii )/板 级初 始化 ,对 复用 I o r ̄nt / ( / 0端 口的各个 寄存 器进 行设置 e v ii ) /函数 初始化 环境 变量 ,此 n nt / ( 函数 在C rmo / n ls C Of n ev f h.中 l a itru tii ) / nerp—nt /设 置 中断控 制 器 ( 的特殊功 能寄 存器 so sl i ) / 设置 串 口的初始 化 。 c noe t An ( / dsl an r) / 显 示 U— o t i a b n e( / py TE CHNOLOOY N f FORMATI ON
am335xu-boot启动过程分析
am335xu-boot启动过程分析 u-boot属于两阶段的bootloader,第⼀阶段的⽂件为 arch/arm/cpu/armv7/start.S 和 arch/arm/cpu/armv7/lowlevel_init.S,前者是平台相关的,后者是开发板相关的。
1. u-boot第⼀阶段代码分析 (1)硬件设备初始化 将CPU的⼯作模式设为管理模式(SVC); 关闭中断; 禁⽤MMU,TLB ; 板级初始化; (2)为加载Bootloader的第⼆阶段代码准备RAM空间 加载u-boot.img,跳转到u-boot.img; 上述⼯作,也就是uboot-spl代码流程的核⼼。
代码如下:arch/arm/cpu/armv7/start.S1/*2 * the actual reset code3*/4reset:5 bl save_boot_params6/*7 * disable interrupts (FIQ and IRQ), also set the cpu to SVC32 mode,8 * except if in HYP mode already9*/10 mrs r0, cpsr11 and r1, r0, #0x1f @ mask mode bits12 teq r1, #0x1a @ test for HYP mode13 bicne r0, r0, #0x1f @ clear all mode bits14 orrne r0, r0, #0x13 @ set SVC mode15 orr r0, r0, #0xc0 @ disable FIQ and IRQ16 msr cpsr,r017@@ 以上通过设置CPSR寄存器⾥设置CPU为SVC模式,禁⽌中断18@@ 具体操作可以参考《[kernel 启动流程] (第⼆章)第⼀阶段之——设置SVC、关闭中断》的分析1920/* the mask ROM code should have PLL and others stable */21#ifndef CONFIG_SKIP_LOWLEVEL_INIT22 bl cpu_init_cp1523@@ 调⽤cpu_init_cp15,初始化协处理器CP15,从⽽禁⽤MMU和TLB。
U—Boot的分析与移植
般都 从 C U制 造 商 预先 安 排 的地 址 上 取 指 令 。对 P
于 A 90 M R 2T核 的 C U, 复 位 时从 地最为强大 , 但相对 比较复杂。像其它 引导程序
一
取第一条指令 。该 位置实际是复位中断向量 , 在该 位 置存 放跳 转指 令 br e到 复 位 中断 处理 程 序 , e t s 执
行 系统 的初 始化 工作 。 ()设 置异 常 向量 表 , 括 复位 、 定 义 指 令 、 2 包 未 软件 中断 、 取指 令 异常 、 据异 常 、 留 、 常中 断 预 数 保 正 和 快速 中断 向量 。异 常 向量 表是 系统 发 生异 常后 自 动 跳转 的一 段处 理 函 数 入 口表 , 系 统 发 生异 常 时 在
am ot ̄dotbo ,  ̄bo 和 r 等 , 中 U B o r bo, bo,l p ot b i t f 其 —ot
S gl t e 依赖于 C U的体系结构 , s r s a P 在 tt 文件中, a. 由 汇编语言实现 , 主要完成设备 的初始化工作。S gl te a 的主要 工作 如下 :
理器具有高性能、 低功耗的特性 , 已被广泛应用于消 费电子产 品、 无线通信 、 网络通信和工业 控制等 领 域 。嵌 入式 unx系统 具 有 源代 码 开 放 、 u 内核 稳 定 、
可裁减 性等特 点 , 引着 众 多 商业 公 司 和 自由软 件 吸 开发者 的 目光 , 为嵌 入 式 系 统 领域 不 可 或 缺 的操 成 作 系统 之一 。如 何 在嵌 入式 系 统 中完 成 unx 作 u操 系统 的 引导工 作 , 是嵌 入式 系统开 发 的重点 和难 点 。 嵌 入 式 unx u 系统 中常用 的引导程 序有 UBo, —ot
UBoot移植详解
u-boot 移植步骤详解1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。
这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。
就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。
其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT 改名为U-Boot后逐步扩充的。
从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。
当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。
Uboot启动流程分析和移植介绍
基于MPC83xx 的U-boot 启动流程分析和移植董 闯北京邮电大学信息与通信工程学院,北京(100876)E-mail :donix.dong@摘 要:本文首先引入Bootloader 的概念,接着介绍U-boot 这种引导程序,并以Freescale 32位微处理器MPC83xx 为例,结合代码详细分析了U-boot 的启动的各个阶段及最终引导Linux 内核的过程,最后,建立交叉编译环境,针对TC8313E 目标板,给出U-boot 移植与编译的基本步骤。
关键词:U-boot;MPC83xx;交叉编译;移植;嵌入式系统中图分类号:TP393.051.引言引导程序(Bootloader)是系统加电后运行的第一段软件代码,类似于PC 机中的引导加载程序BIOS 。
虽然引导程序仅在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的组成部分。
通过这段小程序,初始化必要的硬件设备,创建内核需要的一些信息并将这些信息传递给内核,从而将系统的软、硬件环境配置到一个合适的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。
2. U-boot 介绍目前,嵌入式领域里出现了很多种类的Bootloader ,如Armboot 、Blob 、Redboot 、vivi 和U-boot 等,其中U-boot 是使用最广泛,功能最完善的。
U-boot (Universal Boot Loader)是从PPCBOOT 发展演化而来[1],其源码目录、编译形式与Linux 内核很相似,事实上,不少U-boot 源码就是相应的Linux 内核源程序的简化,尤其是一些设备的驱动程序,这从U-boot 源码的注释中就能体现。
U-boot 中Universal 有两层含义,一是U-boot 除了支持PowerPC 系列的处理器外,还能支持MIPS 、x86、ARM 、NIOS 、XScale 等诸多常用系列的处理器;另外一层含义则是U-boot 不仅仅支持嵌入式Linux 操作系统的引导,还支持OpenBSD, NetBSD, FreeBSD, SVR4, Solaris, VxWorks, LynxOS, pSOS, lrix, RTEMS, QNX, ARTOS 等操作系统的引导。
海思uboot启动流程详细分析(一)
海思uboot启动流程详细分析(⼀)第⼀阶段 start.S⾸先我们可以在u-boot.lds中看到ENTRY(_start),即指定了⼊⼝_start,_start也就是整个start.S的最开始;1. reset在arch\arm\cpu\armv8\hi3559av100中的start.S注意x30在ARMV8中代表lr寄存器reset:/** Could be EL3/EL2/EL1, Initial State:* Little Endian, MMU Disabled, i/dCache Disabled*/adr x0, vectorsswitch_el x1, 3f, 2f, 1f3: msr vbar_el3, x0mrs x0, scr_el3orr x0, x0, #0xf /* SCR_EL3.NS|IRQ|FIQ|EA */msr scr_el3, x0msr cptr_el3, xzr /* Enable FP/SIMD */#ifdef COUNTER_FREQUENCYldr x0, =COUNTER_FREQUENCYmsr cntfrq_el0, x0 /* Initialize CNTFRQ */#endifb 0f2: msr vbar_el2, x0mov x0, #0x33ffmsr cptr_el2, x0 /* Enable FP/SIMD */b 0f1: msr vbar_el1, x0mov x0, #3 << 20msr cpacr_el1, x0 /* Enable FP/SIMD */0:/** Cache/BPB/TLB Invalidate* i-cache is invalidated before enabled in icache_enable()* tlb is invalidated before mmu is enabled in dcache_enable()* d-cache is invalidated before enabled in dcache_enable()*//** read system register REG_SC_GEN2* check if ziju flag*/ldr x0, =SYS_CTRL_REG_BASEldr w1, [x0, #REG_SC_GEN2]ldr w2, =0x7a696a75 /* magic for "ziju" */cmp w1, w2bne normal_start_flowmov x1, sp /* save sp */str w1, [x0, #REG_SC_GEN2] /* clear ziju flag */adr x0, vectors,其中的vectors代表了异常向量表主要做了如下事情:1)reset SCTRL寄存器具体可参考reset_sctrl函数,由CONFIG_SYS_RESET_SCTRL控制,⼀般不需要打开。
uboot 代码运行流程
uboot 代码运行流程U-Boot代码运行流程U-Boot(Universal Bootloader)是一个开源的引导加载程序,广泛应用于嵌入式系统中。
它负责在系统上电后初始化硬件并加载操作系统内核,是系统启动的重要一环。
下面将从U-Boot代码的运行流程方面进行介绍。
1. 启动阶段当系统上电后,处理器会从预定义的存储器地址开始运行代码。
U-Boot的启动代码通常存放在ROM中,处理器会从ROM的起始地址开始执行。
启动代码负责初始化处理器和一些外设,然后跳转到U-Boot的入口点。
2. 入口点U-Boot的入口点是指U-Boot的main()函数。
在启动代码的最后,会调用main()函数,从而进入U-Boot的主循环。
U-Boot的主循环负责处理用户输入的命令,并根据命令执行相应的操作。
3. 硬件初始化在main()函数中,首先会进行硬件的初始化工作。
这包括初始化串口、初始化存储器控制器、初始化网络接口等。
硬件初始化的目的是为了确保系统能够正常运行,并为后续的操作做好准备。
4. 系统启动硬件初始化完成后,U-Boot会尝试从存储设备(如闪存、SD卡)中加载操作系统内核镜像。
U-Boot会根据预定义的启动命令(例如bootcmd)来确定从哪个设备加载内核镜像,并执行相应的加载操作。
加载完成后,U-Boot会将控制权交给操作系统内核,进入操作系统的启动阶段。
5. 用户交互一般情况下,U-Boot会在系统启动后进入命令行界面,等待用户输入命令。
用户可以通过串口、网络等方式与U-Boot进行交互,执行各种操作,例如烧写固件、修改配置等。
U-Boot提供了丰富的命令集,可以满足不同的需求。
6. 系统重启当用户输入重启命令或系统发生异常时,U-Boot会执行系统重启操作。
重启操作包括重新初始化硬件、重新加载内核镜像等步骤,以重新启动系统。
U-Boot会将控制权交给重新加载的内核,然后进入内核的启动流程。
总结:U-Boot代码的运行流程包括启动阶段、入口点、硬件初始化、系统启动、用户交互和系统重启等几个关键步骤。
一步步教你移植uboot(超精华版)
#make gec2440_config #make 编译完成时最后两句如下:
arm-linux-objcopy -O srec u-boot u-boot.srec arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin 表示编译成功。
# if defined(CONFIG_S3C2410)
ldr r1, =0x7ff //0x3ff,根据 2410 芯片手册,INTSUBMSK 有 11 位可用,vivi 也是 0x7ff, u-boot 则是 0x3ff,不过芯片复位后所有中断都被屏蔽,故这无影响
ldr r0, =INTSUBMSK
>> 2
广州广嵌电子科技有限公司
u-boot移植要点 我们可以总结出bootloader的两大功能:
1 是下载功能,既通过网口、串口或者USB口下载文件到RAM中。 2 是对flash芯片的读写功能。 u-boot对S3C2440已经有了很好的支持,在移植过程中主要是完善u-boot对nand flash 的读写功能。 u-boot移植前的准备工作 1.下载源码 Uboot的源码可以从以下网址下载: /u-boot/u-boot-2009.11.tar.bz2?modtime=1134 752480&big_mirror=0 我们这里下载的是u-boot-2009.11.tar.bz2 工具链使用cross-4.1.2
samsung: 开发者/或经销商(vender)。
s3c24x0: 片上系统(SOC)。 板子起名叫gec2440,可以依自己的喜好修改
UBOOT移植操作
UBOOT移植操作1. 确定目标平台和硬件:首先需要了解目标平台的硬件架构、处理器类型、存储设备(如 Flash 或者 SD 卡)等重要信息。
同时需要获取目标平台的硬件参考手册或者相关文档。
2.设置交叉编译工具链:UBOOT是使用C和汇编语言编写的,因此需要使用交叉编译工具链来生成可在目标平台上运行的二进制可执行文件。
交叉编译工具链包括交叉编译器、链接器和调试器等工具,这些工具需要针对目标平台进行配置。
4. 配置 UBOOT 环境:进入 UBOOT 源代码目录,运行 `make menuconfig` 命令来配置 UBOOT 的环境。
这个命令会打开一个图形界面,可以在其中选择需要的功能、驱动程序和选项。
根据目标平台的硬件特性和需求,选择适当的选项。
5. 修改配置文件:UBOOT 需要一个配置文件(通常是`include/configs/<target.h>`),在这个文件中需要将目标平台的硬件配置信息填入。
这些信息包括芯片型号、Flash 存储器地址等。
还需要设置启动参数,如内核地址、根文件系统地址等。
6. 编译 UBOOT:运行 `make` 命令来编译 UBOOT。
根据配置和硬件平台的不同,可能需要选择不同的编译选项。
编译过程会生成一个 UBOOT 头文件(u-boot.bin)和其他必要的文件。
7.将UBOOT烧录到目标平台:使用烧录工具(如JTAG烧录器、USB烧录器或者SD卡等)将编译好的UBOOT烧录到目标平台的存储设备中。
具体的烧录方法和工具依赖于目标平台的配置。
8.测试和调试:将烧录好的UBOOT安装到目标平台后,通过串口或者网络连接到目标平台,使用终端工具进行测试和调试。
可以通过串口输出来查看启动过程中的日志和错误信息,或者使用调试工具来分析程序执行的问题。
9.优化和定制:根据需求对UBOOT进行优化和定制。
可以修改配置文件、增加功能模块或者修改代码,以达到更好的性能和适应特定需求的目的。
Tiny4412u-boot分析(2)u-boot启动流程
Tiny4412u-boot分析(2)u-boot启动流程从⼤⽅⾯来说,u-boot的启动分成两个阶段,第⼀个阶段主要的职责是准备初始化的环境,主要有以下⼏点①设置异常向量表②把CPU的⼯作模式设置为SVC32模式③关闭中断、MMU和cache④关闭看门狗⑤初始化内存、时钟、串⼝⑥设置堆栈⑦代码搬移⑧清bss段⑨跳转到c语⾔中执⾏(第⼆阶段)此时系统还没有进⼊C语⾔的运⾏阶段,并没有堆栈,也就不需要额外的RAM。
第⼆阶段在上⼀段建⽴好C语⾔运⾏环境的基础上,进⾏各种外设的初始化,并循环执⾏⽤户命令。
主要流程图如下当我们执⾏make命令来构建u-boot时,它的构建过程是:⾸先使⽤交叉编译⼯具将各⽬录下的源⽂件⽣成⽬标⽂件(*.o),⽬标⽂件⽣成后,会将若⼲个⽬标⽂件组合成静态库⽂件(*.a),最后通过链接各个静态库⽂件⽣成ELF格式的可执⾏⽂件。
在链接的过程中,需要根据链接脚本(⼀般是各个以lds为后缀的⽂本⽂件),确定⽬标⽂件的各个段,链接⽂件通常是board/<board>/⽬录中的u-boot.lds⽂件。
⼀般在链接脚本中通过ENTRY(_start)来指定⼊⼝为_start标号,通过⽂本段(.text)的第⼀个⽬标来制定u-boot⼊⼝⽂件。
所以我们通过这个链接脚本⽂件可以确定u-boot执⾏的⼊⼝。
Tiny4412 u-boot的链接脚本内容为// board/samsung/tiny4412/u-boot.ldsOUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{. = 0x00000000;. = ALIGN(4);.text :{arch/arm/cpu/armv7/start.o (.text)board/samsung/tiny4412/libtiny4412.o (.text)arch/arm/cpu/armv7/exynos/libexynos.o (.text)*(.text)}. = ALIGN(4);.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }. = ALIGN(4);.data : {*(.data)}. = ALIGN(4);. = .;__u_boot_cmd_start = .;.u_boot_cmd : { *(.u_boot_cmd) }__u_boot_cmd_end = .;. = ALIGN(4);.rel.dyn : {__rel_dyn_start = .;*(.rel*)__rel_dyn_end = .;}.dynsym : {__dynsym_start = .;*(.dynsym)}.bss __rel_dyn_start (OVERLAY) : {__bss_start = .;_end = .;}/DISCARD/ : { *(.dynstr*) }/DISCARD/ : { *(.dynamic*) }/DISCARD/ : { *(.plt*) }/DISCARD/ : { *(.interp*) }/DISCARD/ : { *(.gnu*) }}在本链接脚本⽂件中,定义了起始地址为0x00000000,每个段使⽤4字节对齐(.ALIGN(4)),⼏个段分别为代码段(.text)、只读数据段(.rodata)、数据段(.data)其中,代码段的第⼀个⽬标为arch/arm/cpu/armv7/start.o,在其中定义了映像⽂件的⼊⼝_start。
uboot启动流程
uboot启动流程U-Boot是一款开源的嵌入式引导加载程序(bootloader),主要用于嵌入式系统的引导启动。
它是一个跨平台的引导加载程序,可以在不同的处理器架构和操作系统上运行。
下面将介绍U-Boot的启动流程。
U-Boot启动流程主要包括三个阶段:启动ROM代码、启动SPL(Secondary Program Loader)和启动U-Boot。
首先,当嵌入式设备上电后,处理器会首先执行固定在芯片内部的启动ROM代码。
这些代码主要完成一些基本的硬件初始化工作,例如设置栈指针、初始化外设等。
然后,启动ROM 代码会从预定义的启动设备(例如闪存、SD卡等)中加载SPL。
接下来,SPL(Secondary Program Loader)被加载到内存中执行。
SPL是一个较小的引导加载程序,主要作用是完成一些必要的初始化和硬件配置。
SPL会初始化内存控制器、外设等,并加载U-Boot镜像到内存中。
最后,U-Boot被加载到内存中执行。
U-Boot是一个功能强大的引导加载程序,拥有丰富的命令和功能。
它可以根据不同的系统配置进行配置和扩展,并提供了丰富的调试和测试功能。
U-Boot的启动流程主要可以分为以下几个步骤:1. CPU初始化:U-Boot开始执行后,首先进行CPU的初始化工作,包括设置栈指针、cache的初始化等。
2. 设备初始化:接下来,U-Boot会初始化外设设备,例如串口、网络接口等。
这些设备的初始化是为了后续的调试和配置工作做准备。
3. 系统环境的初始化:U-Boot会读取存储在非易失性存储设备(例如NAND闪存、SD卡等)中的环境变量,根据这些变量进行系统的初始化配置。
4. 设备驱动的加载:U-Boot会加载并初始化必要的设备驱动程序,以便后续的硬件操作可以正常进行。
5. 启动命令的执行:U-Boot会根据配置文件中的设置,执行预定义的启动命令。
这些命令可以是启动操作系统、加载应用程序等。
u_boot 移植(一)之uboot配置编译
u_boot 移植(一)之uboot配置编译一 、开发环境PC OS : Ubuntu 14.04SOC : 基于ARM Cortex-a8 核的S5PC100开发板 : FSC100u_boot : u-boot-2010.03编译器 : arm-cortex_a8-linux-gnueabi-gcc version 4.4.6二、目标1.Uboot 能从FSC100的 Nand Flash 正常启动2.Uboot 支持DM9000 网卡3.Uboot 支持Nand Flash 读、写、擦除4.Uboot 支持Linux 内核引动好了,接下来就进行移植uboot到FSC100开发板吧 。
三、建立自己的平台1、 下载源码我们可以在下面这个网站上下载最新的和以前任一版本的 ubootftp://ftp.denx.de/pub/u-boot/2、 解压 uboot 源码并进入目录tar zxvf u-boot-2010.03.tar.gzcd u-boot-2010.03u-boot-2010.3 源码中已经支持了SMDKC100了(SMDKC100是三星公司基于SOC : S5PC100设计的一块开发板)。
我们的FSC100使用的SOC也是S5PC100,所以我们只需要稍加修改Uboot支持的SMDC100代码,就可以编译出支持我们的FSC100开发板的uboot了。
1.修改 u-boot 顶层目录下的 Makefile,指定交叉工具链在ifeq ($(HOSTARCH, $(ARCH))CROSS_COMPILE ?=endif下添加:ifeq (arm, $(ARCH))CROSS_COMPILE ?= arm-cortex_a8-linux-gnueabiendif2.在 u-boot 顶层目录下的 Makefile 中添加 fsc100 配置信息在smdkc100_config: unconfig@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 smdkc100 samsung s5pc1xx下添加:fsc100_config: unconfig@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 fsc100 samsung s5pc1xx3. 添加 fsc100 平台信息(1)进入board/samsung目录(2)拷贝smdkc100 为 fsc100(3)进入fsc100目录下修改smdkc100.c 为fsc100.c修改Makefile中的smkc100.o 为fsc100.o(4)进入include/configs目录,拷贝smdkc100.h为fsc100.hinclude/configs目录下的.h文件为对应开发板的配置文件。
U-Boot启动过程--详细版的完全分析
(一)U—Boot启动过程-—详细版的完全分析我们知道,bootloader是系统上电后最初加载运行的代码.它提供了处理器上电复位后最开始需要执行的初始化代码。
在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。
然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成.它主要的功能是加载与引导内核映像一个嵌入式的存储设备通过通常包括四个分区:第一分区:存放的当然是u-boot第二个分区:存放着u-boot要传给系统内核的参数第三个分区:是系统内核(kernel)第四个分区:则是根文件系统如下图所示:u—boot是一种普遍用于嵌入式系统中的Bootloader。
Bootloader介绍Bootloader是进行嵌入式开发必然会接触的一个概念,它是嵌入式学院<嵌入式工程师职业培训班〉二期课程中嵌入式linux系统开发方面的重要内容。
本篇文章主要讲解Bootloader的基本概念以及内部原理,这部分内容的掌握将对嵌入式linux系统开发的学习非常有帮助!Bootloader的定义:Bootloader是在操作系统运行之前执行的一小段程序,通过这一小段程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备.意思就是说如果我们要想让一个操作系统在我们的板子上运转起来,我们就必须首先对我们的板子进行一些基本配置和初始化,然后才可以将操作系统引导进来运行。
具体在Bootloader中完成了哪些操作我们会在后面分析到,这里我们先来回忆一下PC的体系结构:PC机中的引导加载程序是由BIOS和位于硬盘MBR 中的OS Boot Loader(比如LILO和GRUB等)一起组成的,BIOS在完成硬件检测和资源分配后,将硬盘MBR 中的Boot Loader读到系统的RAM中,然后将控制权交给OS Boot Loader。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
board/smdk2410/, cpu/arm920t/, cpu/arm920t/s3c2x0/, lib_arm/, in-
clude/asm- arm/, include/configs/smdk2410.h。
2)修 改 目 标 板 中 的 主 要 文 件 。
*flash.c。 移 植 过 程 中 FLASH 驱 动 一 般 都 需 要 重 写 , Intel
2.1 Stagel (1)硬 件 设 备 初 始 化:屏 蔽 所 有 中 断 , 设 置 CPU 速 度 和 时 钟 频 率 , RAM 初 始 化 , LED 初 始 化 , 关 闭 CPU 内 部 指 令/数 据 cache。 (2)为加 载 Bootloader 的 stage2 准 备 RAM 空 间:空 间 大 小 最 好 为 memory map(通 常 4KB)的 整 数 倍 , 一 般 而 言 , 1M 的 RAM 足够。 (3)拷贝 Bootloader 的 stage2 到 RAM 空 间 中:拷 贝 过 程 中 要 确 定 stage2 的 可 执 行 映 像 在 固 态 存 储 设 备 的 存 放 地 址 和 终 止 地址, RAM 空间的起始地址。 (4)设置好堆栈:设置堆栈指针为执行 C 语言代码作好准备。 (5)跳转到 stage2 的 C 入口点:通过修改 PC 寄存器地址实现。 2.2 Stage2 (1)初 始 化 本 阶 段 要 使 用 到 的 硬 件 设 备:初 始 化 至 少 一 个 串 口, 以便和中断用户进行 I/O 输出信息, 初始化计时器等。 (2)检 测 系 统 内 存 映 射 (memory map):此 阶 段 主 要 检 测 CPU 预 留 的 全 部 RAM 地 址 空 间 中 的 哪 些 被 真 正 映 射 到 RAM 地 址 单元, 哪些处于未使用状态。 (3) 将 kernel 映 像 和根 文 件 系 统 映 像 从 FLASH 上 读 到 RA M 空间中:首先规划内核映像和根文件系统所占用内存范围 , 明 确基地址和映像大小后从 FLASH 上拷贝。 (4) 为 内 核 设 置 启 动 参 数:linux 2.4.x 以 后 内 核 以 标 记 列 表 (Tagged list)的形式来传递启动参数。 (5)调用内核:直接跳转到内核的第一条指令处, 在 跳转 时 必 须满足 CPU 寄存器, CPU 模式以及 Cache 和 MMU 的相关设置。 在整个启动过程中 U- Boot 的主要函数调用关系如下图:
flash.c, my2410.c, Makefile, memsetup.S, u- boot.lds 文件。由于大
部分支持 S3C2410 的 板 子 都和 smdk2410 相 似 , 也可 以 直 接复
制 smdk2410 的 文 件 到 此 目 录 中 。smdk2410 平 台 相 关 目 录 为 :
交叉 编 译环 境 建 好后 试 着 编 译 u- boot, 成 功 的 话 应 该 会 生
成 u- boot.bin 文件。
4.3 移植过程及主要修改文件
在 board 下创建新目录存放开发板相关代码, 并添加文件。
1)创建 my2410(要移植的目标板名称)目录 , 添 加 config.mk,
2 U- Boot 启动流程
由 于 Bootloader 的 实 现 依 赖 于 CPU 的 体 系 结 构 , 大 多 数
黄荐渠: 在读研究生 基金项目:四川省科技厅基金资助项目(01SG003- 11)
Bootloader 分 为 Stage1 和 Stage2 两 个 部 分 , 分 别 在 ROM 和 RAM 中 运 行 , U- Boot 也 不 例 外 。 其 中 Stage1 存 放 与 CPU 体 系 结构相关的代码, 其代码短小精悍, 易升级, 通常用汇编语言编 写。Stage2 通常用 C 语言编写, 可以实现更复杂的功能, 具有更 好的可读性和可移植性。
EP28F128J3A150 在 cmi 板中 有 支 持, 用 board/cmi/flash.c 替 换
原 来 的 flash.c, 删 除 write_short () 和 write_buff 函 数 , 把 board/
合 U- Boot 源 码 及 S3C2410 嵌入 式 开 发 板 , 讨 论 了 U- Boot 移 植
的方法和步骤。
1 U- Boot 简介
嵌 入 式 linux 系 统 中 常 用 的 bootloader 有 armboot, redboot, blob, U- Boot 等 , 其中 U- Boot(Universal Boot Loader)为 当 前比 较 流 行, 功 能 比 较强 大 的 bootloader, 是遵 循 GPL 条 款的 开 放 源 码 项目, 其源码目录、编译形式与 Linux 内核相似。支 持 多种 嵌 入 式 操 作 系 统 , 如 Linux, VxWorks, LynxOS, NetBSD 等 , 支 持 多 种 处 理 器 系 列 , 如 PowerPC, ARM, x86, MPIS, XScale 等 , 具 有 较 高 的可靠性和稳定性, 功能设置灵活, 调试方便, 有丰富的设备驱 动 源码 和 开 发调 试 文 档 。 目 前 U- Boot 对 PowerPC 系 列 处 理 器 和 linux 操作系统ader 相 当 困 难 , 但 Bootloader 的 开 发 为 整 个
嵌入式系统开发的第一步, 十分关键。从可利用资源和实际产
品开发周期角度考虑, 移植 已 有 的 Bootloader 源 码 来 解决 这 一
问题符合大多数项目的开发要求。
本文详细分析了 Bootloader 的主 要 任 务和 结 构 特点 , 并 结
嵌入式软件应用 文章编号:1008- 0570(2008)04- 2- 0076- 03
中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2008 年 第 24 卷 第 4-2 期
U- Bo o t 的启动及移植分析
Th e Bo o tin g a n d Po rtin g An a lyze o f U- Bo o t
(电子科技大学) 黄 荐 渠 秦 东 兴 赵 曦 贾 曦
HUANG J ian-qu QIN Dong-xing ZHAO Xi J IA Xi
摘要:bootloader 开 发 是 嵌 入 式 系 统 必 不 可 少 而 且 十 分 重 要 的 部 分 , U- Boot 为 功 能 强 大 的 bootloader 开 发 软 件 。本 文 详 细 分 析 了
U- Boot 的 启 动 流 程 , 并 结 合 其 源 码 , 阐 述 了 U- Boot 在 S3C2410 目 标 板 上 的 移 植 过 程 , 其 实 现 方 法 和 步 骤 具 有 一 定 的 通 用 性 。
关键词: bootloader ; U- Boot; 嵌入式系统; 移植
中图分类号: TP368.1
系统以 root 用户登陆, 在/usr/local/arm/2.95.3 目录下安装交叉编
译程序, 在 PATH 变量中添加一项:/usr/local/arm/2.95.3/bin。
#export ATH=/usr/local/arm/2.95.3/bin:¥PATH
#arm- linux- gcc –v
技 Key wor ds: bootloader ; U- Boot; Embedded system; Por ting
术 引言
创
Bootloader(引 导 装 载 器)是 用 于 初 始 化 目 标 板 硬 件 , 给 嵌 入
式 操 作 系 统 提 供 板 上 硬 件 资 源 信 息 , 并 进 一 步 装 载 、引 导 嵌 入
Embedded System board based on the S3C2410 CPU are expatiated in terms of the source code of U- Boot, and the realizing moth-
ods and step is universal in a sense.
#tar –xjvf u- boot- 1.1.2.tar.bz2 或 #tar –xzvf u- boot- 1.1.2tar.gz 解压缩后得到的文件组织形式如下: - board 目标板相关文件, 主要包含 SDRAM, FLASH 驱动; - common 独立于处理器体系结构的通用代码; - cpu 与处理器相关的文件; - drivers 通用设备驱动程序, 主要有以太网接口的驱动; - doc U- Boot 说明文档; - example 在 U- Boot 下运行的示例程序; - include 头文件和开发板配置文件, 所有开发 板和 配 置 文件都在 configs 目录下; - lib_xxx 处理器体系相关文件; - net 网络功能相关的文件目录; - post 上电自检文件目录; - rtc RTC(Real Timer Clock drivers)驱动程序; - tools 创建 U- Boot S- RECORD 和 BIN 镜象文件的工具。
- 76 - 360元 / 年 邮局订阅号: 82-946
《现场总线技术应用 200 例》
您的论文得到两院院士关注
嵌入式软件应用
图 1 U- Boot 启动代码流程图
3 源码结构
可 以 从 http://sourceforge.net/projects/U- Boot 获 得 最 新 发 布 的 U- Boot 版本, 大多为 tar 或者 bzip2 的 压 缩包 格 式 , 下载 后 进 行源代码的解压缩:
4 移植实例
4.1 硬件资源 本 次 移 植 硬 件 资 源 主 要 包 括 S3C2410 处 理 器 , Intel EP28F128J3A FLASH (16M), MICRON 48LC16M162- 75 SDRAM (64M), USB Host/Device, 全 功 能 JTAG 调 口 , DM900 AVI COM (10/100M)等 。 4.2 建立开发环境 在宿主机上建立 arm- linux- gcc 交叉编译环境。u- boot.1.1.2 目录下的 Makefile 文件中有这一项: ifeq(¥(ARCH),arm) CROSS_COMPILE=arm- linux- 如 果 处 理 器 为 arm 则 u- boot 默 认 交 叉 编 译 器 为 arm- lin- ux- gcc, 可以从网上下载 arm- linux- gcc- 2.95.3, 在 RedHat Linux