linux移植心得GGY文档格式.docx

上传人:b****4 文档编号:16814051 上传时间:2022-11-26 格式:DOCX 页数:13 大小:21.20KB
下载 相关 举报
linux移植心得GGY文档格式.docx_第1页
第1页 / 共13页
linux移植心得GGY文档格式.docx_第2页
第2页 / 共13页
linux移植心得GGY文档格式.docx_第3页
第3页 / 共13页
linux移植心得GGY文档格式.docx_第4页
第4页 / 共13页
linux移植心得GGY文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

linux移植心得GGY文档格式.docx

《linux移植心得GGY文档格式.docx》由会员分享,可在线阅读,更多相关《linux移植心得GGY文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

linux移植心得GGY文档格式.docx

3)修改arch/s3c2410/smdk2410.c

修改NANDflash的分区如下:

-----------------------------------------------------------------------------------

#ifdefCONFIG_S3C2410_NAND_BOOT

mtd_partition_tdefault_mtd_partitions[]={

{

name:

"

vivi"

offset:

0,

size:

0x00030000,/*192k*/

flag:

0

},{

param"

0x00030000,

0x00010000,/*64k*/

kernel"

0x00040000,

0x003C0000,/*3.75M*/

rootcramfs"

0x00400000,

0x00A00000,/*10M*/

},{

rootyaffs"

0x00E00000,

0x01E00000,/*30M*/

user"

0x02C00000,

0x01400000,/*20M*/

MF_BONFS

}

};

#endif

修改cmd_line:

charlinux_cmd[]="

noinitrdroot=/dev/mtdblock3init=/linuxrcconsole=ttySAC0,

115200mem=64M"

;

注:

此默认启动引导参数也可在vivi启动时,进入vivi控制台输入,例如:

vivi>

paramsetlinux_cmd_line"

noinitrdroot=/dev/mtdblock3init=/linuxrcconsole=ttySAC0,115200mem=64M"

paramsave

输入命令字符串的时候,root=/dev/mtdblock3,而不是root=/dev/mtdblock/3,多个”/”文件系统就引导不起来。

4)编译

#makeoldconfig

#makemenuconfig

vivi默认的配置即可满足基本的需要。

=================================================

内核移植

==================================================

1)下载Linux2.6.21.1内核源码

2)修改内核源码根目录下的Makefile文件

#viMakefile

......

#SUBARCH:

=$(shelluname-m|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 

?

=$(SUBARCH)

#CROSS_COMPILE 

=

ARCH 

=arm

CROSS_COMPILE 

=/usr/local/arm/3.4.1/bin/arm-linux-

CROSS_COMPILE的值因个人情况而定。

3)修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改NandFlash的分区信息和NandFlash的硬件信息。

-------------------------------------------------------------------------------------------

…….

/*NANDparititonfrom2.4.18-swl5*/

staticstructmtd_partitionsmdk_default_nand_part[]={

[0]={

.name="

Vivi-0.1.4"

.offset=0,

.size=0x00030000,

},/*192K*/

[1]={

Vivi-0.1.4Parameter"

.offset=0x00030000,

.size=0x00010000,

},/*64K*/

[2]={

Linux2.6.21.1Kernel"

.offset=0x00040000,

.size=0x003C0000,

},/*3.75M*/

[3]={

Boot-Rootcramfs"

.offset=0x00400000,

.size=0x00A00000,

},/*10M*/

[4]={

Rootyaffs"

.offset=0x00E00000,

.size=0x01E00000,

},/*30M*/

[5]={

.offset=0x02C00000,

.size=0x01400000,

},/*20M*/

/*

[6]={

S3C2410flashpartition6"

.offset=SZ_1M*24,

.size=SZ_1M*24,

},

[7]={

S3C2410flashpartition7"

.offset=SZ_1M*48,

.size=SZ_16M,

*/

………

staticstructs3c2410_platform_nandsmdk_nand_info={

.tacls=0,

.twrph0=30,

.twrph1=0,

.nr_sets=ARRAY_SIZE(smdk_nand_sets),

.sets=smdk_nand_sets,

4)修改drivers/mtd/nand/s3c2410.c,去掉nandflash的ECC

搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip()函数里,修改NAND_ECC_SOFT为NAND_ECC_NONE。

5)增加Yaffs文件系统的支持

