u-boot-1.3.4移到S3C2440

合集下载

基于S3C2440的U-boot移植及Skyeye的仿真

基于S3C2440的U-boot移植及Skyeye的仿真

、 氅= 氅 .
、 ~ , ;
… …
—一

/h a o ld / o Biblioteka o cm n/ Js (j k
l  ̄ d ep n e t e har d e d n fi 1 Mi c Hr hi e t e d p n e ' cLi n c t c r i e e d nL un ( N U n I '
在 函数 sai u n e L C K i t g 中添加 : tt l g g LP L L ( tpl ) c o n r e
#fd f e ( i ei dCONFG— 3 2 4 ) n I S C 4 0
证 明 U—b o 可 以 配置 s y 4 0开 发 板 。 ot k2 4
E T Y一 tr N R (sat )
S CToN E I S
/ 定义程序入L I /
然 后 进 入 控 制 台 在 U— o t 目录下 输 入 ma e dsce n bo 的 k i la t
指 令 清 除 以 前 U b o 的 配 置 ,然 后 输 入 ma e s y 4 0 c n ~ ot k k24 一o ’ f , 看到 : j 如 g

=O O 0 0 0 ; x00 0 0

A I () LGN 4;
tx e t:
苏州 大 学 国 家级 大 学 生 创 新 性 实验 计 划项 目(0 0 8 2 ) 1 1 2 5 5
基 于 S C2 4 3 4 0的 U b o 移植 及 S y y - ot k e e的仿 真
# di en f
在 函数 uo g g tH Kv i) tn e_ CL (od 中添 加 :

基于S3C2440的U-Boot开机logo的设计与实现

基于S3C2440的U-Boot开机logo的设计与实现
第 1 9卷 第 2 2期
Vo _9 ll
No22 .
电子设 计 工程
Elc r n c De i n i e r e t i s o maE  ̄ n e i
21年 1 01 1月
NO . 0 1 V 2 1
基 亏 ¥ C 4 0的 U— o t 3 24 B o 开机 lg o o的设计 与实现
中 图分 类 号 : P 9 .8 T 3 30
文献标识码 : A
文 章 编 号 :l7 — 26 2 1 )2 0 6 - 3 6 4 6 3 (0 1 2- 17 0
U—Bo tba e C2 0 l g sg nd i p e e t i n o s d S3 44 o o de i n a m l m n ato
理 进 行 分 析 . 后 结 合 系统软 硬 件 特 性 实现 基 于 U B o 的 开机 lg 。 过 实验 验 证 表 明 , U B o 上 实现 开机 lg , 最 — ot oo 通 在 - ot oo
可在 无操 作 系统 下 为 开 发 者 以及 用 户提 供 友 好 开机 信 息 。 关 键 词 : 机 l o U B o; C 开 o ; — o t L D驱 动 ; 3 2 4 ; g ¥ C 4 0 7寸 L D C
化 、 作 系 统 代码 搬 运 等 。 时 , — ot 支 持 多 种 嵌 入 式 操 操 同 U Bo还 作 系 统 以 及 多 种 类 型 的处 理 器 。 具 有 较 高 的 可 靠 性 和 稳 定 并
性, 而且 丰富 的设备驱 动程序 以及开 发文档 , 强大 的 网络 技
术 支 持 等 , 嵌 入 式 软 件 开 发 提 高 效 率圈 为 。

基于S3C2440的U-boot启动分析

基于S3C2440的U-boot启动分析
o t 动 分析 3 24 昀 b o启
中北 大学信 息与 通信 工程 学院 洪永 学 余 红英
[ 要] 摘 在嵌入 式的世界 中 , 通常没有像 B O 那样 的固件程序 , IS 因此整 个嵌入式 系统的加栽就完全 由B o od r o t ae 来完成, l 所以B o— o t la e是嵌入 式京 统中不可缺 少的重要部分 , 文结合 u b o一 ..部分源代码详细地分析 U— o 启动过程 , o dr 本 — o t 116 Bo t 主要是对 U— o 启 Bo t 动的关键 环节进行较 为详 细的解析 , 其对 U— o t 目 B o在 标板 ¥ C 40 3 2 4 移植分析具有一定的借鉴价值。 [ 关键 词] o t ae U— 0 启动 移植 B ol dr o Bo t 给 内 核 , 代 码 如 下 : g 一 b 一 b a h n m e : d>d >i r — u br _c U B o, — ot全称 为 U iesl ot o dr 即通 用的 B ood r是遵循 MACH TYP S D 2 1 ; 始 化 串 口 函数 只要 是 sr l n , 置 了 nvra B o a e, L ot ae , l E M K4 0初 e a it i— i设 GL P 条款 的开发代码 , 的名字“ 它 通用” 具有两层含义 : 以引导 多种操 U T控制器 , c uam9 0 sc4 Osf .中实现 。 可 AR 在 p / 2f 32 x/e a c r i 1 作 系统 、 支持 多种架构 的 C U P 。它支持如 下操作 系统 :iu 、 e S 、 Lnx N t D B () 2 检测系统 内存映射( e o a ) m m r m p y V Wo s Q X R T S A T S , 持 如 下 C U架 构 : o e C x r 、 N 、 E M 、 RO 等 支 k P Pw r 、 P 对于特定 的开发板 , 内存 的分 布是明确 的, 以可 以直接设 置 , 其 所 o d m k 4 0 m k4 0 rs s e r it m n 函数指定 了开发板 的内存起 M P 、 8 、 R N I 等 。U B o支 持大 多数 C U, 以烧 写 E T 、 b a / d 2 1/ d2 1 .中的da _ i IS x6 A M、 O S — ot P 可 X 2 Y E S 文件系统 映像 , E F2 支持 串口下 载 , 网络下载 , 提供大量 的命令 , 始地址 , 并 代码如下 : it rm i t o ) n a d 相 对于 M z 司的V v, 的使用更复杂 , i公 i i 它 i 但是可 以用来更方便地 调试 n ( i iv d 、 程序 。本文针对 A M架构 中的 s d 2 1 开发板的 U B o启动进行详 R m k4 0 — ot { g > d >b da 0.at HY _ D AM一 ; d- b 一 i rm[]t =P S S R 细分析。 sr 1 g > d >b d m[ .z d一 b - i r O s e=P S S A 2U— o t 动 过 程 分 析 . B o启 a ]i HY _ DR M— — IE lSZ ; 通常 , ot ae 是 严重 地依 赖于硬 件 而实 现的 , 多数 的 B o B l dr o 大 ot — rtr : e u n0 l dr o e启动 过程 分为两个阶段 , a 本文 以开发板 s d 2 1 为例 , U B o m k 40 其 — ot ) 属于两阶段 的B o od r 一阶段 的文件为 cu r 9 0 s r 和 ba / ot ae , l 第 p / m 2 tt . o r a /aS d () 3 获取 U B o操作命 令 — ot s mdk 41  ̄o e e. 2 0 wlv 1 S。 启 动 U B o 后 可 以在 串 口看 到 一 些 打 印 信 号 , 后 会 出 现 — ot 随 2 — ot 一阶段分析 .U B o 1 第 ”MD 4 0#” S K20 字符等待用户输人命令来启动 内核 , 因此 U B o启动内 — ot () 1硬件设备初始化 核 的主要 核心是通 过 U B o命令来 实现 , — ot 在函数 s r a bo 中进行 t _r ot a m t 依次完 成如下设 置 : C U的工作模式设 置为管理 模式 (v ) 关 相 应 的 f s_ i 0 nn — i 等 函数 后 , 入 m i l p0 过 s 将 P sc , l h i t 和 ad i t a n n0 进 a _ o 通 no = 闭 看 门狗 ( T HD G) 设置 P L , L ,C K的 比例 , 闭 MMU gt v Iot d) WA C O , C KHC KF L 关 , en ( om ” e t c 获取U B o命令 , b — ot 然后通过 rn cm a d s0 u_ o m n ( ) , 执行命 cc A HE等 等 。 令, 最终启动内核 。U B o 中的每个命令都通过 u B O M 宏来定 — ot _O TC D 义, 格式如下 : () 2 为加载 B ood r ot ae 的第二段代码 到 R M空间 l A U BOOT C 所 谓 R M空 间 , 是 初始 化 内存芯 片 , 它能 够使 用 。通过 在 A 就 使 MDn m , xrs eetbecm n , sg””e ” (a emaag, p aal, ma d” ae , l ) r o u hp 各项参数的意义 如下 : s rS t t 中调用 l l e i t a. o e l n 函数来设置控制器 , 得外接 S R M。 w v_ i 使 D A L wl v l i t o e e n 部分函数代码 如下 : i ① nm : a e 命令 的名字 , 注意 , 它不是 一个字符 串( 不要 用双引号 括

UBOOT移植1

UBOOT移植1

移植u-boot-2011.03到S3C2440(utu2440)方法与步骤###1. 配置和初步编译摘要:在2011年的时候,本人把u-boot-2011.03成功移植到了S3C2440(utu2440开发板)上。

通过这次移植使自己对u-boot有了较深刻的理解并掌握了u-boot 的移植。

对于未移植过u-boot的人来说,可能觉得很神秘,甚至觉得很难。

实际上,从整个移植过程来看,并未想像中那么难。

如果你接触过嵌入式linux的开发,我觉得移植u-boot并不是难事,至少没想象中的难。

reille博客作为技术分享、技术交流的个人博客,把自己移植u-boot-2011.03的过程、遇到的问题及解决方法作为一个系列专题分享出来。

希望对正在移植u-boot的人有用。

本节主要介绍u-boot-2011.03的配置和初步编译。

开发环境:主机:Window XP SP2;linux:VMware7.01+ubuntu9.10;目标板:扬创utu2440-F开发板交叉编译器:arm-linux-gcc4.3.2(一开始用的是编译内核的版本arm-linux-gcc3.4.1,但出现了软浮点问题,于是换成了现在用的版本,当然本人编译内核的时候还是用3.4.1版本)。

1. 下载uboot源码:u-boot-2011.03本来想移植最新版本u-boot-2011.06,但见其还在修改中,故改为移植u-boot-2011.03,其源码可从如下地址中下载:ftp://ftp.denx.de/pub/u-boot/ 2. 裁减和配置2.1 裁减:1). 删除u-boot-2011.03/arch目录下除arm目录外的所有目录;2). 删除u-boot-2011.03/arch/arm/cpu目录下除arm920tmulu外的所有目录;3). 删除u-boot-2011.03/arch/arch/arm/cpu/arm920t目录下除s3c24x0目录外的所有目录,注:文件不要删;4). 删除u-boot-2011.03/arch/arm/include/asm目录下除arch-s3c24x0目录外的所有arch-xxxx目录,注:文件不要删;5). 删除u-boot-2011.03/board目录下除samsung目录外的所有目录;6). 删除u-boot-2011.03/board/samsung目录下除smdk2410目录外的所有目录;7). 删除u-boot-2011.03/include/configs目录下除smdk2410.h文件外的所有头文件。

s3c2440芯片中文手册2

s3c2440芯片中文手册2

第二章处理器工作模式2.1概述S3C2440采用了非常先进的ARM920T内核,它是由ARM(Advanced RISC Machines) 公司研制的。

2.2 处理工作状态从程序员的角度上看,ARM920T可以工作在下面两种工作状态下的一种:● ARM 状态:执行32位字对齐的ARM指令● THUMB 状态:执行16位半字对齐的THUMB指令。

在这种状态下,PC 寄存器的第一位来选择一个字中的哪个半字注意;这两种状态的转换不影响处理模式和寄存器的内容。

2.3 切换状态进入THUMB 状态进入THUMB 状态,可以通过执行BX指令,同时将操作数寄存器的状态位(0位)置1来实现。

当从异常(IRQ,FIQ,UNDEF,ABORT,SWI等)返回时,只要进入异常处理前处理器处于THUMB状态,也会自动进入THUMB状态。

进入ARM状态进入ARM状态,可以通过执行BX指令,并且操作数寄存器的状态位(0位)清零来实现。

当处理进入异常(IRQ,FIQ,RESET,UNDEF,ABORT,SWI等)。

这时,PC值保持在异常模式下的link寄存器中,并从异常向量地址处开始执行处理程序。

存储空间的格式ARM920T将存储器空间视为从0开始由字节组成的线性集合,字节0到3中保存了第一个字节,字节4到7中保存第二个字,以此类推,ARM920T对存储的字,可以按照小端或大端的方式对待。

大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放2.4 指令长度指令可以是32位长度(在ARM状态下) 或16位长度(在THUMB状态) 。

数据类型ARM920T支持字节(8位),半字(16位) 和字(32位) 数据类型。

字必须按照4字节对齐,半字必须是2字节对齐。

2.5 操作模式ARM920T支持7种操作模式:● 用户模式(user模式),运行应用的普通模式● 快速中断模式(fiq模式),用于支持数据传输或通道处理● 中断模式(irq模式),用于普通中断处理● 超级用户模式(svc模式),操作系统的保护模式● 异常中断模式(abt模式),输入数据后登入或预取异常中断指令● 系统模式(sys模式),使操作系统使用的一个有特权的用户模式● 未定义模式(und模式),执行了未定义指令时进入该模式]外部中断,异常操作或软件控制都可以改变中断模式。

