Advertisement

移植linux内核到s3c6410(配置内核make menuconfig)

阅读量:

1、准备:

在调试阶段需要频繁地修改内核,在这种情况下编写字闪会比较耗时。为此计划使用u-boot+uImage+initrd机制,并将内核基础版本设置为基于Linux 2.6.38核心运行。

单板需要支持的:

CPU: S3C6410 ARM1176JZF-S
DDR: 256MB
FLASH:MLC 2 NAND FLASH 2GB

串行接口4位

USB HOST模式

SD存储模块

因单次编译后所有驱动较为复杂,建议先构建基础可用内核。随后将逐一完成每个驱动的编译与验证工作。初步分析认为需要首先处理以下几点:

CPU体系/支持initrd机制

2、内核代码下载地址:

ftp://ftp.kernel.org/pub/linux/kernel/v2.6/

3、配置:

3.1 make menuconfig是出现2个错误:


A、安装centos时没有安装gcc工具

B、安装centos时没有安装ncurses

3.2具体配置:

配置CPU和单板,先不深究单板做了哪些修改:

System Type-->ARM system type-->Samsung S3C64xx

System Type-->MINI 6410

initrd机制:

一般配置→初始文件系统及RAM硬盘(支持initramfs和initrd)

后面需要调试驱动模块,对于加载模块需要修改选项:

取消下面两个选项:

Enable loadable module support-->Module versioning support

Enable loadable module support-->Source checksum for all modules

确定不需要的,取消配置,这是给笔记本电脑使用的内存卡总线:

Bus support -->PCCard (PCMCIA/CardBus) support

4、make menuconfig出现的错误解决:

[root@localhost / Linux-2.6.38]# make menuconfig
HOSTCC scripts/basic/fixdep
Command not found: gcc
make[1]: The operation on [scripts/basic/fixdep] failed with error code 127
make: The operation on [scripts_basic] failed with error code 2

这个问题令我感到十分沮丧。由于我过度关注交叉编译链中的arm-linux-gcc设置,并误以为该编译环境未正确配置。然而,在此之前我已经成功地编译过相应的用户态程序。这让我感到非常困惑:为何如此简单的配置问题会花费如此多的时间?后来我才意识到:这个配置界面实际上运行在一个基于虚拟机的Linux系统的环境中;因此他不应该使用 arm-linux-gcc 来进行编译操作——而是应该采用属于该Linux系统本身的GCC工具来进行编译工作。但这一做法似乎并不奏效:最初我以为只要安装一个GCC工具即可解决问题——结果发现我的 CentOS 5.5 版本并未包含这些必要的GCC工具包。于是我决定自行下载并安装这些开发工具——最终问题得以迎刃而解。

应用程序-->添加/删除 centos安装gcc工具

安装gcc

后面make menuconfig又报错,这次提示已经比较明显了:安装ncurses。

[root@localhost linux-2.6.38]# make menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.


*** Install ncurses (ncurses-devel) and try again.


make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2

应用程序-->添加/删除

安装ncurse

全部评论 (0)

还没有任何评论哟~