首页 理论教育 将Linux内核移植至S3C2410

将Linux内核移植至S3C2410

时间:2023-10-31 理论教育 版权反馈
【摘要】:Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信5个子系统组成。Linux内核移植需要设置环境变量,并修改以下方面:根目录修改根目录下的Makeflle文件,打开最上层目录下的Makefile文件,这个文件中需要修改的内容包括以下两个方面。在config文件中加入相关信息。移植后其中,head-s3c2410.o是由head-s3c2410.s文件经过编译产生的,主要用来初始化处理器。在Linux内核编译之前首先要配置内核。配置内核的命令包括makeconfig、make oldconfig、makemenuconfig和makexconfig等。

将Linux内核移植至S3C2410

Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信5个子系统组成。Linux内核移植需要设置环境变量,并修改以下方面:

(1)根目录

修改根目录下的Makeflle文件,打开最上层目录下的Makefile文件,这个文件中需要修改的内容包括以下两个方面。

指定目标平台:

移植前ARCH:=$(shelluname-m|sed-es/i.86/......)

移植后ARCH:=arm

指定交叉编译器:

移植前CROSS_COMPILE=

移植后CROSS_COMPILE=arm-Linux-

(2)arch目录

arch目录存放着和体系结构相关部分的内核代码。在arch/arm中需要修改Makefile文件,添加下面内容。移植后:

TEXTADDR决定内核起始运行地址,即image.ram应下载的位置。

(3)config.in

config.in是配置文件,运行“makemenuconfig”命令时出现的菜单就是config配置的。在config文件中加入相关信息。

添加CONFIG_ARCH_S3C2410子选项。移植后:

其他选项:

(4)arch/arm/boot

编译出来的内核存放在这个目录中。(www.xing528.com)

Makefile移植后:

ZRELADDR用于决定内核解压后数据输出的地址。ZTEXTADDR为Bootloader的压缩内核文件固压Flash的起始地址,即从哪个位置开始执行BootLoader。若启动时直接执行,则将其设为0;若自带BIOS需要跳到想要的地址,则可以改为所要的位置。

通过compressed/Makefile文件创建一个压缩的Linux镜像。此文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR和ZRELADDR是从arch/arm/boot/Makefile获得的。移植后

其中,head-s3c2410.o是由head-s3c2410.s文件经过编译产生的,主要用来初始化处理器。

(5)arch/arm/def-configs目录

这里定义了一些平台的config文件,如lart和assert等。把配置好的文件复制到这里即可。

(6)arch/arm/kernel目录

这个目录下的内容是与硬件平台相关的内核代码。增加S3C2410的支持。移植后:

增加其他功能,移植后:

在适当的地方加入debug-armv.s和entry-armv.s中的代码。函数是setup_arch用来完成和体系相关的初始化工作,如对物理内存结构的初始化等。

在Linux内核编译之前首先要配置内核。配置内核的命令包括makeconfig、make oldconfig、makemenuconfig和makexconfig等。每个命令都将产生config文件,并在每一个C源文件中加上<Linux/config.h>,使define的宏CONFIG_XXX起全局性的作用。

编译内核需要3个步骤,分别是

●执行“makedep”建立内核依赖关系。

●执行“makezImage”创建内核镜像文件。

●执行“makemodules”创建内核模块。

生成内核以后,接下来就是安装它。对每一个内核配置来说,需要没有压缩的内核镜像(zImage或bzlmage)、压缩的内核镜像、内核的符号映射文件(System.map)以及配置文件(config)4个文件。生成的zImage(bzImage)文件是平台相关的,它在Makefile文件中设置。使用ARM平台生成的镜像文件位于/arch/arm/boot/zImage目录下。其他3个文件在内核代码的根目录下。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