Linux内核写入s3c2440,Linux空板的系统写入

空板的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)把板子的串口0(J9)和计算机的串口相接,

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

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

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

设置终端为115200、8、N,1、N

(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)内核的传入:在u—boot提示符下输入:

SMDK2440 #tftp 30008000 zImage

如下图:

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

SMDK2440 #nandw ce000030008000

如下图:

文件系统的写入

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

SMDK2440 #tftp 30008000myyaffs

(2)文件系统的写入:在u—boot提示符下输入以下命令将文件系统写入:

SMDK2440 #nandw 80 3ebec0 30008000

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

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

7.系统的启动

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

注释

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

2.2440用来引导的bootloader不只一个版本他们均可引导cpu启动,本项目用流行的u-boot来做bootloader。U-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服务器,主机ip为192.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,起始地址为Ram的30008000处。

6.SMDK2440 #nandw ce000030008000

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

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

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

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

文件系统的传入:在u—boot提示符下输入

SMDK2440 #tftp 30008000myyaffs

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

8.SMDK2440 #nandw 80 3ebec0 30008000

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

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

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

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

0x79-c=0x6d=109

109*16K=1744000

所以从c到0x79的1.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可以对9个bank进行寻址,每bank最大空间为128M,为了使处理器各个设备的访问互不干扰,我们将不同类的设备映射到不同的bank内。在2440平台上,除了bank0分配给norflash,bank3分配给了以太网控制器设备,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: KingstonModel: DataTraveler 2.0Rev: PMAP

Type:Direct-AccessANSI 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.docelinuxrcplayzImage

adc.ogetnetrav2008zhtzh.rbf

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

# cp adc.o /usr/driver/

# cp elinuxrc /linuxrc

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

PIDUidVmSize Stat Command

1 root1400 Sinit

2 rootS[keventd]

3 rootS[ksoftirqd_CPU0]

4 rootS[kswapd]

5 rootS[bdflush]

6 rootS[kupdated]

8 rootS[mtdblockd]

9 rootS[khubd]

43 root896 S/getnet

45 root944 S/keyd

49 root1400 Sinit

50 root1484 S-sh

51 rootS[usb-storage-0]

52 rootS[scsi_eh_0]

60 root1404 Rps

# kill 43//将进程43,45关掉

# kill 45

release ok!

# cp

Doc1.docadc.oelinuxrcgetnet

playrav2008/zImagezhtzh.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//拷贝完成后重新启动

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值