-
- Для начала неплохо было бы подтвердить или опровергнуть.
Внутрисхемный отладчик, вычислить инструкцию, на которой вылетает,
получить значения регистров во время выполнения этой инструкции. - SciFi(14.05.2021 12:48)
- в момент хардфола Balda(240 знак., 14.05.2021 12:58)
- Так хал может не то пишет просто? Andreas(105 знак., 14.05.2021 13:09)
- что характерно, этот код в других проектах работает, а тут на
тебе... - Balda(14.05.2021 13:26)
- предположу Nikolay801_(388 знак., 14.05.2021 13:38)
- что характерно, этот код в других проектах работает, а тут на
тебе... - Balda(14.05.2021 13:26)
- Надо шагать в режиме дизассемблера. По инструкциям, а не по строкам
сишника. - SciFi(14.05.2021 13:00)
- За шаг до хардфола Balda(34 знак., 14.05.2021 13:08, картинка, картинка)
- R2 не кратен 4. Это data, третий аргумент при вызове функции
Write_Flash(). То есть кривой указатель ищите где-то выше. - SciFi(14.05.2021 13:31)
- r2 это uint64_t m[5], локальная переменная - само в стеке ложится, уж где положилась, там положилась. - Nikolay801_(14.05.2021 13:51)
- да, 0х20000AAA это указатель на массив с данными для записи Balda(25 знак., 14.05.2021 13:35)
- Да, действительно изменил на 0x20000aa8 записалось. блин ну какой
геморой ща предстоит.. фактически эти данные для записи
инкапсулированы в протокол и кривость указателя будет от погоды на
Марсе. - Balda(14.05.2021 13:42)
- Самый простой способ решить эту проблему - объявить параметр data как указатель на __packed: il-2(111 знак., 14.05.2021 15:54)
- Ну так про выравнивание надо помнить. Чтобы от него не зависеть,
можно данные протокола вытаскивать при помощи memcpy. Например,
"uint32_t tmp; memcpy(&tmp, unaligned_ptr, sizeof tmp);". При
этом неровный указатель нельзя объявлять как "uint32_t* ptr", зато
можно "void* ptr" или "uint8_t* ptr". - SciFi(14.05.2021 13:47)
- Спасибо коллеги Balda(34 знак., 14.05.2021 19:02)
- Да, действительно изменил на 0x20000aa8 записалось. блин ну какой
геморой ща предстоит.. фактически эти данные для записи
инкапсулированы в протокол и кривость указателя будет от погоды на
Марсе. - Balda(14.05.2021 13:42)
- R2 не кратен 4. Это data, третий аргумент при вызове функции
Write_Flash(). То есть кривой указатель ищите где-то выше. - SciFi(14.05.2021 13:31)
- За шаг до хардфола Balda(34 знак., 14.05.2021 13:08, картинка, картинка)
- Так хал может не то пишет просто? Andreas(105 знак., 14.05.2021 13:09)
- в момент хардфола Balda(240 знак., 14.05.2021 12:58)
- Для начала неплохо было бы подтвердить или опровергнуть.
Внутрисхемный отладчик, вычислить инструкцию, на которой вылетает,
получить значения регистров во время выполнения этой инструкции. - SciFi(14.05.2021 12:48)