|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PC主机:Ubuntu 10.4 和redhat 9.0
7 J7 Q( U, e: e; M5 e" T3 u: H1 m t, Z
目标板:TQ2440开发板,linux内核2.6.30
- I; o! d! C) P+ B8 q, i% p; F& X+ j4 G
0 o6 A. Q. r8 w% m n: I本文将简单记录烧写内核镜像和yaffs文件系统的步骤。2 `! r) J' J" {0 V6 V$ Z5 r
8 Z a, y' ?: j4 F" b! G* L本文假设你已经编译好内核,yaffs2已经制作好,同时Uboot中已经支持yaffs2。4 j" _, U6 o7 O% k5 Y
. W3 t; f" ^; l( [
在开始烧写之前,PC平台必须开启TFTP服务。! P& `- ^; i. G9 x9 {( D
* Y; P% U0 M3 u4 `) _# \3 S! j: d9 f
1. 烧写内核
& g5 |) y4 V1 K. [4 A3 i: U$ L, o! F5 q" K; |) k
首先来看下我的分区表:; T3 c; p- ?8 k: N0 T' \
* S2 f: c/ O- z2 i h/ y
0x000000000000-0x000000040000 : "Uboot"# [2 W" R4 n* a- N: F% l
0x000000200000-0x000000500000 : "Kernel"9 s; [: a; B+ ^8 t
0x000000500000-0x000010000000 : "filesystem"
& H+ O' i, B/ p# X' s: r! q2 [
5 `) h: Z5 P0 Lnand大小为256MB。
% [- Q8 J0 [ }4 K$ \5 v9 S2 v9 K1 ?; Y2 _, U
其次我的SDRAM地址是:0x30000000-0x34000000(64M)( A4 B' Q1 }- R/ O' W0 O; x' E
" D* v3 \* |7 F1 t* b+ i& H: n在Uboot中执行如下命令:3 U# {( {6 U: a$ e3 p
; ] g! x0 c$ z: d1 N
tftp 0x31000000 zImage30.bin //通过tftp,将PC中的zImage30.bin下载到SDRAM的0x31000000处
& G- S6 r# _* K: Y- c0 O: J% c6 V5 J% E/ n+ x
nand erase 0x200000 0x300000 //擦除nand,起始地址为0x200000,大小0x300000(3MB); ~$ N$ D0 A0 R3 ~$ O
. t) ~! c8 A0 Z/ dnand write 0x310000000 0x200000 0x300000 //写入nand,将0X31000000开始的0X300000字节数据写入nand的0X200000处。4 y+ i$ e6 a+ N0 z- Z
" M2 W% s- z- w- W4 ]" ^% n y! l: a( D4 J2 @! F3 M
8 b0 G3 R! d6 e0 o
2. 烧写yaffs2文件系统
- g1 N/ G- I0 o5 o+ k8 y! @
" H0 {0 D" @% Ltftp 0x31000000 yaffs2.bin
1 B# o2 `, ~: K$ D8 c" x" `& {) R r) G- G D/ U1 x
会有如下输出:6 S* r) a5 z* G' M$ g
) A: a2 x5 n* Y$ Y$ E p; _! s
1 Q1 }4 p- V" r; U: s1 O. ~dm9000 i/o: 0x20000300, id: 0x90000a46% S `1 [6 ^2 |$ G
MAC: 0a:1b:2c:3d:4e:5f0 V X8 U) d+ e4 X9 [. w
TFTP from server 192.168.1.103; our IP address is 192.168.1.6
! Q% T* W, b$ iFilename 'yaffs2.bin'.
" V6 I) I- l2 kLoad address: 0x31000000
# G9 m. d: u' {7 B& ]Loading: T #################################################################6 X4 C, F$ F+ J S) z
#################################################################$ y1 D/ D ~: Q" S! ?* E, l. n! q: r! }- b
#################################################################
# E2 z) r3 O+ D1 D( n8 Z #################################################################
( ?, G4 x) M0 H8 `3 [ #################################################################" E: @1 E+ F. c" [& n9 X2 u- ?6 a3 \
#################################################################& B2 q7 i2 Q. @ p6 t
#################################################################
: o7 g6 p u0 Q0 w- t #################################################################
) y' |" s5 r! j9 Y& P0 B #################################################################
: ~ ]4 T- t0 `" S/ v$ Q7 I. w; J' B #################################################################
" Q% N k. _8 } #################################################################
# `- M! i, Y- X+ l* \( e #################################################################
# }3 {8 x# F! \1 C; u #######################################) G+ H' N' _/ s5 Q4 o- t
done
# V$ l, u% L" S" r @; _# |. p2 kBytes transferred = 11956032 (b66f40 hex)
1 o7 k& `9 J8 r6 p! F% m7 Z9 y' p' d) k
nand erase 0x500000 0x0FB00000 //擦除文件系统所在的整个分区,即filesystem分区- B g+ o3 B2 c* W
nand write.yaffs 0x31000000 0x500000 0xb66f40 //这里烧写的字节数,即b66f40,为上面提示的传输字节数
* b* n5 I8 |) R3 e% q' k; ^8 L" i) a4 }4 R7 U' h! T
; n' M0 k0 A4 ? J _" w2 t
; T5 z4 |# G) S3 o/ Q5 d! ?; Z
|
|