a.下载Yaffs2

URL:

http:

//www.aleph1.co.uk/cgi-bin/viewcvs.cgi/

b.解压Yaffs2并将其加入到Linux内核(打补丁的方式)

#cdyaffs2

#./patch-ker.shc/home/arm/dev_home/kernel/linux-2.6.21.1/ 

6)友善2410所配网卡CS8900A驱动的移植

a.把cs8900.c,cs8900.h拷贝到drivers/net目录下。

b.修改drivers/net/Kconfig,增加以下内容:

  configARM_CS8900

 tristate"

CS8900support"

  dependsonNET_ETHERNET&

&

ARM&

ARCH_SMDK2410

c.修改drivers/net/Makeflie,增加以下内容:

obj-$(CONFIG_ARM_CS8900)+=cs8900.o

d.在include/asm-arm/arch-s3c2410/map.h中添加如下定义:

#defineS3C2410_VA_NETS3C2410_ADDR(0x04000000)

#defineS3C2410_PA_NET__phys_to_pfn(0x19000000)

#defineS3C2410_SZ_NETSZ_1M

e.在arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加CS8900A的地址信息

staticstructmap_descsmdk2410_iodesc[]__initdata={

/*nothinghereyet*/

{

.virtual 

=S3C2410_VA_NET,

.pfn 

=S3C2410_PA_NET,

.length 

=S3C2410_SZ_NET,

.type 

=MT_DEVICE,

以下修改为选做,可以不改:

随便在这里取消LCD的初始化,不然启动时会有出错信息(因为我现在的项目用不到,以后有空我会添上LCD的移植和GUI的移植):

staticstructplatform_device*smdk2410_devices[]__initdata={

&

s3c_device_usb,

// 

s3c_device_lcd,

s3c_device_wdt,

s3c_device_i2c,

s3c_device_iis,

修改开发板的名称(可以自定义):

MACHINE_START(SMDK2410,"

GGY2410"

7)配置内核

在配置内核前,先拷贝s3c2410开发板的默认配置到内核根目录下,以简化配置过程。

#pwd

/home/arm/dev_home/kernel/linux-2.6.21.1

#cparch/arm/configs/s3c2410_defconfig.config

以下是在s3c2410_defconfig基础上要配置的选项(有一些必须的选项在s3c2410_defconfig里已经选上了,所以我没有写出来。

以下的选项非特别说明,可能不用选,我没有做实验证明哪些要、哪些不要,所以有兴趣的可以自己做实验看看)。

Generalsetup 

--->

[*]Configurestandardkernelfeatures(forsmallsystems) 

选上这项,否则文件系统中的一些选项不会出现

SystemType 

S3C2410Machines 

[*]SMDK2410/A9M2410 

留下这项就够了,其他全部“N”掉

“N”掉S3C2412Machines 

、S3C2440Machines 

和S3C2443Machines 

里的所有选项,都是和2410无关的选项。

Bootoptions 

 

将(root=/dev/hda1roinit=/bin/bashconsole=ttySAC0)Defaultkernelcommandstring

改成 

(noinitrdroot=/dev/mtdblock3 

rootfstype=cramfs 

console=ttySAC0init=/linuxrcmem=64M)Defaultkernelcommandstring

#说明:

#mtdblock3代表第4个flash分区,用来作根文件系统rootfs;

#console=ttySAC0,115200使kernel启动期间的信息全部输出到串口0上,波特率为115200;

#2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编程。

#用户空间的串口编程针对的仍是/dev/ttyS0等

#mem=64M表示内存是64M,如果是32则设为32M

在实践中,我发现“rootfstype=cramfs”这句还是挺重要的。

如果没有这句,系统启动时即使分区挂载正确了,但是文件系统的类型有可能出错。

在这里定义过,就不会出错了。

这里的选项也和根文件系统的配置有关。

(我先使用cramfs做跟文件系统)

Userspacebinaryformats 

<

>

Kernelsupportfora.outandECOFFbinaries(去除该选项,a.out和ECOFF是两种可执行文件的格式,在ARM-Linux下一般都用ELF,所以这两种基本用不上。

DeviceDrivers 

“N”掉 

Parallelportsupport 

里的所有选项。

PlugandPlaysupport 

里的所有选项一定要“N”掉,不然编译会出错!

!

Networkdevicesupport 

Ethernet(10or100Mbit) 

“N”掉<

DM9000support和<

GenericMediaIndependentInterfacedevicesupport

-------以下一定要选上,是CS8900A的驱动------

[*] CS8900support

-----------------------------

RealTimeClock 

“N”掉[] 

SetsystemtimefromRTConstartupandresume

#接下来做的是针对文件系统的设置,我实验时目标箱上要挂的根文件系统是cramfs,故做如下配置

(注意:

不要试图按照旧内核的方法增加devfs的支持,因为在这个内核里已经彻底删除了

devfs的源代码。

补救的办法就是用vivi的mdev来代替,在讲根文件系统的建立时我会说明,你也可以到网上找mdev的资料。

Filesystems-->

Secondextendedfssupport#去除对ext2的支持

Ext3journallingfilesystemsupport#去除对ext3的支持

*>

Kernelautomountersupport

Kernelautomounterversion4support(alsosupportsv3)

FilesysteminUserspacesupport

Pseudofilesystems-->

[*]Virtualmemoryfilesystemsupport(formershmfs)

Userspace-drivenconfigurationfilesystem(EXPERIMENTAL)

Miscellaneousfilesystems-->

YAFFS2filesystemsupport

“N”掉[]Autoselectyaffs2format和[]CacheshortnamesinRAM,因为这是给每页大于1024B的NANDFlash设计的

NetworkFileSystems-->

<

NFSfilesystemsupport

--以下最好选上,因为在挂载NFS时可能出现protocol不支持的情况--

[*]ProvideNFSv3clientsupport

[*]ProvideclientsupportfortheNFSv3ACLprotocolextension

[*] 

ProvideNFSv4clientsupport(EXPERIMENTAL)

AllowdirectI/OonNFSfiles

------------------------------------------------------------------------- 

NFSserversupport 

ProvideNFSv3serversupport

[*]ProvideserversupportfortheNFSv3ACLprotocolextension 

ProvideNFSv4serversupport(EXPERIMENTAL) 

--- 

ProvideNFSserveroverTCPsupport 

[*]RootfilesystemonNFS

保存退出,产生.config文件。

――――――――――――――――――――――――――――――――――――――――

8)编译内核

#makezImage 

正常来说编译是不会出错的,只有一些警告,我试过可以正常在友善2410上启动。

=========================================

根文件系统

1)busybox的编译

a.修改busybox中的Makefile文件

找到ARCH和CROSS_COMPILE修改成如下:

=/usr/local/arm/3.3.2/bin/arm-linux-

b.配置

#makedefconfig

#makemenuconfig

主要修改配置如下:

BusyboxSettings--->

BuildOptions--->

[*]BuildBusyBoxasastaticbinary(nosharedlibs)

//选此项静态编译

BusyboxLibraryTuning--->

[*]Additionaleditingkeys

[*]vi-stylelineeditingcommands

[*]Historysaving

[*]Tabcompletion

[*]Usernamecompletion

//此几项主要是对shell命令对象文件名的记忆与填充

MiscellaneousUtilities--->

[]taskset 

//选了就会出错(网上推荐的,自己还没试过)

------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1