diff --git a/Documentation/Logo.md b/Documentation/Logo.md index 9734fda33a..a4947091df 100644 --- a/Documentation/Logo.md +++ b/Documentation/Logo.md @@ -38,7 +38,7 @@ The model should be replaced by one of the following options: - `miniware` for older Miniware Irons -> TS100, TS80, TS80P - `pinecilv1` for the Pinecil V1 - `pinecilv2` for the Pinecil V2 -- `ts101` for the Miniware TS101 [^1] +- `ts101` for the Miniware TS101 [^1] [^2] - `s60` for the Squire S60 [^1] - `mhp30` for the Miniware MHP30 @@ -50,6 +50,28 @@ After processing its expected to have a `.hex` and `.dfu` file created to be use Note: make sure your image file is in the same folder as script files (img2logo.py, output_dfu.py, output_hex.py). [^1] Note that these devices have larger resolution screens that the logo system supports right now. Fixes are coming for this soon, roughly scheduled for 2.23. +[^2] The TS101 requires extra steps, see below. + +### TS101 Quirks + +When Miniware designed the TS101 they cut cost by using an STM32 clone with some odd quirks. They also re-wrote their USB bootloader, which has introduced new bugs for us to deal with. +Their bootloader appears to have kept the existing limit of not being able to flash small hex files, but they no longer fall for the older "just repeat the content" trick and instead reject the file. +Additionally, while the MCU in use has 128K of flash, their bootloader (at least for me) fails to write to anything above 99K. It _looks_ like a watchdog reset or hard crash. Unsure. + +This has flow on effects, where the settings can still be located in the upper ~28K of flash, but it cant be used for anything we flash over USB. +Of that 100K we can use, they waste 32K of it for their bootloader (Old bootloaders were 16K). +This means the main "app" of IronOS is limited to around 67K (100K-32K for bootloader, -1K for logo). + +For this device the Logo is not located at the end of flash but instead at the last writable page (99K). + +Additionally, as we need to do a large write, to avoid having to waste more flash space; the logo is merged with the normal firmware. This means that the firmware and logo are flashed together once. +Future updates can be done without merging as it will leave the logo data there as normal firmware doesnt touch that area of flash. + +To do this, download the latest version of IronOS and merge it with the logo using the `--merge` command line argument. + +To create the logo file for a TS101 the full command looks like `python3 img2logo.py -m ts101 --merge `. + +For this reason, there are no TS101 logo's generated by the IronOS-Meta repo. ## Flashing the Logo diff --git a/source/Core/BSP/Miniware/configuration.h b/source/Core/BSP/Miniware/configuration.h index f22ada8c85..c1e9c3513f 100644 --- a/source/Core/BSP/Miniware/configuration.h +++ b/source/Core/BSP/Miniware/configuration.h @@ -194,7 +194,7 @@ #define POWER_LIMIT_STEPS 5 #define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100 #define TEMP_uV_LOOKUP_HAKKO -#define ACCEL_LIS_CLONE 1 +#define ACCEL_LIS_CLONE 1 #define HARDWARE_MAX_WATTAGE_X10 1000 #define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second #define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips @@ -272,7 +272,12 @@ #endif /* TS80P */ #ifdef MODEL_TS101 -#define FLASH_LOGOADDR (0x08000000 + (126 * 1024)) +// For whatever reason, Miniware decided to not build a reliable DFU bootloader +// It can't appear to flash to some of the upper pages of flash, +// I'm slightly suspect a watchdog or something runs out +// as device resets before file finishes copying +// So logo has to be located on page 99 or else it cant be flashed on stock bootloader +#define FLASH_LOGOADDR (0x08000000 + (99 * 1024)) #define SETTINGS_START_PAGE (0x08000000 + (127 * 1024)) #else #define FLASH_LOGOADDR (0x08000000 + (62 * 1024)) diff --git a/source/Makefile b/source/Makefile index 01cd929fdd..0754d7c6a5 100644 --- a/source/Makefile +++ b/source/Makefile @@ -84,7 +84,8 @@ DEVICE_BSP_DIR=./Core/BSP/Miniware LDSCRIPT=./Core/BSP/Miniware/stm32f103.ld ifeq ($(model),$(filter $(model),TS101)) -flash_size=126k +# 128K, but logo must be at 99K so their broken ass DFU can flash it +flash_size=98k bootldr_size=0x8000 DEVICE_DFU_ADDRESS=0x08008000 else