buildroot to build toolchain on Linux

上一篇 / 下一篇  2006-06-25 16:08:27 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Backup

This post is moved to Nios Wiki,
|V)cy3RJXH0I don't recommend the buildroot approach to newbie now.
a%bn0X$Dvm y0Please go to the nios wiki, http://nioswiki.jot.com/WikiHome/Operating...ms/%C2%B5Clinux
'_ |(H1]C8ry0try out the prebuilt zImge if you have altera nios dev board,
#VDJqS0install binary toolchain, and follow the uClinux-dist to build kernel and apps.

3iH)u-c c3S0EDA中国门户网站geO Rg&p
EDA中国门户网站.B l'@ T_;m
--Please note, this thread is getting too long, please post your question/discussion as a new topic over the uClinux forum. It will be easier to follow.EDA中国门户网站Hl W7W x-t(x/v
EDA中国门户网站%iY/q0Z+Dbm5[u0U
This is a guide to nios2 uClinux. We build tools, compile kernel and port applications for nios2 uclinux on a Linux platform.
0fl!V(EO7Mnb6M2J0Why build the tools when you have the IDE on Windows?
w.f4K f*wdk5B/x'E0The IDE on Windows are not good for kernel/apps development. The IDE's compiler default to newlib, while we would use uClibc in uClinux.EDA中国门户网站M0H%fEmm
The tools run much faster and less trouble on Linux. You will feel IDE moves like turtle after you use Linux.EDA中国门户网站GhX V s
If you want uClinux, you should work on Linux and learn Linux. You can learn a lot when working on Linux, and the "Linux know-how" is the key to success on nios2 uClinux.EDA中国门户网站#n"N{n1c2K5JI
You can find links to major linux distributions,EDA中国门户网站dv8dB+E&L
http://distrowatch.com/dwres.php?resource=major
%Qp5R rrh0y j_5o0
2d4x)Zd4l0Just add a PC to run Linux. You can use quartusII and nios2 on Windows to design hardware, then build sofware on Linux. You DON'T have to run quartusII on Linux. You can setup a samba server or client on Linux, so that they can share files. Always update your tools to the latest ones, ie, quartusII v6.0, niosII v6.0, ddr 3.4.0 at this moment.EDA中国门户网站k h+N1k.} }&Bj
EDA中国门户网站*NrW5Ig+MF
If you are new to uClinux, it is very helpful to read the FAQ on the www.ucdot.org.EDA中国门户网站U4LZmR!{ FFy
You should start with a mininal system with only nios2 cpu core,sdram,full featured timer,jtag/serial console and a cfi flash, (cfi flash can be dummy and removed later). Note, the interrupt vector (ie, execption vector) should be in uClinux program memory, ie sdram.EDA中国门户网站\7n"C*y1BY^
Note in Linux, irq 0 used to be auto-detected and that is not supported in Nios II, so you should not use irq 0 for your devices. Only timer_0 may use irq 0.EDA中国门户网站gU]GrG/n!\*q

#_7_'L dN+G*^y0There is no MMU on current nios2, so no virtual memory,no shared objs/libs, no fork, and stack size is fixed.EDA中国门户网站${X Rdfnvt:Qp7b
The app exec format on uClinux is not ELF, but binary flat format, FLT.
JC7S_|1dD8|:Y0
6ep`/N V0We will use initramfs (which is quite new to uClinux), instead of romfs. The initramfs is compressed. The rootfs (initrd) image can be linked into the kernel, and make the booting easier. You don't need other devices, such as MTD,CF/IDE,NFS for rootfs to start up your nios2 uClinux. As they may be not available for a new custom board. You can mount other devices or filesystem later,eg jffs2, in user space.
/|"ezMoM B0
n`S4Ew&F}8MT i0Let's start it step by step.
Afaz+_!y w0I0You should use gcc3 to build this cross-compiler. the gcc4 has problem on binutils-2.15.
_ f&{~an&AE?0If you use Fedora core 5, you should select development packages during installation, and run "yum update" after installation. (redhat 9 is too old, that make failed)
3r g }9TR4W,r0There is compat-gcc-32 package.EDA中国门户网站%hO0I_4a(VF&@%{

CODE
su -   # your root passwdEDA中国门户网站U;@l6yw}+y0K
yum install compat-gcc-32EDA中国门户网站uH\ M,NRO|*T
cd /usr/bin
dZ!z8U!AL0mv gcc gcc4EDA中国门户网站0W"^2Ef],|W&O
ln -s gcc32 gcc
*s/S4q,B4L\4JK0exit

EDA中国门户网站 qD0Us!sLO)M

1U$Vn0M*F r0If you have a working buildroot toolchain, there is no need to rebuild all each time. You should edit the build script and update only what is needed. During the build, if you fail (or too slow) when downloading (wget) some files, you can use your browser to search and download them from other sites into ~/download dir. Then you can edit the build script, and restart from the middle.
ItTxp0If you have old builds, and you want a fresh build from begin, you must remove all old build dirs. uncomment line1 of the build script, which will remove all old build dirs. EDA中国门户网站MHn7w-[a5z2_
(Please NOTE, the latest buildroot/uClibc/busybox snapshot may still have problems on nios2, so we will download -20060320, the last known good shot, and save them as -snapshot instead in the build script.)EDA中国门户网站:_/L6nX N7ua?+Z

U-SxJ5f1p x'HO0During the build, you can cut the command lines in this guide with your brower, and paste in the shell console or save to a script. So that you can save some typing and errors.EDA中国门户网站?j A d pb
EDA中国门户网站"`.s D3I`].r b
1. login with a user account, eg, jack. do not use root account.EDA中国门户网站fJ f8h"k K:o\
your home dir will be /home/jack, or in short ~/
;H_4Q Ahs2O \9u0
Ad P%R-B)kJ02. download microtronix's port of nios2 linux from the forum into the ~/download dir,EDA中国门户网站q#lt;FLOu`
http://forum.niosforum.com/downloads/1_4/nios2linux-1.4.zipEDA中国门户网站!ZS'bSE-^[!^(C

&D5gx%zK03. download http://hungryhippo.jot.com/WikiHome/build.zip , into dir ~/download
F^;]~C(o%R9H0

CODE
cd ~/downloadEDA中国门户网站+c*t9M;@emg
unzip build.zip
g&\v(c'jm;^0./build


#n"Q8T&Wct*w0EDA中国门户网站Ei2p"[u\q0l
The build script will download (using wget) the 20060320 snapshot ,untar, patch and make.
&IB:k*maN5y0(The configs are binutils-2.15,gcc-3.4.6,uClibc-0.9.29-pre,busybox-1.1.1-pre0 and kernel header 2.6.11.)EDA中国门户网站w$KPM$K1[8P;Xn(OK
The c++ and libstdc++ will be built, too. (but they still have problems to run)
Qy3^h&t T P+V%Q+K ^0The ~/rootfs dir will be created. The kenel will use this dir and ~/download/rootfs_list file to generate initramfs image.EDA中国门户网站4I}$G2i.u_
You may edit the ~/download/rootfs_list file, to add or remove dev nodes.
-d+n3Q0[:M| _o(aV ~0There is a minimal .config file.
'i:ZZOo Y0B0The uClinux-dist will be prepared in ~/uClinux-dist.EDA中国门户网站~'j4LT*[*F"]]
The apps ported by microtronix will be in ~/apps .EDA中国门户网站Q s&g/S6jS0lJ
And the 2.6.11-uc0 kernel will be in ~/linux-2.6.x , with zImage, EPCS MTD,avalon watchdog drivers added.
'Vd|Lj,o7gb!eX0
^;p?V)Hk:y04. You should include this PATH to use the cross gcc after it is built
v(V3tLR0

CODE
PATH=$PATH:~/buildroot/build_nios2/staging_dir/bin

EDA中国门户网站wH g(a W:m8U
Or you can update the path of the cross gcc in file ~/.bash_profile
*Jp\O)P_$Y0

CODE
PATH=$PATH:$HOME/bin:$HOME/buildroot/build_nios2/staging_dir/bin


*^X!NuE]'i0so that it will be in the PATH when you login Linux.
O$VZvil*qcn0
u N;pQ'w+gXax Z2}0Run this to verify that you have it in your command search path,EDA中国门户网站 e+B#f)_.dw:\

CODE
nios2-linux-uclibc-gcc -v


4zv:y(h&y,{$Y0EDA中国门户网站Y-N M4y E
Run this to verify that you have the proper busybox in FLT format,EDA中国门户网站JYG [{~$g

CODE
nios2-linux-uclibc-flthdr ~/rootfs/bin/busybox

EDA中国门户网站5A-K}/b6{9w-i
it should display the FLT header like this,
JbdMS g.z|;f0

CODE
/home/jack/rootfs/bin/busyboxEDA中国门户网站um2J-J4Oexe%]g
   Magic:        bFLTEDA中国门户网站X$n \3H(m [6vv
   Rev:          4EDA中国门户网站 K6JSCI
   Build Date:   Mon Mar 27 13:55:05 2006EDA中国门户网站i(@yL uos'K4P'O
   Entry:        0x40
.Cac\tZ0   Data Start:   0x632c8EDA中国门户网站\6Y;G{`Q M&GZ
   Data End:     0x7bb80
(q[Zfl0   BSS End:      0x96750EDA中国门户网站^Khhy
   Stack Size:   0x3e80
v@"B HW3g'N:|Gi0   Reloc Start:  0x7bb80
Q4?^p!^&E0Mq ]:S0   Reloc Count:  0x344dEDA中国门户网站 xw'p;qT{)n9RH!|
   Flags:        0x1 ( Load-to-Ram )


$a#HO`dfMG0EDA中国门户网站.FDP u5M NS

A'[QY i,ct{V05. Then config and compile kernel.EDA中国门户网站 {@Ml9K RPTh

CODE
cd ~/linux-2.6.x
gBgd:CrC2j0# generate nios2_system.h from ptfEDA中国门户网站}i8k6AA%L
make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- hwselect SYSPTF=your_system.ptf

EDA中国门户网站1n5_bxT
If you use Altera CycloneII NIOS dev board with 2C35, the ptf file is altera/kits/nios2/examples/verilog/niosII_cycloneII_2c35/standard/ std_2C35.ptf,EDA中国门户网站"XR4FF~
and the sof is standard.sof . The ptf must match your board.EDA中国门户网站z/lj'p"X5z
Here is the hwselect of std_2C35.ptf,
wA t/fy:N6H0

QUOTE
--- Please select which CPU you wish to build the kernel against:EDA中国门户网站$~lhLl(k(KMD
(1) cpu - Class: altera_nios2 Type: s Version: 5.11EDA中国门户网站3Z9Cy2mzy!\5p
Selection: 1
(Sk6k!Ie5an3pcIv0--- Please select a device to upload the kernel to:
!X!Pho.C.Iv \ }-QB0(1) ext_flash
l^ M rl;@9g0        Class: altera_avalon_cfi_flashEDA中国门户网站!j$`Ss"{hDQD
        Size: 16777216 bytesEDA中国门户网站PjD0b:U.I
Selection: 1
-Y2~(f%Zzr0--- Please select a device to execute kernel from:
9iiE'Wwg0(1) ext_ssram
z-Nz ~%NHK4Bm0        Class: altera_avalon_cy7c1380_ssramEDA中国门户网站%M S^wm CF
        Size: 2097152 bytes
!@ t6oH)]/z Q+{4b @0(2) ddr_sdramEDA中国门户网站jc$r#}Y]
        Class: ddr_sdram_componentEDA中国门户网站9UL(iVT8t0qI
        Size: 33554432 bytesEDA中国门户网站X;Jyd)I*P.am| C-s6x
(3) epcs_controller
#MZ?l-BGp r i0        Class: altera_avalon_epcs_flash_controller
UQ @)U MIO#byF0        Size: 2048 bytes
? BC&Wr:}9Kw0Selection: 2

EDA中国门户网站 \ j$\K|R0]^YG

CODE
# config the kernelEDA中国门户网站$f-kQn,nxg4HC
make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- menuconfig

EDA中国门户网站#] Wb L.q!|X6A
In menuconfig, you should select your serial or jtag console in menu,EDA中国门户网站Rh9ET1o/C'Tk5Qf"N

QUOTE
Device Drivers  ---> Character devices  --->  Serial drivers  --->


|8fkit3P.H0If your user id and group id on Linux are not 500, change these to your id instead,EDA中国门户网站9kU%o4hB%`:l

QUOTE
General setup -->  (for new kernels)
1p;A3SG N^CM)A)O0OREDA中国门户网站U&?\C `/Fe&u
Device Drivers  -->  Block devices -->  (for 2.6.11-uc0)EDA中国门户网站[+rVL.`
    (500) User ID to map to 0 (user root)
*Ic-yNb0    (500) Group ID to map to 0 (group root)

EDA中国门户网站;Mh.[ k| O:M-~3P
If you use DEII with 8M sdram, change the link address of the uncompress loader,
5z8^j&Y{%k)H0

QUOTE
Processor type and features-->(0x00500000) Link address offset for booting


cQQ X6mgZ0Then and save configuration. EDA中国门户网站$SI\vd4xN|

CODE
# compile the kernel
0Y^nL"N/EP+L0make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- zImage

EDA中国门户网站f!W Y,Z'`H#G~
Whenever you update the ~/rootfs, you have to compile the kernel and update the initramfs.
YU_*zf8`JC5g!_0

QUOTE
  CHK     usr/initramfs_listEDA中国门户网站,b6|V$g;lb _.C
  CPIO    usr/initramfs_data.cpioEDA中国门户网站&G#L$t!r*Xd6g
  GZIP    usr/initramfs_data.cpio.gzEDA中国门户网站J.A^+U(x+il^
  AS      usr/initramfs_data.oEDA中国门户网站z Y*|^#}takt{b
  LD      usr/built-in.o

EDA中国门户网站9|CF(mpp]E4\ Y
If you didn't see the "CPIO" and "GZIP" in compile message, the initramfs is not updated. You will have to remove the file usr/initramfs_list in kernel dir, and compile again to force the update of initramfs.EDA中国门户网站DcJ9C2^8P

$M Xd5mp0EDA中国门户网站+n8H;r8U&QD*M1\W#mqx
6. Now the compressed kernel image is ready, arch/nios2nommu/boot/zImage .
B(a+U&? @)Zr(?Q0you can run it on windows,
"mP&K"K_d R0First, download the sof of your hardware to your board with quartusII programmer,EDA中国门户网站*r^/s+vXK&H"x({
Then open a nios2 sdk shell,EDA中国门户网站7K$C3ApA2_v f
EDA中国门户网站 I5Z8E4ww9L3w^UU6\/q
Note the drives mapping in nios2 sdk shell,
l @5wE$~0drive c: is /cygdrive/c/
$f#C7XeG&| QW0if you map your linux home to h: on windows with samba server,EDA中国门户网站9h B(F*U+bT*v'F
then drive h: is /cygdrive/h/EDA中国门户网站ChJn~ O&K|S
so the image file is
8z(t*r/m%M,LF'bF!qG"~0/cygdrive/h/linux-2.6.x/arch/nios2nommu/boot/zImage
n:u)X3e({r!l0EDA中国门户网站)?(x G7N\z$M9sA

CODE
cd /cygdrive/h/linux-2.6.x/arch/nios2nommu/bootEDA中国门户网站S)p7b2J M)Q9@7W
nios2-download -g zImageEDA中国门户网站xB g7K%zz_,Y
nios2-terminal


E8Mz.^W(e(Z0Here is the boot message on my custom board,EDA中国门户网站Yj!R8f"j{8|

QUOTE
Uncompressing Linux... Ok, booting the kernel.EDA中国门户网站0|L?wfZ5VA8a
Linux version 2.6.16 (jack@localhost) (gcc version 3.4.6) #1 PREEMPT Wed Mar 22 11:48:33 CST 2006EDA中国门户网站N E5JT#D J
uClinux/Nios II
*bcXX$LhKK z6I0Altera Nios II support © 2004 Microtronix Datacom Ltd.EDA中国门户网站7]4\zK!z5V q
Built 1 zonelists
/at*xO;A.~7x0Kernel command line:EDA中国门户网站 B-etQ Y
PID hash table entries: 512 (order: 9, 8192 bytes)EDA中国门户网站4k(lmB&W\N:Vv
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
O9c r vu8TL0Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)EDA中国门户网站 Trd |5Y
Memory available: 63616k/65536k RAM, 0k/0k ROM (733k kernel code, 546k data)EDA中国门户网站G3ZX*hfy-x9hX
Mount-cache hash table entries: 512EDA中国门户网站w4O%~ B#A _)cs
io scheduler noop registered
|"U4G%K5l8La#Z0io scheduler deadline registered (default)
Zr-p `-Gv0NIOS serial driver version 0.0EDA中国门户网站F`/QZRN6p
ttyS0 (irq = 1) is a builtin NIOS UART
o&Z.B X[`}e0Freeing unused kernel memory: 468k freed (0xc0000 - 0x134000)
] e`tq-~nh2U0init started:  BusyBox v1.1.1-pre0 (2006.03.20-07:53+0000) multi-call binaryEDA中国门户网站-n)_F}8@M
BusyBox v1.1.1-pre0 (2006.03.20-07:53+0000) Built-in shell (msh)
dI3\\0f&\.^0Enter 'help' for a list of built-in commands.
pPJ m2g0#

EDA中国门户网站nW^!}(] Jv
(Note, don't use jtag uart in production, it will not run without a nios2-terminal connection)
)SZA9Mp0P%^!S2h0
vRY#t!VVP_ swv07. After you have tested the uClinux from sdram, you may want to program the flash.
#a J.S0kW m_'O0
)xJ%Cy'@/S0If you use EPCS flash, find out and change the sof path and epcs base below.
Tvwb!q$A0on nios2 sdk shell,EDA中国门户网站A;_%p%u P

CODE
cd arch/nios2nommu/bootEDA中国门户网站&p*Y xv#l)mQ6Fcw,C
# Creating .flash file for the FPGA configurationEDA中国门户网站3vu:_%F&s D
sof2flash --epcs --input=$SOPC_KIT_NIOS2/examples/verilog/niosII_cycloneII_2c35/standard/standard.sof --output=standard.flash
^~N.x1xV&s0# Programming flash with the FPGA configurationEDA中国门户网站{ W%e V+{Pl'V
nios2-flash-programmer --epcs --base=0x02200000 standard.flash
#YW~z2l8J2Z@0# Creating .flash file for the projectEDA中国门户网站PGnf A'gc
elf2flash --epcs --after=standard.flash --input=zImage --output=epcs_controller.flash --boot=$SOPC_KIT_NIOS2/components/altera_nios2/boot_loader_epcs.srec
p9wna2L8AkYA1}h0# Programming flash with the project
&|(](l Tx;o4Hz0nios2-flash-programmer --epcs --base=0x02200000 epcs_controller.flash

EDA中国门户网站6G;gF*A4@?n3V

k8_by0G&kd0Or if you use cfi flash,EDA中国门户网站*v XPIW7Sf

CODE
cd arch/nios2nommu/bootEDA中国门户网站 C,]m0pa5B1hp
# Creating .flash file for the FPGA configurationEDA中国门户网站*R |.]u7t%Ku f
sof2flash --offset=0xC00000 --input=$SOPC_KIT_NIOS2/examples/verilog/niosII_cycloneII_2c35/standard/standard.sof --output=standard.flash
.}"K6~v]7u/||0# Programming flash with the FPGA configurationEDA中国门户网站s8G7M)`,~e~7u
nios2-flash-programmer --base=0x00000000 standard.flash
ps1Q7l h2X [r~Juk0# Creating .flash file for the project
e+pj&F5J w6v0elf2flash --base=0x00000000 --end=0xffffff --reset=0x0 --input=zImage --output=ext_flash.flash --boot=$SOPC_KIT_NIOS2/components/altera_nios2/boot_loader_cfi.srecEDA中国门户网站 iUp\f]ZmBv.[(h
# Programming flash with the project
]8l&?z6])S7jtt0nios2-flash-programmer --base=0x00000000 ext_flash.flash

EDA中国门户网站sS \7Rd~,C.Dz#_r

O)c;e2F5yak;q Xu08. If you use EPCS, you can use jffs2 to provide a nonvolatile filesystem.
\ Yh'X%U g0Check the very nice guide from Jdhar,
S]0xRr1d0http://via.dynalias.org/svn/uclinux/doc/trunk/epcs-ug.pdfEDA中国门户网站.VU"e`j#@(Q
In kernel menuconfig
bK` nd0

QUOTE
Memory Technology Devices (MTD) -->EDA中国门户网站NL1qY*mP
<*> Memory Technology Device (MTD) supportEDA中国门户网站1N&ym-sH0S.b$}8q
  [*]   MTD partitioning support EDA中国门户网站yPt!t L,_
    <*>   Direct char device access to MTD devices EDA中国门户网站}M-I#A)@T*g
    <*>   Caching block device access to MTD devices
]~*PL2l_Jr0  RAM/ROM/Flash chip drivers --> EDA中国门户网站G J+EB~'U
    <*> Support for Altera EPCS DeviceEDA中国门户网站 ig3d3kV g4C
  Mapping drivers for chip access -->
/O~x] Wg0    <*> Maps for Altera EPCS Configuration DeviceEDA中国门户网站Y1C |%y(~1k6A;H2v
File systems  -->
Y~C{c7M0  Miscellaneous filesystems -->
Z?2Z/DP!w:I TI0    <*> Journalling Flash File System v2 (JFFS2) support


U2f?)gL ?s2sI#P0EDA中国门户网站|2l` J/X G
Or if you use cfi flash, in kernel menuconfig,EDA中国门户网站 m$o:bS L

QUOTE
Memory Technology Devices (MTD) -->EDA中国门户网站 }e1W*n:HfFN
<*> Memory Technology Device (MTD) supportEDA中国门户网站&q)`E5M4Tp#eS
  [*]   MTD partitioning support EDA中国门户网站v3\e}m*\SJz;V
    <*>   Direct char device access to MTD devices EDA中国门户网站 Y:B5n'L8ddM]r!l
    <*>   Caching block device access to MTD devicesEDA中国门户网站Boc Il
  RAM/ROM/Flash chip drivers --> EDA中国门户网站y _+zS:[1k]xM)]
    [*] Detect flash chips by Common Flash Interface (CFI) probe
0E/[+EQ(jw0    [*] Detect non-CFI AMD/JEDEC-compatible flash chips
7x&cw)E:D? w0    [*] Support for AMD/Fujitsu flash chipsEDA中国门户网站$bm'm KPV{X6t
       (3)   Retry failed commands (erase/program)
1P)R0}v"nME&i4M0  Mapping drivers for chip access -->EDA中国门户网站,s'Ue7Ow;Agbc
    [*] Maps for Altera Nios Development Kit
KXdo;}"F `.e0File systems  --> EDA中国门户网站;a2q_8iNh#m*e
  Miscellaneous filesystems --> EDA中国门户网站5?:j c,k&RR5Xv ?&t
    <*> Journalling Flash File System v2 (JFFS2) support

EDA中国门户网站\e(On5mK
Then rebuild the kernel, and boot nios2 uclinux.EDA中国门户网站;o9yUN ieO9YrAMR+j
It should display jffs2 support and detect mtd partitions.EDA中国门户网站X.q{n X

CODE
mount –t jffs2 /dev/mtdblock0 /mnt

EDA中国门户网站i?9^`O5g"y9|%~dC$T
here, /mnt is your mount dir. You can access files under the mount dir.EDA中国门户网站 ZTyM3or/w%h U m5O6N
After you finish the access,

CODE
umount /mnt


h'g/ip l4H"Vm0EDA中国门户网站0\'c])J@1qI6`
Note, you may have to erase the mtd part or preload jffs2 image with nios2-flash-programmer. You may have to customize the map file for different flash size and part size, in drivers/mtd/maps/EDA中国门户网站2s$T"}Wp8v"a\Hq
either epcs_map.c or altera.c .
+rm'] m E/wE'f0EDA中国门户网站K0z@(\xm1E4wWU
9. To enable network support, eg if you use the Altera dev board with SMC91111,
v5U~&e$@;ABv0

QUOTE
Networking -->EDA中国门户网站 `\zBk(d0B{jM
  [*] Networking support
,s W5B#~ab w:W0    Networking options  --->  EDA中国门户网站tN xE }n
      <*> Packet socket EDA中国门户网站P(U5ojbY+V!X
      <*> Unix domain sockets  EDA中国门户网站5u%[T ?|&IL
      [*] TCP/IP networkingEDA中国门户网站7jq~x,Rb?+l w
Device Drivers -->
2dA&NZv`0Network device support ─>EDA中国门户网站 n2Vj6K7S
  [*] Network device support EDA中国门户网站?4k4H"sW(o
    [*] Ethernet (10 or 100Mbit)
'@*T6@Ugq6d:F[0    <*> SMC 91111 support


:K ^;ZM)h7Q(x;T0Then rebuild the kernel, and boot nios2 uclinux.
E+y:]&h2f:^3J G4x0It should detect the SCM 91111 device as eth0.EDA中国门户网站.hftF~[
Then config the ip address and router.
f+S1}P.fd{ m t4l0

CODE
ifconfig eth0 192.168.1.10EDA中国门户网站:N v~g?C9g
route add default gw 192.168.1.254

EDA中国门户网站yP*i1ET n%C
You may add these setup for "eth0" to ~/rootfs/etc/inittab, follow the setup for "lo" .EDA中国门户网站5Q3R9n9GFP8s
So that eth0 will be configed by init.
d$Y6Rc+i)m^0
7@S+v*pZBG%D010. If you will write driver, try out the hello world module example in the (must have) book "Linux Device Driver 3rd ed.".EDA中国门户网站7U"](qi,uJ$F!i Q
In your kernel dir,EDA中国门户网站H H)Pt"GL}W2L7\
save the file to drivers/misc/hello.c
\V D iR HcA(g n0

CODE
#include EDA中国门户网站~V&Ke1PXj
#include EDA中国门户网站u!QnaQF*O,^:y0k
MODULE_LICENSE("Dual BSD/GPL");
`5d)\ d*@M6?0static int hello_init(void)EDA中国门户网站(|`]Fu5ITc)J
{EDA中国门户网站1f0Ih jU~
   printk(KERN_ALERT "Hello, world\n");
!b4Qn5C3Uq4[0   return 0;EDA中国门户网站*AJU!~%h:mo:E
}EDA中国门户网站nwF`xq ?t
static void hello_exit(void)EDA中国门户网站:z)s4E~ x&^-MH7\0~k
{EDA中国门户网站I(Z&Q O$h?,g
   printk(KERN_ALERT "Goodbye, cruel world\n");EDA中国门户网站Gs m(_PJ
}
5t*~DG)G.d5fd+|6y0module_init(hello_init);
.p.t.Ng7JN0module_exit(hello_exit);
S'XX1B0a0


*T"O)p8N N3K8]0Add these lines to drivers/misc/Kconfig, before the "endmenu" line.EDA中国门户网站Hu| ^;[]Z

CODE
config HELLOEDA中国门户网站aU5h/YRax3qP
   tristate "example hello module"
!j~p s4M0   help
4uaN | [y9Ji0        Enable example hello module.

EDA中国门户网站s["Le~1o
Add the line to drivers/misc/Makefile
UgG)s5u+t:k?0

CODE
obj-$(CONFIG_HELLO) += hello.o


n!?o^5F/E0
y'N(fN3Q ^(q0Enable module support in menuconfig, then build the hello.ko module.
*qE$nv(O[&nk0

QUOTE
Loadable module support -->  EDA中国门户网站7_ R1fno
  [*] Enable loadable module support EDA中国门户网站f2bx__c
Device Drivers -->  
p}+WgP{ Y'Z(k0  Misc devices  --->   EDA中国门户网站FfQ[~p
    example hello module


@X OWG4H0

CODE
# config the kernel, enable module support
1[)v%c[N9?0]0make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- menuconfig
\T9\aj9H?%z$m0# compile the kernel module
H9?~2f8W8F/u1X0make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc-EDA中国门户网站$k"G#IxRlZ*H
# copy module files to rootfs and generate modules.dep
%m2l^%D$@Dv%s9_"x0make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- INSTALL_MOD_PATH=~/rootfs modules_installEDA中国门户网站xDk$e9\_k\(N
# rebuild image for initramfsEDA中国门户网站B)s6Q"Mu&X3h!]
make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- zImage

EDA中国门户网站1_n&FR:^;}
Boot nios2 uClinux, and load moduleEDA中国门户网站X$g*Cp3q Y{ Ks

CODE
modprobe hello


/M?W{O0n0EDA中国门户网站&ePG8`!O |#EGz
EDA中国门户网站MIg&Dn-qCo
11. To compile a simple program, just add -elf2flt to link flag
t9w_ Z4ms:l0

CODE
nios2-linux-uclibc-gcc hello.c -o hello -elf2flt
:Qci@c0cp hello ~/rootfs/bin


Xx aT"D:R0Rebuild the kernel image for initramfs, boot nios2 uClinux, and run
P4`O|s*Y-h0

CODE
hello

EDA中国门户网站_6Tj]C~-q
The default stack size of application is 4KB, you can change it with -elf2flt="-s " option, eg ,EDA中国门户网站w%A!mn&` p f[o:h

CODE
nios2-linux-uclibc-gcc hello.c -o hello -elf2flt="-s 16000"

EDA中国门户网站k| fm_7Z/N+K!\ c
will have stack size as 16KiB.
/Mw j+[)E)XALS0EDA中国门户网站o5N%Im.a-k2x.h
12. There are many applications built into busybox, enter 'help" to find out and read doc of busybox to learn them (eg udhcp server and client). You may config busybox, for more apps or to reduce size.
h}E W0n(nG3u0

CODE
cd ~/buildroot
%N@?E{0# remove old busybox apps and linksEDA中国门户网站5fky\ u(h^,~
make -C build_nios2/busybox cleanEDA中国门户网站3{u SN r)H
# select busybox appsEDA中国门户网站"FS*gu)H;W)z@_'J
make -C build_nios2/busybox menuconfigEDA中国门户网站9pl5s |Q ud
# build busybox again
&WjfIn2oY p!W0makeEDA中国门户网站L T[4GJ2R`
# rebuild rootfs
v x8Z*|)ql2q7j.U8o;V0rm -rf ~/rootfsEDA中国门户网站(~7\)p0gRu\
cp -a ~/buildroot/build_nios2/root ~/rootfsEDA中国门户网站v0zL0w5C
cd ~/rootfs
4Yjt}H)T0# remove include and lib to save space
*@wo|9|I0# the dev nodes are generated via ~/download/rootfs_list
:?D[4b%O0rm -rf dev usr/include usr/libEDA中国门户网站h2{ O6\/}FA&_
# you may use this instead of the one from buildrootEDA中国门户网站{%E)X#R^wZ'V
cp ~/download/inittab etc
Sp-S6P5]|8~0# check busybox header
;z4M(nQry0nios2-linux-uclibc-flthdr ~/rootfs/bin/busybox

EDA中国门户网站JC]D4B2i
Rebuild the kernel image for initramfs.( I have removed old ~/rootfs for simplicity in the example, you may have to reinstall others, such as kernel modules, apps, configs)EDA中国门户网站X-S\.FwKA+yu

Id9w*AVeft0If you want to add or port apps to uClinux, you should think of adding it to busybox first. Because there are no shared objs, add apps to busybox will save some memory usage.
.Dp%p9r Q6F-P0
e;F/?&PFR,AS013. to use the apps ported by Microtronix. I have patched the Makefile of inetd,ftpd and boa using ~/download/mx140apps.diff . You can look at the patches and update other apps yourself. Note you have to prepare proper config files to run these apps.
ii$sb!`Pq5I0
R+g?rmO0To run boa web server,EDA中国门户网站0`{+G]OO1k(^

CODE
cd ~/apps/boa/src
'X"n2R_ J6J6F"I(_.l0make
'g vV(u1t0make installEDA中国门户网站tGO5B3\+R
mkdir ~/rootfs/etc/configEDA中国门户网站B8EC#bV3bR4i
cp ~/download/boa.conf ~/rootfs/etc/configEDA中国门户网站F F:DP DV2]
cp ~/download/mime.types ~/rootfs/etc
/}#A5v;h|c3jXC0mkdir ~/rootfs/home/httpd

EDA中国门户网站*a5kf f(v b*a
put your index.html and other content into ~/rootfs/home/httpd .EDA中国门户网站s'i7T n'Rq.\+s:^JT
Then rebuild zImage for initramfs, boot nios2 uclinux, and run,
c~k/D&q*C1Bw q+]0

CODE
boa&

EDA中国门户网站QH)pVPY2f2q
If you want cgi, check ~/uClinux-dist-test/user/cgi_generic , in next step.EDA中国门户网站$X#T1T8W q Uvcqt

9Z[o[_m"Bsq$k@0To run inetd and ftpd,
4To"Z8[K,Ik;E c0

CODE
cd ~/apps/inetdEDA中国门户网站RV,w\ Are1m
makeEDA中国门户网站9d1T(ed(w |wHX{
make installEDA中国门户网站:w/w [.}:XZO
cd ~/apps/ftpd
9w6TAv2O,h8Z l0make
!A zdW/M\"O0make install
!OO#Lm,v%@~#Y4R;H:e0echo "ftp  stream tcp nowait root /bin/ftpd" >>~/rootfs/etc/inetd.conf

EDA中国门户网站F/{g4@i
to use anonymous ftp user,EDA中国门户网站2Za \2A*Y:q,j N%S
add "ftp:x:14:50:FTP User:/home/ftp:" to etc/passwd
+x @,l[ca+v P%~0add "ftp:x:50:" to etc/groupEDA中国门户网站d+XZ)\ jc
make dir home/ftpEDA中国门户网站?]o ?I
add ftp contents to home/ftpEDA中国门户网站 D w R^$t/x0Qh }
rebuild zImage for initramfs, boot nios uclinux, and run,EDA中国门户网站9Pot3W"^qG9eX

CODE
inetd&
)j,F(`~ UW }0netstat -aEDA中国门户网站/B)n O @.La


5d1fg3zid+za0inetd will invoke ftpd.EDA中国门户网站s8^)EE(YH9z

Lm6r2\b o014. to use user apps ported to uClinux from uClinux-dist.EDA中国门户网站~C;D S_3E

CODE
cd ~/uClinux-distEDA中国门户网站"Ad\Ps
make menuconfig

EDA中国门户网站U*^[O3Y O&T/@ft
In menuconfig, select
tl!f zw&\&I0Kernel/Library/Defaults Selection ---> [*] Customize Vendor/User Settings (NEW)
Z0l ?#mex A#[8[4z/NM0Then ,,.
1s#D;^l l Io4zV0It will enter user apps select, make your selection.EDA中国门户网站3}J2J3m;Jp6v6x\
It has pre-selected dhcpd and net-snmp for testing.
~ppu+p'd0EDA中国门户网站i-nO[:oY
To compileEDA中国门户网站&S\cl%?7y

CODE
make subdirs

EDA中国门户网站3@k$cxj3d _
copy apps to ~/rootfsEDA中国门户网站}1X,Hu){1w

CODE
make romfsEDA中国门户网站 im a N otT M
cd romfs
G7C Fl]6@)d0cp -a bin usr var ~/rootfs
V}\0l&^0


*? Rz5XB Q+\%Z ~){0Note, you have to setup config files to ~/rootfs/etc for apps (eg dhcpd.conf), check doc for each of them. You should also check ~/uClinux-dist-test/romfs/etc for other config files.EDA中国门户网站+O'CbK3t0Z
~/uClinux-dist-test/user/dhcpd/samples/dhcpd.conf
4xA%H4Af)_.`\0
c%i6xWNkH `V!Q0Then rebuild zImage for initramfs.
w_:P|6f0P0(note, the boa port in uClinux-dist has problems on nios2)
*?+EQCY7u)C9N$n0EDA中国门户网站?5o{[/T![3W0F0z
To use telnetd, you have to enable pty in kernel config,EDA中国门户网站"o1JWk~

CODE
Device Drivers --> Character devices -->
PL C4PM x0[*] Legacy (BSD) PTY supportEDA中国门户网站"dkDI_ d w"t8t*q
(10) Maximum number of legacy PTY in use

EDA中国门户网站(H5@ W(g{X5H {
Select telnetd in uClinux-dist-test menuconfig,EDA中国门户网站Y;XL d|)p)q6}e r

CODE
[*] telnetd
ci#xno^/Z0s1@0    [*]   telnetd does not use openpty() (NEW)  

EDA中国门户网站osO;l I?"h@/oP
add "telnet stream tcp nowait root /bin/telnetd" to ~/rootfs/etc/inetd.conf .EDA中国门户网站4E] W;u,a5x1c!P&M9i
The password files are etc/passwd,etc/group,etc/shadow .
j*Pm E;l TN0Use "addgroup","adduser","passwd" to create password on nios2 uClinux.EDA中国门户网站 } F5\*Ca2~WY%D2\
Then update the password files in ~/rootfs.
Ainx'w@j har!J0Add ptyp0-9 to , or remove the file etc/securetty, if you want root login on telnetd.EDA中国门户网站3u*[9Rh p;i r9E
EDA中国门户网站tVK/||` F!Y

,zN*hs8MLz015. If you want to port apps, look in ~/buildroot/build_nios2/busybox, ~/apps, and ~/uClinux-dist-test/user first. There may be ported apps already.
xSg&_v0Read the file INSTALL of it. If it need "./configure", you should check it with "./configure -help" and add options. You may have to update the file config.sub, check ~/download/uClinux-dist.diff on how to add $basic_machine, eg wgetEDA中国门户网站 I\MB8~$nGC^0u

CODE
Index: user/wget/config.sub
\DUc0Tq0p)@f*T0===================================================================EDA中国门户网站S2t:VI y
--- user/wget/config.sub (revision 1)EDA中国门户网站D E}n&~9X.N
+++ user/wget/config.sub (revision 3)
1g5S-Te*j!_W|r0@@ -274,6 +274,11 @@
{NU!^E6cUr u0 m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
8p W#R9h!?+Gz0;;
0@1} s:^Ta!um0
p8^,} J1o,\0RD0+ nios2 | nios2-* | nios2 | nios2-*)EDA中国门户网站9xiM T@,O*q6mn
+  basic_machine=nios2-altera
'L4XG%U6w4I;J!E!n^^0+  os=-linuxEDA中国门户网站o/|3?$we&cL\,Z
+;;
iV*U.Vl'J"jP0+
x@+bVf!?UW0 # We use `pc' rather than `unknown'
wp'o~ E0 # because (1) that's what they normally are, andEDA中国门户网站$vLMEO)~7i
 # (2) the word "unknown" tends to confuse beginning users.
_J8B V}V0


o2b6\7_:o6M[)wD0Then run "./configure --host=nios2-linux-uclibc --disable-shared ...." ,a Makefile will be generated.EDA中国门户网站s%ey:i-i"J _@C U
You may have to modify the Makefile or Rules.mak. EDA中国门户网站$~P4Q/j eg,XE
The stdinc dir and stdlib dir are default to uClibc.
$B jN Tcf0So you don't need the "-nostdinc" and "-nostdlib" stuf.EDA中国门户网站j-U-Ir,L/q9sE
You should add something like this to link flags to generate FLT obj,
?2X i%P,W S[0sU?m0

CODE
LDFLAGS += -Wl,-elf2flt="-s 16000" -Wl,-v -Wl,-d


i M5Y]Py+fG)gT-H0A0Remove unused items, or that is for PC host.
_3o5kMI? W0You can setup the install path to your rootfs.EDA中国门户网站.YV| Y/T{&c/Ya
Then,"make","make install".EDA中国门户网站%u0i$by%lZ!V"Y1TQ%F
Remeber to update the kernel image for initramfs.
zNy(~T0A sample patch, mtools-Makefile.diff, to mtools-3.9.10 Makefile is included in the attached build.zip.
%}F J|*AcYr2DIm0
%f@ Y9gd;[}\016. to use CF drive on the dev board, download the example design,EDA中国门户网站OB]7J FTz
http://forum.niosforum.com/downloads/cflash/cf5_0.zip
"G'a,tuhx!Z0Run generate in SOPC and compile again with the latest quartusII and niosII.
F7Xan)m g!B0Use the new sof and ptf, do hwselect and menuconfig for the kernel, select altera cf, and we want FAT support in this example,
i)E,t0w5]gd0