keil下的s3c2440启动代码分析

keil下的s3c2440启动代码分析

由于片面问题,所以可能会看起来不太美观,可以看附件中的内容。

ARM启动代码相当于我们电脑的BIOS,也就是ARM启动时对处理器的一些初始化及嵌入式系统硬件的一些初始化。

由于它直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。

一般包括:中断向量表,初始化存储器系统,初始化堆栈,初始化有特殊要求的断口,设备初始化,变量初始化等。

这几天对着RealView MDK-ARM中自带的启动代码研究了一下,遇到问题又对着数据手册和指令表看了一下,总算对S3C2440A的硬件有了一个大致的了解。

学习嵌入式系统重在系统,学习ARM只是为学习嵌入式系统铺路,懒猫比较笨可能在上系统之前要裸奔几天以强化以下对S3C2440A内部结构的了解。

把MDK自带的S3C2440A.S文件的注释发一下,这些是懒猫结合数据手册与ARM指令表理解了,可能会有错误,放在这里只是引导一下像我一样还没有入门的兄弟们,希望你们不要害怕ARM害怕嵌入式,老毛他老人家说的对,世上无难事,只怕有心人,ARM指令就那么多,看一遍不会就多看几遍,还有一定要学习看软件自带的帮助文件.;/*****************************************************************************/;/* S3C2440.S: Startup file for Samsung S3C440 */;/*****************************************************************************/;/* <<< Use Configuration Wizard in Context Menu >>> */ ;/*****************************************************************************/;/* This file is part of the uVision/ARM development tools. */ ;/* Copyright (c) 2005-2008 Keil Software. All rights reserved. */ ;/* This software may only be used under the terms of a valid, current, */;/* end user licence from KEIL for a compatible version of KEIL softwar e */;/* development tools. Nothing else gives you the right to use this softwa re. */;/*****************************************************************************/;下面这些参数是与CPSR状态寄存器有关;参数的由来:这里各个模式的参数是由寄存器CPSR的模式位设置M[4:0]得来的,;比如这里的用户模式,CPSR的M[4:0]设置为10000就是0x10。

