Chinaunix首页 | 论坛 | 博客
  • 博客访问: 366337
  • 博文数量: 36
  • 博客积分: 2071
  • 博客等级: 大尉
  • 技术积分: 797
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 12:08
文章分类
文章存档

2011年(2)

2010年(34)

我的朋友

分类: 嵌入式

2010-12-01 22:21:24

 

1         构建嵌入式开发平台

嵌入式linux软件系统由bootloaderkernelroot filesystem构成,如下:

Bootloader(一次固化)+内核(多次更新)+根文件系统制作

linux_platform.tar.gz文件拷到/home目录下,并解压

 

1.1        安装交叉编译器

# cd /home/linux_platform/host

安装以下交叉编译工具:

 2.95.3 用于编译vivi

4.3.2  用于编译u-boot /内核/根文件系统/应用程序

#mkdir  –p  /usr/local/arm

#tar  zxvf  arm-linux-gcc-2.95.3.tar.gz  –C  /usr/local/arm

#tar  zxvf  arm-linux-gcc-4.3.2.tar.gz   –C  /usr/local/arm

 

       其中4.3.2需要假加入环境变量(此项工作前面应该已经做过)

       #vi  ~/.bashrc

       #export  PATH=/usr/local/arm/4.3.2/bin:$PATH

      

1.2        配置编译bootloader-------vivi

       #cd  /home/linux_platform/target/bootloader

       #tar  zxvf  vivi_unsp.tar.gz

       #cd         vivi-unsp

       #make  distclean

       #cp    sapp-unsp40.config  .config

              #make  menuconfig  //编译一些宏

由于采用的是配置好的脚本,因此不用做任何修改,直接保存退出即可

#make

在当前路径下会生成 vivi 的二进制文件。

       #cp  vivi  /home/linux_platform/image/my_vivi

       将生成的vivi镜像拷贝到image目录下,并改名为my_vivi

      

1.3        配置编译u-boot

#cd  /home/linux_platform/target/bootloader/

#tar  zxvf  u-boot_unsp.tar.gz

       #cd  u-boot_unsp

       #make distclean

       #make unsp2440_config

#make

在当前目录下会生成一个u-boot.bin的文件

将生成的u-boot镜像拷贝到image目录下,并改名为my_u-boot.bin

 

tools目录下生成的mkimage文件拷贝到/bin目录中,后面用于制作u-boot所需格式的内核

#cp  u-boot/tools/mkimage  /bin

 

1.4        配置编译内核

#cd  /home/linux_platform/target/kernel

#tar  zxvf  linux-2.6.34.tar.bz2

       #cd         linux-2.6.34

#make distclean

       #cp  sapp-unsp40.config .config

#make menuconfig

vivi类似,由于采用的是配置好的脚本,因此不用做任何修改,直接保存退出即可。

#make zImage

/arch/arm/boot下会生成zImage文件

在此目录下执行以下命令:

#mkimage  -n 'linux-2.6.34'  -A arm  -O linux  -T kernel  -C none  -a 0x30008000  -e 0x30008000  -d zImage  uImage.img

 

会在当前路径下生成uImage.img这个文件

#cp  /arch/arm/boot/zImage      /home/linux_platform/image/my_zImage

#cp  /arch/arm/boot/uImage.img  /home/linux_platform/image/my_uImage.img

 

将生成的zImage镜像拷贝到image下,并改名为my_zImage (vivi启动所需的内核)

将生成的uImage镜像拷贝到image下,并改名为my_uImage.img (u-boot启动所需的内核)

      

1.5        根文件系统的制作(cramfsyaffs)

1.5.1          准备编译工具:

1) cramfs格式的文件

cramfs格式的根文件系统为只读文件系统,大小压缩了一倍。cramfs是可逆的文件系统,即我们可以将其压成镜像,也可以将其从镜像中解压出来。

#tar  zxvf  cramfs-1.1.tar.gz              //编译cramfs根文件系统制作工具

       #cd  cramfs-1.1

       #make

会在当前路径下编译得到两个工具:mkcramfs  cramfsck

#cp  mkcramfs  cramfsck  /bin     //将两个工具拷贝到根目录的/bin

其中mkcramfs用来生成cramfs格式的根文件系统

cramfsck用来将已生成的根文件系统释放为文件夹

      

   2)yaffs格式的文件

              yaffs格式的根文件系统是可读可写的文件系统,没有经过压缩,是不可逆的。

              #tar  zxvf yaffs2.tar.gz

              #cd  yaffs2/utils

              #make                                              //会产生mkyaffsimage

              #cp mkyaffsimage /bin  //将生成的工具拷贝到bin目录下

 

1.5.2            生成不带GUI的根文件系统

       #cd  /home/linux_platform/target/root_26

       #tar  zxvf  rootfs_noGUI.tar.gz         //解压不带QT库的根文件系统

       # mkcramfs  rootfs_noGUI/  rootfs_noGUI.cramfs 

//将刚才解压出来的根文件系统制作成cramfs格式的镜像

       #mkyaffsimage  rootfs_noGUI/   rootfs_noGUI.yaffs

       #cp  rootfs_noGUI.cramfs  /home/linux_platform/image/

 

1.5.3          生成带GUI的根文件系统

       #tar  zxvf   rootfs_GUI.tar.gz

       # mkcramfs  rootfs_GUI/  rootfs_GUI.cramfs        

