一、 uClinux 编译环境的配置和编译
1 、下载arm-elf-tools 和uClinux
http://www.uclinux.org/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh
http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20030305.tar.gz
2 、安装
( 1 )先切换到 root :
sudo -s -H
( 2 )安装 arm-elf-tools :
export _POSIX2_VERSION=199209
sh ./arm-elf-tools-20030314.sh
( 3 ) uClinux 配置并编译:
更新软件包信息:
apt-get update
安装一些必备软件包:
apt-get install ncurses-dev
apt-get install tcl
apt-get install tk
解压 uClinux
tar zxvf uClinux-dist-20030305.tar .gz
切换到 uClinux 的解压目录 , 运行下以下命令之一进行配置:
make menuconfig 或 make xconfig
编译:
make dep
make
make image
在 images 目录下生成 romfs.img,linux.data,
说明:
apt-get update 为可选命令,作用是更新软件包信息,如果执行 apt-get install 命令出错,那必须先执行这个命令。
ncurses 为 make menuconfig 时所需的安装包
tcl 和 tk 为 make xconfig 所需的安装包
make menuconfig 和 make xconfig 为用菜单方式或图形界面方式配置 uClinux, 如何配置可以参考网上的其它资料,因为是用 skyey 仿真,所以只要将 Vendor/Product 选为 GDB/ARMulator ,其它的可用默认选项 , 当然在实际的配置和裁减中还是有许多其它选项要改的。
二、 skyeye 的安装
在 ubuntu 下安装 skyeye 相当简单,只要执行以下命令:
apt-get install skyeye
如果出错先执行 apt-get update
三、用 skyeye 仿真 uClinux
1 、先写一个测试程序,保存为hello.c :
//---------------------------------hello.c----------------------------------------------------
#include <stdio.h>
int main(void)
{
printf("hello,world/n");
return 0;
}
//-----------------------------------------------------------------------------------------------
编译生成 flat 文件格式 的可执行文件 hello :
arm-elf-gcc -Wl,-elf2flt -o hello hello.c
2 、制作romfs.img
在编译 uClinux 时已经生成了 romfs.img, 但是我们要将我们的 hello 程序加入 romfs 中,可以按下面步骤来做 ( 以下假设当前目录为 uClinux 所在目录 ) :
( 1 )首先,挂载 romfs.img
切换到 uClinux 目录下的 images 目录并建一个 romfs 目录:
cd images
mkdir romfs
创建挂载点:
mkdir /mnt/romfs
挂载:
mount -o loop romfs.img /mnt/romfs
( 2 )制作 romfs.img
将 /mnt/romfs 目录下的所有文件拷贝到 images/romfs 目录下:
cp -r /mnt/romfs/* romfs
制作新的 romfs.img
genromfs -f romfs.img -d romfs
3 、skyeye 仿真
( 1 )先写一个 config 文件 skyeye.conf, 保存到 images 目录下,以下为全部内容:
cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=./romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
( 2 )仿真
转到 images 目录,执行以下命令:
skyeye -e ../linux-2.4.x/linux
熟悉的界面出现了 ,cd 到 bin 目录,执行以下命令
./hello
出现了经典的 hello,world
到此,基本的仿真工作已经做完了,有时间再写一下 minigui 和 embeded Qt 的编译和仿真 ,
参考资料:
http://hi.baidu.com/zkheartboy/blog/item/a73927ad3629c9094a36d6f1.htm