S3C2440外部中断操作

S3C2440外部中断操作

1
20100831
编写:小龍
吧把 INTPND 中相应位置 1,所以同一时间只有一位是 1。也就是说前面的寄存 器置 1 是表示发生了,只有 INTPND 置 1,CPU 才会处理。 INTOFFSET :用来表示 INTPND 中哪一位置 1 了,好让你查询,普 通中断跳转时查询用。清除 INTPND、SRCPND 时自动清除。 4.各寄存器关系:
5
20100831 case 0x2000: if(rGPBDAT & 0x80) LED3_ON(); else LED3_OFF(); break; case 0x4000: if(rGPBDAT & 0x100) LED4_ON(); else LED4_OFF(); break; case 0x8000: LED_ON(); break; case 0x80000: LED_OFF(); break;
下面看图说明: 5.中断过程。 a 如果是不带子中断的内部中断:发生后 SRCPND 相应位置 1,如果没有被 INTMSK 屏蔽,那么等待进一步处理。 b 如果是带子中断的内部中断:发生后 SUBSRCPND 相应位置 1,如果没有被 INTSUBMSK 屏蔽,那么 SRCPND 相应位置 1,等待进一步处理,几个 SUBSRCPND 可能对应同一个 SRCPND,对应表如下: SRCPND SUBSRCPND INT_UART0 INT_RXD0,INT_TXD0,INT_ERR0 INT_UART1 INT_RXD1,INT_TXD1,INT_ERR1 INT_UART2 INT_RXD2,INT_TXD2,INT_ERR2 INT_ADC INT_ADC_S, INT_TC INT_CAM INT_CAM_C, INT_CAM_P INT_WDT_AC97 INT_WDT, INT_AC97

