skyeye arm 硬件虚拟机环境的搭建
一、搭建的主要步骤
1、skyeye安装
skyeye是用来模拟arm硬件的,是代码最终运行的环境。
2、arm交叉编译工具的安装 arm-linux-gcc或者是 arm-elf-gcc
交叉编译是为了使得在电脑上编译的程序,可以在特定的arm环境中运行。
二、实战
1、硬件模拟器:skyeye的安装
tar xjvf skyeye-1.2.6_rc1.tag.bz2
cd skyeye-1.2.6_rc1
./configure
make
make install
顺利,没遇上问题。
2、arm交叉编译工具的安装
直接下载编译好的arm-linux-gcc-3.4.1.tar.bz2,在根目录里解压
cd /
tar –jxvf arm-linux-gcc-3.4.1.tar.bz2
添加环境变量
vim /etc/profile
pathmunge /usr/local/arm/3.4.1/bin //在对应位置加上
source /etc/profile //使修改立刻生效
arm-linux-gcc –v //测试修改是否成功
出现错误:bash: /usr/local/arm/3.4.1/bin/arm-linux-gcc: /lib/ld-linux.so.2: bad ELF interpreter:no such file or directory
要安装yum install ld-linux.so.2(参考[2])
安装时yum源出现了问题,将其他系统的yum的文件 /etc/yum* 拷贝过来。
三、测试
新建两个文件,一个是运行的程序hello.bin和硬件的配置文件skyeye.conf
1、hello.bin的生成
cd /tmp
mkdir test
cd test
vim hello.c
##以下为hello.c
#define UFCON0 ((volatile unsigned int *)(0x50000020))
void hello(void){
const char *p=”helloworld\n”;
while(*p){
*UFCON0=*p++;
}
while(1);
}
编译,生成hello.bin文件:
arm-linux-gcc -O2 -c hello.c
arm-linux-ld -e hello -Ttext 0x0 hello.o -o hello
arm-linux-objcopy -O binary hello hello.bin
2、配置arm硬件环境
这里是模拟的s3c2410x这款芯片
vim skyeye.conf
##以下为skyeye.conf的内容
cpu: arm920t
mach: s3c2410x#physical memory
mem_bank:map=M, type=RW, addr=0x30000000, size=0x00800000, file=./hello.bin, boot=yes#all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
运行:
skyeye
出现helloworld,即证明运行成功。
四、参考:
[1] 从skyeye学习arm http://blog.csdn.net/feixiaoxing/article/details/18180119
[2] 解决linux安装软件:/lib/ld-linux.so.2: bad ELF interpreter问题 http://www.111cn.net/sys/linux/55374.htm
[3] 《一步步写嵌入式操作系统》——李无言