Ich habe vergessen, zu erwähnen, dass es erst mal nur den S32 betreffen wird, weil JETI EXbus (TelMe), - leider immer noch nicht JLog2.5,6, der emuliert ein anderes TelMe, wofür die Firmware im ESC hochgradig buggy ist seit wenigstens 3 Jahren. Das war ja der Grund, mit S32 ein anderes TelMe zu emulieren. Leider war der Outcome auch nicht 100%ig, - aber bald nun.
Einen ROM-residenten Bootloader wollte man nicht verwenden, weil die Firmware verschlüsselt ist, erst im Prozzi entschlüsselt werden soll beim Updaten. Man schrieb dann aber keinen eigenen Bootloader, sondern die Applikation macht das Kommunizieren beim Update.
USB ist elektrisch angeschlossen, wird aber von der App nicht implementiert. Das erschien wohl zu komplex/aufwändig wg. HID vs... (Driver) usw. Man verwendet daher simples Asynchron-Seriell (UART), kommuniziert mit dem Updater via USB Serial Converter (VCOM). Updaten geht in den NAND (Flashen), also page-weise, relevante Ziel Pages müssen zuerst gelöscht werden. Leider löscht man immer alle Pages zuerst, - bzw. shared der updatende Teil der App dieselbe Page mit übrigem Code. Wahrscheinlich löscht man einfach alle Pages, denn der ESC verliert bei einem Update immer sein Setup. Also vermutlich Loader zuvor in RAM kopiert und dort ausgeführt.
Der Outcome ist, dass ein ESC bricked ist, wenn das Update abbricht, - denn der updatende Code-Teil ist dann ja auch weg.
Man hätte nun wenigstens auch die zwei Signale von SWD (ROM-resident) mit auf einen der von außen zugänglichen Pins legen sollen. Das ist für Flashen mit Factory-Mitteln, - ein User hat ja kein Interface USB zu SWD. Er soll auch nicht das erforderliche Cleartext Image bekommen. Tat man aber nicht. Ergebnis ist, dass ein gebrickter JIVEpro erst ausgeschmatzt werden muss, um ihm wieder einen Factory Flash zu verpassen, um an die Pins zu kommen. Damit hat man sich aber nur selbst ein ökonomisches Ei gelegt.
Der host-basierte Updater, mit Dot Net gemacht, wurde falsch implementiert, weil er seine Oberfläche nicht updatet, wenn er nicht im Vordergrund ist. VB kann das, nur der Programmierer konnte es nicht. Das kann dazu führen, dass ein User den Updater beendet, bevor der fertig ist, weil der User denkt, der Updater hätte sich aufgehängt. Tat er aber wahrscheinlich nicht. Daher muss man immer die LEDs des USB-Serial-Converters beäugen, ProgDISC oder ProgUNIT (hat die UNIT LEDs, die beim Update zwinkern?). Insgesamt birgt das Updaten ohne Bootloader immer die Gefahr, dass man den Prozzi bricked. No good.
_________________ Tom
|