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=armlinux
把 u-boot 烧入 flash
1. 通过仿真器烧入 uboot
通过仿真器 uboot 烧写到 flash 中就可以从 NAND flash 启动了. 2. 通过 JTAG 接口,由工具烧入 flash