在Windows 7下配置eCos开发环境的问题和解决方法

时间:2022-11-21 07:17:25


在Windows 7系统下配置eCos开发环境时碰到一些问题,权限的问题和fork的问题,这里总结一下解决方法以便需要的朋友参考。我的环境是Windows 7 SP1,64位,中文,旗舰版,​​Cygwin​​-1.7.28 32位,eCos配置工具​​ecos-tools-bin-120425.cygwin.tar.bz2​​,GCC编译器​​ecoscentric-gnutools-arm-eabi-20081213-sw.cygwin.tar.bz2​​。

eCos官网:​​http://ecos.sourceware.org​​​ eCos中文技术网:​​http://www.52ecos.net​​ eCos交流QQ群:144940146。

32位 vs 64位

Windows 7有32位版本和64位版本,Cygwin也有32位版本和64位版本。Windows 7 64位版本是兼容32位应用的,所以从理论上讲Windows 7的32位版本和64位版本没有什么区别,内存超过4G的使用64位,4G以内的使用32位就可以。Cygwin 64位无法运行eCos配置工具,而Cygwin 32位可以正常运行。

eCos配置工具或GCC/GDB不工作

默认安装的Cygwin没有包含eCos配置工具和GCC/GDB所需的部分组件,在Cygwin终端运行eCos配置工具和GCC/GDB,根据提示安装缺失的组件,在Windows资源管理器中双击eCos配置工具以及在Eclipse下调用GCC/GDB只会给出含糊不清的错误提示或根本不提示,所以必须首先保证在Cygwin终端下可以正常运行这些工具。

Permission denied

编译过程产生Permission denied权限问题,打开Cygwin终端,进入eCos编译目录,使用ls -l察看文件权限,权限一列的内容为“----------”或“d---------”,这个意思是没有任何读写权限!进入eCos源代码目录察看文件权限,结果也是所有文件没有任何读写权限。

解决办法是在Cygwin终端修改eCos源代码的文件读写权限。

chmod -R 644 <repos>/packages/

权限修改好后,删除eCos的编译目录并重新生成编译目录,再重新编译就不会有权限问题了。

fork失败

编译过程出现fork tclsh失败的错误,cygwin\bin\libtcl8.5.dll: Loaded to different address,这是因为Windows 7在创建子进程时,子进程的内存布局与父进程的内存布局不相同引起的,而fork要求子进程与父进程有完全相同的内存布局。这个错误不是每次都会出现,有时候会出现有时候不会出现,如果不嫌烦就多试几次就可以。嫌烦的使用rebase工具修复这个问题:首先关闭所有Cygwin进程和服务,包括eCos配置工具和Cygwin Terminal;然后通过Windows资源管理器进入X:\cygwin\bin目录双击ash或dash(不能使用bash或其他终端模拟器),在ash/bash窗口输入rebaseall命令。

更多内容请阅读​​《How do I fix fork() failures?》​​,以及X:\cygwin\user\share\doc\rebase\README。

超级终端

Windows 7居然不再提供超级终端这样嵌入式开发必备的工具!从Windows XP下拷贝几个超级终端的必备文件到Windows 7,并放到同一个目录下,不一定要放到Windows 7的系统目录下。

  • C:\Program Files\Windows NT\hypertrm.exe
  • C:\Windows\System32\hypertrm.dll
  • C:\Windows\System32\hticons.dll

更多内容请参考《​​如何在Win7中安装使用超级终端Hyper Terminal​​》。