Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78998
  • 博文数量: 25
  • 博客积分: 1280
  • 博客等级: 中尉
  • 技术积分: 366
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 17:36
文章分类

全部博文(25)

文章存档

2010年(1)

2009年(5)

2008年(19)

我的朋友

分类:

2008-09-22 13:09:35

 

空板的Linux写入完整操作过程

1. boot的写入

连接硬件,JTAG插头插入板子上的JL3上,注意1角的标志

在命令行下,输入:

SJF2440.exe /F:u-boot.bin

 (1)0

(2)输入BLOCK输入:0

 

 

3)开始写入

(4)写入完成

 

 

5)写入完成,选2退出

2. tftp32的设置

打开Tftp32,选择内核二进制文件和文件系统目录所在的文件夹

3. 超级终端的设置

1)把板子的串口0J9)和计算机的串口相接,

把板子的100M网口连接到HUB或者直接和计算机连接

检查系统的跳线是否正常,保证电源畅通

2设置计算机的超级终端的串口的属性

    设置终端为1152008N1N

 

3)系统进行加电启动

接上5V单电源,系统启动

4)出现U-boot,如下图所示

4. 设置参数

SMDK2440 # set bootdelay 3

SMDK2440 # set ipaddr 192.168.0.18

SMDK2440 # set serverip 192.168.0.120

SMDK2440 # set linux_arg noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS0

SMDK2440 # set bootcmd nandr c e0000 30008000\; bootm

SMDK2440 # save

内核的写入

(1)内核的传入:在uboot提示符下输入:

SMDK2440 # tftp 30008000 zImage

如下图:

 

(2)内核的写入:通过以下命令将zImage 写入Nandflash

SMDK2440 # nandw c e0000 30008000

如下图:

文件系统的写入

(1)文件系统的传入:在uboot提示符下输入

SMDK2440 # tftp 30008000  myyaffs

2文件系统的写入: uboot提示符下输入以下命令将文件系统写入:

SMDK2440 # nandw 80 3ebec0 30008000

这里3ebec0是文件系统映像的长度,具体数值必须由你的tftp 传输结果数据决定

使用的暂存地址是0x30008000;文件系统的起始块号为0x80

7. 系统的启动

按下复位键,系统可以启动了。系统可以正常启动,说明硬件工作正常。

 

 

 

  

 

1.    空板在nand flashnor flash中没有bootloader时是不能启动的,(鄂尔多斯项目所用旧版103nor flash没焊)这样需要先用JTAG下载器将2440bootloader—U-boot.bin写进nand flash.一旦u-boot.bin被写入nandflashBLOCK 0 ,目标板重新上电启动后,ram就会将u-boot调入运行。完成最初的bootloader启动。

2.    2440用来引导的bootloader不只一个版本他们均可引导cpu 启动,本项目用流行的u-boot来做bootloaderU-boot支持很多功能,例如tftp,硬件配置,串口命令交互,网络通信等等。所以当u-boot下载到nand flash后就可以通过tftp服务来完成大文件的下载传输了,比如linux内核和文件系统等。

3.    u-boot运行后需做必要的配置

+++++++++++++++++++++++++++++++

SMDK2440 # set bootdelay 3

SMDK2440 # set ipaddr 192.168.0.18

SMDK2440 # set serverip 192.168.0.120

SMDK2440 # set linux_arg noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS0

SMDK2440 # set bootcmd nandr c e0000 30008000\; bootm

SMDK2440 # save

++++++++++++++++++++++++++++++++++++++++++++

//这里ipaddr设置目标板ip,serverip设置服务器ip即主机地址,此时用主机来做tftp服务器,主机ip192.168.0.120所以在此设置服务地址为0.120,这两个地址可以任意,但必须在同一网段内。

Linux_arg linux的启动参数,按如上设置就可以。

Bootcmd是引导命令。

Save保存之后就可以启动tftp了。

 

4.    执行tftp时,主机需运行tftpd32.exe软件以启动tftp服务,且主机ip地址虚设为目标板指定的serverip,该例程第三步设为192.168.0.120.

 

5. SMDK2440 # tftp 30008000 zImage

Tftp服务将内核文件zimage通过网络传入Ram,起始地址为Ram30008000处。

 

6.SMDK2440 # nandw c e0000 30008000

将内核写入nandflash c块处,所传文件大小为e0000,文件来源为Ram30008000处。内核的起始块号为c,8~b块是存放环境变量的空间。Zimage最大为1.8M(存放在c0x79)

此时目标板的bootloader和内核都下载到nandflash内了。重新上电内核将首先检测nandflash0地址,开有无启动程序,此时检测到0地址的u-boot,则程序调用u-boot运行引导程序,在倒数3秒后程序将nandflash的内核程序调入ram,程序开始启动内核。

至此linux内核被成功加载运行。

 

7.对于大容量存储起来说文件系统还是必须的,它可以方便的管理存储器和它上的文件.所以在内核传输完成后一般要接着传输文件系统到nandflash.

文件系统的传入:在uboot提示符下输入

SMDK2440 # tftp 30008000  myyaffs

该文件系统是经yaffs标准文件系统修改编译后的文件系统,定名为myyaffs,当然文件系统也有好多,例如开发板提供的文件系统是root_china.cramfs.

 

8. SMDK2440 # nandw 80 3ebec0 30008000

