Commit Graph

253 Commits

Author SHA1 Message Date
Vincent DEFERT
796a17f7cf Attempt at guessing the meaning of MCU flags 2023-05-29 09:13:25 +02:00
Vincent DEFERT
4840d3cda5 dump-mcu.c fully automates MCU models extraction from STC-ISP's executable 2023-05-29 09:13:10 +02:00
Grigori Goronzy
2d3c24fc3a Timing improvements
* Reduce delays from 200 ms to 100 ms, since 200 ms tends to be too long
  overall.
* Increase pulse interval to 30 ms to avoid the chance of stray pulses
  after MCU starts sending info packet.
* Add 30 ms delay after autoreset cycle to avoid glitches on startup
2021-01-09 16:54:01 +01:00
Grigori Goronzy
761c68e469 frontend: fix disconnect when autodetection fails
We don't know the protocol version so we can't actually disconnect,
just skip it.
2021-01-09 16:50:08 +01:00
Grigori Goronzy
9900e3088d Blacklist STC8G series
stcgal may brick these untested MCUs.

Fixes #63.
2021-01-09 03:27:45 +01:00
Grigori Goronzy
15e04c1626 Update MCU database
Update MCU database from STC-ISP 6.87P.
2021-01-09 03:12:10 +01:00
Grigori Goronzy
187aa9a3cf stc15: erase EEPROM flash when needed
If option eeprom_erase_enabled is False, we need to signal to the BSL
to explicitly erase EEPROM flash when needed.

Addresses #59.
2021-01-09 02:16:27 +01:00
Grigori Goronzy
482e6b139f
Merge pull request #62 from grigorig/fix-stc15f104w
stc15: fix baudrate switching
2021-01-09 02:01:29 +01:00
Grigori Goronzy
9202399a84 Add STC15F104W variant to compatibility list 2021-01-09 01:58:32 +01:00
Grigori Goronzy
3cf2cb38e7 stc15: reduce sleep after baudrate switch
We just sleep 200 ms, but apparently that's already too much with some
handshake baudrates. Cut it in half to fix
failures with "-l 9600" in some cases.

Addresses #17.
2021-01-09 01:18:56 +01:00
Grigori Goronzy
384471f765 stc15: fix fuzzing test failure 2021-01-06 20:08:26 +01:00
Grigori Goronzy
df2fbc23cd stc15: fix baudrate switching
Baudrate switching fixes for both HW and SW UART devices:

* Program secondary SW UART timing parameter correctly. Supposedly this
  controls the sampling position when receiving data.
* Swap around trim range/adjust parameter for HW UART devices (as
  determind by older traces)
* Use correct constant for timing calculations

This should fix some STC15x10xW series MCUs. Compatibility to other
devices might be improved as well.

Addresses #17.
2021-01-06 19:56:46 +01:00
Grigori Goronzy
77df068efd docs: note that you can actually read back EEPROM 2021-01-03 20:31:07 +01:00
Grigori Goronzy
2fb96d6236 docs: note autodetection incompatibilities 2021-01-03 20:30:41 +01:00
Grigori Goronzy
c2fd3ab710 Add -e/--erase option
Erases the flash memory without any programming. Mutually exclusive with
providing a file to flash.
2021-01-03 19:57:50 +01:00
Grigori Goronzy
0d5e8e645f Revert "protocols: fix off-by-one in payload extraction"
This reverts commit 0e020f2aa4.

Nothing needed fixing here. This strips off one byte too many.
2021-01-03 18:40:27 +01:00
Grigori Goronzy
1ec855e6a1 Revert "Add "stc89a" protocol"
This reverts commit c5d509d1fa.
2021-01-03 18:36:05 +01:00
Grigori Goronzy
d708a00e9e Revert "docs: add stc89a to protocol information"
This reverts commit 5c2950f084.
2021-01-03 18:35:55 +01:00
Grigori Goronzy
5c2950f084 docs: add stc89a to protocol information 2021-01-03 16:52:44 +01:00
Grigori Goronzy
c5d509d1fa Add "stc89a" protocol
This protocol variant is designed for newer STC89 series chips with BSL
version 7.x.x. The new firmware uses framing
with 16-bit checksum.

This protocol variant is currently untested because I don't have any
hardware at hand.