基于S3C2440嵌入式系统的U-Boot移植

基于S3C2440嵌入式系统的U-Boot移植
平 台不仅提供 了完整的底层 驱动 ,提供
了L i n u x 2 . 6 . 2 4下各外 围接 口的驱 动 ,还提供通 过 图
形接 口控制这个操作系统下各驱动的范例。
2 启 动方 式
¥ 3 C 2 4 4 0开 发 平 台 选 用 的 中 央 处 理 器 为 三 星 ¥ 3 C 2 4 4 0 A,主频为 4 0 0 MH z 。¥ 3 C 2 4 4 0支持 两种启动
The U. Bo o t Tr a ns p l a n t a t i o n Ba s e d o n S 3 C2 4 4 0
L I P e n g b o,J I N Wu y i n
( S c h o o l o f M e c h a n i c a l - E l e c t r o n i c E n g i n e e r i n g , L a n z h o u U n i v e r s i t y o f T e c h n o l o g y ,L a n z h o u G a n s u 7 3 0 0 5 0 ,C h i n a )
i z a t i o n,a n d l o a d s t h e k e r n e 1 .B a s e d o n ARM9 ¥ 3 C 2 4 4 0,U・ Bo o t w o r k i n g me c h a n i s m wa s a n a l y z e d ,t h e k e y c o d e a n d s t e p s f o r t r a n s —
体化 ,而且嵌入式 系统具 有高实时 l 生,吸引 了越来
越 多的研究人员投 入到 嵌入式 领域 的研 发工 作 中…。

2440超详细U-BOOT(UBoot介绍+H-jtag使用+Uboot使用)

2440超详细U-BOOT(UBoot介绍+H-jtag使用+Uboot使用)

凌FL2440超详细U-BOOT作业(UBoot介绍+H-jtag使用+Uboot使用)Bootloader是高端嵌入式系统开发不可或缺的部分。

它是在操作系统内核启动之前运行的一段小程序。

通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

现在主流的bootloader有U-BOOT、vivi、Eboot等。

本次作业先做Uboot的烧写吧。

希望通过这个帖子,能让更多的初学者朋友了解一些UBoot的知识,也希望高手朋友对我的不足予以斧正。

首先说一下什么是Uboot:U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。

从FAD SROM、8xxROM、PPCBOOT逐步发展演化而来。

其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

但是U-Boot不仅仅支持嵌入式Linu x系统的引导,当前,它还支持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项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。

S3C2440_LCD控制器中文手册

S3C2440_LCD控制器中文手册
S3C2440支持查找表作为彩色或者灰度等级映射的多种选择,保证为用户提供具有弹性的操作。 查找表就是一个调色板,它允许在彩色或者灰度等级上进行选择(假如在4级灰度下,可以选择16灰度 级别中的4级,假设在256色模式下,可以选择16级红色中的8种,16级绿色中的8种,16级蓝色中的 4种)。换句话说,在4级灰度模式,用户可以通过查找表选择16种灰度等级中的4种。在16级灰度模 式下,灰度等级不能被选择;在可能的16种灰度等级中,所有的16种灰度等级必须被选择。假设在 256色模式下,3位被分配用于红色,3位用于绿色,2位用于蓝色。这256色意味着这些颜色是由8种 红色,8种绿色,4种蓝色组合而成(8*8*4=256)。在彩色模式,这个查找表能被用作合适的选择。8 种红色等级能在16种可能的红色等级中被选择,8种绿色同样可以在16种可能的绿色种式,就没有象256色模式下的那种选择。 灰度模式操作
的GREENVAL[31:0]和BLUELUT寄存器中的BLUEVAL[31:0]作为可编程的查找表入口。与灰度等级 显示类似,在寄存器REDLUR中的8组或者4位域,换言之,REDVAL[31:28],REDLUT[27:24], REDLUT[23:20],,REDLUT[19:16], REDLUT[15:12], REDLUT[11:8],REDLUT[7:4]和REDLUT[3:0] 被分配给每个红色等级。4位(每个域)的可能组合有16种,并且每个红色等级应该被分配16种等级种 的1种。换句话说,用户可以通过该类型的查找表选择合适的红色等级。对于绿色,寄存器GREENLUT 中的GREENVAL[31:0]在查找表中的分配形式与红色是一样的。类似地,寄存器BLUELUT中的 BLUEVAL[31:0]在查找表中也是这样分配的。对于蓝色,2位组成4种颜色等级,与8种红色,绿色等 级是不一样的。 4096 色模式操作

Uboot在S3C2440上的移植

