Исправил js в HTML.У меня другая проблемс - ATC_MiThermometer/GraphAtc1.html на смарте не показывает температуру. На компе всё ok.
Да, теперь всё показывает. Вчера пробовал, даже график не отображался.Исправил js в HTML.
Вручную не обязательно, если очень нужно задать реальный занимаемый размер, то можно придумать что-то вроде такого:Придется вручную считать размер структур и писать #define size_этой_стркутуры 5.
typedef struct __aaa {
uint32_t a;
uint8_t b;
} aaa_t
#define struct_size(__typedef, __last_member) (offsetof(__typedef, __last_member) + sizeof(__typedef.__last_member)
aaa_t x, y;
x.a = 1;
x.b = 2;
y.a = 1;
y.b = 2;
memcmp(&x, &y, struct_size(aaa_t, b));
#define struct_size(__var, __member) (offsetof(typeof(__var), __last_member) + sizeof(__var.__member))
typedef struct __aaa {
uint32_t a;
uint8_t b;
} aaa_t;
aaa_t x, y;
x.a = 25;
x.b = 30;
y.a = 15;
y.b = 20;
return memcmp(&x, &y, struct_size(x, b));
return memcmp(&x, &y, struct_size(x, b));
11020d80: 2205 movs r2, #5
y.b = 20;
11020d82: 3305 adds r3, #5
11020d84: 710b strb r3, [r1, #4]
return memcmp(&x, &y, struct_size(x, b));
11020d86: f006 fd6f bl 11027868 <__memcmp_veneer>
sizeof(aaa_t) => 8
, сравниваемый размер 5 байт.Код такого загрузчика тоже уже набил, но не проверял и не выкладывал в git, т.к. надо лепить свою разметку загружаемого файла. Как и в любом другом случае.Может, чтобы не плодить прошивки, при старте грузить промежуточный загрузчик? Он смотрит, если есть корректный образ OTA в верхних адресах, то его переписывает, в противном случае запускает App.
Уж проще написать обработку прерывания исключения, по типу как в ESP8266 . Тогда будет читать любой unalign, но долгоДобавил-munaligned-access
к ключам компиляции, gcc начал выдаватьwarning: target CPU does not support unaligned accesses
.
Что именно нужно покрасить? CSS как в TelinkMiFlasher?И где раскрашенный HTML с OTA?
Мне нужен только пример. Далее кое как раскидаю сам. Потом разрисуем.По поводу закладок, можно пример, или что где д.б.?
uint16_t ota_adr = pmsg[0] | (pmsg[1] << 8);
// ota.pkt_index - тоже объявлен uint16_t и инициализирован 0xffff (-1)
...
if (ota_adr == (ota.pkt_index + 1)) { // correct OTA data index
11005538: 892b ldrh r3, [r5, #8]
1100553a: 1c59 adds r1, r3, #1
1100553c: 428e cmp r6, r1
1100553e: d16d bne.n 1100561c <ota_parser+0x1d8>
Что именно?почему у меня это не работает?
if ((uint16_t)(ota.pkt_index + 1) == ota_adr) { // correct OTA data index
if ((uint16_t)(ota.pkt_index + 1) == ota_adr) { // correct OTA data index
11005436: 8929 ldrh r1, [r5, #8]
11005438: 1c4b adds r3, r1, #1
1100543a: b29b uxth r3, r3
1100543c: 429e cmp r6, r3