昨天借了本书叫做<<一步一步写嵌入式操作系统>>,本着我“要学好一个平台就学它的操作系统的原则”的名言。于是就借来看看。
第一步就是就安装一个书中给出的模拟软件叫做skyeye,这个难不住我sudo apt-get install skyeye 安装后运行后,出现如下提示: Your elf file is little endian. arch: arm cpu info: armv4, arm920t, 41009200, ff00fff0, 2 mach info: name s3c2410x, mach_init addr 0x806d3c0 uart_mod:0, desc_in:, desc_out:, converter: SKYEYE: use arm920t mmu ops Loaded RAM ./helloworld.bin然后就卡在那停止了。经过百度后发现,skyeye的源码有几十M,而使用apt-get install安装的才几百K,于是去找源码包进行源码安装。
安装步骤如下:
1.进入网站http://cdnetworks-kr-1.dl.sourceforge.net/project/skyeye/skyeye/skyeye-1.3.2_rc1/下载安装包并进入安装包所在的目录。
2.输入如下代码 tar xvf skyeye-1.3.2_rc1.tar.gz cd skyeye-1.3.2_rc1//默认安装在/opt/bin里面,在这里更改为/usr/lcoal ./configure --prefix=/usr/local sudo make sudo make lib sudo make install suod make install_lib如果出现编译错误使用sudo apt-get install libncurses5-dev来修改这个错误)
OK,那来写个HelloWorld试试吧代码如下:helloworld.c
/**========================================================================= Author: findstr Email: findstr@sina.com File Name: main.c Description: Edit History: 2011-10-16 File created.=========================================================================**/void helloworld(void){ int i; char * hellostr="helloworld"; long* paddr=(long*)0xfffd001c; //这里的0x50000020 为2440 UTXH0端口地址 for(i=0;i<10;i++) { * paddr=hellostr[i]; } while(1); return;}Makefile如下:CC=arm-linux-gccLD=arm-linux-ldCONV=arm-linux-objcopyCFLAGS= -c -O2 -march=armv4 -mtune=arm7tdmiENTRY=0x0ENTRYFUN=helloworldCONVTYPE=binaryTARGET=helloworldOBJ=helloworld.o.PHONY : allall :$(TARGET)$(CONV) -O $(CONVTYPE) $(TARGET) $(TARGET).bin$(TARGET):$(OBJ)$(LD) -e $(ENTRYFUN) -Ttext $(ENTRY) {1}lt; -o $@helloworld.o:helloworld.c$(CC) $(CFLAGS) {1}lt;clean:rm -f *.o *.bin $(TARGET)最后skyeye.conf配置文件如下:arch:armcpu: arm7tdmimach:at91mem_bank: map = M, type = RW, addr = 0x00000000, size = 0x00800000,file= ./helloworld.bin,boot=yesmem_bank: map = I, type = RW, addr = 0xf0000000, size = 0x10000000uart:mod=stdio运行结果:OK,大功告成!