|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PC主机:Ubuntu 10.4 和redhat 9.0
! _0 `" Y: N4 ^) W: N
# C3 c4 ~0 N; i) M' F% Z* J目标板:TQ2440开发板,linux内核2.6.30
( k! V1 M' D0 c+ P* K# W h. c* M1 K9 L( C
; w' {' S- v$ A9 ^! N本文将简单记录烧写内核镜像和yaffs文件系统的步骤。
8 e7 D6 \* g9 Q" z# E7 A7 @" ?
本文假设你已经编译好内核,yaffs2已经制作好,同时Uboot中已经支持yaffs2。, |0 g7 b: p j: ?5 J6 t! ]* o3 k
( \% g, N! F" d" w$ f1 j- F2 d
在开始烧写之前,PC平台必须开启TFTP服务。; _8 s+ ]+ R: ?( A. ^2 L
- Z1 I" p, w+ k- }$ G7 [# k8 S1 g
1. 烧写内核
6 F2 R) c c. I( v* A0 l
! h0 Y% t. x+ h5 R3 }2 i首先来看下我的分区表:
( F- [& d5 ^# P3 A7 c
; F9 d6 O* |1 ?8 K0x000000000000-0x000000040000 : "Uboot" Q O4 G' c& e8 @" S
0x000000200000-0x000000500000 : "Kernel"
- L F4 U9 p3 Z6 z, Y, j0x000000500000-0x000010000000 : "filesystem"
2 r- k2 r/ B3 f P- n+ [2 J X
8 Q& t* C4 C) H( F0 H) |nand大小为256MB。
8 V5 H5 P7 G9 b$ |$ {+ u
- Q" i. z( g. e/ j$ B$ Z其次我的SDRAM地址是:0x30000000-0x34000000(64M)- ~3 [. e/ V7 B
9 u5 }, ?- }* [5 y) t( j
在Uboot中执行如下命令:' W/ L# U* z& @ O- w
( Y2 P8 h' S4 ]/ v8 M! ptftp 0x31000000 zImage30.bin //通过tftp,将PC中的zImage30.bin下载到SDRAM的0x31000000处
# u2 K: }6 x1 m) r: d1 J: x
/ `, v, b; H! ]nand erase 0x200000 0x300000 //擦除nand,起始地址为0x200000,大小0x300000(3MB)/ F, ]5 S( B" F q5 u
9 N- Y& Q* h9 }- Q( ]2 q) ? y5 l
nand write 0x310000000 0x200000 0x300000 //写入nand,将0X31000000开始的0X300000字节数据写入nand的0X200000处。8 Z; { b3 V8 B+ m3 M2 y
" l3 m& t( X+ p5 n7 G
+ O' f8 o9 D7 a) o1 T& Z
1 h: R, B1 V% v, Z
2. 烧写yaffs2文件系统
/ `8 k6 `5 ^; V# s: M3 Q- P& P u% L% v1 c- H
tftp 0x31000000 yaffs2.bin: H2 v( B$ `$ [# m4 Q: N- L& Q
7 i \" V# y# G( f; E
会有如下输出:/ F! J+ B$ t1 k) g7 e* @/ v
* ?, e) ?0 p. ~- h) o
1 S- ^5 ?& c; P* k$ Fdm9000 i/o: 0x20000300, id: 0x90000a46
1 Z4 M5 O7 R4 ]1 `4 AMAC: 0a:1b:2c:3d:4e:5f
, m8 |8 Q* u# G9 K+ F ]! d# GTFTP from server 192.168.1.103; our IP address is 192.168.1.6
- p7 {2 w+ ~: ^: C2 HFilename 'yaffs2.bin'.) V K8 g& T. |, Z. B
Load address: 0x31000000
; k; M& r( z1 m8 jLoading: T #################################################################
- C9 u; u( L# @. E+ G #################################################################
. \# ]& y8 U4 X) t0 j7 R #################################################################
a3 S( n: z$ `: ? #################################################################: c7 h% ?# i& R$ n& f
#################################################################
& K( ?8 e c- |1 @- r: d: G #################################################################
" n5 }" x9 ?, ~- u+ \ ################################################################# B2 v2 U4 \% Y
#################################################################; ?, c4 w) j% H u; [
#################################################################5 }( w6 h8 L: u' `6 _+ c
#################################################################1 ]$ K) J# ~! O
#################################################################: b. F6 S! S8 I& y
#################################################################
' d7 k# P8 y2 b! l3 s$ `& `8 t #######################################1 ~# T0 [1 s" x) p( E8 w
done* z6 ]* X' b0 {$ P! W. c3 @
Bytes transferred = 11956032 (b66f40 hex)
! \, A: n. G2 X) \/ o: G" ]8 _7 E2 ~1 b: q7 A
nand erase 0x500000 0x0FB00000 //擦除文件系统所在的整个分区,即filesystem分区, X! f' F% e0 Z! P$ N
nand write.yaffs 0x31000000 0x500000 0xb66f40 //这里烧写的字节数,即b66f40,为上面提示的传输字节数7 p& s/ d8 O9 w& v1 y, x" N
$ j# W5 r2 ]! J- M$ I) e
j' s9 h) B. k- v) V% H" |: ~8 y' F/ o
|
|