1. 工作用户

uboot

2. u­boot 版本 1.1.4

3. 工具链 2.95.3

步骤

我们为开发板取名叫: crane2410, 并在 u­boot 中建立自己的开发板类型

修改 Makefile

[uboot@localhost uboot]#vi Makefile

#为 crane2410 建立编译项 crane2410_config : unconfig

@./mkconfig $(@:_config=) arm arm920t crane2410 NULL s3c24x0

各项的意思如下:

arm:              CPU 的架构(ARCH)

arm920t:      CPU 的类型(CPU),其对应于 cpu/arm920t 子目录。 crane2410: 开发板的型号(BOARD),对应于 board/crane2410 目录。 NULL:          开发者/或经销商(vender)。

s3c24x0:      片上系统(SOC)。

board 子目录中建立 crane2410

[uboot@localhost uboot]#cp ­rf board/smdk2410 board/crane2410 [uboot@localhost uboot]#cd board/crane2410

[uboot@localhost crane2410]#mv smdk2410.c crane2410.c

include/configs/中建立配置头文件

[uboot@localhost crane2410]#cd ../..

[uboot@localhost uboot]#cp include/configs/smdk2410.h include/configs/crane2410.h

指定交叉编译工具的路径

[uboot@localhost
uboot]#vi ~/.bashrc

export
PATH=/usr/local/arm/2.95.3/bin:$PATH

测试编译能否成功

[uboot@localhost
uboot]#make crane2410_config [uboot@localhost uboot]#make
CROSS_COMPILE=arm­linux­

3.2.6 修改 lowlevel_init.S 文件

依照开发板的内存区的配置情况, 修改 board/crane2410/lowlevel_init.S 文件,我的更改如下:

#include <config.h>

#include <version.h>

#define BWSCON 0x48000000

/* BWSCON */

#define DW8                (0x0)

#define DW16               (0x1)

#define DW32               (0x2)

#define WAIT               (0x1<<2)

#define UBLB               (0x1<<3)

#define B1_BWSCON          (DW16)

#define B2_BWSCON          (DW16)

#define B3_BWSCON          (DW16
+ WAIT + UBLB)

#define B4_BWSCON          (DW16)

#define B5_BWSCON          (DW16)

#define B6_BWSCON          (DW32)

#define B7_BWSCON          (DW32)

/* BANK0CON */

#define B0_Tacs            0x3    /* 
0clk */

#define B0_Tcos            0x3    /*  0clk */

#define B0_Tacc            0x7    /* 14clk */

#define B0_Tcoh            0x3    /*  0clk */

#define B0_Tah             0x3    /* 
0clk */

#define B0_Tacp            0x3

#define B0_PMC             0x3    /* normal
*/

/* BANK1CON */

#define B1_Tacs            0x3    /* 
0clk */

#define B1_Tcos            0x3    /*  0clk */

#define B1_Tacc            0x7    /* 14clk */

#define B1_Tcoh            0x3    /*  0clk */

#define B1_Tah             0x3    /* 
0clk */

#define B1_Tacp            0x3

#define B1_PMC             0x0

#define B2_Tacs            0x0

#define B2_Tcos            0x0

#define B2_Tacc            0x7

#define B2_Tcoh            0x0

#define B2_Tah             0x0

#define

#define

B2_Tacp B2_PMC

0x0 0x0

#define

B3_Tacs

0x0

/*

0clk

*/

#define

B3_Tcos

0x3

/*

4clk

*/

#define

B3_Tacc

0x7

/*

14clk

*/

#define

B3_Tcoh

0x1

/*

1clk

*/

#define

B3_Tah

0x0

/*

0clk

*/

#define

B3_Tacp

0x3

/*

6clk

*/

#define

B3_PMC

0x0

/*

normal

*/

#define

B4_Tacs

0x0

/*

0clk

*/

#define

B4_Tcos

0x0

/*

0clk

*/

#define

B4_Tacc

0x7

/*

14clk

*/

#define

B4_Tcoh

0x0

/*

0clk

*/

#define

#define

#define

B4_Tah

B4_Tacp B4_PMC

0x0

0x0 0x0

/*

/*

0clk

normal

*/

*/

#define

B5_Tacs

0x0

/*

0clk

*/

#define

B5_Tcos

0x0

/*

0clk

*/

#define

B5_Tacc

0x7

/*

14clk

*/

#define

B5_Tcoh

0x0

/*

0clk

*/

#define

#define

#define

B5_Tah

B5_Tacp B5_PMC

0x0

0x0 0x0

/*

/*

0clk

normal

*/

*/

#define

#define

B6_MT

B6_Trcd

0x3 0x1

/*

SDRAM

*/

#define
B6_SCAN

0x1

/*

9bit */

#define B7_MT

#define
B7_Trcd

#define
B7_SCAN

0x3 0x1 0x1

/*

/*

/*

SDRAM
*/

3clk */ 9bit */

/* REFRESH parameter

#define
REFEN

*/

0x1

/*

Refresh enable

*/

#define
TREFMD

#define
Trp

#define
Trc

#define
Tchr

#define
REFCNT

0x0

0x0 0x3 0x2 1113

/*

/*

/*

/*

/*

CBR(CAS before

2clk */ 7clk */ 3clk */

period=15.6us,

RAS)/Auto
refresh */

