一步一步写嵌入式操作系统学习(一)

学习方法:

1)以《一步一步写嵌入式系统》为主线,以其他的本书中未提到的相关知识、参考资料为辅助。

2)要多多实践。


开发环境的搭建:

需要解决四个问题:在什么样的系统环境下开发?使用什么样的编辑工具?怎样编译程序?程序如何运行?

1、关于在什么样的系统环境下开发?

建议使用Linux操作系统来学习和编写本书的示例。

也可以在windows下使用Cygwin工具来运行编译和运行本书的代码,它就是Cygwin。Cygwin是一个在Windows平台上运行的UNIX模拟系统。

还可以在虚拟机下安装linux来进行开发。

2、开发工具的使用(选择合适的编译器和编辑器)

1)编译器的选择和安装

由于所写的操作系统需要运行在ARM体系结构中,因此,在各种AMR编译器中选择 出一款,来编译操作系统源代码,在此,选择了gcc。

本书作者已经制作好了一套专门用于这套操作系统的编译器,大家可以去“www.leeos.org”网上上下载使用。

2)编辑器的选择和使用

选择自己熟悉的编辑器即可,

在linux下可以使用vi,vim或者nano等,

3)虚拟硬件的安装和使用

使用ARM编译器交叉编译生成的可执行程序,只能在AMR硬件环境下才能够使用。

有以下方法可以来运行该程序,一是可以使用ARM开发平台,一是借助一种特殊的软件来运行编译器生成的ARM程序,就是虚拟机。虚拟机是运行在PC中的一种软件,能够模拟出ARM硬件环境。

有很多免费的AMR虚拟机可供选择,SkyEye正式其中之一。

SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可以支持多种CPU指令集,并支持网络、Flash等大量硬件。 

4)程序的运行

利用SkyEye模拟的硬件平台来运行程序, 《一步一步写嵌入式操作系统》中的示例代码都是运行在有SkyEye模拟的s3c2410这一硬件平台上,

一步嵌入式操作系统 linux平台实现代码 step 0 准备开发环境 1 安装交叉编译工具 sudo apt-get install gcc-arm-none-eabi sudo apt-get install gcc-arm-linux-gnueabihf sudo apt-get install g++-arm-linux-gnueabihf 2 手边编译skyeye 用apt命令安装的skyeye模拟器版本(1.2.5)有bug,需要手动编译更高版本的skyeye 下载并解压skyeye 1.2.6_rc1的代码, ~/Downloads/skyeye-1.2.6_rc1 根据执行skyeye-1.2.6_rc1/INSTALL的说明 1 执行 ./configure 2 执行 make 后 编译错误1: In file included from /usr/include/fcntl.h:289:0, from nandflash/nandflash_smallblock.c:19: In function ‘open’, inlined from ‘nandflash_sb_setup’ at nandflash/nandflash_smallblock.c:519:24: /usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments __open_missing_mode (); 解决方法: 修改skyeye-1.2.6_rc1/device/nandflash/nandflash_smallblock.c 519行 if ((nf->fdump= open(dev->dump, FILE_FLAG)) < 0) 改为: if ((nf->fdump= open(dev->dump, FILE_FLAG, 0777)) < 0) 编译错误2: gcc -g -O2 -o skyeye skyeye.o ./utils/libutils.a ./arch/arm/libarm.a ./device/libdev.a ./arch/mips/libmips.a ./arch/ppc/libppc.a ./arch/bfin/libbfin.a ./arch/mips/libmips.a ./arch/coldfire/libcoldfire.a -lc ./utils/libutils.a -lbfd -lm -lc ./arch/mips/libmips.a(decoder.o):在函数‘decode’中: /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1079:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1105:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1049:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1027:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1013:对‘sign_extend_UInt32’未定义的引用 ./arch/mips/libmips.a(decoder.o):/home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1001: 跟着更多未定义的参考到 sign_extend_UInt32 ./arch/mips/libmips.a(decoder.o):在函数‘decode’中: /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:240:对‘divide_UI
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值