Alt.F4 2 3 марта, 2019 Опубликовано 3 марта, 2019 · Жалоба Здравствуйте. ST рекомендует (в AN1015 и в AN5156) заполнять неиспользуемую память значениями ILLEGAL OPCODE или инструкцией вызова прерывания SVC, в котором обработать ошибку. Собственно вопрос, а где найти значения этих инструкций в HEX-виде? Облазил все мануалы, безрезультатно... Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 3 марта, 2019 Опубликовано 3 марта, 2019 · Жалоба 19 minutes ago, Alt.F4 said: Собственно вопрос, а где найти значения этих инструкций в HEX-виде? Облазил все мануалы, безрезультатно Ну самый простой вариант, наверно, написать команду на ассемблере в файле, скопилировать, запустить в симуляторе (в IAR точно есть), и посмотреть код)) А так, вот пример Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 марта, 2019 Опубликовано 3 марта, 2019 · Жалоба 1 час назад, Alt.F4 сказал: Собственно вопрос, а где найти значения этих инструкций в HEX-виде? Облазил все мануалы, безрезультатно... Видимо про какое ядро речь - Вы предлагаете нам угадать? Если для классического ARM, то посмотреть можно в таблице опкодов на стр.17 здесь: http://w27001.vdi.mipt.ru/wp/wp-content/uploads/2017/07/Leshchev.pdf Если для Cortex-M, то ищите аналогичную таблицу опкодов Thumb-2. И когда найдёте - не забудьте её сюда выложить. Если найти не удастся, то создать файл размером 65536*4 байт, состоящий из 32-битных слов в диапазоне от 0 до 65535. И прогнать его через дизассемблер. А если у Вас Cortex-M, но не Cortex-M7 (самый старший из Cortex-M), то можно посмотреть какие инструкции, имеются в более старших Cortex-M, но отсутствуют в вашем Cortex-M. Они и будут для Вас ILLEGAL OPCODE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 3 марта, 2019 Опубликовано 3 марта, 2019 · Жалоба 31 minutes ago, jcxz said: Они и будут для Вас ILLEGAL OPCODE. Я думаю, ТС достаточно заполнить остатки памяти svc #255, а в прерывании анализировать, кто посмел вызывать эту команду) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 3 марта, 2019 Опубликовано 3 марта, 2019 · Жалоба Architecture Reference Manual. Например, на ARMv7-M, параграфы A4, A5, A6. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 4 марта, 2019 Опубликовано 4 марта, 2019 · Жалоба 17 часов назад, Arlleex сказал: Architecture Reference Manual. Например, на ARMv7-M, параграфы A4, A5, A6. Где-ж Вы были когда я это писал?: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=147689&do=findComment&comment=1570146 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 4 марта, 2019 Опубликовано 4 марта, 2019 · Жалоба 59 минут назад, jcxz сказал: Где-ж Вы были когда я это писал? Хех, упустил видимо из виду. Ну, лучше поздно, чем никогда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 2 6 марта, 2019 Опубликовано 6 марта, 2019 · Жалоба Да, извините, забыл указать, что интересовал вопрос для Arm Cortex-M0+ Вообще это странно, что ST рекомендует (в AN1015 и в AN5156) использовать ILLEGAL OPCODE, но не предлагает их значения (т.к. для STM8 они конкретно указывают какие значения использовать) В 03.03.2019 в 15:07, haker_fox сказал: Я думаю, ТС достаточно заполнить остатки памяти svc #255, а в прерывании анализировать, кто посмел вызывать эту команду) 0xFF вызывает прерывание SVC?.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 6 марта, 2019 Опубликовано 6 марта, 2019 · Жалоба 40 минут назад, Alt.F4 сказал: Вообще это странно, что ST рекомендует (в AN1015 и в AN5156) использовать ILLEGAL OPCODE, но не предлагает их значения (т.к. для STM8 они конкретно указывают какие значения использовать) Потому что описание ядра Cortex-M - это отдельный документ. В котором и расписано всё что касается ядра и системы команд. И STM не создаёт эту систему команд. А STM8 - это детище чисто STM. 40 минут назад, Alt.F4 сказал: 0xFF вызывает прерывание SVC?.. В Cortex-M нет однобайтовых команд. Откройте наконец-то описание системы команд! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 2 6 марта, 2019 Опубликовано 6 марта, 2019 · Жалоба Доку открывал конечно, вот я и не понял, что имел ввиду haker_fox ("достаточно заполнить остатки памяти svc #255") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 6 марта, 2019 Опубликовано 6 марта, 2019 · Жалоба 1 hour ago, Alt.F4 said: 0xFF вызывает прерывание SVC?.. Нет. Просто svc 0-254 можно использовать для "legal instruction"))) 6 minutes ago, Alt.F4 said: вот я и не понял, что имел ввиду haker_fox Он имел в виду, что вы можете заполнить остатки памяти любым svc с любым номером. И при обработке прерывания, смотреть, с каким номером оно было вызвано. 255 было в качестве примера. Используйте любое число) Таким образом вы сможете детектировать прыжок на "левый" участок флеша, и использовать это соответствующим образом. Например, писать в журнал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 2 6 марта, 2019 Опубликовано 6 марта, 2019 · Жалоба Выходит заполняем всю неиспользуемую память значением 0xDF (1101 1111) и гарантировано ловим прерывание SVC в случае незапланированного перехода в эту область? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 6 марта, 2019 Опубликовано 6 марта, 2019 · Жалоба 15 минут назад, Alt.F4 сказал: Выходит заполняем всю неиспользуемую память значением 0xDF (1101 1111) и гарантировано ловим прерывание SVC в случае незапланированного перехода в эту область? Не гарантировано. А только если разрешены fault-ы (в регистре FAULTMASK) и если запрещена эскалация SVC в HardFault. Иначе - получите HF. Можно запретить эскалацию и гарантированно ловить HF во всех случаях. А дальше уже декодировать его причину. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 2 13 марта, 2019 Опубликовано 13 марта, 2019 · Жалоба Цитата Не гарантировано. А только если разрешены fault-ы (в регистре FAULTMASK) и если запрещена эскалация SVC в HardFault. Иначе - получите HF. Перелопатил доки ST и судя по всему в их Cortex-M0+ нет таких регистров и системные прерывания (HardFault, SVC) активированы всегда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 13 марта, 2019 Опубликовано 13 марта, 2019 · Жалоба Точно не помню, посмотрите книгу Дж. Ю. У него там про эти прерывания отдельные главы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться