bioe007list at hotmail.com
2007-Oct-25 17:10 UTC
[Wine] serial port problems: micro flashing
I am new to this mailing list. I apologize if any needed information is missing. I know this is a bit much to ask of wine's current serial port implementation, I am hoping someone has maybe figured this out already? Or can help me further the debugging process, I'd rather be part of the solution then simply another complaint about wine's serial port. ***** problem description ***** The app is supposed to compile, link and (via serial port) upload BIOS and firmware to a development board --> http://www.rabbit.com/products/rcm2200/index.shtml The app fails to find a micro at during the uploading and therefore fails. The app does NOT crash but continues operating normally. *****my debugging so far**** It seems data is getting out of wine, at least the bytes are ending up at ttyS0. Successive `cat /proc/tty/driver/serial` shows increasing Tx bytes, but only 1 Rx byte, also the app fails with 'No target processor found'. There is an option to ignore processor verification, but that doesn't help. I have discussed with the company (Rabbit Semi) the problem and they are aware of it and consider it a limitation of WINE and are not interested in helping. I did glean from them that there is some creative use of modem control lines (DTR,CTS are clearly trying to do something). I have tried some WINEDEBUG="+trace,+comm" and hope someone else sees something useful in it. I notice that it reports baud rate of 2400bps when setserial is 115200, and the windows app is at 115200. (also disabled baud rate negotiation in the app to no avail). I have tried adding the `low_latency` flag to ttyS0. I removed a bunch of lines that were repeated from the wine debug channel output because the orginal file was 33M. I removed them only where the same line appeared over and over... grep -c '0009:trace:comm:io_control 0x54 IOCTL_SERIAL_GET_COMMSTATUS (nil)' ~/dync_ouput/rfu_wch_trace_comm2007_10_24_13\:49\:58.txt 405515 I have also noted an unimplemented stub (set_queue_size) which may be a problem and I'm willing to try and work on the code, but my experience w/Wine is limited so any more pointers about debugging? I have some basic EE tools and can hook up an oscilloscope (up to 4 channels) to my dev boards uart if anyone thinks that would help... Another concern of mine is if my wine com1 port is working at all... Can anyone tell me of a good working serial port app in wine? Bray++ terminal or anything else like that? ##### app setup ##### Wine 0.9.43-current (git as of 10/23/07) (compiled myself) Linux 2.6.21.5, 2.6.22.1, 2.6.22.9 Distro(s): slackware 11-12 , now zenwalk 4.8 (was 4.6.1) Application: Dynamic-C v9.21 (Full commercial license) --> http://appdb.winehq.org/objectManager.php?sClass=version&iId=9356 ##### port setup ##### root[drive_c]# dmesg | grep tty 00:0c: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A root[drive_c]# ls -l /dev/ttyS0 lrwxrwxrwx 1 root root 5 2007-10-05 08:39 /dev/ttyS0 -> tts/0 root[drive_c]# ls -l /dev/tts/0 crwxrwx-w- 1 root tty 4, 64 2007-10-05 10:04 /dev/tts/0 root[drive_c]# setserial -abGv /dev/ttyS0 /dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_vhi skip_test low_latency ------------------------------------ root[drive_c]# lsmod | grep ser serial_cs 21252 0 8250 23828 4 serial_cs,8250_pnp serial_core 20032 1 8250 pcmcia 37548 2 serial_cs,parport_cs ----------------------------------- root[drive_c]# cat /proc/interrupts CPU0 CPU1 0: 1855508 0 IO-APIC-edge timer 1: 7494 0 IO-APIC-edge i8042 3: 0 0 IO-APIC-edge parport0 4: 1321 0 IO-APIC-edge serial ----------------------------------- root[drive_c]# cat /proc/ioports | grep -2 3f8 <snip> 03f6-03f6 : 0000:00:1f.2 03f6-03f6 : libata 03f8-03ff : serial 04d0-04d1 : pnp 00:02 0910-091f : pnp 00:08 <snip> ############## *Note: the attached debug info is for a helper application (RFU.EXE, included in Dynamic-C install, from Rabbit) that uses the same serial interface, but rather than the whole GUI-IDE is simply a micro flashing utility. I have verified with rabbit-semi that this uses the same COM interface and application libraries as the IDE. It seems to me to be more straightforward to debug smaller utility than the whole IDE. **Note2: I have also attached my <git 10/24/07>/include/config.h to see if there are any problems with my build environment? I notice there are some things missing but I'm not sure where to get them. I don't have any experience with the distros listed on winehq.org's 'recommended packages page' -------------- next part -------------- A non-text attachment was scrubbed... Name: config.h Type: text/x-chdr Size: 32134 bytes Desc: not available Url : http://www.winehq.org/pipermail/wine-users/attachments/20071025/2ddc961e/attachment-0001.h -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: rfu_wch_trace_comm2007_10_24_13:49:58_short.txt Url: http://www.winehq.org/pipermail/wine-users/attachments/20071025/2ddc961e/attachment-0001.txt
On Do, 2007-10-25 at 10:10 -0700, bioe007list at hotmail.com wrote:> 0009:trace:comm:dump_dcb bytesize=8 baudrate=2400 fParity=0 Parity=0 > stopbits=1This looks like a communication Problem: The serial Port is using 2400 baud. Was GetDefaultCommConfig called? (You stripped to much from the log) Wine has the Problem, that the serial configuration is still saved in the win98 format (complete DCB) and location. Changing the default serial configuration might help: You need a native printui.dll from w2k or above (tested with printui.dll from w2k and xp) and run wine rundll32.exe printui.dll,PrintUIEntry /s /t1 Select your Port and then "Configure Port ..." For the real fix, dlls/serialui/confdlg.c needs an update -- By by ... Detlef