b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

at91sam9261_at91sam9263 remap_pthread_detach

电脑杂谈  发布时间:2016-11-24 13:04:05  来源:网络整理

at91sam9261

此文档是基于at91sam9261这款CPU来进行记录的

对于移植一个自己的linux内核来说,需要下面的几个步骤:

一:首先要让系统跑起来需要一个一级启动代码,这个可以从atmel官方去下载.

root@emboard:/workdir/at91sam9261/AT91Bootstrap#ls

AT91Bootstrap1.14.zip

二:下载纯净的linux内核,和该内核所对应的该系列CPU的补丁.

root@emboard:/workdir/at91sam9261/kernel#ls-l

-rw-rw-rw-1rootroot291272008-10-1312:542.6.24.at91.2-exp.patch.gz

-rw-rw-rw-1rootroot1451642008-10-1313:042.6.24-at91.patch.gz

-rw-rw-rw-1rootroot467377832009-06-1510:32linux-2.6.24.tar.bz2

三:下载适合的交叉编译工具:

root@emboard:/workdir/at91sam9261/crosstool#ls-l

-rw-rw-rw-1rootroot674813462009-12-1520:25arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

四:下载u-boot,同时可以在atmel官方去下载u-boot的补丁

root@emboard:/workdir/at91sam9261/u-boot#ls-l

total7668

-rw-rw-rw-1rootroot1114182009-10-2310:08u-boot-1.3.4-exp.3.diff

-rw-rw-rw-1rootroot77144562009-05-1109:51u-boot-1.3.4.tar.bz2

五:下载busybox用来制作根文件系统:

root@emboard:/workdir/at91sam9261/filesyetem#ls-l

total1888

-rw-rw-rw-1rootroot19249802010-02-2321:10busybox-1.11.2.tar.bz2

注:以上的我只是说明我用的文件名,具体的下载路径我没写,因为有的链接可能失效.

这样的话,有以上的文件就可以使这个linux的最小系统在这个板子上跑起来了.

接下来就是进行解压配置了:

先可以根据自己的需要建立文件夹,最好是每个文件用单独的文件夹做出来,这样利于自己看的清楚,下面是我的文件夹目录:

root@emboard:/workdir/at91sam9261#ls-l

total24

drwxr-xr-x3rootroot40962010-04-0910:53AT91Bootstrap

drwxr-xr-x3rootroot40962010-04-0509:32crosstool

drwxr-xr-x3rootroot40962010-04-0513:32filesyetem

drwxr-xr-x3rootroot40962010-04-0509:41kernel

-rw-r--r--1rootroot2142010-04-0511:59setenv-9261

drwxr-xr-x3rootroot40962010-04-0510:32u-boot

注意上面绿色的文件是一个脚本文件,是用来配置环境变量的.这个会在后面有所说明.

第一步:当然是配置交叉编译工具了,这个不做,你后面的东西根本就没办法在你的板子上跑起来.

root@emboard:/workdir/at91sam9261#cdcrosstool/

root@emboard:/workdir/at91sam9261/crosstool#tar-xjvfarm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

root@emboard:/workdir/at91sam9261/crosstool#ls

arm-2008q1

arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

root@emboard:/workdir/at91sam9261/crosstool#cdarm-2008q1

root@emboard:/workdir/at91sam9261/crosstool/arm-2008q1#ls

arm-none-linux-gnueabibinincludeliblibexecshare

root@emboard:/workdir/at91sam9261/crosstool#cdarm-2008q1

root@emboard:/workdir/at91sam9261/crosstool/arm-2008q1#ls

arm-none-linux-gnueabibinincludeliblibexecshare

root@emboard:/workdir/at91sam9261/crosstool/arm-2008q1#cdbin/

root@emboard:/workdir/at91sam9261/crosstool/arm-2008q1/bin#ls

arm-none-linux-gnueabi-addr2linearm-none-linux-gnueabi-g arm-none-linux-gnueabi-gprofarm-none-linux-gnueabi-readelf

arm-none-linux-gnueabi-ararm-none-linux-gnueabi-gccarm-none-linux-gnueabi-ldarm-none-linux-gnueabi-size

arm-none-linux-gnueabi-asarm-none-linux-gnueabi-gcc-4.2.3arm-none-linux-gnueabi-nmarm-none-linux-gnueabi-sprite

arm-none-linux-gnueabi-c arm-none-linux-gnueabi-gcovarm-none-linux-gnueabi-objcopyarm-none-linux-gnueabi-strings

arm-none-linux-gnueabi-c filtarm-none-linux-gnueabi-gdbarm-none-linux-gnueabi-objdumparm-none-linux-gnueabi-strip

arm-none-linux-gnueabi-cpparm-none-linux-gnueabi-gdbtuiarm-none-linux-gnueabi-ranlib

root@emboard:/workdir/at91sam9261/crosstool/arm-2008q1/bin#pwd

/workdir/at91sam9261/crosstool/arm-2008q1/bin

可见进入bin目录就可以看到我们所需要的交叉编译工具.

root@emboard:/workdir/at91sam9261/crosstool/arm-2008q1/bin#cd../../..

root@emboard:/workdir/at91sam9261#ls

AT91Bootstrapcrosstoolfilesyetemkernelsetenv-9261u-boot

root@emboard:/workdir/at91sam9261#vimsetenv-9261

建立一个脚本文件用来配置环境变量.

#!/bin/sbin/

echo"settheat91sam9261....."

exportPATH=$PATH:/workdir/at91sam9261/crosstool/arm-2008q1/bin/

rm*~

然后保存退出,这样只要运行这个脚本就可以设置好环境变量,但是只是针对于本终端,这样做有个好处就是不污染你的系统.麻烦的就是每次打开这个终端都要去执行这个脚本来配置.

root@emboard:/workdir/at91sam9261#chmod xsetenv-9261

root@emboard:/workdir/at91sam9261#.setenv-9261

settheat91sam9261.....