CODE
Device Drivers -->  ATA/ATAPI/MFM/RLL support  ---> EDA中国门户网站8g,t]n+tu
 [*] ATA/ATAPI/MFM/RLL support EDA中国门户网站+~ dU O/kYd
 [*]   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy supportEDA中国门户网站)n(n7F8n)k.j1d|;e%A.j3gN
 [*]     Include IDE/ATA-2 DISK support
-V3c saS7m3Su0 [*]     Use multi-mode by default
\a)_|:z(QG8QnI0 [*]     generic/default IDE chipset supportEDA中国门户网站s&^,X\9U {J
 [*]     Other IDE chipset supportEDA中国门户网站ZjMA,aC9Y,b
 [*]       Altera CF (IDE mode) interface (Avalon bus) support
$q|l`6OX'@v0File systems -->  
y~dM+J3}q0Q%L0 DOS/FAT/NT Filesystems  ---> EDA中国门户网站.yp E:i%T'so^
   [*] MSDOS fs support
w$m-IO2[0   [*] VFAT (Windows-95) fs support
AhK\?h'eII0   (437) Default codepage for FAT EDA中国门户网站obG!oYY
   (iso8859-1) Default iocharset for FATEDA中国门户网站 a+x*g8?3i/`,[X!y
 Native Language Support -->EDA中国门户网站,@&Cl&n DpR:@e s
   (iso8859-1) Default NLS Option EDA中国门户网站A-iD N&x$m sv)s!S
   [*]   Codepage 437 (United States, Canada) EDA中国门户网站'PFwd)H
   [*]   NLS ISO 8859-1  (Latin 1; Western European Languages)

EDA中国门户网站#u+bA7g,|^wj
Rebuild the kernel image for initramfs, boot nios2 uClinux, and it should detected the cf drive. assume part1 on the CF, /dev/hda1, is preformated FAT,
d-d#gShA n:R0

CODE
mount -t vfat /dev/hda1 /mnt

EDA中国门户网站 d'so!y6{iO|8K%H
Or if the windows formats the CF without part,
/NI#F8GaE@0

CODE
mount -t vfat /dev/hda /mnt


8I9]-}6EGEwPP`0`0after you finish the access, umount to flush the disk cache,
-V_ o,m3C`j${$SA x I0

CODE
umount /mnt


+~#z/U/j&J|4i}0
%U]?Y [Fp017. to use altera pci host bridge, check the hardware design example,
'rVf@ K3ki0http://forum.niosforum.com/forum/index.php?showtopic=3059
^@&]l'cD*S(Ie0dev0 is sdram,EDA中国门户网站Vww&N*t4Oz
dev1 is your pci device1, using irqn_0 to irqn_3 for inta..intd
!~;FXh3n:JQ0dev2 is your pci device2, using irqn_4 to irqn_7 for inta..intdEDA中国门户网站&Eo/H;|b:KKnj
(update the number of irqn in the example design to 8)EDA中国门户网站1oU.fw S:H h
EDA中国门户网站]!jHQ.h%iU0|
The PCI driver is in the altpci.zip, attached at the end of this post.EDA中国门户网站BP&Qdd.Z%fz
download to ~/download dir.EDA中国门户网站;Mp,V`~)_

