Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248967
  • 博文数量: 66
  • 博客积分: 290
  • 博客等级: 入伍新兵
  • 技术积分: 342
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-27 15:44
文章分类

全部博文(66)

文章存档

2013年(19)

2012年(47)

分类:

2012-11-29 09:05:31

运行的话需要有动态库的支 持,这时就需要将/usr/local/arm/compiler/arm-none-linux-gnueabi/libc/armv4t/lib的库 复制到根文件系统的lib目录中,否则运行会报找不到库的错误。(有些应用程序还需要/usr/local/arm/4.3.2/arm-none- linux-gnueabi/libc/usr/lib中的库文件)


为了确保软件的EABI匹配性,不出现Illegal instruction的错误,应该保证

1.  编译kernel的时候在Kernel Features选项中选上EABI
2.  所有的软件都是用支持EABI的编译器(例如arm-linux-4.3.2)来编


四、文件系统打包

文件说明:文件系统为twzyg ,zygfs为目录

1dd if=/dev/zero of=twzyg count=6000 bs=1K

2/sbin/mke2fs -F -v -m0 twzyg     格式化成文件系统twzyg

3sudo mount -o loop twzyg zygfs   将文件系统twzyg挂载到zygfs目录下

4cp -avd _install/* zygfs         _install文件夹下的目录拷贝到zygfs目录下,此时zygfs中包含_install的所有文件

5sudo umount  zygfs               将目录中的文件放入到twzyg中,构成文件系统,此时zygfs中无内容

6gzip -9 twzyg                    压缩成twzyg.gz,并可以烧入目标板中

    

注:

    以上六条命令可以在终端界面一条一条的执行,也可以产用shell.具体步骤如下:

tw123@ubuntu:~/zyg/busybox-1.14.2$ gedit fscreate (建立文件fscreate)

之后弹出文件,在内容里面添加命令

rm –rf zygfs           

mkdir zygfs

dd if=/dev/zero of=twzyg count=6000 bs=1K

/sbin/mke2fs -F -v -m0 twzyg     

sudo mount -o loop twzyg zygfs   

cp -avd _install/* zygfs         

sudo umount  zygfs              

gzip -9 twzyg                   

    保存文件之后退出,然后执行命令

    tw123@ubuntu:~/zyg/busybox-1.14.2$ chmod 777 fscreate  (设置fscreate的访问权限)

    tw123@ubuntu:~/zyg/busybox-1.14.2$ ./fscreate          (运行fscreate文件,之后便生成文件系统)

五、将生成的u-boot,uImage以及twzyg.gz烧入到目标板上

u-boot 烧入到0x10000000

uImage烧入到0x10100000

    twzyg.gz烧入到0x10300000中(twzyg.gz大小为880KB,因此烧入到板子中要避免与uImage发生冲突)

 

超级终端产用波特率为115200.断电启动目标板之后输入命令如下:

U-BOOT>> cp.b 10100000 20200000 200000 (将内核uImage拷贝到SDRAM20200000地址中,每次拷贝200000字节)

U-BOOT>> cp.b 10300000 20410000 200000(将文件系统twzyg.gz拷贝到SDRAM20410000地址中)

U-BOOT>> bootm 20200000               (启动内核uImage)

 

注:

将文件系统拷贝至20410000的原因查找。

tw123@ubuntu:~/zyg/linux-2.6.32$  make menuconfig

弹出界面:

选择Boot options ---> 进入

Initrd = 0x20410000可以得知,文件系统应该拷贝到0X20410000中。

 

 

mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw的设置:

找到linux-2.6.32/arch/arm/configs/at91rm9200dk_defconfig文件并修改如下:

191   CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"

改为    #CONFIG_CMDLINE="mem=16M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"

 

编译文件系统中遇到的一些问题及解决办法:

更改busybox1.14.2目录下的Makefile文件。

164行:  CROSS_COMPILE ?=

改 为:   CROSS_COMPILE ?=/home/tw123/zyg/3.4.5/bin/arm-linux-

如何查找 /home/tw123/zyg/3.4.5/bin/arm-linux- ?

查找方法如下:

tw123@ubuntu:~/zyg/busybox-1.14.2$ which arm-linux-gcc

/home/tw123/zyg/3.4.5/bin/arm-linux-gcc

191行:  ARCH ?= $(SUBARCH)

改为:    ARCH ?= arm

 

tw123@ubuntu:~/zyg/busybox-1.14.2$make 

错误一:

CC      miscutils/inotifyd.o
miscutils/inotifyd.c:31:27: linux/inotify.h: No such file or directory
miscutils/inotifyd.c: In function `inotifyd_main':
miscutils/inotifyd.c:61: error: `IN_ALL_EVENTS' undeclared (first use in this function)
miscutils/inotifyd.c:61: error: (Each undeclared identifier is reported only once
miscutils/inotifyd.c:61: error: for each function it appears in.)
miscutils/inotifyd.c:129: error: dereferencing pointer to incomplete type
miscutils/inotifyd.c:139: error: dereferencing pointer to incomplete type
miscutils/inotifyd.c:140: error: dereferencing pointer to incomplete type
miscutils/inotifyd.c:140: error: dereferencing pointer to incomplete type
miscutils/inotifyd.c:143: error: invalid application of `sizeof' to incomplete type `inotify_event'
miscutils/inotifyd.c:143: error: dereferencing pointer to incomplete type
make[1]: *** [miscutils/inotifyd.o] Error 1
make: *** [miscutils] Error 2 
网上说这是busybox的一个bug(本人的busybox版本过低,高一些的版本可能不会出现此问题),解决方法:去掉对inotifyed的支持,具体步骤如下:
make menuconfig
Miscellaneous Utilities  --->
    [ ]inotifyd
还有另一个bugtaskset,也要将它去掉,不然编译时又会出错。
Miscellaneous Utilities  --->
    [ ]taskset

tw123@ubuntu:~/zyg/busybox-1.14.2$make 

错误二:缺少头文件 input.h

CC      util-linux/acpid.o

util-linux/acpid.c: In function `acpid_main':

util-linux/acpid.c:145: error: `EV_SW' undeclared (first use in this function)

util-linux/acpid.c:145: error: (Each undeclared identifier is reported only once

util-linux/acpid.c:145: error: for each function it appears in.)

util-linux/acpid.c:146: error: `SW_LID' undeclared (first use in this function)

make[1]: *** [util-linux/acpid.o] 错误 1

make: *** [util-linux] 错误 2

 

解决方案:

tw123@ubuntu:~/zyg/busybox-1.14.2$

cp  -rafl /usr/src/linux-headers-2.6.32-24/include/linux/input.h  ./include/linux/

tw123@ubuntu:~/zyg/busybox-1.14.2$make






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