//制作带GUI界面的根文件系统

#mkyaffsimage  rootfs_GUI/   rootfs_GUI.yaffs

       #cp rootfs_GUI.cramfs  /home/linux_platform/image/

      

1.5.4          使用H-JTAG、串口更新系统(vivi)

前面已经生成了构建嵌入式开发平台所需的所有文件,下面讲解将其更新到开发板中。

 

1)        FLASH中没有任何信息(即开发板为裸板)时:

如果开发板中已经烧有vivi,则直接跳过此步,直接进行第2步:

 

使用LSJF24X0H-JTAG烧写工具烧写vivi

             

             

2)        板子中已经正确烧有vivi

 

在超级终端中:使用

load  flash  vivi     x(下载imagemy_vivi

load  flash  kernel   x(下载imagemy_zImage

load  flash  root     x(下载cramfs格式的文件系统)

/load  yaffs  root    x(下载yaffs格式的文件系统)

 

              分别将前面编译得出的镜像烧入开发板中,以启动我们的开发板。

      

       3)根文件系统中已经做好了boa服务器、telnet服务器、QT图形库(带GUI含有)

       可以设置开发板的IP地址,在PC机上通过虚拟机访问开发板,观察boa服务器的现象。

       dos下通过telnet客户端连接开发板管观察现象。

       如果烧写的是带QT的图形库,我们可以启动2440 /home下的QT测试程序

 

1.5.5          使用H-JTAG、串口更新系统(uboot)

前面已经生成了构建嵌入式开发平台所需的所有文件,下面讲解将其更新到开发板中。

 

1)        FLASH中没有任何信息(即开发板为裸板)时:

如果开发板中已经烧有viviu-boot,则直接跳过此步,直接进行第2步:

 

使用LSJF24X0H-JTAG烧写工具烧写u-boot

 

烧写我们前面编译好的 my_u-boot.img

 

2)        假设开发板中已经有了vivi

使用vivi更新u-boot

#load flash vivi x

注意,这里跟前面不一样,传送文件的时候选择my_u-boot.bi文件进行传送

至此开发板中已经烧入了我们编译出的u-boot,重启开发板,显示界面变成了u-boot的启动界面:

3)        下面我们学习使用u-boot更新系统

 

u-boot提供了通过网络下载的功能:

网络命令(需用交叉线连接电脑与开发板)

       #ping 192.168.220.x(电脑主机IP)

    //测试是否联通PC机上启动TFTP服务器

       //如果可以连通启动TFTP+DHCP_Server/下的tftpd32.exe

       将我们前面编译出的imag文件夹中的文件拷到TFTP+DHCP_Server/目录下

   //下面的名字需换成我们编译的名字

更新内核:

#tftp  0x30000000  172.20.223.63:uImage.img  //此处能显示文件系统大小

#nand  erase  0x50000  0x300000

#nand  write  0x30000000  0x50000  xxxx(此大小填入文件系统的实际大小,tftp下载完成后,会给出其大小)0x300000

 

更新cramfs根文件系统

#tftp  0x30000000  172.20.223.63:rootfs.cramfs

#nand  erase  0x350000  0x3cac000

#nand  write  0x30000000  0x350000  xxxx(此大小填入文件系统的实际大小,tftp下载完成后,会给出其大小)

 

更新yaffs根文件系统

#tftp  0x30000000  172.20.223.63:rootfs.yaffs

#nand  erase  0x350000  0x3cac000

#nand  write.yaffs2 0x30000000  0x350000 xxxx(此大小填入文件系统的实际大小,tftp下载完成后,会给出其大小)

(此数字必须是528的整数倍)

 

重启

#boot   //是否能引导操作系统起来

 

u-boot还提供了通过USB主的功能,可以把镜像文件拷入U盘中,然后烧写镜像:

             

1.         插入U盘(经测试<=4GU盘可以正常识别,8G以上U盘暂时无法识别)

 

2.         U-boot目录下敲入以下命令

#usb start

unsp2440 # usb start

(Re)start USB...

USB:   scanning bus for devices... 4 USB Device(s) found

                scanning bus for storage devices... 1 Storage Device(s) found

#usb tree

Device Tree:

  1  Hub (12 Mb/s, 0mA)

  |   OHCI Root Hub

  |

  +-2  Hub (12 Mb/s, 64mA)

  | |   Standard USB Hub

  | |

  | +-3  Mass Storage (12 Mb/s, 100mA)

  |      SanDisk Cruzer Slice 0878101D5F51B353

  |   

  +-0  See Interface (12 Mb/s, 0mA)  

 

#fatinfo usb 0:1

Interface:  USB

  Device 0: Vendor: SanDisk  Rev: 8.02 Prod: Cruzer Slice   

            Type: Removable Hard Disk

            Capacity: 3813.7 MB = 3.7 GB (7810559 x 512)

Partition 1: Filesystem: FAT32 "NO NAME    "

 

#fatls usb 0:1         //可以显示当前U盘所有目录及文件信息

unsp2440 # fatls usb 0:1

            mds/

            recycler/

            qt_test/

                     u-boot.bin

 

#fatload usb 0:1 0x30000000 u-boot.bin      //下载指定文件镜像

reading u-boot.bin

........................

256220 bytes read

                    

                其余操作跟网络下载相同

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