HCLK=60Mhz,
(2048+1-15.6*60)
*/

               

/**************************************/

_TEXT_BASE:

.word  TEXT_BASE

.globl
lowlevel_init lowlevel_init:

/* memory control configuration */

/* make r0 relative the current
location so that it */

/* reads SMRDATA out of FLASH rather than memory ! */ ldr   r0, =SMRDATA

ldr    r1, _TEXT_BASE
sub   r0, r0, r1

ldr    r1, =BWSCON   /* Bus Width Status Controller */ add          r2, r0, #13*4

0:

ldr     r3, [r0], #4

str     r3, [r1], #4

cmp     r2, r0

bne     0b

/* everything
is fine now */ mov    pc,
lr

.ltorg

/* the literal pools origin */

SMRDATA:

.word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(
B7_BWSCON<<28))

.word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))

.word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))

.word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))

.word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))

.word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))

.word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))

.word
((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))

.word
((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))

.word
((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)

.word 0x31

.word 0x30

.word 0x30

UBOOT 的 Nand Flash 移植

UBOOT 的 Nand Flash 支持见第七部分的第 3 节.

 重新编译
u-boot

[uboot@localhost
uboot1.1.4]make CROSS_COMPILE=arm­linux­

u-boot
烧入 flash

1. 通过仿真器烧入 u­boot

通过仿真器 u­boot 烧写到 flash 中就可以从 NAND flash 启动了. 2. 通过 JTAG 接口,由工具烧入
flash

uboot 的移植过程的更多相关文章

  1. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  2. uboot的启动过程-FDT

    uboot的启动过程,省略了汇编部分之后,第一个执行函数是board_init_f(),在uboot/common目录的board_f.c中   board_init_f函数,首先初始化了全局数据 # ...

  3. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...

  4. OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...

  5. 18.17 U-Boot+内核移植

    18.17.1 移植U-Boot-2012.04.08 1.下载.建立source insight工程.编译.烧写.如果无运行分析原因. $ .tar.bz2 $ cd u-boot- $ make ...

  6. linux内核移植过程问题总结

    移植内核:2.6.30.4内核根目录下的.config为当前配置内核的且已经配置好的内核配置.make zImage以此为依据配置内核的过程:cd linux-2.6.30.4(进入Linux根目录) ...

  7. UBOOT启动内核过程

    1.摘要 (1).启动4步骤第一步:将内核搬移到DDR中第二步:校验内核格式.CRC等第三步:准备传参第四步:跳转执行内核(2).涉及到的主要函数是:do_bootm和do_bootm_linux(3 ...

  8. 从零开始之uboot、移植uboot2017.01(二、从入口分析流程)

    原创: To_run_away 从零开始学linux 本节的开始之前,先看一下uboot的链接脚本. 一.链接脚本 /* * Copyright (c) 2004-2008 Texas Instrum ...

  9. 【cocos2d-x-3.1.1列2】cocos2d-x3.1.1 安卓移植过程

    Evernote的链接: http://app.yinxiang.com/l/AAXeIjFsjjFAC68i6hUQkiwFFZg3Maz-AkA/ cocos2d-x 3.1.1  win移植到a ...

随机推荐

  1. BZOJ 4817: [Sdoi2017]树点涂色(lct+线段树)

    传送门 解题思路 跟重组病毒这道题很像.只是有了一个询问\(2\)的操作,然后询问\(2\)的答案其实就是\(val[x]+val[y]-2*val[lca(x,y)]+1\)(画图理解).剩下的操作 ...

  2. NX二次开发-UFUN返回当前图纸页的Tag函数UF_DRAW_ask_current_drawing

    除了UF_DRAW_ask_current_drawing这个函数外,用UF_DRAW_ask_drawings也可以获得tag.UF_DRAW_ask_current_drawing只能获得当前这一 ...

  3. centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)

    目录 目录 前言 集群详情 环境说明 安装前准备 提醒 一.创建TLS证书和秘钥 安装CFSSL 创建 CA (Certificate Authority) 创建 CA 配置文件 创建 CA 证书签名 ...

  4. 剑指offer——17数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   保证base和exponent不同时为0   一般解法: 直接相乘: cl ...

  5. 【工具原则】5W2H法学习笔记

    目录 问题描述 事件(原因)描述 任务描述 方案决策 小结 5W2H法又叫七问分析法,是二战中美国陆军兵器修理部首创.按事务构成要素,从规范的七个方面思考,避免疏忽遗漏. 可以应用在:问题描述.事件描 ...

  6. SpringCloud学习笔记《---05 Zuul---》基础篇

  7. SPN扫描利用

    一.利用环境: 在内网渗透的信息收集中,机器服务探测一般都是通过端口扫描去做的,但是有些环境不允许这些操作.通过利用 SPN 扫描可快速定位开启了关键服务的机器,这样就不需要去扫对应服务的端口,有效规 ...

  8. (转)C++ 11 多线程--线程管理

    说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...

  9. springboot EL @Value

    一,springboot中 看一下代码: @Controller public class HelloController { //读取枚举值 @Value("#{T(com.example ...

  10. C++: string<-->char

    1. char*.char[] 与 std::string 之间的区别: char*是一个指向字符的指针,是一个内置类型.可以指向一个字符,也可以表示字符数组的首地址(首字符的地址).我们更多的时候是 ...