|
|
View previous topic :: View next topic |
Author |
Message |
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
Bootloader - Updating FW - SIOW works, TeraTerm doesn't |
Posted: Mon Apr 05, 2021 6:33 am |
|
|
Hi to everyone,
I am encountering really annoying problem.
Uploading HEX file works without a problem when I am using SIOW. New firmware is uploaded without a problem, everything is fine.
But, when I try to upload the same file using TeraTerm, it doesn't work.
Same device, same HEX, same MCP2200 USB-UART board, only difference is terminal software.
Whatever I try to change in TeraTerm it just doesn't work.
XON/XOFF, character/line delay, new line character for TX and RX,... It just doesn't work.
Try SIOW again, it works.
I also tried RealTerm and it doesn't work, just like TeraTerm.
WTF is going on? What am I missing?
When I am using SIOW both TX and RX leds on MCP2200 board are blinking, but when I am using TeraTerm or RealTerm, only TX blinks while RX is turned off.
I am not total idiot, I wrote a piece of code for RPI to upload HEX to PIC, and it works like it should, so at least I know how it works.
Can somebody help me with TeraTerm/RealTerm?
Best regards,
Milentije
EDIT: Yes, I read all other threads I could find regarding this problem, but I couldn't find the solution. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 6:45 am |
|
|
I remember ages ago, finding that in TeraTerm, I had to enable XON/XOFF
in the windows port setup, before it'd work. So, control panel, hardware,
device manager. Ports, select the com port, port settings, and enable
XON/XOFF here. Then enable it in TeraTerm as well. For some reason it
didn't seem to be able to enable it if it was off in the port setup.... |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 7:02 am |
|
|
Hi Ttelmah,
thank you for your answer.
Srceen shot - https://imgur.com/7XcjF53
Tried that, doesn't work.
EDIT:
Also tried changing buffer size for COM port, nothing...
SIOW works with XON/XOFF disabled.
TeraTerm doesn't work with or without XON/XOFF.
EDIT 2:
Just to mention, everything else works fine in TeraTerm, except HEX upload... |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 7:38 am |
|
|
SIOW always accepts XON/XOFF. It is _required_ for the bootload.
It is the only thing that can stop the transmission while the programming
actually takes place. It handles this internally.
Now, I'd have expected possibly there to be a single signal on the RX
line, and then it to go wrong. The bootloader sends XOFF, when it needs
the transmission to stop. It is this and then the XON for each packet, that
you are seeing on the RX line with SIOW. If the transmitting program doesn't
stop when this is sent, then everything from this point will fail as far as the
bootloader is concerned....
What 'protocol' are you using to send the file in TeraTerm?. You do
understand, it has to be sent as an ASCII file, not a binary file?. The
binary mode turns off XON/XOFF, since it allows all bytes to be sent.
You must not tick the binary option in the send file setting. |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 7:53 am |
|
|
Ttelmah wrote: | SIOW always accepts XON/XOFF. It is _required_ for the bootload.
It is the only thing that can stop the transmission while the programming
actually takes place. It handles this internally.
Now, I'd have expected possibly there to be a single signal on the RX
line, and then it to go wrong. The bootloader sends XOFF, when it needs
the transmission to stop. It is this and then the XON for each packet, that
you are seeing on the RX line with SIOW. If the transmitting program doesn't
stop when this is sent, then everything from this point will fail as far as the
bootloader is concerned.... |
I understand this. I am just mentioning that some settings makes no change for SIOW or TeraTerm. Whatever I set there, SIOW works, TeraTerm doesn't.
That is why I think the problem is in flow control, just don't know which setting I am missing in TeraTerm.
Ttelmah wrote: | What 'protocol' are you using to send the file in TeraTerm?. You do
understand, it has to be sent as an ASCII file, not a binary file?. The
binary mode turns off XON/XOFF, since it allows all bytes to be sent.
You must not tick the binary option in the send file setting. |
Option "Binary" is not selected, so I presume it is sent as ASCII.
This is a second day that I am loosing because of this problem. I have no idea what to check next.
Clearly, I am missing something in front of my nose, but I can't see what. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 8:11 am |
|
|
One thought.
How is newline setup?.
Teraterm has options to automatically send LF+CR etc.. If one of these
is selected it could be converting the sent linefeed, which would then
make it incompatible with the bootloader. |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 8:23 am |
|
|
Tried all 12 possible combinations. Still doesn't work. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 9:18 am |
|
|
Did that include all options turned off?. |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 9:39 am |
|
|
No, I don't see that option. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 9:49 am |
|
|
You should need Newline (receive) set to CR, and Newline (transmit)
set the same. The old TeraTerm you had tick boxes, and you could
just leave them all off. |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 9:56 am |
|
|
Already tried CR on receive and transmit in TeraTerm, nothing.
YAT (Yet another terminal) has option to turn this off, doesn't work.
I am googling about TeraTerm XON XOFF control and it seams that there is a problem with it.
But, I cant believe that TeraTerm, RealTerm and YAT have the same problem. At least one of them should work, but they don't.
Insane!
EDIT:
XON/XOFF is received from MCU, but it is not interpreted as XON/XOFF.
Same story in TeraTerm, RealTerm and YAT.
In device manager port is set to use XON/XOFF, in all three named apps it is set to be XON/XOFF controlled, but it doesn't work.
THE HELL!!! |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 11:20 am |
|
|
Comment.
Forget about the terminal program.
Just setup the windows port settings as required, and simply copy the
hex file to the serial port.
So something like:
copy yourfile.hex \\.\COM06
Using whatever the serial port number actually is.
It should just use the Windows flow control and send the file to the
port.
If this doesn't work, then it says that the driver for your serial port is
not correctly handling the flow control. SIOW, may well be doing it itself,
in the software, while the other programs are probably depending on
the Windows driver doing it.... |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 11:31 am |
|
|
Yes, SIOW handles it on its own.
I just tried to transfer the file to COM port in command prompt. I got the same behavior. So, MCP2200 drivers are the source of the problem. Or it might be OS.
It would be nice if somebody else, who has some other UART-USB converter, try the same thing. Just to check if it is drivers or OS related. As it seams that problems are present on the Linux as well.
I used:
PIC18F45K22
Serial bootloader from CCS C
CCS C 5.075
MCP2200
Windows 7 64 bit
EDIT:
I can't wait, I just found EasyPIC PRO V7 board on the shelf. It has FTDI, will try it tonight. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19540
|
|
Posted: Mon Apr 05, 2021 11:43 am |
|
|
What happens is the the serial driver accepts the XOFF, and sends a
CDC_SER_STATE message to the application telling it that this has been
accepted. However there is a bug in usbser that means this will not
automatically be passed, but instead has to be polled for. It looks as if SIOW
has correctly implemented the fix for this, but the other programs are not...
Apparently the FTDI and Prolific chipsets fix this issue. Most others do
not... |
|
|
Milentije89
Joined: 07 Apr 2017 Posts: 31
|
|
Posted: Mon Apr 05, 2021 1:07 pm |
|
|
Just tried an example on EasyPIC PRO V7 which has FTDI chip.
Same story. SIOW works, TeraTerm doesn't.
Tried copy from CMD, doesn't work.
Used:
PIC18F87K22
Serial bootloader from CCS C
CCS C 5.075
FT232RL
Windows 7 64 bit
Tried on desktop and laptop, just in case I messed up something about drivers or setting on one of them.
So, we can conclude that problem is not in the drivers but in the OS?
If it is, it is really strange that it exists for such a long time (I can find same problems dating 10+ years in the past), both on Win and Linux, and nobody did anything about it.
Hmmmm, strange.
EDIT:
One fresh example where we can see difference in drivers.
https://www.avrfreaks.net/forum/flow-control-ch340g |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|