rm:cannotremove`*~':Nosuchfileordirectory

root@emboard:/workdir/at91sam9261#arm-none-linux-gnueabi-gcc-v

Usingbuilt-inspecs.

Target:arm-none-linux-gnueabi

Configuredwith:/scratch/sandra/lite/src/gcc-4.2/configure--build=i686-pc-linux-gnu--host=i686-pc-linux-gnu--target=arm-none-linux-gnueabi--enable-threads--disable-libmudflap--disable-libssp--disable-libgomp--disable-libstdcxx-pch--with-gnu-as--with-gnu-ld--enable-languages=c,c --enable-shared--enable-symvers=gnu--enable-__cxa_atexit--with-pkgversion=SourceryG Lite2008q1-126--with-bugurl=https://support.codesourcery.com/GNUToolchain/--disable-nls--prefix=/opt/codesourcery--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc--with-build-sysroot=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/libc--enable-poison-system-directories--with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin--with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin

Threadmodel:posix

gccversion4.2.3(SourceryG Lite2008q1-126)

这样就说明交叉编译工具的环境变量已经设置好了,可以进行下面的步骤了.

第二步:解压编译一级启动代码:

root@emboard:/workdir/at91sam9261/AT91Bootstrap#ls

AT91Bootstrap1.14.zip

root@emboard:/workdir/at91sam9261/AT91Bootstrap#unzipAT91Bootstrap1.14.zip

这样就在当前目录下解压了文件:

root@emboard:/workdir/at91sam9261/AT91Bootstrap#ls

AT91Bootstrap1.14.zipBootstrap-v1.14

现在我们可以进入解压后文件的目录进行针对自己的修改了,不过一般没必要做太大的修改,那么多代码看起来也比较头疼的!对整体架构不清楚很难做出正确的修改.

说明:因为我这个板子上面没有网卡,所以不能进行NFS文件系统这样的开发,我为了我方便,我把不用去修改的放在dataflash里面,需要修改的内核和文件系统我放在nandflash里面,这样我每次烧写就不用去重复了.

首先我对我的内存存储分配:

以下是我的存储空间的安排:

dataflash0x8000u-boot

nandflash0x00000000kernel

nandflash0x00400000ramdisk.gz

因为默认的地址和我这个有点冲突,所以就要对有的文件进行修改:

进入下面目录:

root@emboard:/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash#pwd

/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash

root@emboard:/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash#ls

at91sam9261ek.hdataflash_at91sam9261ek.bindataflash_at91sam9261ek.elfdataflash_at91sam9261ek.mapMakefile

修改at91sam9261ek.h

找到修改位置:

/*********************************************************************/

/*BootStrapSettings*/

/**/

/*********************************************************************/

#defineAT91C_SPI_PCS_DATAFLASHAT91C_SPI_PCS0_DATAFLASH/*BootonSPINCS0*/

#defineIMG_ADDRESS0x8400/*ImageAddressinDataFlash*/

#defineIMG_SIZE0x33900/*ImageSizeinDataFlash*/

#defineMACH_TYPE0x350/*AT91SAM9261-EK*/

#defineJUMP_ADDR0x23F00000/*FinalJumpAddress*/

修改为:

/*********************************************************************/

/*BootStrapSettings*/

/**/

/*********************************************************************/

#defineAT91C_SPI_PCS_DATAFLASHAT91C_SPI_PCS0_DATAFLASH/*BootonSPINCS0*/

//#defineIMG_ADDRESS0x8400/*ImageAddressinDataFlash*/

//#defineIMG_SIZE0x33900/*ImageSizeinDataFlash*/

/*********************************************************************/

/*Date:20100409*/

/*Author:microcreat*/

/*Modification:changedtheImageAddressinDataFlash*/

/*andtheImageSizeinDataFlash*/

/*********************************************************************/

#defineIMG_ADDRESS0x8000/*ImageAddressinDataFlash*/

#defineIMG_SIZE0x80000/*ImageSizeinDataFlash*/

#defineMACH_TYPE0x350/*AT91SAM9261-EK*/

#defineJUMP_ADDR0x23F00000/*FinalJumpAddress*/

然后进行编译:

修改Makefile文件:

root@emboard:/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash#vimMakefile

#TODO:setthisappropriatelyforyourlocaltoolchain

ifndefERASE_FCT

ERASE_FCT=rm-f

endif

ifndefCROSS_COMPILE

CROSS_COMPILE=arm-none-linux-gnueabi-

endif

修改使用的交叉编译工具.

保存退出,make

root@emboard:/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash#make

root@emboard:/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash#ls

at91sam9261ek.hcrt0_gnu.odataflash_at91sam9261ek.elfdataflash.odiv0.omain.opmc.ostring.o_udivsi3.o

at91sam9261ek.odataflash_at91sam9261ek.bindataflash_at91sam9261ek.mapdebug.ogpio.oMakefilesdramc.oudiv.o_umodsi3.o

这样就看到编译成功,然后将编译生成的"dataflash_at91sam9261ek.bin"烧人板子的dataflash里面,这样就完成了一级启动代码的烧录.

*****烧写使用samba软件,用法在后面一个单独的文章来说明.

这样就完成了基于dataflash的一级启动代码的编译工作.(烧写一级启动代码可以见另外一篇文章<<at91sam9261-Samba软件的安装与应用>>)

第三步:解压并编译u-boot

上面进行了一级启动代码的移植,现在开始做u-boot的移植,一级启动代码里面设置了u-boot在dataflash里面的烧写地址.

打开u-boot目录,解压u-boot源代码并且打入补丁.

root@emboard:/workdir/at91sam9261/u-boot#ls-l

total7668

-rw-rw-rw-1rootroot1114182009-10-2310:08u-boot-1.3.4-exp.3.diff

-rw-rw-rw-1rootroot77144562009-05-1109:51u-boot-1.3.4.tar.bz2

root@emboard:/workdir/at91sam9261/u-boot#tar-xjvfu-boot-1.3.4.tar.bz2

root@emboard:/workdir/at91sam9261/u-boot#ls

u-boot-1.3.4u-boot-1.3.4-exp.3.diffu-boot-1.3.4.tar.bz2

进入u-boot目录:

root@emboard:/workdir/at91sam9261/u-boot#cdu-boot-1.3.4

将补丁复制到u-boot目录里:

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4#cp../u-boot-1.3.4-exp.3.diff.

打入atmel的补丁:

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4#catu-boot-1.3.4-exp.3.diff|patch-p1

现在为止,u-boot已经打入了atmel的补丁,现在可以进行下面的编译过程了.

可以删除这个补丁文件.

root@emboard:/workdir/emboard-9261/at91sam9261/u-boot#rmu-boot-1.3.4-exp.3.diff

可以看到一级启动代码中的

root@emboard:/workdir/at91sam9261/AT91Bootstrap/Bootstrap-v1.14/board/at91sam9261ek/dataflash#ls

at91sam9261ek.hcrt0_gnu.odataflash_at91sam9261ek.elfdataflash.odiv0.omain.opmc.ostring.o_udivsi3.o

at91sam9261ek.odataflash_at91sam9261ek.bindataflash_at91sam9261ek.mapdebug.ogpio.oMakefilesdramc.oudiv.o_umodsi3.o

中的at91sam9261ek.h文件

#defineJUMP_ADDR0x23F00000/*FinalJumpAddress*/

和u-boot文件中的"config.mk"的地址一致.

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4/board/atmel/at91sam9261ek#ls

at91sam9261ek.cat91sam9261ek.oconfig.mkled.cled.olibat91sam9261ek.aMakefilenand.cnand.opartition.cpartition.o

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4/board/atmel/at91sam9261ek#catconfig.mk

TEXT_BASE=0x23f00000

到此为止,也可以直接去编译,可以用at91am9261的默认配置,但是你可以对nandflash分为几个区,分别用来存储内核和文件系统等.

这个地址分配可以修改u-boot源码文件下的"at91sam9261ek.h"这个文件!

这个文件的目录是:

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4/include/configs#pwd

/workdir/at91sam9261/u-boot/u-boot-1.3.4/include/configs

这个目录前面的不是绝对的,根据你自己所建立的目录为准,后面的目录才是这个文件所在的位置.

#ifdefCFG_USE_DATAFLASH_CS0

/*bootstrap u-boot env linuxindataflashonCS0*/

#defineCFG_ENV_IS_IN_DATAFLASH1

#defineCFG_MONITOR_BASE(CFG_DATAFLASH_LOGIC_ADDR_CS0 0x8400)

#defineCFG_ENV_OFFSET0x4200

#defineCFG_ENV_ADDR(CFG_DATAFLASH_LOGIC_ADDR_CS0 CFG_ENV_OFFSET)

#defineCFG_ENV_SIZE0x4200

#defineCONFIG_BOOTCOMMAND"cp.b0xC00420000x220000000x210000;bootm"

#defineCONFIG_BOOTARGS"console=ttyS0,115200"\

"root=/dev/mtdblock0"\

"mtdparts=at91_nand:-(root)"\

"rwrootfstype=jffs2"

#elifCFG_USE_DATAFLASH_CS3

/*bootstrap u-boot env linuxindataflashonCS3*/

#defineCFG_ENV_IS_IN_DATAFLASH1

#defineCFG_MONITOR_BASE(CFG_DATAFLASH_LOGIC_ADDR_CS3 0x8400)

#defineCFG_ENV_OFFSET0x4200

#defineCFG_ENV_ADDR(CFG_DATAFLASH_LOGIC_ADDR_CS3 CFG_ENV_OFFSET)

#defineCFG_ENV_SIZE0x4200

#defineCONFIG_BOOTCOMMAND"cp.b0xD00420000x220000000x210000;bootm"

#defineCONFIG_BOOTARGS"console=ttyS0,115200"\

"root=/dev/mtdblock0"\

"mtdparts=at91_nand:-(root)"\

"rwrootfstype=jffs2"

#else/*CFG_USE_NANDFLASH*/

/*bootstrap u-boot env linuxinnandflash*/

#defineCFG_ENV_IS_IN_NAND1

#defineCFG_ENV_OFFSET0x60000

#defineCFG_ENV_OFFSET_REDUND0x80000

#defineCFG_ENV_SIZE0x20000/*1sector=128kB*/

#defineCONFIG_BOOTCOMMAND"nandread0x220000000xA00000x200000;bootm"

#defineCONFIG_BOOTARGS"console=ttyS0,115200"\

"root=/dev/mtdblock5"\

"mtdparts=at91_nand:128k(bootstrap)ro,"\

"256k(uboot)ro,128k(env1)ro,"\

"128k(env2)ro,2M(linux),-(root)"\

"rwrootfstype=jffs2"

#endif

以上的部分可以看出每个flash里面的默认分区,应为我想把u-boot放在dataflash,我板子上的片选是cs0,所以我就可以按照我的想法去修改上面CS0的dataflash的分区信息.

修改如下:

#ifdefCFG_USE_DATAFLASH_CS0

/*bootstrap u-boot env linuxindataflashonCS0*/

#defineCFG_ENV_IS_IN_DATAFLASH1

/*********************************************************************/

/*Date:20100409*/

/*Author:microcreat*/

/*Modification:changedtheadress,*/

/*keepthesameofBootstrap-v1.14/board/at91sam9261ek/*/

/*dataflash/at91sam9261ek.h!*/

/*********************************************************************/

//#defineCFG_MONITOR_BASE(CFG_DATAFLASH_LOGIC_ADDR_CS0 0x8400)

#defineCFG_MONITOR_BASE(CFG_DATAFLASH_LOGIC_ADDR_CS0 0x8000)

#defineCFG_ENV_OFFSET0x4000

#defineCFG_ENV_ADDR(CFG_DATAFLASH_LOGIC_ADDR_CS0 CFG_ENV_OFFSET)

#defineCFG_ENV_SIZE0x4000

#defineCONFIG_BOOTCOMMAND"cp.b0xC00420000x220000000x210000;bootm"

#defineCONFIG_BOOTARGS"console=ttyS0,115200"\

"root=/dev/mtdblock0"\

"mtdparts=at91_nand:-(root)"\

"rwrootfstype=jffs2"

修改这个入口地址后,然后修改分区信息:

进入下面的目录:

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4/board/atmel/at91sam9261ek#pwd

/workdir/at91sam9261/u-boot/u-boot-1.3.4/board/atmel/at91sam9261ek

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4/board/atmel/at91sam9261ek#ls

at91sam9261ek.cat91sam9261ek.oconfig.mkled.cled.olibat91sam9261ek.aMakefilenand.cnand.opartition.cpartition.o

修改"partition.c"这个文件.

/*definetheareaoffsets*/

dataflash_protect_tarea_list[NB_DATAFLASH_AREA]={

{0x00000000,0x000041FF,FLAG_PROTECT_SET,0,"Bootstrap"},

{0x00004200,0x000083FF,FLAG_PROTECT_CLEAR,0,"Environment"},

{0x00008400,0x00041FFF,FLAG_PROTECT_SET,0,"U-Boot"},

{0x00042000,0x00251FFF,FLAG_PROTECT_CLEAR,0,"Kernel"},

{0x00252000,0xFFFFFFFF,FLAG_PROTECT_CLEAR,0,"FS"},

};

这个是原始文件,我们可以根据自己的需要去修改:

我的修改如下:

/*********************************************************************/

/*Date:20100409*/

/*Author:microcreat*/

/*Modification:changedtheadress,*/

/*keepthesameofBootstrap-v1.14/board/at91sam9261ek/*/

/*dataflash/at91sam9261ek.h!*/

/*********************************************************************/

/*definetheareaoffsets*/

dataflash_protect_tarea_list[NB_DATAFLASH_AREA]={

{0x00000000,0x00003FFF,FLAG_PROTECT_SET,0,"Bootstrap"},

{0x00004000,0x00007FFF,FLAG_PROTECT_CLEAR,0,"Environment"},

{0x00008000,0x00088000,FLAG_PROTECT_SET,0,"U-Boot"},

{0x00088001,0x0041FFFF,FLAG_PROTECT_CLEAR,0,"NULL"},

};

以上修改的分区要和上面的基地址配合.

#defineCFG_MONITOR_BASE(CFG_DATAFLASH_LOGIC_ADDR_CS0 0x8000)

#defineCFG_ENV_OFFSET0x4000

#defineCFG_ENV_ADDR(CFG_DATAFLASH_LOGIC_ADDR_CS0 CFG_ENV_OFFSET)

#defineCFG_ENV_SIZE0x4000

可以在原来的基础上修改,也可以把原来的屏蔽掉,然后自己写!

然后退回到u-boot的根目录.执行配置文件.

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4#makedistclean

at91sam9261_pthread_detach_at91sam9263 remap

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4#makeat91sam9261ek_config

...withenvironmentvariableinSPIDATAFLASHCS0

Configuringforat91sam9261ekboard...

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4#make

.......好长的英文.....

arm-none-linux-gnueabi-objcopy--gap-fill=0xff-Osrecu-bootu-boot.srec

arm-none-linux-gnueabi-objcopy--gap-fill=0xff-Obinaryu-bootu-boot.bin

root@emboard:/workdir/at91sam9261/u-boot/u-boot-1.3.4#ls

apicommonexampleslib_genericlib_shmkconfigREADMEu-boot.map

api_examplesconfig.mkfslib_i386lib_sparcnand_splrules.mku-boot.srec

arm_config.mkCOPYINGi386_config.mklib_m68km68k_config.mknetsh_config.mk

avr32_config.mkcpuincludelib_microblazeMAINTAINERSnios2_config.mksparc_config.mk

blackfin_config.mkCREDITSlib_armlib_mipsMAKEALLnios_config.mkSystem.map

boarddisklib_avr32lib_niosMakefileonenand_ipltools

CHANGELOGdoclib_blackfinlib_nios2microblaze_config.mkpostu-boot

CHANGELOG-before-U-Boot-1.1.5driverslibfdtlib_ppcmips_config.mkppc_config.mku-boot.bin

这样就会生成上面的文件,特别是用红色标记的,u-boot.bin是可以写入到dataflash里面的文件,tools是在编译内核的时候"uImage"的工具.

我们把u-boot.bin烧入自己定义的dataflash位置,我的位置是0x8000.

烧入一级启动代码和u-boot后,打开串口终端,也就是debug口输出信息

可以看到u-boot启动了.

RomBOOT

U-Boot1.3.4(Apr92010-15:58:24)

DRAM:64MB

NAND:128MiB

DataFlash:AT45DB321

Nbpages:8192

PageSize:528

Size=4325376bytes

Logicaladdress:0xC0000000

Area0:C0000000toC0003FFF(RO)Bootstrap

Area1:C0004000toC0007FFFEnvironment

Area2:C0008000toC0088000(RO)U-Boot

Area3:C0088001toC041FFFFNULL

***Warning-badCRC,usingdefaultenvironment

In:serial

Out:serial

Err:serial

ERROR:resettingDM9000->notresponding

dm9000notfoundat0x30000000id:0x2b2a2928

DM9000:UndefinedIO-mode:0x3

MAC:00:00:00:00:00:00

couldnotestablishlink

Hitanykeytostopautoboot:0

WrongImageFormatforbootmcommand

ERROR:can'tgetkernelimage!

U-Boot>

到此为止,u-boot移植成功,下面开始移植linux内核了.

第四步:解压,编译linux内核

解压缩linux-2.6.24压缩文件:

为了生成uImage我们可以把先前设置的一个脚本文件修改为这样

root@emboard:/workdir/at91sam9261#ls

AT91Bootstrapcrosstoolfilesyetemkernelsetenv-9261u-boot

root@emboard:/workdir/at91sam9261#vimsetenv-9261

#!/bin/sbin/

echo"settheat91sam9261....."

exportPATH=$PATH:/workdir/at91sam9261/crosstool/arm-2008q1/bin/

exportPATH=$PATH:/workdir/at91sam9261/u-boot/u-boot-1.3.4/tools/

rm*~

也就是把u-boot生成的tools工具,用来编译内核.

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#ls

2.6.24-at91.patch.gzCOPYINGDocumentationMAINTAINERSREADMEarchcryptofsinitkernelmmsamplessecurityusr

2.6.24.at91.2-exp.patch.gzCREDITSKbuildMakefileREPORTING-BUGSblockdriversincludeipclibnetscriptssound

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#zcat2.6.24.at91.2-exp.patch.gz|patch-p1

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#zcat

2.6.24-at91.patch.gz|patch-p1

这样就打入了at91的补丁.

现在可以配置linux内核了.

root@emboard:/workdir/at91sam9261/kernel#ls

2.6.24.at91.2-exp.patch.gz2.6.24-at91.patch.gzlinux-2.6.24linux-2.6.24.tar.bz2yaffs2.tar.gz

root@emboard:/workdir/at91sam9261/kernel#cdlinux-2.6.24

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#ls

archCREDITSdriversinitkernelMakefilenetsamplessoundvmlinux

blockcryptofsipclibmmREADMEscriptsSystem.mapvmlinux.o

COPYINGDocumentationincludeKbuildMAINTAINERSModule.symversREPORTING-BUGSsecurityusr

进入linux内核目录:

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#vimMakefile

linux-2.6.24主目录下有个Makefile文件,打开,找到185行左右,修改

ARCH?=arm

CROSS_COMPILE?=arm-none-linux-gnueabi-

保存退出。at91sam9261

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#makedistclean

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#makeat91sam9261ek_defconfig

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#makemenuconfig

进入上面的选项配置:

将上图中的这2个选项要选中:

这样可以用EABI的交叉编译工具编译了.保存退出.

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#makeuImage

等待英文飘完,编译ok后,就可以得到内核image了.

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

ImageName:Linux-2.6.24

Created:FriApr916:28:412010

ImageType:ARMLinuxKernelImage(uncompressed)

DataSize:1167608Bytes=1140.24kB=1.11MB

LoadAddress:20008000

EntryPoint:20008000

Imagearch/arm/boot/uImageisready

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24#cdarch/arm/boot/

root@emboard:/workdir/at91sam9261/kernel/linux-2.6.24/arch/arm/boot#ls-l

total4652

drwxr-xr-x2rootroot40962008-01-2506:58bootp

drwxr-xr-x2rootroot40962010-04-0916:28compressed

-rwxr-xr-x1rootroot23944882010-04-0916:28Image

-rw-r--r--1rootroot13262008-01-2506:58install.sh

-rw-r--r--1rootroot27752008-01-2506:58Makefile

-rw-r--r--1rootroot11676722010-04-0916:28uImage

-rwxr-xr-x1rootroot11676082010-04-0916:28zImage

这样就可以把生成的uImage烧进nandflash的对应的位置了.

这里需要注意了,因为u-boot里面没有修改环境变量,也就是说,当u-boot启动后,输入printenv,看到的信息是基于jffs2的,所以在uboot启动后需要手动的去修改环境变量.

RomBOOT

U-Boot1.3.4(Apr92010-15:58:24)

DRAM:64MB

NAND:128MiB

DataFlash:AT45DB321

Nbpages:8192

PageSize:528

Size=4325376bytes

Logicaladdress:0xC0000000

Area0:C0000000toC0003FFF(RO)Bootstrap

Area1:C0004000toC0007FFFEnvironment

Area2:C0008000toC0088000(RO)U-Boot

Area3:C0088001toC041FFFFNULL

***Warning-badCRC,usingdefaultenvironment

In:serial

Out:serial

Err:serial

ERROR:resettingDM9000->notresponding

dm9000notfoundat0x30000000id:0x2b2a2928

DM9000:UndefinedIO-mode:0x3

MAC:00:00:00:00:00:00

couldnotestablishlink

Hitanykeytostopautoboot:0

U-Boot>

U-Boot>

U-Boot>

U-Boot>

U-Boot>

U-Boot>

U-Boot>printenv

bootargs=console=ttyS0,115200root=/dev/mtdblock0mtdparts=at91_nand:-(root)rwrootfstype=jffs2

bootcmd=cp.b0xC00420000x220000000x210000;bootm

bootdelay=3

baudrate=115200

Environmentsize:176/16892bytes

这个我们可以手动设置,具体命令可以去看下uboot的命令:

我的设置是这样的,这个只是来验证编译的内核是不是可以启动的.

U-Boot>setenvbootcmdnandread0x215000000x000000000x20000000\;bootm0x21500000

U-Boot>setenvbootargsmem=64Mconsole=ttyS0,115200root=/dev/mtdblock0

U-Boot>saveenv

SavingEnvironmenttodataflash...

然后重起板子,nandflash可能会有坏块,不成功的话,多重起几次.

以下是我的启动信息:

RomBOOT

U-Boot1.3.4(Apr92010-17:36:14)

DRAM:64MB

NAND:128MiB

DataFlash:AT45DB321

Nbpages:8192

PageSize:528

Size=4325376bytes

Logicaladdress:0xC0000000

Area0:C0000000toC0003FFF(RO)Bootstrap

Area1:C0004000toC0007FFFEnvironment

Area2:C0008000toC0088000(RO)U-Boot

Area3:C0088001toC041FFFFNULL

In:serial

Out:serial

Err:serial

ERROR:resettingDM9000->notresponding

dm9000notfoundat0x30000000id:0x2b2a2928

DM9000:UndefinedIO-mode:0x3

MAC:00:00:00:00:00:00

couldnotestablishlink

Hitanykeytostopautoboot:0

NANDread:device0offset0x0,size0x20000000

0bytesread:ERROR

##BootingkernelfromLegacyImageat21500000...

ImageName:Linux-2.6.24

ImageType:ARMLinuxKernelImage(uncompressed)

DataSize:1167608Bytes=1.1MB

LoadAddress:20008000

EntryPoint:20008000

VerifyingChecksum...OK

LoadingKernelImage...OK

OK

Startingkernel...

UncompressingLinux.............................................................................done,bootingthekernel.

Linuxversion2.6.24(root@emboard)(gccversion4.2.3(SourceryG Lite2008q1-126))#1FriApr916:28:34HKT2010

CPU:ARM926EJ-S[41069265]revision5(ARMv5TEJ),cr=00053177

Machine:AtmelAT91SAM9261-EK

Ignoringunrecognisedtag0x54410008

Memorypolicy:ECCdisabled,Datacachewriteback

Clocks:CPU198MHz,master99MHz,main18.432MHz

CPU0:DVIVTwrite-backcache

CPU0:Icache:16384bytes,associativity4,32bytelines,128sets

CPU0:Dcache:16384bytes,associativity4,32bytelines,128sets

Built1zonelistsinZoneorder,mobilitygroupingon.Totalpages:16256

Kernelcommandline:mem=64Mconsole=ttyS0,115200root=/dev/mtdblock0

AT91:96gpioirqsin3banks

PIDhashtableentries:256(order:8,1024bytes)

Console:colourdummydevice80x30

console[ttyS0]enabled

Dentrycachehashtableentries:8192(order:3,32768bytes)

Inode-cachehashtableentries:4096(order:2,16384bytes)

Memory:64MB=64MBtotal

Memory:62464KBavailable(2112Kcode,206Kdata,108Kinit)

Mount-cachehashtableentries:512

CPU:Testingwritebuffercoherency:ok

net_namespace:64bytes

NET:Registeredprotocolfamily16

SCSIsubsysteminitialized

usbcore:registerednewintecedriverusbfs

usbcore:registerednewintecedriverhub

usbcore:registerednewdevicedriverusb

NET:Registeredprotocolfamily2

Time:pitclocksourcehasbeeninstalled.

IProutecachehashtableentries:1024(order:0,4096bytes)

TCPestablishedhashtableentries:2048(order:2,16384bytes)

TCPbindhashtableentries:2048(order:1,8192bytes)

TCP:Hashtablesconfigured(established2048bind2048)

TCPrenoregistered

NetWinderFloatingPointEmulatorV0.97(doubleprecision)

ioschedulernoopregistered

ioscheduleranticipatoryregistered(default)

atmel_lcdfbatmel_lcdfb.0:backlightcontrolisnotavailable

atmel_lcdfbatmel_lcdfb.0:150KiBframebufferat23cc0000(mappedatffc00000)

atmel_lcdfbatmel_lcdfb.0:fb0:AtmelLCDCat0x00600000(mappedat80c000),irq21

atmel_usart.0:ttyS0atMMIO0xfefff200(irq=1)isaATMEL_SERIAL

RAMDISKdriverinitialized:16RAMdisksof8192Ksize1024blocksize

sscssc.1:AtmelSSCdeviceat0x810000(irq15)

dm9000EthernetDriver

dm9000:readwrongid0x2b2a2928

dm9000:readwrongid0x2b2a2928

dm9000:wrongid:0x2b2a2928

dm9000:notfound(-19).

Driver'sd'needsupdating-pleaseusebus_typemethods

NANDdevice:ManufacturerID:0xec,ChipID:0xf1(SamsungNAND128MiB3,3V8-bit)

AT91NAND:8-bit,SoftwareECC

Scanningdeviceforbadblocks

Creating3MTDpartitionson"at91_nand":

0x00000000-0x00400000:"Bootstrap"

0x00400000-0x04000000:"Partition1"

0x04000000-0x08000000:"Partition2"

atmel_spiatmel_spi.0:AtmelSPIControllerat0xfffc8000(irq12)

usbmon:debugfsisnotavailable

at91_ohciat91_ohci:AT91OHCI

at91_ohciat91_ohci:newUSBbusregistered,assignedbusnumber1

at91_ohciat91_ohci:irq20,iomem0x00500000

usbusb1:configuration#1chosenfrom1choice

hub1-0:1.0:USBhubfound

hub1-0:1.0:2portsdetected

InitializingUSBMassStoragedriver...

usbcore:registerednewintecedriverusb-storage

USBMassStoragesupportregistered.

udc:at91_udcversion3May2006

mice:PS/2mousedevicecommonforallmice

input:gpio-keysas/class/input/input0

ads7846spi0.2:touchscreen,irq29

input:ADS784xTouchscreenas/class/input/input1

rtc-at91sam9at91_rtt.0:rtccore:registeredat91_rttasrtc0

rtc-at91sam9at91_rtt.0:rtc0:SETTIME!

i2c/deventriesdriver

i2c-gpioi2c-gpio:usingpins39(SDA)and40(SCL)

at91sam9_wdt:invalidtimeout(mustbebetween1and16)

TCPcubicregistered

NET:Registeredprotocolfamily1

NET:Registeredprotocolfamily17

rtc-at91sam9at91_rtt.0:hctosys:unabletoreadthehardwareclock

Listofallpartitions:

1f004096mtdblock0(driver?)

1f0161440mtdblock1(driver?)

1f0265536mtdblock2(driver?)

Nofilesystemcouldmountroot,tried:ext2cramfsvfat

Kernelpanic-notsyncing:VFS:Unabletomountrootfsonunknown-block(31,0)

停在这里是因为没有文件系统,所以下一步就是制作根文件系统,也是最后一步!不过以上信息表明内核是启动起来了!内核的移植基本成功!

第五步:根文件系统的建立

一般采用busybox来制作根文件系统,这个busybox根据我的实验,和交叉编译工具的版本要配合好,不然制作出来的文件系统可能要有问题.

我的busybox版本和交叉编译工具的版本如下:

root@emboard:/workdir/at91sam9261/filesyetem#ls

busybox-1.11.2.tar.bz2

root@emboard:/workdir/at91sam9261/crosstool#ls

arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

我的这个例子是这个配置.

因为在上面的步骤已经设置好交叉编译工具了,所以剩下的工作就是来对busybox进行配置了.

root@emboard:/workdir/at91sam9261/filesyetem#tar-xjvfbusybox-1.11.2.tar.bz2

root@emboard:/workdir/at91sam9261/filesyetem#ls

busybox-1.11.2busybox-1.11.2.tar.bz2

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#ls

appletsConfig.indocsfindutilslibbbMakefilemiscutilsprocpsselinuxTODO

archconsole-toolse2fsprogsincludelibpwdgrpMakefile.custommodutilsREADMEshellTODO_config_nommu

archivalcoreutilseditorsinitLICENSEMakefile.flagsnetworkingrunitsysklogdutil-linux

AUTHORSdebianutilamplesINSTALLloginutilsMakefile.helpprintutilsscriptstestsuite

#Croot@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#vimMakefile

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

ROSS_COMPILEspecifytheprefixusedforallexecutablesused

#duringcompilation.Onlygccandrelatedbin-utilecutables

#areprefixedwith$(CROSS_COMPILE).

#CROSS_COMPILEcanbesetonthecommandline

#makeCROSS_COMPILE=ia64-linux-

#AlternativelyCROSS_COMPILEcanbesetintheenvironment.

#DefaultvalueforCROSS_COMPILEisnottoprefixexecutables

#Note:SomearchitecturesassignCROSS_COMPILEintheirarch/*/Makefile

CROSS_COMPILE?=arm-none-linux-gnueabi-

#bbox:wemayhaveCONFIG_CROSS_COMPILER_PREFIXin.config,

#andithasnotbeenincludedyet...thususinganawkwardsyntax.

ifeq($(CROSS_COMPILE),)

CROSS_COMPILE:=$(shellgrep^CONFIG_CROSS_COMPILER_PREFIX.config2>/dev/null)

CROSS_COMPILE:=$(substCONFIG_CROSS_COMPILER_PREFIX=,,$(CROSS_COMPILE))

CROSS_COMPILE:=$(subst",,$(CROSS_COMPILE))

endif

#SUBARCHtellstheusermodebuildwhattheunderlyingarchis.Thatisset

#first,andifausermodebuildishappening,the"ARCH=um"onthecommand

#lineoverridesthesettingofARCHbelow.Ifanativebuildishappening,

#thenARCHisassigned,gettingwhatevervalueitgetsnormally,and

#SUBARCHissubsequentlyignored.

ifneq($(CROSS_COMPILE),)

SUBARCH:=$(shellecho$(CROSS_COMPILE)|cut-d--f1)

else

SUBARCH:=$(shelluname-m)

endif

SUBARCH:=$(shellecho$(SUBARCH)|sed-es/i.86/i386/-es/sun4u/sparc64/\

-es/arm.*/arm/-es/sa110/arm/\

-es/s390x/s390/-es/parisc64/parisc/\

-es/ppc.*/powerpc/-es/mips.*/mips/)

ARCH?=arm

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

如果不想怎么麻烦,可以直接在命令行加上参数;

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#make

CROSS_COMPILE=arm-none-linux-gnueabi-ARCH=armmenuconfig

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#makeCROSS_COMPILE=arm-none-linux-gnueabi-ARCH=arm

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#makeCROSS_COMPILE=arm-none-linux-gnueabi-ARCH=arminstall

设置交叉编译工具.

BusyboxSettings--->

BuildOptions--->

[*]BuildBusyBoxasastaticbinary(nosharedlibs)

先就配置这个,先把最小系统跑起来!

现在可以直接编译了.

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#make

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#makeinstall

root@emboard:/workdir/at91sam9261/filesyetem/busybox-1.11.2#ls_install/

binlinuxrcsbinusr

可以看到生成了常用的命令等.

现在自己建立一个目录树,按照文件系统的要求:

为了方便,我把步骤都写成一个脚本了,如果对脚本不熟悉的话,可以按照脚本里面的步骤一步一步来.

进入你所要建立文件目录树的目录,下面是我的目录:

root@emboard:/workdir/at91sam9261/filesyetem#ls

busybox-1.11.2busybox-1.11.2.tar.bz2

root@emboard:/workdir/at91sam9261/filesyetem#vimmk_roofs

#!/bin/bash

mkdirrootfs

cdrootfs

mkdirbootetchomeproctmpvardevmntrootsys

cdetc

mkdirinit.d

cd..

cddev

mknodconsolec51

mknodnullc13

cd../..

ls

上面的基本的文件夹,还需要对etc下面进行修改!

root@emboard:/workdir/at91sam9261/filesyetem#.mk_rootfs

运行这个脚本

root@emboard:/workdir/at91sam9261/filesyetem#ls

busybox-1.11.2busybox-1.11.2.tar.bz2mk_roofsrootfs

建立lib文件,然后将交叉编译工具的lib文件复制过来

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#mkdirlib

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#cp-a../../crosstool/arm-2008q1/arm-none-linux-gnueabi/libc/armv4t/lib/*lib/

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#cdlib/

root@emboard:/workdir/at91sam9261/filesyetem/rootfs/lib#ls

ld-2.5.solibcrypt-2.5.solibm.so.6libnss_hesiod-2.5.solibresolv-2.5.so

ld-linux.so.3libcrypt.so.1libnsl-2.5.solibnss_hesiod.so.2libresolv.so.2

libanl-2.5.solibc.so.6libnsl.so.1libnss_nis-2.5.solibrt-2.5.so

libanl.so.1libdl-2.5.solibnss_compat-2.5.solibnss_nisplus-2.5.solibrt.so.1

libBrokenLocale-2.5.solibdl.so.2libnss_compat.so.2libnss_nisplus.so.2libSegFault.so

libBrokenLocale.so.1libgcc_s.solibnss_dns-2.5.solibnss_nis.so.2libthread_db-1.0.so

libc-2.5.solibgcc_s.so.1libnss_dns.so.2librofile.solibthread_db.so.1

libcidn-2.5.solibm-2.5.solibnss_files-2.5.solibpthread-2.5.solibutil-2.5.so

libcidn.so.1libmemusage.solibnss_files.so.2libpthread.so.0libutil.so.1

然后将busybox制作的文件复制过来.

root@emboard:/workdir/at91sam9261/filesyetem/rootfs/lib#cd..

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#ls

bootdevetchomelibmntprocrootsyssysconfigtmpvar

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#cp-a../busybox-1.11.2/_install/*.

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#ls

binbootdevetchomeliblinuxrcmntprocrootsbinsystmpusrvar

root@emboard:/workdir/at91sam9261/filesyetem/rootfs#cdusr/

root@emboard:/workdir/at91sam9261/filesyetem/rootfs/usr#ls

binsbin

可见文件已经复制过来了!

然后进入etc目录

root@emboard:/workdir/at91sam9261/filesyetem/rootfs/etc#viminittab

下面是内容:

::sysinit:/etc/init.d/rcS

::respawn:/bin/ash

保存退出.

然后进入init.d

root@emboard:/workdir/at91sam9261/filesyetem/rootfs/etc#cdinit.d/

root@emboard:/workdir/at91sam9261/filesyetem/rootfs/etc/init.d#vimrcS

下面是内容:

#!/bin/sh

echo"#-----Start/etc/init.d/rcS"

PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=S

prevlevel=N

umask022

exportPATHrunlevelprevlevel

echo"***********************************************"

echo"StartARM....."

echo"20100410"

echo"microcreat"

echo"***********************************************"

然后保存,退出.

root@emboard:/workdir/at91sam9261/filesyetem#cd../../..

root@emboard:/workdir/at91sam9261/filesyetem#rmrootfs.cramfs

root@emboard:/workdir/at91sam9261/filesyetem#mkcramfsrootfsrootfs.cramfs

Directorydata:7164bytes

Everything:2096kilobytes

Superblock:76bytes

CRC:85fce0bb

root@emboard:/workdir/at91sam9261/filesyetem#ls

busybox-1.11.2busybox-1.11.2.tar.bz2mk_roofsrootfsrootfs.cramfs

这样就生成了cramfs"rootfs.cramfs"文件!

按照分配地址写入nandflash,重起板子,从终端就可以看到信息:

RomBOOT

U-Boot1.3.4(Apr92010-17:36:14)

DRAM:64MB

NAND:128MiB

DataFlash:AT45DB321

Nbpages:8192

PageSize:528

Size=4325376bytes

Logicaladdress:0xC0000000

Area0:C0000000toC0003FFF(RO)Bootstrap

Area1:C0004000toC0007FFFEnvironment

Area2:C0008000toC0088000(RO)U-Boot

Area3:C0088001toC041FFFFNULL

In:serial

Out:serial

Err:serial

ERROR:resettingDM9000->notresponding

dm9000notfoundat0x30000000id:0x2b2a2928

DM9000:UndefinedIO-mode:0x3

MAC:00:00:00:00:00:00

couldnotestablishlink

Hitanykeytostopautoboot:0

NANDread:device0offset0x0,size0x20000000

0bytesread:ERROR

##BootingkernelfromLegacyImageat21500000...

ImageName:Linux-2.6.24

ImageType:ARMLinuxKernelImage(uncompressed)

DataSize:1165092Bytes=1.1MB

LoadAddress:20008000

EntryPoint:20008000

VerifyingChecksum...OK

LoadingKernelImage...OK

OK

Startingkernel...

UncompressingLinux.............................................................................done,bootingthekernel.

Linuxversion2.6.24(root@emboard)(gccversion4.2.3(SourceryG Lite2008q1-126))#1SatApr1009:46:40HKT2010

CPU:ARM926EJ-S[41069265]revision5(ARMv5TEJ),cr=00053177

Machine:AtmelAT91SAM9261-EK

Ignoringunrecognisedtag0x54410008

Memorypolicy:ECCdisabled,Datacachewriteback

Clocks:CPU198MHz,master99MHz,main18.432MHz

CPU0:DVIVTwrite-backcache

CPU0:Icache:16384bytes,associativity4,32bytelines,128sets

CPU0:Dcache:16384bytes,associativity4,32bytelines,128sets

Built1zonelistsinZoneorder,mobilitygroupingon.Totalpages:16256

Kernelcommandline:mem=64Mnoinitrdconsole=ttyS0,115200init=nuxrcroot=/dev/mtdblock2rootfstype=cramfs

AT91:96gpioirqsin3banks

PIDhashtableentries:256(order:8,1024bytes)

Console:colourdummydevice80x30

console[ttyS0]enabled

Dentrycachehashtableentries:8192(order:3,32768bytes)

Inode-cachehashtableentries:4096(order:2,16384bytes)

Memory:64MB=64MBtotal

Memory:62464KBavailable(2112Kcode,206Kdata,108Kinit)

Mount-cachehashtableentries:512

CPU:Testingwritebuffercoherency:ok

net_namespace:64bytes

NET:Registeredprotocolfamily16

SCSIsubsysteminitialized

usbcore:registerednewintecedriverusbfs

usbcore:registerednewintecedriverhub

usbcore:registerednewdevicedriverusb

NET:Registeredprotocolfamily2

Time:pitclocksourcehasbeeninstalled.

IProutecachehashtableentries:1024(order:0,4096bytes)

TCPestablishedhashtableentries:2048(order:2,16384bytes)

TCPbindhashtableentries:2048(order:1,8192bytes)

TCP:Hashtablesconfigured(established2048bind2048)

TCPrenoregistered

NetWinderFloatingPointEmulatorV0.97(doubleprecision)

ioschedulernoopregistered

ioscheduleranticipatoryregistered(default)

atmel_lcdfbatmel_lcdfb.0:backlightcontrolisnotavailable

atmel_lcdfbatmel_lcdfb.0:150KiBframebufferat23cc0000(mappedatffc00000)

atmel_lcdfbatmel_lcdfb.0:fb0:AtmelLCDCat0x00600000(mappedat80c000),irq21

atmel_usart.0:ttyS0atMMIO0xfefff200(irq=1)isaATMEL_SERIAL

RAMDISKdriverinitialized:16RAMdisksof8192Ksize1024blocksize

sscssc.1:AtmelSSCdeviceat0x810000(irq15)

dm9000EthernetDriver

dm9000:readwrongid0x2b2a2928

dm9000:readwrongid0x2b2a2928

dm9000:wrongid:0x2b2a2928

dm9000:notfound(-19).

Driver'sd'needsupdating-pleaseusebus_typemethods

NANDdevice:ManufacturerID:0xec,ChipID:0xf1(SamsungNAND128MiB3,3V8-bit)

AT91NAND:8-bit,SoftwareECC

Scanningdeviceforbadblocks

Creating4MTDpartitionson"at91_nand":

0x00000000-0x00800000:"Bootstrap"

0x00800000-0x01c00000:"ramdisk"

0x01400000-0x03200000:"cramfs"

0x04000000-0x08000000:"file"

atmel_spiatmel_spi.0:AtmelSPIControllerat0xfffc8000(irq12)

usbmon:debugfsisnotavailable

at91_ohciat91_ohci:AT91OHCI

at91_ohciat91_ohci:newUSBbusregistered,assignedbusnumber1

at91_ohciat91_ohci:irq20,iomem0x00500000

usbusb1:configuration#1chosenfrom1choice

hub1-0:1.0:USBhubfound

hub1-0:1.0:2portsdetected

InitializingUSBMassStoragedriver...

usbcore:registerednewintecedriverusb-storage

USBMassStoragesupportregistered.

udc:at91_udcversion3May2006

mice:PS/2mousedevicecommonforallmice

input:gpio-keysas/class/input/input0

ads7846spi0.2:touchscreen,irq29

input:ADS784xTouchscreenas/class/input/input1

rtc-at91sam9at91_rtt.0:rtccore:registeredat91_rttasrtc0

rtc-at91sam9at91_rtt.0:rtc0:SETTIME!

i2c/deventriesdriver

i2c-gpioi2c-gpio:usingpins39(SDA)and40(SCL)

at91sam9_wdt:invalidtimeout(mustbebetween1and16)

TCPcubicregistered

NET:Registeredprotocolfamily1

NET:Registeredprotocolfamily17

rtc-at91sam9at91_rtt.0:hctosys:unabletoreadthehardwareclock

VFS:Mountedroot(cramfsfilesystem)readonly.

Freeinginitmemory:108K

initstarted:BusyBoxv1.11.2(2010-04-1010:18:23HKT)

startingpid735,tty'':'/etc/init.d/rcS'

#-----Start/etc/init.d/rcS

***********************************************

StartARM.....

20100410

microcreat

***********************************************

startingpid736,tty'':'/bin/ash'

/bin/ash:can'taccesstty;jobcontrolturnedoff

#ls

bindevhomelinuxrcprocsbintmpvar

bootetclibmntrootsysusr

#cd/

#ls

bindevhomelinuxrcprocsbintmpvar

bootetclibmntrootsysusr

#cdetc/

#ls

init.dinittab

可以看到内核基本已经启动起来!但是这个只是最基本的!还需要进一步完善!不过这样可以给一个大致的认识!至少liunx已经跑起来了!以后的工作就是在这个上面去进行了!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-21703-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...