|
经过一段时间的调试,skyeye-v1 终于可以在 MinGW 下脱离 SDL 和 GTK 了。
这个 patch 针对最新的发布版 skyeye-1.2-RC8-3
部分已提交到CVS
完善的patch到SkyEye的patch跟踪去下载
其中主要有以下更改:
1.新加入 utils/stub/skyeye_win32_stdio.c 用于
去除原来 mingw_help.c中的相应实现, 其中函数如下:
skyeye_win32_std_select, // 用以模拟 select
skyeye_win32_std_read, // 用以对应select模拟的read
skyeye_win32_std_write // 这个用处不大
2.新加入 device/lcd/skyeye_lcd_win32.c 用于去除GTK依靠
用Win32API写的LCD,支持8/15/16/32bpp,
在LCD为当前激活窗口也可进行键盘输入。
笔操作有点延缓,和SkyEye本身机制有关,加入dbct会快些。
使用时把skyeye.conf里面参照下一行改
lcd: type=ep7312,mod=win32
3.新加 Makefile.MinGW32
参照原来的Makefile而写.
Makefile的CFLAGS中-I后跟的路径最后一个字符不能是 / 符号
此文件比原来多了两个变量GTK_LCD和WIN32_LCD
默认不再编译GTK_LCD.
4.因为上面的原因,其它涉及更改的文件较多,如:
arm/mach/*.c
utils/main/skyeye.c
device/net/skyeye_net_tap.c
等等
5.gdb调试
注意:下面例子假设以下终端下的当前目录均有vmlinux文件
终端A:
$ skyeye -e vmlinux -d
终端B: (建议使用cygwin的gdb,因为mingw32的gdb一按ctrl+c即退出)
$ gdb
(gdb) target remote 127.0.0.1:12345
(gdb) add-symbol-file vmlinux
(gdb) cont
6.存在问题:
1)msys的rxvt因为未找到方法处理其不规范的重定向CONIN$而不能响应输入。
折衷解决方法:
把 msys 的快捷方式目标后面加上 " GOTO: startsh" 来使用 cmd shell 或直接
使用 cmd 命令行。
2)有些时候,win32_lcd的多线程模式和现在skyeye不断的cycle机制存在线程优先
级问题。
折衷解决方法:
现在的skyeye_lcd_win32.c中有Sleep(1ms)作线程唤醒,另外编译进dbct后快一点。 |
|