Uboot在S3C2440上的移植
Hn n a di g
E vrc n n i cme t
硬 拷 贝 到 内 部 B o nen lS AM, 被 映 射 到 n C O的 otItra R 且 GS
片 选 空 间 O 0 0 ,0 0 O 0 0 ,0 0; o ls 方 式 启 x 0 00 0 - x 8 00 0 N r Fah
U o t ¥ C 4 0上的移植 b o 在 3 24
卢 伟 ,潘 炼
( 汉 科 技 大 学 信 息 科 学 与 工 程 学 院 自动 化 系 , 北 武 汉 4 4 0 ) 武 湖 32 0
摘 要 :通 过 分 析 U o t的 文 件 结 构 及 其 启 动 流 程 , 细 给 出 了 Ub o 基 于 A M9 0 开 发 板 上 bo 详 ot在 R 2T
( eto no t n Si c n nier gWu a nvrt o c n ea dT c nlg, hn 4 4 0 ,hn ) D p.fIfr i ce e ad E g e n , h n U iesy fS i c n eh ooyWu a 3 20 C ia ma o n n i i e
的移 植 方 案 , 包括 编 译 、 试 全 过 程 , 终 能 够 在 U ot 令 方 式 下 加 载 映 像 文 件 , 成 Ln x内 核 与 调 最 bo 命 完 iu yf af 像 文 件 的 调 试 , 有 B olae 植 的 通 用 性 。 s映 具 ot dr移 o
关 键 词 :Ub o;¥ C 4 0 R 2 T o t 3 2 4 ;A M9 0 ;引 导 过 程 ;启 动 代 码
t e nie s l ha a tr o Bo to de r n p a a in. h u v ra c r ce f ol a r ta s lntto

u-boot-2015.04在tq2440上的移植(使用spl引导u-boot)

u-boot-2015.04在tq2440上的移植(使用spl引导u-boot)

u-boot-2015.04在tq2440上的移植(使⽤spl引导u-boot)使⽤⽅法:1、编译 make tq2440_defconfig make2、然后会在u-boot根⽬录下⽣成u-boot.bin,在spl⽬录下会⽣成u-boot-spl.bin,⽬前的分区是:u-boot-spl.bin(1M)u-boot.bin(1M)kernel(3M)rootfs(剩余)⾃⼰可以改动,在arch/arm/lib/crt0.S中: #if defined(CONFIG_SPL_BUILD)/* Read u-boot from Nandflash to SDRAM address $CONFIG_SYS_TEXT_BASE */ldr r0, =CONFIG_UBOOT_MTD_ADDR /*u-boot镜像在NandFlash中存储地址*/ldr r1, =CONFIG_SYS_TEXT_BASE /*u-boot在内存中的加载地址*/ldr r2, =CONFIG_UBOOT_LENGTH /*u-boot镜像的⼤⼩*/bl copy_code_to_sdramldr pc, =CONFIG_SYS_TEXT_BASE #elsebl board_init_f #endif3、⽬前⽀持NandFlash和DM9000。

4、为什么要⽤spl来引导u-boot? 对于tq2440,采⽤的是S3C2440,当从NandFlash启动时,上电时S3C2440内部固化的程序⾃动把NandFlash的前4KB 程序拷贝到⽚内SRAM,然后执⾏IRAM中的程序,同时要保证这4KB中的程序是位置⽆关码,在这4KB程序完成了内存的初始化,栈的设置,NandFlash的初始化,将u-boot镜像从NandFlash中拷贝到内存中,将PC跳转到内存中执⾏。

随着u-boot的更新,在u-boot的前4K已经⽆法完成上⾯这些事,在前4KB会执⾏位置相关码,导致u-boot⽆法正常运⾏。

u-boot制作编译过程ok

u-boot制作编译过程ok

2.1.5 UBOOT的制作过程1.第一步:修改makefile,目的告诉makefile导入的工程名是什么。

1)在/1niuedu/u-boot-1.3.4的Makefile的2494行进行COPY后进行修改,范例如下:将smdk2410_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 复制并修改为:edu2440_config: unconfig@$(MKCONFIG) $(@:_config=) arm arm920t edu2440 NULL s3c24x02)交叉编译143 144修改为(很多u-boot为默认,一般不修改,如不同需要修改)ifeq ($(ARCH),arm)CROSS_COMPILE = arm-linux-说明:在顶层Makefile(u-boot文件中)中为开发板添加新的配置选项,使用已有的配置项目为例复制修改如下代码:Smdk2410_config:unconfig(2497行)(告诉makefile导入的工程名是怎么设置的) @./mkconfig$(@:_config=)arm arm 920t smdk2410 NULL s3c24x0 Arm:CPU架构Arm920t:CPU类型,对应cpu/arm920t目录xyd2440:开发板型号,对应board/xyd2440NULL:开发者s3c2440:片上系统(SOC)2.第二步:配置开发板选项,修改board中相应开发板选项1)在board目录中将smdk2410复制,然后修改名字为edu2440。

2)在board/edu2440目录下将smdk2410.c修改为edu2440.c(可能运行不了,那么再做如下修改)将E:\信盈达常用资料库\嵌入式配套资料\mini2440-20100717光盘资料\linux\bootloader\u-boot-1.1.6\board\open24x0里面的:boot_init.c,open24x0.c两个文件copy到board-edu2440文件下面。

基于S3C2440的Uboot分析与移植

基于S3C2440的Uboot分析与移植
运 行地 址 改为 .O O 0 ,0 0 = x 0 00 0 。跳线 选择 从 No ls r ah F