Addresses #50, #40.
2021-01-03 16:41:05 +01:00
Grigori Goronzy
0e020f2aa4 protocols: fix off-by-one in payload extraction
Drop all of the checksum bytes. This didn't take the end-of-frame marker
into account.
2021-01-03 16:10:05 +01:00
Grigori Goronzy
b46d81a184 Add ihex tests
Add basic ihex module tests for reading and writing.
2021-01-03 15:53:38 +01:00
Grigori Goronzy
ad5a532ab9 ihex: fix writer str/bytes confusion
The HEX writer was never tested/used before and didn't work. Some
leftovers from the Python 2 conversion are the culprit.
2021-01-03 15:51:48 +01:00
Grigori Goronzy
b3741af045 gitignore: add coverage report outputs 2021-01-03 14:11:52 +01:00
Grigori Goronzy
1e78d62f5d Update installation instructions
Python 3.5 is required now.
2021-01-03 14:10:25 +01:00
Grigori Goronzy
d0597578de Add additional reverse-engineering notes 2021-01-03 14:09:50 +01:00
Grigori Goronzy
eaeab65044 frontend: fix flash/eeprom padding
Fill space with 0xFF instead of 0x00.  Addresses #58.
2021-01-02 18:26:21 +01:00
Grigori Goronzy
a19fc406a3 Merge branch 'github-actions' 2021-01-02 18:14:57 +01:00
Grigori Goronzy
51ac52d3a3 Fix build status badge
Use GitHub Actions badge.
2021-01-02 18:13:29 +01:00
Grigori Goronzy
43dbb2ef64 README: fix coverage badge branch 2021-01-02 18:07:21 +01:00
Grigori Goronzy
d7ed8bd530 Fix coveralls integration 2021-01-02 18:06:19 +01:00
Grigori Goronzy
6b83017de9 Raise minimal Python version to 3.5
Newer PyYAML versions require Python 3.5.

Python 3.4 is EOL for some time and even 3.5 reached EOL recently. So
just switch to that as minimum version.
2021-01-02 17:24:44 +01:00
Grigori Goronzy
2d7ccf8b3d Fix PyYAML warning
Use SafeLoader to get rid of warning.
2021-01-02 17:22:15 +01:00
Grigori Goronzy
77b3f0e1b7 Replace Travis CI with GitHub Actions 2021-01-02 15:24:46 +01:00
Grigori Goronzy
5d3214060b Merge branch 'coveralls' 2018-11-13 03:18:07 +01:00
Grigori Goronzy
7e413b09ec CI: disable PyPy3
There are some test-related issues with it, so disable it for now.
2018-11-13 03:16:52 +01:00
Grigori Goronzy
3aa08b67c0 CI: prefer pip to Debian packages
According to Travis CI docs, pip should be preferred.
2018-11-13 03:07:06 +01:00
Grigori Goronzy
42f93bc481 Add coveralls badge to README 2018-11-13 02:59:32 +01:00
Grigori Goronzy
dbfc1b3f50 CI: Add coveralls support 2018-11-13 02:52:46 +01:00
Grigori Goronzy
9d47588ad2
Add PyPI badge to README 2018-11-13 02:20:42 +01:00
Grigori Goronzy
217e5fb17e
CI: try to fix and simplify apt setup
Run apt update to update the package cache, as this seems to be needed by
Travis now. Also reduce the package set - we don't build any deb or rpm
packages anymore. This should hopefully fix the CI build.
2018-11-09 01:14:41 +01:00
Grigori Goronzy
3875b1f415
Note serial module name conflict in FAQ
See #35 for discussion.
2018-11-09 01:02:01 +01:00
Grigori Goronzy
8e31765cba
Add Quickstart documentation 2018-09-24 23:29:45 +02:00
Grigori Goronzy
75db655419 Update version to 1.6
Update version to 1.6 for both the Python package and the Debian package
metadata (untested).
2018-09-24 23:01:13 +02:00
Grigori Goronzy
1c062ed0c7 Update documentation
Minor updates and improvements to the documentation.
2018-09-24 22:51:57 +02:00
Grigori Goronzy
4fe0a30072 Add test for untrimmed MCUs
Add a test that verifies that programming untrimmed MCUs results in
an error.
2018-09-24 22:15:43 +02:00
Grigori Goronzy
7d9f512b6d Fix programing tests
The options mock object needs to have the "version" property, otherwise
tests always pass (they just end up calling the version info).
2018-09-24 22:14:29 +02:00
Grigori Goronzy
6544699a84 Minor FAQ rewording 2018-09-24 21:41:36 +02:00
Grigori Goronzy
f5089af93a Remove note about stc8 support maturity
It's not experimental anymore.
2018-09-24 21:41:19 +02:00
Grigori Goronzy
bc829ce54c frontend: catch unknown errors
Catch unknown error types in the first stage (connect/initialize).
Sometimes we unfortunately see unexpected exceptions, for instance
pyserial might throw termios.error. See #39 for more details.
2018-09-24 00:43:27 +02:00