注意 : 以下说明是针对 SkyEye 0.1.1 以前版本 , ucosii4skyeye1.4 以前版本,最新软件的安装使用说明可参考最新软件包中的相关文件( installguide.txt, readme, SkyEye.README )
Cygwin 是一个在 windows( 包括 windows98/windows2000/windowsXP) 下的 unix 工具集合,支持大多数 GNU 软件(如 gcc , gdb , xfree86,bash,tetex , opengl , perl,python 等)。许多以前在 unix 环境下的软件只需在 cygwin 环境下重新编译就可以运行了。 SkyEye 也是通过 cygwin 的支持实现了可同时在 windows 和 linux 上运行。
目前最新的 Cygwin 版本为 1.3.17(2002-11-28) ,整个环境(包括所有的工具和 xfree86 有 1.3GB )。大家可下载和安装最基本的环境,大约为 200~400MB 不等。目前国内提供下载的地址有:
ftp://202.38.97.230/netinst/Cygwin/
ftp://166.111.68.183/pub/Cygwin/
必须安装的子目录 ( sub category ) : (把子目录旁边的 ”default” 用鼠标点一下,直到变成 ”install” )
Archive
Base
Devel :包括 gcc 、 make 等编译工具
Libs
Net
Shells
Utils: 包括 bzip2 等实用工具
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
大家可选择较快的下载地址(希望更多的站点提供最新 cygwin 的 ftp 访问)。
必须通过 cygwin 提供的 setup.exe 进行安装,可根据安装提示一步一步进行,提供通过 internet 安装方式或本地安装方式。建议把 cygwin 整个安装包下载到本地再进行本地安装比较方便。如果无特殊需求,可简单按它的缺省安装方式安装最少数量的软件包。建议不要安装到 c:\ 下。 cygwin 的问题和解答可参考 cygwin FAQ 。
<!-- [if !supportLists]-->1. <!-- [endif]-->在 cygwin 环境下安装二进制 skyeye
把二进制文件从 linux 或 cygwin 的根目录下解开既可使用。如果你选择把 cygwin 安装到的 d:\cygwin 目录下。则执行 cygwin bash shell 后的仿 unix 环境的根目录“ / ”实际上就是 d:\cygwin 目录。
把 SkyEye-0.1 for cygwin 二进制文件 skyeye-0.1.bin.cygwin.1.3.17.tar.bz2 下载并拷贝到 d:\cygwin 目录下后,在 cygwin bash shell 环境中的根目录“ / ”下就存在了文件 skyeye-0.1.bin.cygwin.1.3.17.tar.bz2 。然后在 cygwin bash shell 环境中的的根目录“ / ”下执行:
tar jxvf skyeye-0.1.bin.cygwin.1.3.17.tar.bz2
就把 skyeye 的执行文件安装到 cygwin bash shell 环境中“ /usr/local/bin ”下。
用户可试着在根目录下执行命令“ skyeye ”,如果出现了如下显示则表示安装成功。
2. 在 cygwin 环境下编译 skyeye
如果自己想在 cygwin 环境下编译 skyeye ,则比较麻烦,可参考 skyeye 源码包中的说明文档 buildskyeyeoncygwin.txt
A 建立 uC/OS-II 源码调试环境
注意:如果要重新编译,请选择 ucosii for skyeye 1.0.1 以上版本!
假设要把 uC/OS-II 源码调试环境建立在“ /tmp/ucos/sourcecode ”目录下。
把 uC/OS-II for SkyEye VerA 源码 ucosii-verA-skyeye-1.0.tar.bz2 或 uC/OS-II for SkyEye VerB 源码 ucosii-verA-skyeye-1.0.tar.bz2 解压到 /tmp/ucos 下:
以 uC/OS-II for SkyEye VerA 为例:
把 ucosii-verA-skyeye-1.0.tar.bz2 下载并拷贝到 d:\cygwin\tmp 目录下,则执行 cygwin bash shell 后的仿 unix 环境的根目录“ /tmp ”实际上就是 d:\cygwin\tmp 目录。
然后在 cygwin bash shell 环境下执行如下命令:
mkdir /tmp/ucos
cd /tmp/ucos
tar jxvf ../ucosii-verA-skyeye-1.0.tar.bz2
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
然后把 uC/OS-II for SkyEye VerA 执行文件 ucosii-verA.elf 拷贝到 d:\cygwin\tmp\ucos\sourcecode 下
最后把 uC/OS-II内存布局配置文件 拷贝到 d:\cygwin\tmp\ucos\sourcecode 下,并在 cgywin 环境下执行改名命令:
cd /tmp/ucos/sourcecode/
mv ucosmemmap.conf memmap.conf
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
B 建立 uclinux 源码调试环境
假设要把 uclinux 源码调试环境建立在“ /tmp/uclinux/uClinux-dist-20020816 ”目录下。
把 uclinux-2.4.x 精简压缩包 uclinux.lightsrc.tar.bz2 下载并拷贝到 d:\cygwin\tmp 目录,即 cygwin 环境的目录 ”/tmp”
解压 uclinux-2.4.x 精简压缩包,命令如下:
cd /tmp
tar jxvf uclinux.lightsrc.tar.bz2
则 uclinux 相关文件就安装到“ /tmp/uclinux/uClinux-dist-20020816 ”目录下了。
最后把 uclinux内存布局配置文件 uclinuxmemmap.conf 拷贝到 d:\cygwin\tmp\uclinux\uClinux-dist-20020816 下,并在 cgywin 环境下执行改名命令:
cd /tmp/uclinux/uClinux-dist-20020816/
mv uclinuxmemmap.conf memmap.conf
如果 你想把 uclinux-2.4.x 精简压缩包解压到 /usr/local/ 目录下,
则把 uclinux-2.4.x 精简压缩包 uclinux.lightsrc.tar.bz2 下载并拷贝到 d:\cygwin\usr\local 目录,即 cygwin 环境的目录 ”/usr/local”
解压 uclinux-2.4.x 精简压缩包,命令如下:
cd /usr/local
tar jxvf uclinux.lightsrc.tar.bz2
ln –s /usr/local/uclinux /tmp/uclinux
注意: /tmp/uclinux 是 uclinux-2.4.x 精简压缩包的缺省安装目录。
A 调试 ucos
在 cygwin 环境下执行如下操作:
cd /tmp/ucos/sourcecode
skyeye
在 skyeye 环境中执行 :
file ucosii-verA.elf (如果建立的是 ucosii-verB 环境,则执行 file ucosii-verB.elf )
target sim
load
run
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
然后你可以用 ”Ctrl-C” 中断 ucos 的执行,通过命令
p x
p y
可以查看 task1 对 x 的修改情况,和 task2 对 y 的修改情况,
通过命令
p OSCtxSwCtr
可以查看 ucos 执行上下文切换的次数。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
B 调试 uclinux
在 cygwin 环境下执行如下操作:
cd /tmp/uclinux/uClinux-dist-20020816
skyeye
在 skyeye 环境中执行 :
file linux-2.4.x/linux
target sim
load
run
这时应该可以看到 uclinux 的启动画面。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
如果需要进一步调试,需要学习 gdb 的命令使用。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
注意:
<!-- [if !supportLists]-->l <!-- [endif]-->如果要重新编译,请选择 ucosii for skyeye 1.0.1 以上版本的源代码。
<!-- [if !supportLists]-->l <!-- [endif]-->ucosii for skyeye 1.1 以上版本支持 printf 功能,但目前不能在 cygwin 环境下编译通过,但可在 linux 环境下编译通过后,在 cygwin 环境下执行。
<!-- [if !supportLists]-->l <!-- [endif]-->uC/OS-II 的执行文件和源码要放在一个目录下。
<!-- [if !supportLists]-->l <!-- [endif]-->memmap.conf 所在目录和当前执行 skyeye 的目录要等同。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
下载 arm-tools in cygwin 的软件包
arm-linux-binutils-cygwin-2.9.5.0.37.tgz
arm-linux-gcc-cygwin-2.95.3.tgz
libc6-dev-arm-cross-2.1.3-19.tgz
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
如果你选择把 cygwin 安装到的 d:\cygwin 目录下。则执行 cygwin bash shell 后的仿 unix 环境的根目录“ / ”实际上就是 d:\cygwin 目录。把上软件包下载并拷贝到 d:\cygwin 目录下后,在 cygwin bash shell 环境中的根目录“ / ”下就存在上述文件。然后在 cygwin bash shell 环境中的的根目录“ / ”下执行:
tar zxvf arm-linux-binutils-cygwin-2.9.5.0.37.tgz
tar zxvf arm-linux-gcc-cygwin-2.95.3.tgz
tar zxvf libc6-arm-cross-2.1.3-19.tgz
tar zxvf libc6-dev-arm-cross-2.1.3-19.tgz
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
执行命令
tar jxvf ucos_verb_skyeye-1.x.x.src.bz2
解开源码软件包
然后,你可在 ucos 的安装目录 ( 设安装目录为 ”/tmp/ucos/sourcecode”) 下执行命令:
make
则可在 ucos 的安装目录下生成 ucos.elf ucos.s ucos.r ucos.n
最后在 ucos 的安装目录下执行 skyeye ,就可以调试你编译的 ucos.elf 操作系统和应用程序了(与 4 中的描述相同)。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
注意: ucosii for skyeye 1.1 以上版本支持 printf 功能,但目前不能在 cygwin 环境下编译通过,但可在 linux 环境下编译通过后,在 cygwin 环境下执行。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
目前提供的在 cygwin 环境下的支持 arm 的交叉编译工具集有两个。
另一个由别人制作的在 cygwin 环境下的支持 arm 的交叉编译工具集可在
ftp://166.111.68.183/pub/embed/devtool/gcc-arm-cygwin/
处下载,如果大家想在 cygwin 环境下重新编译 uclinux ,大家可以试用一下。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
懂 linux 还不懂如何安装吗? J
注意:
/tmp/uclinux 是 uclinux-2.4.x 精简压缩包的缺省安装目录
建议使用 redhat7.1 以上版本的系统。
建议使用 arm-elf-tools-20011219.tar.gz 为交叉编译工具编译 arm 程序
建议使用 gcc2.96 gcc3.2 编译 skyeye
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
1 在 linux 下安装 skyeye
解开 skyeye-0.1.1.src.tar.bz2 ,按照 SkyEye.README 介绍的步骤做 configure,make,make install
需要指出的是,在 mandrake8.2 环境中 ,make 时会有 error ,不过不是什么大问题,
error:display.c->tcap.h->termcap.h:no such file or directory
在本机 /usr/include 下 find 一下, termcap.h 头文件在 /usr/include/ncurses 目录下,
将 termcap.h 中的 <termcap.h> 改成 <ncurses/termcap.h>
重新执行 make 就 ok 了。
执行 make install 命令后, skyeye 默认安装在 /usr/local/bin/ 目录下,你可以通过改 configure 命令参数 prefix 来改变安装路径。
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
2 安装 arm 交叉编译器
下载 arm-elf-tools-20011219.tar.gz
将 arm-elf-tools-20011219.tar.gz 在本机的根目录下用 tar 命令解开,
则相关软件安装在 /usr/local/bin 和 /usr/local/arm-elf 目录下。
3 编译 ucosii for skyeye
下载 ucosii for skyeye 源代码
注意: 1.1 以上版本支持 printf 功能
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
执行命令
tar jxvf ucos_verb_skyeye-1.x.x.src.bz2
解开源码软件包
然后,你可在 ucos 的安装目录 ( 设安装目录为 ”/tmp/ucos/sourcecode”) 下执行命令:
make
则可在 ucos 的安装目录下生成 ucos.elf ucos.s ucos.r ucos.n
最后在 ucos 的安装目录下执行 skyeye ,就可以调试你编译的 ucos.elf 操作系统和应用程序了。
感谢 star 提供的 SkyEye 在 linux 上的安装使用过程描述
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
运行环境: mandrake linux8.2
源码包及其他所需文件: ftp://202.99.11.120/pub/mirrors/skyeye/ 或 ftp://166.111.68.183/pub/embed /
skyeye-0.1.1.src.tar.bz2
arm-elf-tools-20011219.tar.gz
uClinux-dist-20020927.tar.gz
romfs.2.4.x.gz
uclinuxmemmap.conf
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
<!-- [if !supportEmptyParas]--> <!-- [endif]-->
2 编译 uclinux
先安装交叉编译器,将 arm-elf-tools-20011219.tar.gz 在本机的根目录下 tar 开,解到 /usr/local/arm-elf 目录下。
将 uClinux-dist-20020927.tar.gz 解开,比如解开在 /usr/src/uclinux-dist/ 下,然后在 /usr/src/uclinux-dist/ 目录下执行如下命令:
在图形方式下可用命令 make xconfig 或 在命令行方式下可用命令 make menuconfig
在 vendor/product 中选择 GDB/ARMulator , kernel 版本选择 2.4,save and exit.
------------------------------------------------------------------------------------------------------------------------------------------------
方案 A
如果带调试信息的 linux kernel 执行文件
make dep;make linux
这时在 /usr/src/uclinux-dist/linux-2.4.x 目录下生成 linux 文件
方案 B
如果想一步生成带调试信息的 linux kernel 执行文件和 linux kenel 执行文件映像和磁盘映像文件 romfs.img
可简单是运行命令 make dep; make 就行了。可查看 /usr/src/uclinux-dist/images/ 下是否有文件 romfs.img 等
-------------------------------------------------------------------------------------------------------------------------------------------------
在 /usr/src/uclinux-dist 目录下,
cp ulinuxmemmap.conf memmap.conf
------------------------------------------------------------------------------------------------------------------------------------------------
方案 A
gunzip romfs.2.4.x.gz
cp romfs.2.4.x boot.rom
romfs.2.4.x 其实就是磁盘映像文件。
方案 B
也可以在 /usr/src/uclinux-dist 下 make romfs ;make image 来生成 romfs.img 。
如果想使用自己编译的 romfs.img ,则在目录 /usr/src/uclinux-dist 下执行命令
ln –s images/romfs.img boot.rom
-------------------------------------------------------------------------------------------------------------------------------------------------
这个时候就可以用 skyeye 来调试运行 kernel 了,在 /usr/src/linux-dist :
skyeye linux-2.4.x/linux
(gdb)target sim
(gdb)load
(gdb)run
kernel start.....
注意要在 memmap.conf 和 boot.rom 所在目录下执行 skyeye 。
你可以在 run 之前给 kernel 设置断点来调试。目前 skyeye 支持的 <span styl