mini2440移植教程Word格式.docx
- 文档编号:18644206
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:12
- 大小:137.05KB
mini2440移植教程Word格式.docx
《mini2440移植教程Word格式.docx》由会员分享,可在线阅读,更多相关《mini2440移植教程Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
…
.tacls=0,
.twrph0=30,
.twrph1=0,
};
友善提供的源代码中没改我也就没改。
8、修改S3C2440的机器号
由于Bootloader传递给Linux内核的机器号为1999,为与Bootloader传递参数一致,修改arch/arm/tools/math-types文件。
s3c2440ARCH_S3C2440S3C2440362
修改为:
s3c2440ARCH_S3C2440S3C24401999
另外,还可以不修改内核中的S3C2440机器号,只需修改修改Bootloader传递给内核的参数中的机器号就可以了。
在supervivi中菜单中,按s,再按s,输入mach_type,回车,输入内核中的机器码,w,保存。
总之两者相同。
7、给内核打yaffs2文件系统的补丁
cd/mnt/hgfs/share
#cvs-root.tar.gz的下载地址网上到处都是
tar–zxvf/mnt/hgfs/share/cvs-root.tar.gz–C/mnt/hgfs/share
#解压生成CVS文件夹
cd/mnt/hgfs/share/cvs/yaffs2/
./patch-ker.shc/usr/supermm/linux-2.6.25.8/
#/usr/supermm/linux-2.6.25.8/是你的内核源码目录
上面命令完成下面三件事情:
(1)修改内核fs/Kconfig
增加一行:
source"
fs/yaffs2/Kconfig"
(2)修改内核fs/Kconfig
ojb-$(CONFIG_YAFFS_FS)+=yaffs2/
(3)在内核fs/目录下创建yaffs2目录
将yaffs2源码目录下面的Makefile.kernel文件复制为内核fs/yaffs2/Makefie;
将yaffs2源码目录的Kconfig文件复制到内核fs/yaffs2目录下;
将yaffs2源码目录下的*.c*.h文件复制到内核fs/yaffs2目录下.
8制作开发板配置文件
我们选用的是比较通用配置的开发板,所以用内核中自带的配置文件,进行修改是比较方便的做法。
该配置单在内核源码的“arch/arm/configs/”目录下面,名为:
“s3c2410_defconfig”,该配置文件里面选择了几乎所有的和S3C24XX系列CPU相关的配置选项,我们完全可以在该配置单的基础上进行配置。
首先将该文件考到根目录命名为.config指令为:
#cparch/arm/configs/s3c2410default_config.config然后返回到配置界面,进入到内核配置单输入指令为:
#makemenuconfig出现如图所示的配置界面:
完成配置如下
SystemType--->
S3C2410Machines--->
[*]SMDK2410/A9M2410
[]IPAQH1940
[]AcerN30
[]SimtecElectronicsBAST(EB2410ITX)
[]NexVisionOTOMBoard
[]AMLM5900Series
[]ThorcomVR1000
[]QT2410
S3C2412Machines--->
[]SMDK2413
[]SMDK2412
[]VMSTMS
S3C2440Machines--->
[]SimtecElectronicsANUBIS
[]SimtecIM2440D20(OSIRIS)module
[]HPiPAQrx3715
[*]SMDK2440
[]NexVisionNEXCODER2440LightBoard
[*]SMDK2440withS3C2440CPUmodule
S3C2442Machines--->
[]SMDM2440withS3C2442CPUmodule
S3C2443Machines--->
[]SMDK2443
[*]Enableloadablemodulesupport--->
[*]Forcedmoduleloading
[*]Moduleunloading
KernelFeatures--->
[*]UsetheARMEABItocompilethekernel
注:
由于所使用的的交叉编译arm-linux-gcc-4.3.2是符合EABI标准交叉编译器,对于浮点运行会预设硬浮点运算FPA(FloatPointArchitecture),而没有FPA的CPU,比如SAMSUNGS3C2410/S3C2440,会使用FPE(FloatPointEmulation即软浮点),这样在速度上就会遇到极大的限制,使用EABI(EmbeddedApplicationBinaryInteRFace)则可以对此改善处理,ARMEABI有许多革新之处,其中最突出的改进就是FloatPointPerformance,它使用VectorFloatPoint(矢量浮点),因此可以极大提高涉及到浮点运算的程序。
参考:
Bootoptions--->
#不懂
noinitrdroot="
/dev/mtdblock2"
init="
/linuxrc"
console=ttySAC0
选择支持yaffs2文件系统
Filesystem--->
Miscellaneousfilesystems--->
<
*>
YAFFS2filesystemsupport
[*]LetsYaffsdoitsownECC
Nativelanguagesupport
<
Codepage437(UnitedStates,Canada)
SimplifiedChinesecharset(GB2312)
TraditionalChinesecharset(Big5)
NLSISO8859-1(Latin1:
WesternEuropeanLanguages)
NLSUTF-8
DeviceDrivers--->
Graphicssupport--->
Supportforframebufferdevices--->
[*]EnablefirmwareEDID
[*]EnableVideoModeHandlingHelpers
<
S3C2410LCDframebuffersupport
Consoledisplaydriversupport--->
FramebufferConsolesupport
[*]Selectcompiled-infonts
[*]VGA8x8font
[*]VGA8x16font
[*]Bootuplogo--->
#没有内容
[*]StandardblackandwhiteLinuxlogo
[*]Standard16-colorLinuxlogo
[*]Standard224-colorLinuxlogo
在Bootuplogo--->
选择的那几项,将会在系统启动时在液晶上显示开机logo。
配置完毕这个地方后,退回到最初的配置单。
然后选择选项:
“SaveanAlternateConfigurationFile”,将其保存为:
“.config”文件,因为编译系统时会调用该文件。
如下面的图所示:
保存为“.config”文件后,退出配置单。
编译内核
编译内核需要遵守以下步骤:
1、makedep#这步省略
makedep的意思就是说:
如果你使用程序A(比如支持特殊设备),而A需用到B(比如B是A的一个模块/子程序)。
而你在做makeconfig的时候将一个设备的驱动由内核支持改为module,或取消支持,这将可能影响到B的一个参数的设置,需重新编译B,重新编译或连接A....如果程序数量非常多,你是很难手工完全做好此工作的。
makedep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要编译。
所以,你要makedep。
2、makeclean
清除一些以前留下的文件,比如以前编译生成的目标文件,这一步必须要进行。
否则,即使内核配置改动过,编译内核时还是将原来生成的目标文件进行连接,而不生成改动后的文件。
3、makezImage
Linux内核有两种映像:
一种是非压缩内核,叫Image,另一种是它的压缩版本,叫zImage。
根据内核映像的不同,Linux内核的启动在开始阶段也有所不同。
zImage是Image经过压缩形成的,所以它的大小比Image小。
但为了能使用zImage,必须在它的开头加上解压缩的代码,将zImage解压缩之后才能执行,因此它的执行速度比Image要慢。
但考虑到嵌入式系统的存储空容量一般比较小,采用zImage可以占用较少的存储空间,因此牺牲一点性能上的代价也是值得的,所以一般的嵌入式系统均采用压缩内核的方式。
编译完成后,会在内核目录arch/arm/boot/下生成zImage内核映像文件。
注意:
由于目前还没有烧写文件系统,所以内核运行到加载文件系统时会出现问题,
制作根文件系统
交叉编译Bosybox
Bosybox是一个遵循GPLv2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox可以自动生成根文件系统所需的bin、sbin、usr目录和linuxrc文件。
1、解压busybox
tar–zxvfbusybox-1.13.3.tar.tgz–C/usr/supermm/myroot
#生成busybox-1.13.3文件夹
2、进入源码,修改Makefile文件:
cd/usr/supermm/myroot/busybox-1.13.3
修改:
CROSS_COMPILE?
=arm-linux-//第164行
ARCH?
=arm//第189行
3、配置busybox
输入makemenuconfig进行配置
(1)、BusyboxSettings--->
GeneralConfiguration--->
[*]Showverboseappletusagemessages
[*]Storeappletusagemessagesincompressedform
[*]Support–install[-s]toinstallappletlinksatruntime
[*]Enablelocalesupport(systemneedslocaleforthistowork)
[*]Supportfor–long-options
[*]Usethedevptsfilesystemforunix98PTYs
[*]Supportwritingpidfiles
[*]RuntimeSUID/SGIDconfigurationvia/etc/busybox.config
[*]Suppresswarningmessageif/etc/busybox.confisnotreadable
BuildOptions--->
[*]BuildBusyBoxasastaticbinary(nosharedlibs)
#静态编译
[*]BuildwithLargeFileSupport(foraccessingfiles>
2GB)
InstallationOptions->
[*]Don’tuse/usr#必须
Appletslinks(assoft-links)--->
(./_install)BusyBoxinstallationprefix#按需要自己定制
BusyboxLibraryTuning--->
(6)Minimumpasswordlegth
(2)MD5:
TradeBytesforSpeed
[*]Fsater/procscanningcode(+100bytes)
[*]Commandlineediting
(1024)Maximumlengthofinput
[*]vi-stylelineeditingcommands
(15)Historysize
[*]Historysaving
[*]Tabcompletion
[*]Fancyshellprompts
(4)Copybuffersize,inkilobytes
[*]Useioctlnamesratherthanhexvaluesinerrormessages
[*]SupportinfinibandHW
(2)、LinuxModuleUtilities--->
(/lib/modules)Defaultdirectorycontainingmodules
(modules.dep)Defaultnameofmodules.dep
[*]insmod
[*]rmmod
[*]lsmod
[*]modprobe
-----optionscommontomultiplemodutils
[]supportversion2.2/2.4Linuxkernels#不选
[*]Supporttaintedmodulecheckingwithnewkernels
[*]Supportformodule.aliasesfile
[*]supportformodules.symbolsfile
(3)、在busybox中配置对dev下设备类型的支持
dev的创建有三种方法:
手动创建:
在制作根文件系统的时候,就在dev目录下创建好要使用的设备文件,系统挂接根文件系统后,就可以使用dev目录下的设备文件了。
使用devfs文件系统:
这种方法已经过时,具有不确定的设备映射、没有足够的主/次设备号、devfs消耗大量的内存。
udev:
它是个用户程序,能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。
它的操作相对复杂,但灵活性很高
mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。
其具有使用简单的特点。
它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。
在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。
下面的选项将增加对mdev的支持。
LinuxSystemUtilities--->
[*]Support/etc/mdev.conf
[*]Supportcommandexecutionatdeviceaddition/removal
4、编译busybox
(1)编译busybox到指定目录:
makeCONFIG_PREFIX=/usr/supermm/myroot/rootfsinstall
在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。
(2)也可直接make在./_install下生成这几个文件在考到你的目录下
建立etc目录下的配置文件
1etc/mdev.conf文件,内容为空。
2、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。
3、etc/sysconfig目录下新建文件HOSTNAME,内容为”Mrmm”。
4、etc/inittab文件:
#etc/inittab
:
sysinit:
/etc/init.d/rcS
askfirst:
-/bin/sh
ctrlaltdel:
/sbin/reboot
shutdown:
/bin/umount-a–r
5、etc/init.d/rcS文件:
#!
/bin/sh
PATH=/sbin:
/bin:
/usr/sbin:
/usr/bin
runlevel=S
prevlevel=N
umask022
exportPATHrunlevelprevlevel
echo"
----------muntall----------------"
mount-a
echo/sbin/mdev>
/proc/sys/kernel/hotplug
mdev-s
***********************************************"
****************StudyingARM*********************"
Kernelversion:
linux-2.6.29.1"
Student:
Fengdongrui"
Date:
2009.07.15"
/bin/hostname-F/etc/sysconfig/HOSTNAME
使用以下命令改变rcS的执行权限:
Chmod+xrcS
6、etc/fstab文件:
#devicemount-pointtypeoptiondumpfsckorder
proc/procprocdefaults00
none/tmpramfsdefaults00
sysfs/syssysfsdefaults00
mdev/devramfsdefaults00
7、etc/profile文件:
#Ashprofile
#vim:
syntax=sh
#Nocorefilebydefaults
#ulimit-S-c0>
/dev/null2>
&
1
USER="
id-un"
LOGNAME=$USER
PS1='
[\u@\h=W]#'
PATH=$PATH
HOSTNAME='
/bin/hostname'
exportUSERLOGNAMEPS1PATH
制作根文件系统映像文件
使用以下命令安装好yaffs文件系统制作工具:
在/usr/supermm/myroot目录下,使用命令mkyaffs2image-128mrootfsrootfs.img生成根文件系统映像。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mini2440 移植 教程