UB o ∞81 f g ‘21 -0 t2 0(u I 9 1一明:1“) 2:
¨ I o n Rl ∞ B J w I ’ S f d 日 I 8f l :D  ̄ (
_ _

=0嗍 哪明 =0帅 x 嗍 :0帅
帅帅: I C NI e etd b o r r e .I i s n trc M- e 1 I OE C O s lc e yb ad d b s i o e MI d R N E l d! d
2 6M B s i I : sr a n eil 0t u : sr a eil Er r : sr a eil F 2 ‘ *一 L ‘B
源 代码 。U o t 目录下共有 3 b o根 0个子 目录 ,可 以分为
4类 :
2 2 产 品应用 Pou t pi 2 rdcApl d e
2 1 年 第 2 卷 第 5期 02 1
ht:ww . Sa r. t l we -. gc pl ・ o n
计 算 机 系 统 应 用
墙, 重启 xn t. i d e d服务 ,开放 T 服务 。在/ cep r 邱 e / ot t x s
结 构表 示一 个 Na dFah芯 片 。这个 结 构体 中包 含 n ls
了 关于 Na dFah的地 址信 息 、读 写方 法 、E C模 n ls C
式 、硬 件控 制 等 一 系列 低 层机 制 【,因 此新 驱动 的 5 】 编 写将 变得 更 加 方便 ,只 需修 改 该 结构 体 的相应 成

S3C2440启动流程

S3C2440启动流程

我想请问下。

主板上的DL1灯是在什么阶段点亮的?[2010-6-13 下午02:40:44] michael: 早上打电话给你,还怕打扰你休息了。

原来你们也需要上班。

呵呵[2010-6-13 下午02:40:58] Zhilong Wu: 应该在uboot 里.一开机的时候.[2010-6-13 下午02:42:00] michael: 我们现在有些板启动不了。

发现UART口没有U-BOOT输出信息。

DL1灯不亮[2010-6-13 下午02:44:03] Zhilong Wu: 每个flash 芯片,烧uboot的时候,有没有重新读出一遍,做检查. 确保uboot 是烧好的[2010-6-13 下午02:44:05] michael: DL1灯是UBOOT来控制的还是什么模块控制的?[2010-6-13 下午02:44:51] Zhilong Wu: uboot , 通过cpu的io[2010-6-13 下午02:47:44] michael: 烧写UBOOT的时候,应该是怎样的流程?我们现在是erase--->blank_check-->program---->verify[2010-6-13 下午02:48:07] Zhilong Wu: 这样也可以[2010-6-13 下午02:49:42] michael: DL1有几个阶段:[2010-6-13 下午02:50:12] michael: 不亮,常亮,慢闪,快速[2010-6-13 下午02:50:32] Zhilong Wu: 在uboot 就是一个状态.[2010-6-13 下午02:50:46] Zhilong Wu: 长亮.[2010-6-13 下午02:51:12] Zhilong Wu: 能闪的时候,表示uboot 没问题.起来wince 了[2010-6-13 下午02:51:21] michael: 噢。

使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法

使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法

使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法1. 简要说明JLink的调试功能、烧写Flash的功能都很强大,但是对于S3C2410、S3C2440的Flash 操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。

本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。

原理为:JLink可以很方便地读写内存、启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。

2. 操作步骤2.1 连接硬件对于大多数的S3C2410、S3C2440开发板而言,它们所用的JTAG接口一般有3种(如图1所示),其中前两种用得比较多。

图1. 三种常用的JTAG接口但是市面上的JLink,大多只支持第3种JTAG接口,所以需要用到转接板。

或者直接使用JLink的变种,如图2所示的两种改进版JLink:图2. 两种改进版JLink以mini2440为例,如图3接好JTAG线。

图3. 改进版JLink与mini2440的连接2.2 运行J-Link commanderJ-Link commander启动界面如图4所示,(如果没有发现检测到CPU,就在里面执行usb 命令连接JLink,再执行r命令识别处理器)。

图4. J-Link commander启动界面2.3 下载运行特制的程序对于S3C2410、S3C2440处理器,它们内部有4K的SRAM,当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。

对于S3C2410、S3C2440开发板,一般都外接64M的SDRAM。

SDRAM能被使用之前,需要经过初始化。

所以,先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载一个比较大的程序,比如u-boot到SDRAM去动行,它将实现对Nor、Nand Flash的操作。

一步步教你移植uboot(超精华版)

一步步教你移植uboot(超精华版)
#cp include/configs/smdk2410.h include/configs/gec2440.h 3)、测试是否能配置和编译成功
#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(带DMA网卡)移植到扬创F移植详细步骤

uboot(带DMA网卡)移植到扬创F移植详细步骤

uboot1.3.4(带DM9000A网卡)移植到扬创2440-F的移植详细步骤扬创utu2440板子uboot1.3.4(带DM9000A网卡)的移植详细步骤注明:本篇文章,绝大部分都是来源与tekkaman的移植U -Boot.1.3.1到S3C244和S3C2410,原文链接/u1/34474/showart.php?id=487416,只是因为uboot1.3.4与uboot1.3.1有部分不同,结合自己的调试经历,写下此篇,希望新手不会像我这样曲折。

一、在U-Boot中建立自己的开发板类型,并测试编译。

我为开发板取名叫: utu24401 进入U-Boot目录,修改Makefile[root@localhost u-boot-1.3.4]$ vim Makefile#为utu2440建立编译项smdk2410_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0utu2440_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t utu2440 NULL s3c24x0各项的意思如下:arm: CPU的架构(ARCH)arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。

utu2440: 开发板的型号(BOARD),对应于board/utu2440/目录,我将smdk2410覆盖了NULL: 开发者/或经销商(vender)。

s3c24x0: 片上系统(SOC)。

设置环境变量[root@localhost u-boot-1.3.4]# vim /root/.bash_profile在PATH一行后添加/usr/local/arm/3.3.2/bin:PATH2 在/board子目录中建立自己的开发板utu2440目录[root@localhost u-boot-1.3.4]$ cd board[root@localhost board]# cp -raf smdk2410/ utu2440[root@localhost board]# cd utu2440[root@localhost utu2440]# mv smdk2410.c utu2440.c还要记得修改自己的开发板tekkaman2440目录下的Makefile文件,不然编译时会出错:[root@localhost utu2440]# vim MakefileCOBJS := utu2440.o flash.o3 在include/configs/中建立配置头文件[root@localhost u-boot-1.3.4]#cp include/configs/smdk2410.h include/configs/utu2440.h4 测试编译能否成功1)配置[root@localhost u-boot-1.3.4]#make tekkaman2440_configConfiguring for utu2440 board...注:(1) 如果出现:[root@localhost u-boot-1.3.4]# make utu2440_config Makefile:2497: *** 遗漏分隔符(您的意思是用TAB 代替8 个空格?)。

S3C2440学习四(如何使用Jlink)

S3C2440学习四(如何使用Jlink)

S3C2440学习四(如何使用Jlink)下载程序:1、连上Jlink 的USB 到PC 上。

连接JTAG 到GT2440 开发板上,选择从Nor Flash 启动。

2、板子上电后,启动J-Flash ARM。

File -> New Project 新建一个工程,然后去配置Options-> Project Settings->Target Interface 中,为了提升速度,把Jtag Speed After Init 设置为第三项,选择2000KHz。

3、在Flash 选项中,要正确输入BaseAddress:00000000,Organization:16 Bits X 1 chip(s)。

并勾选Automatically detect flash memory。

(地址都是16 进制,下同)4、在CPU 选项中,设置Core 为ARM9,对齐方式为Little endian,勾选Check core ID,ID 为0x0032409D,勾选Use target RAM (fast),Addr:400000000 4KB;其中启动J-Link Commander 在其打印输出的信息列表中可以查看core ID。

5、File ->Open 去打开你要烧写的文件u- boot_W35.bin,在跳出的对话框中,写入要加载到的地址0。

6、Target 中,先Connect,JFlash 会自动去探测出的你的Nor Flash。

Connect 之后,你可以点击Show CFI Info 查看信息。

正确的话,然后就用Erasesectors。

此时可能会提示擦除失败,不过没关系。

然后再Program。

以后每次烧写Nor flash 都要先擦除然后再编程下载。

对于烧写出错误,要多擦除几次,再烧录。

如果不想做前四项的设置,可以点File->Open Project 选择本目录samsungs3c2440.jflash。

U-Boot在S3C2440上的分析与移植

U-Boot在S3C2440上的分析与移植
关键 词 :嵌 入 式 系统 ;B o la e ;¥ C 4 0;U B o ot dr 3 24 o —o t
Ana y i nd Tr n pl n ato o bo to t l ssa a s a t in fU・ o n he¥ C2 4 3 40
SH ILe i
( l g f e t nc n no mai n Xia oye h i ie s y Xi n7 0 4 , ia Col eo cr isa dI fr t , ’nP ltc ncUnv ri , ’ 1 0 8 Chn ) e El o o t a Ab ta t Bo t a e (o to d r i a otn at f ikn pteo ea n s m n ad r lt r , d sr c: ol d r b o a e) s li ra t r o n igu p rt gs t a dh r waepafm a o l lmp p l h i ye o n
言实现 ,阶段 2用 C语言实现。将依赖于处理器体系
结构的汇编语言部分和通 用的 C语言部分分开 ,这样 有利于 B o L a e 能够支持尽可 能多的嵌入式处理 o to d r
系统 的软 硬件环境 带到一 个合适 的状态 , 以便 为最终
调用操作 系统内核 准备好正确 的环境[。 B o la e 1 ot dr 1 o 是 紧密依赖 于硬件 而实现 的。 别是在嵌入式 系统 中, 特
不 同体 系结构 的处理器 需要不 同 B o la e , o t dr o 即使是
as mp ra tf re b d e y tm f s fwae d v lp e t lo i o n o m e d d s se o o t r e eo m n .Th sp p rd s rb sc aa trsis o t i a e e c e h ce t fa i r i c
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

器外,移植所要注意的是 NAND FlASH 控制器的寄存器有较大的变化、芯片的时钟频率控制寄存器(芯片 PLL 的寄存器)有
一定的变化。其他寄存器基本是兼容的。
3. 你开发板的 boot 方式是什么,开发板上电以后是怎么执行的。
一般来说三星的开发板有三种启动方式:nand、nor、ram。
具体用那一种方式来启动决定于 CPU 的 0M[0:1]这两个引脚,具体请参考 S3C2440 的 datasheet
器 nandboot 原理)。我是在运行失败后,利用 mini2440 的 4 个 LED 调试发现 u-boot 根本没有完成
自我拷贝,然后看了 uboot 根目录下的 System.map 文件就可知道原因。
解决办法其实很简单:
将__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD)) 改为__LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS)) 7. 然后说一下跳转指令。ARM 有两种跳转方式。 (1)mov pc <跳转地址〉
还有要补充一下 LDR,MOV,LDR 伪指令的区别。
LDR R0,0x12345678 //把地址 0x12345678 存放的内容放到 R0 里面
MOV R0,#x
//把立即数 x 放到 R0 里面,x 必须是一个 8 bits 的数移到偶数次得到的数。
LDR
6.
在R移0,=植0x1u2-3b45o6o7t8-1.3/./把3 立以即上数版0x本123的45时678候放要到 注R0 意里面:
[uboot@localhost board]$ mkdir qljt qljt/qljt2440
[uboot@localhost board]$ cp -arf sbc2410x/* qljt/qljt2440/
[uboot@localhost board]$ cd qljt/qljt2440/
[uboot@localhost qljt2440]$ mv sbc2410x.c qljt2440.c [uboot@localhost qljt2440]$ ls 可以看到下面这些文件:
的 RAM 映射到
S3C2440 的 0 地址,从 0 地址开始执行。这 4K 的内容主要负责下面这些工
作:初始化中断矢量、设定 CPU 的工作
模式为 SVC32 模式、屏蔽看门狗、屏蔽中断、
初始化时钟、把整个 u-boot 重定向到外部 SDRAM、跳到主要的 C 函
数入口。
nor: 早期的时候利用 nor-flash 启动的方式比较多,就是把 u-boot 烧写到 nor-flash 里面, 的 0 地址,上电从 0 地址开始执行。 ram: 直接把 u-boot 放到外部 SDRAM 上跑,这一般 debug 时候用到。 4. u-boot 程序的入口地址问题
start_armboot)移到 PC 寄存器里面,start_armboot 是一个函数地址,在编译的时候给分配了一个绝对地址,
所以上面语句实际上是完成了一个绝对地址的跳转。而我一直不明白的为什么在 start.S 里面有很多 BL,B
跳转语句都没有跳出 4Ksteppingstone,原因是他们都是相对于 PC 的便宜的跳转,而不是绝对地址的跳转。
config.mk flash.c lowlevel_init.sMakefile qljt2440.c u-boot.lds
[uboot@localhost qljt2440]$ vim Makefile
COBJS := qljt2440.o flash.o 5. 在 include/configs/ 中建立开发板所需要的配置头文件
.text
:
{
cpu/arm920t/start.o
*(.text)
}
(.text)
. = ALIGN(4); .rodata : { *(.rodata) }
. = ALIGN(4); .data : { *(.data) }
. = ALIGN(4); .got : { *(.got) }
__u_boot_cmd_start = .; .u_boot_cmd : { *(.u_boot_cmd) } __u_boot_cmd_end = .;
/* turn off the watchdog */
#if defined(CONFIG_S3C2400)
# define pWTCON 0x15300000
.text
:
{
cpu/arm920t/start.o (.text)
*(.text)
}
看,放在 text 段的第一个文件就是 start.c 编译后的内容,而 start.c 中的第一个函数就是
_start,所以 _start 应该是放在 text 段的起始位置,因此说_start=TEXT_BASE 也不为过。
直接把 nor-flash 映射到 S3C2440
要理解程序的入口地址,自然想到的是连接文件,首先看看开发板相对于某个开发板的连接文件"/board/你的开发板
/u-boot.lds",看一个 2410 的例子:
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
[uboot@localhost qljt2440]$ cd ../../..
[uboot@localhost u-boot-1.3.4]$ cp include/configs/sbc2410x.h include/configs/qljt2440.h 6. 测试交叉编译能否成功 (1)配置
[uboot@localhost u-boot-1.3.4]$ make qljt2440_config
一.预备知识:
移植 u-boot-1.3.4 到 S3C2440
1. 首先,U-Boot1.3.4 还没有支持 s3c2440,移植仍是用 2410 的文件稍作修改而成的。
2. 2440 和 2410 的区别:
2440 和 2410 的区别主要是 2440 的主频更高,增加了摄像头接口和 AC‘97 音频接口;寄存器方面,除了新增模 块的寄存
nand:对于 2440 来说,CPU 是不给 nand-flash 分配地址空间的,nand-flash 只相当于 CPU 的一个外设,S3C2440 做了一个从
nand-flash 启动的机制。开发板一上电,CPU 就自动复制
nand-flash 里面的前 4K-Bytes 内容到 S3C2440 内部集成的 SDRAM,然后把 4K 内容所在
qljt2440_config : 这个名字是将来你配置板子时候用到的名字,参见 make qljt2440_config 命令。 arm: CPU 的架构(ARCH) arm920t: CPU 的类型(CPU),其对应于 cpu/arm920t 子目录。
qljt2440: 开发板的型号(BOARD),对应于 board/qljt/qljt2440 目录。 qljt: 开发者/或销商(vender)。 s3c24x0: 片上系统(SOC)。
5. 一直不明白的 U-BOOT 是怎样从 4Ksteppingstone 跳到 RAM 中执行的,现在终于明白了。关键在于:
ldr pc, _start_armboot
_start_armboot: .word start_armboot
这两条语句,ldr pc, _start_armboot 指令把_start_armboot 这个标签的地方存放的内容(也即是
Configure for qljt2440 board… (2)测试编译
[uboot@localhost u-boot-1.3.4]$ make 详细信息如下: 编译信息最后两行:
arm-linux-objcopy --gap-fill=0xff -O srec u-boot u-boot.srec
在 u-boot1.3.3 及以上版本 Makefile 有一定的变化,使得对于 24x0 处理器从 nand 启动的遇到问
题。也就是网上有人说的:无法运行过 lowlevel_init。其实这个问题是由于编译器将我们自己添加的用
于 nandboot 的子函数 nand_read_ll 放到了 4K 之后造成的(到这不理解的话,请仔细看看 24x0 处理
arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin 到此交叉编译成功。 三.开始针对自己的开发板移植 1. 修改/cpu/arm920t/start.S 1.1 修改寄存器地址定义
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
2. 进入 u-boot 目录修改 Makefile (你要编译 u-boot 那当然少不了配置啦)
$cd u-boot-1.3.4
[uboot@localhost u-boot-1.3.4]$ vim Makefile 修改内容如下:
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD)) 改为
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) }
_end = .;
} (1) 从 ENTRY(_start)可以看出 u-boot 的入口函数是_start,这个没错 (2) 从. = 0x00000000 也许可以看出_start 的地址是 0x00000000,事实并不是这样的,这里的 0x00000000 没效,在连接的时候最 终会被 TETX_BASE 所代替的,具体请参考 u-boot 根目录下的 config.mk. (3) 网上很多说法是 _start=TEXT_BASE,我想这种说法也是正确的,但没有说具体原因。 本人的理解是这样的,TEXT_BASE 表示 text 段的起始地址,而从
相关文档
最新文档