最近项目需要用到eCos,由于硬件板还没有准备好,所以准备先把移植到虚拟机上跑起来。
eCos的官方文档很详细,地址如下:http://ecos.sourceware.org/docs-latest/,按照上面的步骤一步一步的来,中间也出了不少问题,把记录下来,方便以后查阅。
搭建环境基本上没有什么问题,我的环境是这样的:
系统:Ubuntu9.10
ECOS:3.0
GCC:i386-elf-gcc (eCosCentric GNU tools 4.3.2-sw) 4.3.2
首先编译Redboot,和Uboot类似的东东
启动配置界面,从菜单中选择Build ==> Templates,硬件平台选择 i386 PC target(vmWare),Packages选择redboot。
这样就包含了最基工功能的Redboot,如果想使用网络功能,比如从TFTP下载内核,就需要加入网络模块
选择Build ==> Packages,加入Common ethernet support。
保存之后就开始编译,保存的时候可能会出现两个冲突,暂时不用管,正常情况下,这里编译会出现几个同样的错误:
于是打开这个文件看了下,是这一行出的问题
他们的定义分别是这样的:
于是一替代就成了这样:
而强制转换放在等号的左边是不被编译器支持的,正常的做法是放到选号的右边,我想不到什么好的办法能比较方便的把放到右边,所以我就把强制转换去掉了,因为把 uint_32 的变量赋值给 uint_8* 应该是没有什么问题的,所以就改成了
这样可以顺利编译通过,并且也正常跑起来了。
在虚拟机上跑Redboot可以参考维基上的一篇文章: 在虚拟机下跑redboothttp://zh.wikipedia.org/wiki/ECOS
接下来就是如何把eCos的内核从网络下载过来执行。