QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2508|回复: 11

MinGW32(no SDL) & WIN32_LCD 完

[复制链接]
发表于 2006-8-20 16:31:57 | 显示全部楼层 |阅读模式
经过一段时间的调试,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后快一点。
 楼主| 发表于 2006-8-22 17:34:39 | 显示全部楼层
另外问个问题:
为何用get_mingw_sem_first_time,get_mingw_readed,get_mingw_char_read等模拟select?
回复

使用道具 举报

 楼主| 发表于 2006-8-22 18:33:25 | 显示全部楼层
已经找到了,mingw_help.c负责stdin的输入
所以现在在寻找更好的stdin处理办法...
回复

使用道具 举报

发表于 2006-8-22 20:19:36 | 显示全部楼层
:-) 我也在想办法把里面在MinGW环境下用SDL来模拟select的部分剔除,但是试了试发现里面的Makefile写得很诡异

stdin部分,应该可以用winapi的东西来完全代替,我想到的方法就是把io_cycle时做的读入一个字符给抽象出来形成独立的UART部分,无赖牵涉的东西太多。。。
回复

使用道具 举报

 楼主| 发表于 2006-8-22 21:53:25 | 显示全部楼层
稍微有点头绪了,正在修改...
回复

使用道具 举报

 楼主| 发表于 2006-8-23 07:36:54 | 显示全部楼层
[code:1]
使用过程:

先下载 skyeye-1.2-RC8-3.tar.bz2 和这个帖子的附件 skyeye-1.2-RC8-3-MinGW32_LCD_VKEY.patch.gz
假如它们都放在当前目录。

$ tar jxvf skyeye-1.2-RC8-3.tar.bz2
$ gzip -d skyeye-1.2-RC8-3-MinGW32_LCD_VKEY.patch.gz
$ cd skyeye-v1
$ patch -p1 < ../skyeye-1.2-RC8-3-MinGW32_LCD_VKEY.patch
$ make -f Makefile.MinGW32

然后在 skyeye-v1/binary 就有 skyeye.exe 了。
只要有 Msys, MinGW, w32api-runtime & headers

运行的时候直接打入 skyeye.exe 是不行的,
这个在 cygwin 也是一样。


下面的截图是这样运行的
$ skyeye -e vmlinux-8-332 -c skyeye.conf.withlcd

[/code:1]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2006-8-23 09:57:29 | 显示全部楼层
我试试……!
回复

使用道具 举报

发表于 2006-8-23 10:10:12 | 显示全部楼层
LCD没试,编译正常,能够运行起来(s3c4510的配置)

Msys的shell不能够使用skyeye的终端
DOS命令行能够正常使用skyeye的终端

不过估计行结束符号变成了DOS的行结束符,而linux下则是UNIX的行结束符
回复

使用道具 举报

 楼主| 发表于 2006-8-23 14:35:01 | 显示全部楼层
[quote:0b39008120="wxMidnight"]LCD没试,编译正常,能够运行起来(s3c4510的配置)

Msys的shell不能够使用skyeye的终端
DOS命令行能够正常使用skyeye的终端

不过估计行结束符号变成了DOS的行结束符,而linux下则是UNIX的行结束符[/quote]

Msys的rxvt shell不能使用 win32 的 stdhandle, 所以我平常用 MinGW 都用 cmd 来代替,
把 Msys 的快捷方式目标改为 "C:\msys\1.0\msys.bat GOTO: startsh" 就可以直接使用 cmd 的 shell.
回复

使用道具 举报

 楼主| 发表于 2006-8-24 06:57:13 | 显示全部楼层
基本完成,还是上面的。
欢迎测试...
回复

使用道具 举报

发表于 2006-9-7 00:24:50 | 显示全部楼层

太好了

希望大家能够一起努力,早日发布在win下可以单独执行的二进制。这样就可以非常容易在windows下搞个传递参数的GUI,方便新手入门使用Skyeye!
回复

使用道具 举报

 楼主| 发表于 2006-9-7 04:06:30 | 显示全部楼层

Re: 太好了

[quote:407470f31e="faif"]希望大家能够一起努力,早日发布在win下可以单独执行的二进制。这样就可以非常容易在windows下搞个传递参数的GUI,方便新手入门使用Skyeye![/quote]

以下附带的是win下可以单独执行的二进制文件。
大小: 723KB
依赖库: (一般win2k以上我想都有吧)
advapi32.dll
kernel32.dll
user32.dll
gdi32.dll
ws2_32.dll
msvcrt.dll


相应当前CVS版本的patch仍然是上面那个地址。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 15:49 , Processed in 0.048052 second(s), 17 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表