Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90947
  • 博文数量: 32
  • 博客积分: 960
  • 博客等级: 准尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-22 23:09
文章分类

全部博文(32)

文章存档

2011年(31)

2010年(1)

我的朋友

分类: 虚拟化

2011-02-20 01:16:00

Cygwin的安装和设置:

(1) 下载 Cygwin的setup.exe;

(2) 运行难过setup.exe(可以选择‘下载并安装’,也可以选择‘只下载不安装’,我选择了‘只下载不安装’),选择站点(多试几个站点,选一个较快的,否则几十K的速度要下一天),选安装包(可以下源码),下载安装文件。

(3)运行setup.exe,选择‘从本地安装’即可。

(4)在系统环境变量PATH中增加cygwin/bin。

eCos安装:

(1) 通过网络安装:在cygwin下执行wget --passive-ftp ,获取eCos安装文件ecos-install.tcl。

(2) sh ecos-install.tcl

(3) 在系统环境变量PATH中增加\opt\ecos\gnutools\i386-elf\bin(ecos目录下的ecosenv.sh执行失败!)。

eCos配置方式:

(1) ecos有命令行和图形工具两种配置方式。Windows环境下,在Cygwin下分别执行ecosconfig.exe和configtool.exe可以进行命令行和图形配置;Linux环境下,分别执行ecosconfig和configtool即可。相关文件都在ecos-3.0/tools/bin目录下。

基于VMware的eCos编译环境:

(1) 如果有一台带软驱的电脑,就可以直接编译i386 PC target with xxxx ethernet;如果没有,就需要使用VMware虚拟的目标机和软驱,同时使用VSPD虚拟的串口。

(2) 修改内存布局文件:

cygwin\opt\ecos\ecos-3.0\packages\hal\i386\pc\v3_0\include\pkgconf目录下的mlt_i386_pc_floppy.h/mlt_i386_pc_floppy.ldi/mlt_i386_pc_floppy.mlt,默认配置是针对普通PC的。将RAM配置从0xa0000改为0x1000000。

(3) 配置RedBoot(eCos图形配置工具):

Build->Templates中Hardware选择i386 PC target(vmWare)、Packages选择redboot。

Build->Packages中增加网络包支持

Common ethernet support.

Aliases: net_drivers, eth_drivers, CYGPKG_NET_ETH_DRIVERS

Macro: CYGPKG_IO_ETH_DRIVERS

Platform. independent ethernet support.

去掉“eCos HAL”中“platform-independent HAL options”的“Route diagnosis output to debug channel”;将“i386 PC target”启动类型改为“FLOPPY”。

需要网络支持能力,在“Redboot Rom monitor”的“Build Redboot ROM elf image/Redboot Networking”内,使用默认值,包括了TFTP加载文件。IP地址可以设置,也可以通过DHCP自动获取。

确定“Redboot HAL options/Build Redboot binary image”被选择,这样编译之后会在install_xxx/bin目录下生产redboot.bin,WMware可以用它做软盘映像文件启动系统。

(4)编译生产映像文件:

“Build -> Library”编译。 出现编译错误,可以用ecos源码建立SourceInsight工程,修改源码即可。xxx_install\bin目录下生成redboot.bin。

(5)制作软盘映像文件

在Cygwin下执行命令即可:dd conv=sync if=redboot.bin f=redboot.flp bs=1440k

VMware创建eCos目标平台:

(1)os和版本都选择other;

(2)网络类型选“Use bridge networking”桥接方式,即主机和虚拟机相当于连接在同一个网络中的两个不同主机,虚拟机使用独立的IP地址与外网连接。

(3)软驱使用映像文件redboot.flp。

(4)VMware5是最稳定的,建议使用这个版本,也不要自动升级。

(5)必须要去掉IDE设备,包括硬盘和光驱,否则无法启动,甚至在VMware7上出错之后,导致VMware无法使用了!!

(6)安装VSPD,虚拟一对串口COM1和COM2,然后虚拟机中选择串口为COM2,PC超级终端选择COM1。

基于VMware的eCos 应用程序:

与Redboot的配置类似,Build->Templates中Hardware选择i386 PC target(vmWare)、Packages选择net(与Redboot的差异),Build->Packages中增加网络包支持。

使用RAM启动类型进行编译,会在xxx_install目录下得到eCos头文件和库文件;与redboot不同,不会生成bin文件。

在\opt\ecos\ecos-3.0\examples目录下有示例代码,而且有现成的makefile。在该目录下使用make INSTALL_DIR=/projectDir/appDir/app_install,将示例源码和eCos头文件库文件编译,得到obj文件和可以在虚拟机上运行的可执行文件。 注意在Windows的系统环境变量PATH中增加E:\cygwin\opt\ecos\gnutools\i386-elf\bin,否则make找不到gcc。

redboot启动之后,有tftp功能,可以通过tftp加载app可执行文件load -h hello;但是要先在主机上运行tftp服务器,并将根目录设置到可执行文件所在目录。

也可以使用串口加载文件:target端执行load -r -b 0x300000 -m xmodem,host端用超级终端发送文件。

注意RAM的可用范围:

RAM: 0x00000000-0x04000000 [0x00089490-0x01000000 available]

RedBoot> load -r -b 0x300000 -m xmodem

CCRaw file loaded 0x00300000-0x004fa795, assumed entry at 0x00300000

xyzModem - CRC mode, 16208(SOH)/0(STX)/0(CAN) packets, 2 retries

运行:

加载可执行文件hello之后,go,直接异常重启!

必须设置ecos hal --> rom monitor support --> enable use of virtual vector table --> Initialize whole of virtual vector = true,这不是默认设置,如果不设置它,printf会死掉。

设置之后,go,全是乱码,就像加载了一个obj文件一样的现象。

原因待查!!! 试试其他example,看看代码是怎么写的。

阅读(1766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~