CODE
cd ~/downloadEDA中国门户网站WTLxD+@-L@
unzip altpci.zipEDA中国门户网站h5u {&H s@ U
cd ~/linux-2.6.x
d:Q/]#D7Y`;\0patch -p0 <~/download/altpci.diff

EDA中国门户网站,i6npxJA
You have to update arch/nios2nommu/drivers/pci/altpci.c to fix up pci slots and irqs mapping for your board, seach for "FIX ME".
Y`6G8GgW9p5N0Then kernel menuconfig,EDA中国门户网站&CS$QJ2ni
Bus options (PCI, PCMCIA, EISA, MCA, ISA)EDA中国门户网站*zo xB1Y)aQ9uD#qn
[*] PCI support
g-GX[4O9`0[*] Altera PCI host bridgeEDA中国门户网站bZ'N:I;u&Ud+P ]
And enable support for your pci devices.EDA中国门户网站$O k'd?/s w

7D5Y,Fo1@ R-{018. STRONGLY RECOMMANDED, You should use subversion to help tracking your works, including both hardware and software.EDA中国门户网站Y M'g(jsMy[
Try "svn help", if you don't have it, install it with "yum install subversion". (for fedora core)
|XY!ij@+e B1C0
\H)u(B\&kY%UL0a. create the svn store, and check your original as rev1.
(Q9GH*W*d E |?0

CODE
cd ~
Zh0D0|vg0DWG ly ^0mkdir mysvn
Qn+lig/Rq)e0l)a0svnadmin create mysvn/webs
V-vAyE5H$O"V&b0tar xzvf webs218.tar.gz
u*Aa!E^pU[0svn import ws031202 file:///home/alex/mysvn/webs/ws031202 -m="initial"
MS N3qKwRL4I0rm -rf ws031202EDA中国门户网站)hV/ly(F} }
svn co file:///home/alex/mysvn/webs/ws031202


