在Cygwin中運行UC/OS-II 和 uclinux
發(fā)信站: 飲水思源 (2007年01月03日13:42:20 星期三)
1. 首先下載cygwin
ftp://202.38.97.230/Cygwin/里面有完整版的cygwin,一共2.35G.選擇安全安裝需要近3G的空間。
在自己生成交叉編譯器之前,首先對Cygwin進(jìn)行一些設置。假設Cygwin安裝在e目錄下,在
打開(kāi)Cygwin窗口之前,進(jìn)入到E:\Cygwin目錄。在這個(gè)目錄下,有一個(gè)文件名為Cygwin.
bat的批處理文件,編輯該文件,在第一行后,第二行加入 set CYGWIN = title ntea,這
是因為Cygwin的啟動(dòng)批處理文件需要啟動(dòng)Unix文件系統模擬。修改完畢且保存后退出。
SH鏈接(自己感覺(jué)沒(méi)有什么影響)
運行cygwin,在根目錄下輸入,cd bin
mv sh.exe sh-original.exe
ln –s bash.exe sh.exe
2.安裝交叉編譯1器arm-linux-gcc(需要)或者arm-elf-gcc(需要window版本)
arm-linux-gcc 可以從
http://www.arm9.com.cn/download/FriendlyARM.tgz下載
配置
http://www.arm9.net/cygwin_arm-linux-gcc_install.asparm-elf-gcc我使用的是EmbestArmTool.exe,
http://support.embedinfo.com/S3CEV40/uCLinux/EmbestArmTool.zip大家找到安裝就可以了,注意的是有一個(gè)GNUARMELFTOOL.exe也
是可以的(我第一安裝可以,可是后來(lái)安裝就總是編譯是找不到頭文件)
3.安裝skyeye(請詳細閱讀readme和buildskyeyeincygwin等文件)
最新版本
http://gro.clinux.org/projects/skyeye/根據readme 按照詳細步驟安裝即可。解決不了的問(wèn)題,請goole或再次仔細閱讀readme文
件
鄙視那里,不自己查找資料,出了問(wèn)題就問(wèn)的人。
我是使用的是 skyeye-1.2-RC8.tar.bz2
1。按照readme修改makefile comment the line 23 if you want to ...
2。需要修改skyeye_mach_ps7500.c 否則將出錯
#ifdef __CYGWIN__
//smattershi #include "mpw/sys/time.h"
#include <time.h>
#endif
注意:
安裝skyeye時(shí)候需要cygwin的支持,如果一些包沒(méi)有安裝會(huì )導致skyeye編譯不能通過(guò)。
你也可以從
http://gro.clinux.org/projects/skyeye/直接下載打好包的cygwin在skyeye-v1/binary/里面有一個(gè)skyeye.exe將其放到 /usr/bin/或者/sbin里面即可,也
可以修改 $PATH,還需要一個(gè)cygwin1.dll等dll文件,你可以在cygwin的文件夾中搜索到,
將起copy到windows/system32/里面即可。
4.下載最新的uc/os-II ucosii4skyeye-1.9.3.tar.gz
1。按照readme安裝即可,注意的是libc.a和libgcc.a的問(wèn)題(詳情見(jiàn)readme)
2。
1.修改dir.make 添加OSTYPE = cygwin
2.修改rules.make
echo "on cgywin!"; \
echo CROSS_COMPILE = arm-elf- > $(CFG_FILE); \
echo LIBPATH = -L/usr/local/armtools/arm-elf/lib/ -L/lib/ - L/usr/local/armtoo
ls/lib/ >> $(CFG_FILE); \
在這里修改LIBPATH可以找到libc.a和libgcc.a
這個(gè)版本的makefile 有個(gè)地方需要改動(dòng)
將其中的OS_DIR改為SAMPLES_DIR
simple:
make -C $(OS_DIR)/simple_test
ucos:
make -C $(OS_DIR)/ucos_test
lwip:
make -C $(OS_DIR)/lwip_on_ucos_test
不改對整體編譯沒(méi)有什么大的影響,只是想個(gè)別編譯時(shí),不會(huì )通過(guò)。
1. make cleanall
2. make config
3. make dep
4. make
3. make test
在ucosii4skyeye-v1.8.4.tgz中make的時(shí)候會(huì )出現link的問(wèn)題,找不到sky_printf的問(wèn)題
是因為他們的ucosii4skyey/lib/里面的沒(méi)有被編譯,我沒(méi)有具體看如何改正。據說(shuō)1.9.3
在linux中不能很好的編譯通過(guò),而1.8.4可以通過(guò)沒(méi)有測試。
1.9.3版本問(wèn)題是:
在沒(méi)有編譯之前先修改一下lib/skyeye_printf.c文件,不然在編譯samples時(shí)會(huì )提示isdi
git函數錯誤。把以下代碼加入skyeye_printf.c文件中:
static int isdigit(char ch)
{
if (ch >= ‘0‘ && ch <= ‘9‘)
return 1;
return 0;
}
然后把該文件中的"#include <ctype.h>"這一行注釋掉。
5??梢赃M(jìn)行skyeye -e ucos_test.elf
6. enjoy it :)
7.在調試skyeye-binary-testutils-1.2.0時(shí)候。主要因為cygwin 不支持mount -o loop
使得在windows界面無(wú)法進(jìn)行下去,可以將該步驟轉移到linux下,把boot.rom的內容copy
出來(lái)到romfs里面,再把romfs文件夾放到uncliux1里面,運行skyeye linux就可以進(jìn)行調試
uclinux了
http://gro.clinux.org/http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewforum&f=58