uboot移植法

1. Workユーザー

uboot

2. ubootバージョン1.1.4

3.ツールチェーン2.95.3

 

ステップ

私たちは、開発ボードとして名前を取る:crane2410、とubootで開発ボードの独自のタイプを作成します

 

 Makefileを変更

[uboot @ localhostのuboot] #viのMakefile

crane2410を確立するcrane2410_config#コンパイラ項目:unconfigの

。@ / mkconfig $(@:_コンフィグ=)腕ARM920T crane2410 NULL s3c24x0

以下の意味:

アーム:CPUアーキテクチャ(ARCH)

ARM920T:CPU / ARM920Tサブディレクトリに対応するタイプ(CPU)CPU、。crane2410:モデル開発ボード(ボード)、ボード/ crane2410ディレクトリに対応します。NULL:開発者/または分配(ベンダー)。

s3c24x0:システム・オン・チップ(SOC)。

 

 

ではボード確立サブディレクトリcrane2410

#cp RFボード/ SMDK2410ボード/ crane2410 [@ localhostのuboot uboot] #cdボード/ crane2410 [@ localhostのuboot uboot]

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

 

含ま/コンフィグ/ビルドコンフィグレーションヘッダ

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

【uboot @ localhostのuboot] #cp /コンフィグを含む/ smdk2410.h /コンフィグ/ crane2410.hを含みます

 

クロスコンパイラツールのパスを指定します。

[uboot @ localhostのuboot] #vi〜/ .bashrcに

輸出PATH =は/ usr / local /腕/ 2.95.3 / binに:$ PATHに

 

テストの成功をコンパイルします

【uboot @ localhostのuboot] #make crane2410_config [ubootする@ローカルホストuboot] #make CROSS_COMPILE = armlinux

 

3.2.6 lowlevel_init.Sファイルを変更

次のように開発ボード、修正ボード/ 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の/ *通常* /

 

/ * 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の

/ *

ノーマル

* /

#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

 

ノーマル

* /

 

* /

#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

 

ノーマル

* /

 

* /

#define

#define

B6_MT

B6_Trcd

0x3の0x1の

/ *

SDRAM

* /

#define B6_SCAN

 

0x1の

/ *

9ビット* /

 

#define B7_MT

#define B7_Trcd

#define B7_SCAN

 

0x3の0x1の0x1の

/ *

/ *

/ *

SDRAM * /

3CLK * / 9ビット* /

 

/ * REFRESHパラメータ

#define REFEN

* /

 

0x1の

 

/ *

 

リフレッシュイネーブル

 

* /

#define TREFMD

#defineのTrp

#defineのTrc

#define TCHR

#define REFCNT

 

0x0の

0x0の0x3ののの0x2の1113

/ *

/ *

/ *

/ *

/ *

CBR(CAS前

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

期間= 15.6us、

RAS)/オートリフレッシュ* /

 

 

 

HCLK = 60MHzの、(+ 1から15.6 * 60 2048)* /

               

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

 

_TEXT_BASE:

.WORD TEXT_BASE

 

.globl lowlevel_initのlowlevel_init:

/ *メモリ制御設定* /

/ * R0相対現在の場所を作るようにそれ* /

/ * SMRDATAはFLASHの外ではなく、メモリ読み込み!* / LDR R0、= SMRDATA

LDR r1と、_TEXT_BASEサブR0、R0、R1

 

LDR R1 = BWSCON / *バス幅ステータスコントローラ* / 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

 

おすすめ

転載: www.cnblogs.com/fanweisheng/p/11105634.html