2.2安装BootLoader程序到Nor Flash

 

使用j-flash arm烧写BootLoader文件到norflash上。先打开软件j-flash arm,关闭旧的工程,点击文件,打开工程,在I:\Lnux嵌入式光盘资料\光盘S1  体验与基础篇视频教程\【申嵌视频】1 体验篇\tools\JLink\JLink烧写NOR Flash\s3c2440a_embedclub.jflash工程,点击选项,进行相应设置,选中相应的芯片,在点击目标,点击连接,连接成功之后,点击文件,打开,打开supervivi-128M.bin,注意,在该文件后面加扩展名.bin,打开文件后,点击target中的program,即可烧写程序,成功的话会弹出进度条的弹窗。先擦除,后烧写。

然后从nor flash启动,看到supervivi的启动画面,选中选项n,因为没有连接上USB host,所以出现USB host is not connected yet,启动dnw,选中USB port,点击传输,然后选中要下载的文件,即可开始下载。烧写好后,关机,然后从nand flash启动,在指定时间内没有按下任何按键的话,系统会自动引导启动,按下任意键之后,会进入U-Boot的命令行模式,可以执行相关的命令。使用help命令可以将支持的所有命令罗列出来。

 

使用此功能下载,需要使用USB线,连接开发板那一端的是方口线,需要安装相应的USB驱动。USB驱动的路径:I:\Lnux嵌入式光盘资料\光盘S0  各类技术文件\windows平台工具\usb下载驱动\FriendlyARM USB Download Driver Setup_20090421,注意,在安装驱动时,不要连接上USB线。配合dnw下载,只有在BIOS状态下才能下载。

由于某些原因,官方的USB驱动无法配合dnw进行下载,可能是因为不能使用window7系统下载的原因,

 

使用TFTP服务器下载程序到开发板中:

执行命令apt-get install tftp服务器,

配置脚本文件:/etc/xinetd.d/tftp,

创建tptp server根目录:mkdir /tftpboot

设置权限:chmod +rw /tftpboot,

重启服务:service xinetd restart.

使用u-boot.bin配合tftp server完成下载功能。

 

使用u-boot结合TFTP服务器进行下载,从nand flash启动,同在u boot启动界面,按下任意键,停留在u boot启动界面,

 

3 Linux内核

3.1 vmlinux, zImage, Image的区别

从下面的内核编译过程,可以看出vmlinux,  arch/arm/boot/compressed/vmlinux,

 arch/arm/boot/Image, arch/arm/boot/zImage 之间的区别.

  LD      vmlinux  

  SYSMAP  System.map  

  SYSMAP  .tmp_System.map  

  OBJCOPY arch/arm/boot/Image  

  Kernel: arch/arm/boot/Image is ready  

  AS      arch/arm/boot/compressed/head.o  

  GZIP    arch/arm/boot/compressed/piggy.gz  

  AS      arch/arm/boot/compressed/piggy.o  

  LD      arch/arm/boot/compressed/vmlinux  

  OBJCOPY arch/arm/boot/zImage  

  Kernel: arch/arm/boot/zImage is ready   

vmlinux 是一个elf格式的文件 

Image 是经过objcopy 处理了的只包含内核代码,数据的一个文件, 已经不是elf格式的了。此时还没有经过压缩 

arch/arm/boot/compressed/vmlinux 是经过压缩的Image和加入了解压头的elf格式的文件 

arch/arm/boot/zImage 是经过objcopy处理了的可以直接下到对应的地址执行的内核镜像 objcopy: 

GNU 实用工具程序objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。

Objcopy使用GNU BFD库去读或写目标文件。Objcopy可以使用不同于源目标文件的格式来写目的目标文件(也即是说可以将一种格式的目标文件转换成另一种格式的目标文 件)。通过以上命令行选项可以控制Objcopy的具体操作。 

Objcopy在进 行目标文件的转换时,将生成一个临时文件,转换完成后就将这个临时文件删掉。Objcopy使用BFD做转换工作。如果没有明确地格式要求,则 Objcopy将访问所有在BFD库中已经描述了的并且它可以识别的格式,请参见《GNUpro Decelopment Tools》中“using ld”一章中“BFD库”部分和“BFD库中规范的目标文件格式”部分。 

通过使用srec作为输出目标(使用命令行选项-o srec),Objcopy可以产生S记录格式文件。 

通 过使用binary作为输出目标(使用命令行选项-o binary),Objcopy可以产生原始的二进制文件。使用Objcopy产生一个原始的二进制文件,实质上是进行了一回输入目标文件内容的内存转 储。所有的符号和重定位信息都将被丢弃。内存转储起始于输入目标文件中那些将要拷贝到输出目标文件去的部分的最小虚地址处。 