这里3ebec0是文件系统映像的长度,具体数值必须由你的tftp 传输结果数据决定

使用的暂存地址是0x30008000;文件系统的起始块号为0x80

起始块选择0x80是由写入nandflash内的内核大小决定的,因内核最大为1.8M所以

Nandflash-k9f1208总大小为64Mblock大小为16K+512字节,文件系统存放的块起始点为0x80, 

0x79-c=0x6d=109

109*16K=1744000

所以从c0x791.8M空间存放zimage内核,从0z80开始存放文件系统文件。

到此处nandflash的文件存储格式已经清楚了解:

0x00  ~~  0x07  存放bootloader程序,u-boot

0x08  ~~  0x0b  存放环境变量

0x0c  ~~  0x79  存放内核文件zimage

0x80  ~~        存放文件系统myyaffs

 

9.至此,bootloader程序u-boot.bin,内核文件zimage和文件系统myyaffs均已写入nandflash,重新上电系统就会在u-boot的引导下启动linux内核,加载文件系统,linux成功启动,尽情体验吧:)

 

10.linux的一个优势是可以在线更新,包括它的bootloader和内核以及应用文件,在系统上电运行已有的u-boot后在倒数3秒前按回车,

此时启动tftp服务

SMDK2440 # tftp 30008000 u-boot.bin

SMDK2440 # nandw 0 20000 30008000

u-boot更新完成,之后boot重新引导,系统就有新的bootloader引导系统了。

Linux内核和文件系统也可按上面步骤进行。

 

11.下面介绍一下s3c2440的地址分配,2440可以对9bank进行寻址,每bank最大空间为128M,为了使处理器各个设备的访问互不干扰,我们将不同类的设备映射到不同的bank内。在2440平台上,除了bank0分配给norflashbank3分配给了以太网控制器设备,bank6分配给了SDRAM,其他空间任未分配,用户扩展外部设备有很多的余地。

S3c2440提供了能够从nandflash启动的stemmingsstone机制,因此2440系统可以采用一片nandflash同时作为ROM和系统程序保持ROM,所以在nandflash地址0处写入u-boot就可以引导启动,当然此时bank0被分配给了nandflash,系统上电后从0地址开始运行,自然就开始运行映射到0地址的u-boot了。由于RAM被映射到bank6,所以RAM地址位于0x3000_0000开始的128M空间内。在系统运行时0x3000_0000~~0x3000_8000这部分RAM要有来保存系统变量,所以在我们进行文件传输过程中一般从0x3000_8000开始作为我们的临时RAM空间

 

12.下面介绍系统启动后103项目用到的一些常用操作;cf卡,usb设备的挂载。

# mount -t vfat /dev/ide/host0/bus0/target0/lun0/part1 /usr/

 /dev/ide/host0/bus0/target0/lun0: p1

 /dev/ide/host0/bus0/target0/lun0: p1

CF卡的挂载成功

 

U盘插入后,系统找到U

# hub.c: new USB device usb-ohci-1, assigned address 2

scsi0 : SCSI emulation for USB Mass Storage devices

  Vendor: Kingston  Model: DataTraveler 2.0  Rev: PMAP

  Type:   Direct-Access                      ANSI SCSI revision: 02

Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0

SCSI device sda: 3905536 512-byte hdwr sectors (2000 MB)

sda: Write Protect is off

 /dev/scsi/host0/bus0/target0/lun0:<7>usb-storage: queuecommand() called

 p1

U盘加载成功,运行一下命令,进入U盘查看文件信息

# mount -t vfat /dev/scsi/host0/bus0/target0/lun0/part1 /tmp

# cd /tmp

# ls

Doc1.doc   elinuxrc   play       zImage

adc.o      getnet     rav2008    zhtzh.rbf

 

在鄂尔多斯103项目中可从U盘拷贝应用程序到目标板

# cp adc.o /usr/driver/

# cp elinuxrc /linuxrc

# ps                                      //显示当前运行的进程

  PID  Uid     VmSize Stat Command

    1 root       1400 S    init

    2 root            S    [keventd]

    3 root            S    [ksoftirqd_CPU0]

    4 root            S    [kswapd]

    5 root            S    [bdflush]

    6 root            S    [kupdated]

    8 root            S    [mtdblockd]

    9 root            S    [khubd]

   43 root        896 S    /getnet

   45 root        944 S    /keyd

   49 root       1400 S    init

   50 root       1484 S    -sh

   51 root            S    [usb-storage-0]

   52 root            S    [scsi_eh_0]

   60 root       1404 R    ps

# kill 43                                          //将进程4345关掉

# kill 45

release ok!

# cp

Doc1.doc        adc.o           elinuxrc        getnet

play            rav2008/        zImage          zhtzh.rbf

# cp getnet play /

**>> Block 184 retired

# cp zhtzh.rbf /fpga.rbf

**>> Block 183 retired

**>> Block 182 retired

**>> Block 181 retired

**>> Block 180 retired

**>> Block 179 retired

**>> Block 178 retired

**>> Block 177 retired

**>> Block 176 retired

**>> Block 175 retired

**>> Block 174 retired

**>> Block 173 retired

**>> Block 172 retired

**>> Block 171 retired

**>> Block 170 retired

**>> Block 169 retired

# cd /usr/

# cp fpga /

# reboot                                      //拷贝完成后重新启动

阅读(670) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~