особенности моделирование МК в matlab - компилятор - отсутствие weak-функций - отсутствие asm-вставок - другая архетиктура для которой надо определить дефайны ARM в компиляторе MSVC - эмуляция железа МК - эмуляция работы периферии - адрессное пространство МК - для адрессов надо сделать 64-битный переменные - моделирование адрессного пространства - выполнение программы МК - программа МК это отдельный поток, который на одном шаге симуляции запускается на какое-то время, а потом приостанавливается до следующего шага - такой дефайны для while, чтобы после при выставлении флага окончания симуляции, все while пропустятся и поток сможет дойти до конца своей функции и завершить себя. - отсутствие weak-функций: при портировании кода в MATLAB, необхоидимо, чтобы все weak-функции были удалены/закомментированны - отсутствие asm-вставок: при портировании кода в MATLAB, необхоидимо, чтобы заменить все asm-вставки или заменить их на C-код - другая архетиктура для которой надо определить дефайны ARM в компиляторе MSVC: библиотека CMSIS содержит разные дефайны для компиляции под ARM и ядро Cortex. Их надо передафайнить. Подробнее в описании программы - глава "###### Папка CMSIS" - адрессное пространство МК: подробнее в описании программы - глава "###### Папка CMSIS" - эмуляция работы периферии: надо вручную прописывать всю симуляцию. Подробнее в описании программы - глава "###### Примеры эмуляции периферии" В 2 часть добавить главу "## Описание стуктуры эмулятора (пример для STM32)" но в повествовательном стиле. - программа МК это отдельный поток, который на одном шаге симуляции запускается на какое-то время, а потом приостанавливается до следующего шага - для остановки симуляции нужно завершить поток программы МК. Причем завершить поток может только он сам, из вне не получится его корректно завершить. Поэтому, а также потому что программа МК основана на бесконечных циклах, из которых надо как-то выходить, было решено переопределить ключевое слово while. Можно его определить так, чтобы при выставлении определенного условия, вызывалась комманда завершения потока. Или же чтобы при выставлении определенного условия, бесконечный цикл while, прерывался. Было решено использовать второй вариант, т.к. он проще в реализации. Для этого надо переопределить while, и сделать так, чтобы по определенному условию, он заверша А для этого надо пропустить все бесконечные циклы while. В дефайны для while, чтобы после при выставлении флага окончания симуляции, все while пропустятся и поток сможет дойти до конца своей функции и завершить себя.