使用Objcopy生成S记录格式文件或者原始的二进制文件的过程中,-S选项和-R选项可能会比较有用。-S选项是用来删掉包含调试信息的部分,-R选项是用来删掉包含了二进制文件不需要的内容的那些部分。  

内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。    那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。 

     如 何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就 完成制作工具。然后在内核目录下运行

make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。 

其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。 U-boot的U是“通用”的意思。 

zImage 是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明 这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区 别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。 

  

在博创2410开发板上的过程示例  

[xie@happyending linux-2.6.24.4]$ make uImage  

  CHK     include/linux/version.h  

make[1]: “include/asm-arm/mach-types.h”是最新的。  

  CHK     include/linux/utsrelease.h  

  CALL    scripts/checksyscalls.sh  

:1097:2: warning: #warning syscall fadvise64 not implemented 

:1265:2: warning: #warning syscall migrate_pages not implemented  

:1321:2: warning: #warning syscall pselect6 not implemented  

:1325:2: warning: #warning syscall ppoll not implemented  

:1365:2: warning: #warning syscall epoll_pwait not implemented  

  CHK     include/linux/compile.h  

dnsdomainname: Unknown host  

  Kernel: arch/arm/boot/Image is ready  

  Kernel: arch/arm/boot/zImage is ready  

  UIMAGE  arch/arm/boot/uImage  

"mkimage" command not found - U-Boot images will not be built  

  Image arch/arm/boot/uImage is ready       

[root@happyending linux-2.6.24.4]# cp mkimage /usr/local/bin  

[root@happyending linux-2.6.24.4]# which mkimage   

/usr/local/bin/mkimage   

[xie@happyending linux-2.6.24.4]$ make uImage  

  CHK     include/linux/version.h  

make[1]: “include/asm-arm/mach-types.h”是最新的。  

  CHK     include/linux/utsrelease.h  

  CALL    scripts/checksyscalls.sh  

:1097:2: warning: #warning syscall fadvise64 not implemented  

:1265:2: warning: #warning syscall migrate_pages not implemented 

:1321:2: warning: #warning syscall pselect6 not implemented 

:1325:2: warning: #warning syscall ppoll not implemented 

:1365:2: warning: #warning syscall epoll_pwait not implemented 

  CHK     include/linux/compile.h 

dnsdomainname: Unknown host 

  Kernel: arch/arm/boot/Image is ready 

  Kernel: arch/arm/boot/zImage is ready 

  UIMAGE  arch/arm/boot/uImage 

"mkimage" command not found - U-Boot images will not be built 

  Image arch/arm/boot/uImage is ready 

 [root@happyending linux-2.6.24.4]# cp mkimage /usr/local/bin 

 [root@happyending linux-2.6.24.4]# which mkimage  

/usr/local/bin/mkimage 

 [xie@happyending linux-2.6.24.4]$ make uImage 

  CHK     include/linux/version.h 

make[1]: “include/asm-arm/mach-types.h”是最新的。

  CHK     include/linux/utsrelease.h 

  CALL    scripts/checksyscalls.sh 

:1097:2: warning: #warning syscall fadvise64 not implemented 

:1265:2: warning: #warning syscall migrate_pages not implemented

:1321:2: warning: #warning syscall pselect6 not implemented  

:1325:2: warning: #warning syscall ppoll not implemented  

:1365:2: warning: #warning syscall epoll_pwait not implemented  

  CHK     include/linux/compile.h  

dnsdomainname: Unknown host  

  Kernel: arch/arm/boot/Image is ready  

  Kernel: arch/arm/boot/zImage is ready  

  UIMAGE  arch/arm/boot/uImage  

Image Name:   Linux-2.6.24.4  

Created:      Fri Apr 16 16:08:40 2010  

Image Type:   ARM Linux Kernel Image (uncompressed)  

Data Size:    1831944 Bytes = 1789.01 kB = 1.75 MB  

Load Address: 0x30008000  

Entry Point:  0x30008000  

  Image arch/arm/boot/uImage is ready  

[xie@happyending linux-2.6.24.4]$ ls -l arch/arm/boot/zImage   

-rwxrwxr-x 1 xie xie 1831944 04-16 12:14 arch/arm/boot/zImage  

[xie@happyending linux-2.6.24.4]$ ls -l arch/arm/boot/uImage   

-rw-rw-r-- 1 xie xie 1832008 04-16 16:08 arch/arm/boot/uImage   

uImage比zImage大64个字节,

 

原文链接:

不详,侵删

你可能感兴趣的:(嵌入式)