'|Z%h/v$z#n.Q2\&K$yJ0EDA中国门户网站5[a6_m`HHnU
b. make your change to Makefile, misc.c ....EDA中国门户网站w{8zs0`"Wu%{
build and test....
KL0~w-RD4i9i5a;?!b0
nQ%M)M;c9HdY0c. after you finished, or when you want to save your change to store, as rev2
^ l|0JPu,x0

CODE
cd ws031202EDA中国门户网站N)b.sDA Pe/Um
svn commit -m="update for nios2 uclinux"EDA中国门户网站(cX^_S
svn diff -r1:2 >webs.diff


*k9n N$S-[ V f0Then you can send webs.diff to others
"^{o/Hln0EDA中国门户网站{V KiG@$s2S
d. when other get your diff file, he can apply the patch and get the same update from yours.
A4S m4y&i/Yg6]&?0

CODE
tar xzvf webs218.tar.gz
d:o }jN0cd ws031202
2S4@n|6f.G6\b2[0patch -p0


@s.FM j/DY"nyV0
!kgG&g SU7A0The subversion is very helpful. You can find more usages from the subversion guide on their web.EDA中国门户网站v.aeQ0d/G n
EDA中国门户网站R EUiYsX
(PS..)EDA中国门户网站E4wz.|AsT6Q
Marc sent the nios2 port of buildroot to busybox.net, and I did some patches, too. Vapier, one of the developers of busybox/uClibc/buildroot, helps to clean up the codes and incoporate into the "trunk". And he forwarded the elf2flt patches to uClinux dev team, too. All these works bring this project, simple and easy to use tools to build uClinux for the Nios2. Best thanks to marc, jdhar, and vapier.EDA中国门户网站6Qe}["t]5cW

r aS5T ?&_0Links:EDA中国门户网站5Jp-N/Hy }^
marc's site for nios2, with buildrootEDA中国门户网站&k%T6DO&a0RaV5ct
http://scorpius.homelinux.org/~marc/nios2.htmlEDA中国门户网站XK/Vx/vrn~%Z*k
web site, docs and bug report for busybox/uClibc/buildroot/udhcp
c Qf V8x0http://busybox.net/
;S g"@k5Ig7Z6{0uclinux-dist, with a lots of apps ported to uclinux
esEX'T0http://www.uclinux.org/pub/uClinux/dist/
} {'cHKBg0More information about Initramfs can be found on LWN, "Initramfs arrives" andEDA中国门户网站nU6].MP.M uH
"Patch: Documentation for ramfs, rootfs, initramfs."
j/H-o3@!CD]Q0
PMP2_ } Wq%l0kernel tree and svn, including many drivers, (including epcs,mmc and i2c...) ported by JdharEDA中国门户网站"uUR"K)^{V|T+C
http://via.dynalias.org/svn/uclinux/linux-2.6.11/trunk/
(I,H1hk(x!O:{'_k0EDA中国门户网站&ZO)a!n/Z
how to run the uClinux in NIOS2 in chinese by Alex.liu. EDA中国门户网站Gg w#F:n+J,s"y5O
http://www.icwin.net/ShowArtitle.ASP?art_id=8313&cat_id=52[COLOR=red][COLOR=red]
z$lNd0Icl0EDA中国门户网站 a rl^ pGtn3N
Attached File(s)
peT9Pi4l8Z0
http://www.pld.com.cn/blog/Attached File  altpci.zip ( 14.85k ) Number of downloads: 55
WV"SMYS0
http://www.pld.com.cn/blog/Attached File  kernel2.zip ( 337.57k ) Number of downloads: 79
"fD$M:^ P[&J$Ye0
http://www.pld.com.cn/blog/Attached File  isp1362.zip ( 59.35k ) Number of downloads: 65
I$M*o7d[c0
http://www.pld.com.cn/blog/Attached File  zimage.zip ( 4.8k ) Number of downloads: 48
o L+H*nsc0
http://www.pld.com.cn/blog/Attached File  build0411.zip ( 52.42k ) Number of downloads: 175


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-10  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 9110
  • 日志数: 96
  • 建立时间: 2006-08-07
  • 更新时间: 2007-06-30

RSS订阅

Open Toolbar