在vmware上运行ecos

目前关于在vmware虚拟机上运行ecos的文章应该是有,我会放到文章最后面的资源链接,所以写这篇文章的目的有两点,一是补充原有文章的不足,在实际操作中遇到的困难。 二是提供其中相关的资源链接,因为ecos大多是资源站点都在境外,下载的速度实在不咋地。
首先搞清楚ecos的系统结构,如图所示,其结构很像Linux的结构,所以在编译方式上也和linux相似,对于有Linux基础人上手就比较容易。主要分为五层,从底层到上层的顺序,分别是平台硬件层、设备抽象层(包含驱动的实现)、内核层(系统层)、标准库或兼容层、应用层。其中Reboot直接对接硬件接口,可以用来启动ECOS系统。
所以编译的顺序同样如上,总共分三步。第一步编译Redboot,包括内核的启动方式,内核加载区域甚至一些串口打印和基本驱动都可以用Redboot实现。第二步编译内核,即ECOS内核,相似于编译Linux内核,在内核中实现了具体的设备驱动,在内核中实现了具体的设备驱动和中断等,以及向量表。最后一步编译应用工程,应用工程实现具体的功能,其绝大多是对系统函数的调用,如果按照linux开发,其设备的抽象层也可以在应用工程中实现,但不属于应用层,可以一起编译,这一点我没有测试。
在vmware上运行ecos_第1张图片

  1. 资源下载
    redboot和Ecos都在一个资源包中发布的,所以只需要下载资源包和编译工具即可。目前官方给出的几十个地址都不怎么能用,我怀疑都没人维护这个系统了。我试了下有一个地址可以访问:http://mirror.aarnet.edu.au/pub/sourceware/ecos/releases/ecos-3.0/ http://mirror.aarnet.edu.au/pub/sourceware/ecos/gnutools/i386linux/ecoscentric-gnutools-i386-elf-20081107-sw.i386linux.tar.bz2
    由于我实在VMware,虽然基于64位的系统,但是这个RTOS只能在32位下编译,所以编译工具统一下载i386平台下的GUN开源工具包。

2.编译Redboot
启动图形化配置工具,这个工具默认在/ecos-3.0/tools/bin/configtool,但是我在LinuxDeepin环境下无法启动,应该是操作系统太高,很多人在Ubuntu9.x的环境下是可以的。这里可以使用Ecos-tools独立的工具包,这些我都会打包上传到CSDN中>>>原来的链接是在找不到了!<<<
2.1 Build->Templates选项
在vmware上运行ecos_第2张图片
2.2 Build->Package
这里增加选中那个选项目的是后面启动时通过Tftp服务加载在宿主机中的应用程序,否则会面临无法加载的尴尬。增加选项后,需要配置tftp的服务器地址。在vmware上运行ecos_第3张图片
这里你可以vmware中安装tftp服务器,apt install tftp。。。自行百度,然后看一下宿主机的ip,在回到配置redboot的地方,(记住不要关闭configtool这个配置窗口,像关闭的话可以保存一下,后面再打开你保存的配置文件,否则就要重新配置了。)go on,打开Redboot ROM monitor->build Reboot ROM elf image ->Redboot Networking-> Default ipaddress->default bootp server ,如下图:

在vmware上运行ecos_第4张图片
2.3 build->build path
配置编译工具的路径,就是之前下载的gnu开源工具,路径就选在gnutools/i386-elf/bin目录下,其他的目录有问题。
在vmware上运行ecos_第5张图片
2.4 build->Library
最后编译成lib库就可以了,一切顺利的话会生成xxx_install 和xxx_build两个目录,在xxx_install 中有reboot.elf,如果配置了build bin image选项,会直接生成bin文件,也可以手动生成, i386-elf-objcopy -O binary boot.elf boot.bin,"i386-elf-objcopy"就在开源工具包下。记得配置全局变量PATH,或者加上长长的目录调用哦

编译中会遇到一些问题,https://blog.csdn.net/easonxiang/article/details/4794297,这篇博客提供了解决措施,其根本在于ecos启用了-Werror选项,警告统一作为错误处理,而程序源码中存在左侧的操作数强制转换问题,这个编译器会报警告,造成无法编译,这个问题在后面的编译内核中也会存在。所以可以改Makefile文件,我是这么操作的,就是去掉上面的选项,或者根据博客中的提示改源码都可以。
在vmware上运行ecos_第6张图片
2.5 生成软盘镜像 redboot.flp

dd conv=sync if=redboot.bin of=redboot.flp bs=1440k
后面vmware启动需要这个.flp格式的,就是软盘格式

2.6 启动vmware
新建虚拟机,配置启动方式为软盘启动redboot.flp
建立虚拟机,必须删除ROM和硬盘。
在vmware上运行ecos_第7张图片
3. 编译内核
内核编译同上,就是在2.1中将redboot选项换位default即可,跳过2.2,直接走2.3和2.4即可,编译完成,编译后有default_install 和xxx_build两个目录,我们编译应用程序会用到xxxx_install目录

  1. 编译应用程序
    首先搞一个示例出来,从源码中copy一个example,比如twothread.c,
    配置一下PATH,linux中自行百度把,,,i命令如下,一个选项都不能少, -I./之间不要有空格,you Linux编译经验的应该知到。
i386-elf-gcc -I./kernel_install/include/ -L./kernel_install/lib/ -nostdlib -Ttarget.ld twothreads.c 

最后生成a.out文件

  1. 运行程序
    启动redboot,显示如图所示界面,如果没有显示,还配置不出来的话,就面壁去吧。
    在vmware上运行ecos_第8张图片
    然后使用命令load a.out,默认会自动从tftp也就是你的服务器目录下去加载这个文件,所以上面i配置的tfp服务器地址一定要准确。接着会显示如下,输入go 运行就可以了。
    在vmware上运行ecos_第9张图片
    在vmware上运行ecos_第10张图片

  2. 资源链接:
    6.1 https://blog.csdn.net/easonxiang/article/details/5664056
    6.2 https://blog.csdn.net/easonxiang/article/details/4794297
    6.3 http://mirror.aarnet.edu.au/pub/sourceware/ecos/releases/ecos-3.0/
    6.4 http://mirror.aarnet.edu.au/pub/sourceware/ecos/gnutools/i386linux/ecoscentric-gnutools-i386-elf-20081107-sw.i386linux.tar.bz2

6.5 ecos-tools:https://download.csdn.net/download/u013521188/12303397
6.6 GNU:https://download.csdn.net/download/u013521188/12303393
6.7 ECOS源码:https://download.csdn.net/download/u013521188/12303389

你可能感兴趣的:(嵌入式,Ecos,嵌入式)