uboot 的移植过程
1. 工作用户
uboot
2. uboot 版本 1.1.4
3. 工具链 2.95.3
步骤
我们为开发板取名叫: crane2410, 并在 uboot 中建立自己的开发板类型
修改 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=armlinux
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 |
0x1 |
/* |
9bit */ |
||||
#define B7_MT #define #define |
0x3 0x1 0x1 |
/* /* /* |
SDRAM 3clk */ 9bit */ |
||||
/* REFRESH parameter #define |
*/ |
0x1 |
/* |
Refresh enable |
*/ |
||
#define #define #define #define #define |
0x0 0x0 0x3 0x2 1113 |
/* /* /* /* /* |
CBR(CAS before 2clk */ 7clk */ 3clk */ period=15.6us, |
RAS)/Auto HCLK=60Mhz, |
|||
/**************************************/
_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=armlinux
把 u-boot
烧入 flash
1. 通过仿真器烧入 uboot
通过仿真器 uboot 烧写到 flash 中就可以从 NAND flash 启动了. 2. 通过 JTAG 接口,由工具烧入
flash
uboot 的移植过程的更多相关文章
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- uboot的启动过程-FDT
uboot的启动过程,省略了汇编部分之后,第一个执行函数是board_init_f(),在uboot/common目录的board_f.c中 board_init_f函数,首先初始化了全局数据 # ...
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...
- 18.17 U-Boot+内核移植
18.17.1 移植U-Boot-2012.04.08 1.下载.建立source insight工程.编译.烧写.如果无运行分析原因. $ .tar.bz2 $ cd u-boot- $ make ...
- linux内核移植过程问题总结
移植内核:2.6.30.4内核根目录下的.config为当前配置内核的且已经配置好的内核配置.make zImage以此为依据配置内核的过程:cd linux-2.6.30.4(进入Linux根目录) ...
- UBOOT启动内核过程
1.摘要 (1).启动4步骤第一步:将内核搬移到DDR中第二步:校验内核格式.CRC等第三步:准备传参第四步:跳转执行内核(2).涉及到的主要函数是:do_bootm和do_bootm_linux(3 ...
- 从零开始之uboot、移植uboot2017.01(二、从入口分析流程)
原创: To_run_away 从零开始学linux 本节的开始之前,先看一下uboot的链接脚本. 一.链接脚本 /* * Copyright (c) 2004-2008 Texas Instrum ...
- 【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 ...
随机推荐
- 28 利用平面对应关系求解RT空间转换矩阵
0 引言 问题背景:给定CAD模型与点云的情况下,基于CAD比对实现对实测点云的尺寸测量是三维测量技术中一种常用的思路.该思路的关键问题在于需要精确求解CAD模型与点云之间的空间转换矩阵.采用ICP( ...
- NX二次开发-UFUN按类型遍历名字获取Tag函数UF_OBJ_cycle_by_name_and_type
NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_obj.h> #include <u ...
- NX二次开发-获得制图中对象的坐标点UF_DRF_ask_origin
#include <uf.h> #include <uf_ui.h> #include <uf_drf.h> #include <uf_obj.h> # ...
- 笨办法学Python记录--习题15-17 开始读写文件啦
习题15 - 17 打开并读流程: from sys import argv script,filename = argv txt = open(filename) print "Here' ...
- Photon Server的Unity3D客户端配置
Photon Server与Unity3D的交互分为3篇博文实现 (1)Photon Server的服务器端配置 (2)Photon Server的Unity3D客户端配置 (3)Photon Ser ...
- GoF著作中未提到的设计模式(2):Interceptor
转:http://www.cnblogs.com/west-link/archive/2011/06/22/2086591.html 拦截器模式为我们提供了一种拦截方法调用或消息的途径,整个过程是自动 ...
- [转]如何升级gcc版本
首先需要准备需要材料:gcc4.4.2版需要安装gmp4.2.0+和mpfr2.3.0+,到GMP的网站(http://gmplib.org/)上下载gmp-4.3.1.tar.gz 和mprf的网站 ...
- How to Add Swap on CentOS
About Linux Swapping Linux RAM is composed of chunks of memory called pages. To free up pages of RAM ...
- POJ-1836-Alignment-双向LIS(最长上升子序列)(LIS+LSD)+dp
In the army, a platoon is composed by n soldiers. During the morning inspection, the soldiers are al ...
- nginx代理配置备份
补充: 代理对文件大小的限制, server {client_max_body_size 100M;listen 9096;server_name gate.chaohuoyy.com; locati ...