微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > uClinux在S3C44B0X上的移植

uClinux在S3C44B0X上的移植

时间:11-10 来源:互联网 点击:
前期准备:
装有Linux系统的主机(具备c编译环境),立宇泰公司的ARMSYS44B0开发版(集成Samsung的S3C44b0X芯片)及各种连线,uClinux源代码,交叉编译工具arm-elf-tools

1.uClinux简介,基本结构,内核结构(略)

2.如果有产品的附带光盘,那路径/arm7/uClinux/uClinux下就包括了uClinux源代码,uClinux-armsys-050101.tar.gz,另外在这个目录下还提供了交叉编译工具arm-elf-tools-20030314.sh
如果手头没有这张光盘,也可以去立宇泰公司的网站(http://www.hzlitai.com.cn/download/default.asp)查找下载所需资料,但其中的uClinux源代码包是uClinux-dist-20040408.tar.gz

3.1.1 对于uClinux-armsys050101.tar.gz这个包,我们首先将它转移到/home目录下(当然在其他目录可以同样进行操作)
如果对Linux不太熟悉并希望能像在Windows下那样进行图形化的文件操作,最好以超级用户(root)登录,这是为了避免接下来的操作中出现权限限制.

如果是命令行操作,方法如下:
普通用户更换到超级用户,在提示下输入root密码(为了防止被扫描,密码输入时屏幕没有相应显示)
[Jiang@localhost ~]$ su -
Password:
用cp(拷贝命令),其中yourdir更改成你系统中arm7的目录
[root@localhost ~]# cp /yourdir/arm7/uClinux/uClinux/uClinux-armsys-050101.tar.gz /home

然后跳转到/home
[root@localhost ~]# cd /home

3.1.2 对uClinux-armsys-050101.tar.gz进行解压缩

[root@localhost ~]# tar xzvf uClinux-armsys-050101.tar.gz
参数说明:
x 从档案文件中释放文件
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩
v 详细显示tar处理的文件信息
f 使用档案文件或设备,这个选项通常是必选的
这个过程大约需要几分钟,完成后在当前目录(/home)下多了一个文件夹uClinux-dist,进入,我们可以看到里面的文件或文件夹
[root@localhost home]# cd uClinux-dist/
[root@localhost uClinux-dist]# ls
autoconf.h kernel_44b0.cfg romfs
bin kernel_44b0.cfg.old SOURCE
config kernel_4510.cfg tools
config.arch kernel_4510.cfg.old uClibc
config.in lib uClinux-20040408-ARMSYS.patch
COPYING linux-2.4.x user
Documentation Makefile vendors
freeswan Makefile.orig
images README

其 中images文件夹下有3个文件,这是我们最终所需要的,估计这个文件夹是lyt公司打包时自己加上去的,在一般源代码中这个文件夹是没有的,到编译成 功后会自动生成,所以我把这个文件夹剪切到了其他地方.另外这里还有一个文件uClinux-20040408-ARMSYS.patch,这是 uClinux-dist-20040408.tar.gz针对S3C44B0X结构的补丁,因为uClinux-armsys- 050101.tar.gz已经针对S3C44B0X硬件结构做了参数的修改,用不着这个补丁.这里,我们可以用rm -fr直接把这两个文件删掉.

如果在Windows环境下进行解压缩可能会产生一些错误,所以推荐在Linux中解压.

3.1.3 安装交叉编译环境

首先进入到arm-elf-tools-20030314.sh所在的目录,然后
[root@localhost home]#sh arm-elf-tools-20030314.sh

执行后在/usr/local/bin路径下可以看到各种实用工具
[root@localhost uClinux-dist]# ls /usr/local/bin
arm-elf-addr2line arm-elf-g++ arm-elf-objcopy arm-elf-strings
arm-elf-ar arm-elf-gasp arm-elf-objdump arm-elf-strip
arm-elf-as arm-elf-gcc arm-elf-protoize arm-elf-unprotoize
arm-elf-c++ arm-elf-gdb arm-elf-ranlib elf2flt
arm-elf-c++filt arm-elf-ld arm-elf-readelf flthdr
arm-elf-elf2flt arm-elf-ld.real arm-elf-run genromfs
arm-elf-flthdr arm-elf-nm arm-elf-size

3.1.4内核的编译
其实这一步也很容易,有人形容是易如反掌,但有一些细节处理不好的话也很容易出错

首 先根据需要配置内核.内核提供了各种功能,支持很多的硬件,因而有许多东西需要配置.可以配置的各种选项通过带有CONFIG前缀的表示符来表示.这些配 置项要么可以二选一,要么可以三选一.二选一就是yes or no.三选一可以有yes,no和module.module意味着该配置被选定了,但编译的时候这部分功能的实现代码是以模块的形式生成.驱动程序一般 是三选一的.

内核提供了各种不同的工具来简化内核配置.make config是一个字符界面下的命令行工具,该工具会挨个遍历所有配置,要求用户进行选择,耗时巨大.make menuconfig和make xconfig都是图形界面工具,都对配置项进行了分类存放,其中后者基于X11,支持鼠标.这里我们采用第二种工具make menuconfig
[root@localhost uClinux-dist]# make menuconfig

注意:
1.是在uClinux-dist目录下;否则报报错:
make: *** 没有规则可以创建目标“menuconfig”。 停止。

2.如果是在终端窗口执行的话,要保证窗口的大小,如果窗口过小,则会显示出错信息:]
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.

You have not saved your config, please re-run make config

make: *** [menuconfig] 错误 1

执行后在终端显示uClinux v3.1.0 Configuration窗口,主要使用[Y],[N],[M],Enter,和方向键.4个主菜单项

│ │ Vendor/Product Selection ---> │ │
│ │ Kernel/Library/Defaults Selection ---> │ │
│ │ --- │
│ │ Loa

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top