Skyeye使用经验及分析一例.

Skyeye交叉编译环境的下载及安装这里有比较详细的介绍:www.skyeye.org。下面以一个例子来分析这个open source的交叉编译工具。下载ucosii for AT91,在Skyeye这个编译环境下编译以ucosii内核及基于ucosiiapplication .我们来看看ucosii_test工程目录下的makefile文件.从makefile文件里关键的字样有:$(SAMPLE_DIR)$(KERNEL_DIR)$(ARCH_DIR)$(LIB_DIR)$(OS_DIR) 这些直接和编译环境有关,可以在当前makefile里找不到啊?别急,看看开始:include ../dir.make ,看到这个就明白了吧。好,看看上父目录下的dir.make文件吧。

# define some directory information of whole project

ROOT_DIR   = ../..

ARCH_DIR    = $(ROOT_DIR)/arch/atmel-arch

LIB_DIR       = $(ROOT_DIR)/lib

KERNEL_DIR       = $(ROOT_DIR)/kernel

SAMPLE_DIR       = $(ROOT_DIR)/samples

 

 

 

# these three files are needed when test all samples

CFG_FILE = $(SAMPLE_DIR)/compiler.conf

LDS_FILE = $(SAMPLE_DIR)/samples.lds

MAP_FILE = $(PRJ_DIR)/memmap.conf

DEP_FILES = $(CFG_FILE) $(MAP_FILE) $(LDS_FILE)

这里就是ucosii目录里所有基于skyeye交叉编译环境的全部和基本配置了。

恩,到在这里,我们可以明确很多东西,这些又利于加深我们对概念的理解,总结一下:1.skyeye是一个模拟硬件平台,为ARM内核提供硬件支持。2. 你一定记得下载的工具中有arm-elf-tools,这个东西就是交叉编译工具,它产生我们需要的.elf文件,这个文件在skyeye上仿真,让我们能够模拟软件在ARM内核上跑起来的感觉(爽!)。所谓交叉编译,就是这个意思。

好,我们在进一步。硬件平台是skyeye,我们在使用它的默认配置时,(你当然可以修改它的配置,请看相关资料)不妨认为它对我们是透明的,这无论在硬件设计还是在软件设计上都是一个基本原则。想想,ucosii_test要跑起来,我们硬件环境有了,还需要什么?当然是ucosii内核,和我们自己的application!( 不是废话哦:))。打开ucosii工程的头文件,你一定奇怪,怎么看不到内核相关文件哪?这些个信息都包含在makefile里了。你可以回去看看makefile。(那个kernel字样很显眼的)。好,必须的“系统环境“我们已经有了。下面我们该看看main_entry.c的代码了,看看它是如何模拟的。代码很简单吧。我们这里关心的是它是why ,而不是howskyeye_printf()这里函数看到了吧。看到skyeye字眼就又意思了。这里调用了和依赖的模拟平台有关的东东。恩,打开skysys_stdio.c看到skysys_printf()的实现,继续往下看,不难发现skyeye_printf()真正调用的是AT91(这是我们现在的硬件环境)的异步串口通讯来实现字符的输入、输出。我们当然会继续问:这些输入、输出又是由谁来实现的呢?其实我们如果是写基于硬件平台的软件,那么到这里也就ok了。如果非要继续往下看,那么去看看skyeyeinclude/lib文件吧(我也没再仔细往下研究了,至少现在:) )。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于那些想进行嵌入式系统软件开发和学习,或者想研究嵌入式Linux等操作系统和一些底层系统软件(如TCP/IP等)的研究和开发人员来说,可能存在如下几方面的问题:(1)经常苦于经费不足,缺少足够的硬件开发板和完善的软件开发环境,相关的书籍对一些最新软件的分析还不够全面,无法深入研究和开发嵌入式软件。(2)高层次的软件设计和开发一般不用太考虑底层硬件的实现细节,如果直接处于一个具体的硬件环境下,在开发和研究中可能会陷入硬件的具体细节中不能自拔,而不能把精力放到高层次的软件设计和开发上。(3)如果硬件开发环境不太稳定(这种情况经常见到),且对具体的硬件不是很了解,则可能在排除问题上花费大量的不必要的时间。(4)如果你想自己尝试设计一个操作系统,则先在一个提供源码级调试的软件仿真器上进行开发,可能会大大提高你的开发进度。<br><br>对于想了解、学习一般操作系统的实现原理,Linux/μCLinux操作系统或TCP/IP等系统级软件的实现的人员,目前一般采用的方法是看书和读源代码,这是一种静态的学习方法,效率较低,比较枯燥,缺少亲自实践的感觉。要想深入分析和开发软件,就要动手编程,不能只是看看书,读读代码,只有通过亲手实践才能够掌握软件设计的核心内容。上面所指出的问题和需求促使SkyEye项目的诞生。 <br><br>3.SkyEye的目标和意义 <br>SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。<br><br>3.SkyEye的目标和意义 <br>SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。<br><br>纯软件的模拟器有许多种,如模拟一个芯片时序逻辑的模拟器、只模拟CPU指令的模拟器、模拟整个硬件开发板的模拟器、模拟一个PDA的模拟器等。存在一些纯软件的仿真器或模拟器,如Stanford大学的SimOS模拟器,它仿真的是MIPS系列CPU和相关外设,可以在其上运行SGI公司的Irix操作系统和软件,目前基本上停止了进一步的开发;PSIM是一个仿真PowerPC指令集的模拟器,目前只支持简单的命令行应用程序;xcopilot是一个PDA模拟器,它是由Greg Hewgill出于个人喜好编写的,它仿真的是M68K CPU,通过它可以给基于PalmOS的软件开发者提供一个模拟开发环境。Bochs是一个仿真x86 CPU的开源项目,目前还支持AMD64 CPU,在它上面可以运行Linux操作系统。其它一些商业的仿真软件如vmware和virtualPC可以仿真一个真实的x86计算机,而Virtutech Simics仿真器可以仿真多种CPU和硬件,功能强大,可用于硬件和系统软件的评测。<br><br>SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。SkyEye在时钟节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定的简化。这样带来的好处是SkyEye的执行效率更高。SkyEye的推出具有下面三方面的意义:<br><br>通过SkyEye仿真集成环境可以很方便地进入到嵌入式系统软件学习和开发的广阔天地中。尤其对于缺少嵌入式硬件开发环境和软件开发环境的用户来说,它将是一个非常有效的学习工具和开发手段,因为SkyEye的整个软件系统都是Open Source的,且基于GPL协议(μCOS-II除外)。因此,如果要学习Linux操作系统或者进行嵌入式系统开发,但苦于没有硬件支持,SkyEye仿真环境软件是一个很好的选择! <br>如果想研究与具体硬件无关的系统软件(如TCP/IP协议栈等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值