LINUX.ORG.RU

История изменений

Исправление Zubok, (текущая версия) :

Симуляция HDL гарантировала бы идентичность поведения (и багов) симулятора и реального МК.

Не, ты что-то очень сильно перемудрил. Никакой HDL тут вообще не нужен даже близко. Я даже сейчас не знаю, как на это ответить. Просто не нужен и все. Просто программная реализация внешних проявлений безотносительно к тому, как это реализовано.

А реализация модели периферии по информации из ДШ слишком времязатратное и невыгодное занятие.

Да никакое оно не времязатратное. Ну нисколько вообще. Есть у тебя, предположим, внешний датчик, который выдает аналоговый сигнал в ADC. Какие проблемы? Напиши формулу преобразования, результат передай в симулятор МК. Это все, что нужно. Вообще не проблема ни разу.

У меня в своих устройствах обычно есть cli на одном из uart. Из него устройтсво можно конфигурировать, имитировать какие-то события, снимать телеметрию, и просто вызывать нужные куски кода с заданными параметрами. Но это все доступно только в реальном МК.

Опять не очень понимаю. Я еще раз опишу, как это работает у меня. Есть симулятор AVR - проект simavr. Это просто библиотека libsimavr.so, предоставляющая API, которое позволяет установить входное воздействие на любую ножку, получить событие, когда любая ножка изменила значение, получать события по обмену по USART и другие функции. Эта штука кушает реальную прошивку! Я пишу прошивку и гружу ее в этот симулятор. Он работает как реальный AVR, к которому можно просто программно прицепиться. Если мне нужно сделать простейшую вещь - сделать светодиодик, то я в программе (которая использует libsimavr.so) конфигурирую коллбэк, который вызывается, когда какая-то ножка (скажем, PE0) изменит значение. В процедуре я просто пишу «Зажегся светодиод на PE0\n» или могу его просто нарисовать, что он зажегся.

Когда внешние микросхемы, то просто ставлю коллбеки на все ножки, которые подсоединены к ним и получаю все события. Когда появляется комбинация по включению моторов, изменению направления, то я все это раппортую. Я вижу, что программа работает так, как я ее задумал. Если надо принимать какие-то события, то я пишу функции, которые у AVR управляют портами (все в API есть). А сценарии просто можно в main() симулятора даже делать. И я даже могу программно из симулятора внутрь МК залезть, чтобы происпектировать, а записалось ли значение в регистр, а как выставился какой-нибудь коэффициент деления и, если очень надо, могу просто подмахнуть снаружи любой регистр, если какая-то периферия у МК не реализована пока.

Твой cli через UART также будет работать в симуляторе, если он тебе будет нужен. Но с симулятором он тебе вообще не нужен. Просто тереметрию программно сделай в симуляторе. У меня так и прет телеметрия с временными отметками: что включилось, что выключилось, что получили деньгоприемники, что ответили, что спросил хост-компьютер, что ему ответило устройство. Никакие врезки в прошивку типа отладочного канала я вообще не далаю - прошивка такая, какая она будет в итоге.

Добавлю сюда также то, что ты можешь несколько отдельных прошивок написать для отладки модулей и тоже гонять их на симуляторе, потом модули объединить. Но тогда получишь уже новую программу. Ее тоже надо отлаживать. Для этого у меня комплексная отладка и симуляция.

Сам моделирую периферию следующим образом, для примера есть H-мост управляемый таймером. В коде есть hal функция hb_set_dc(float dc) устанавливающая заполнение. Все что внутри этой функции при моделировани не важно. Её параметр напрямую идет в модель, которая может даже не учитывать частоту а просто выставлять эквивалентное напряжение.

Не совсем понятно, но если я правильно понял, то именно об этом и идет речь. Что не надо никаких HDL. У тебя есть значение частоты, которое известно, что будет таким-то напряжением по формуле. Вот и преобразуй по ней. Вот именно так и работает.

Отладкой с точками остановки как-то не привык пользоваться, особенно на МК.

А когда нет модели внешних воздействия, то это будет маленьким адиком, о котором я говорил. Чтобы добраться тебе до определенного кода в пошаговом исполнении, тебе понадобится подсовывать в регистры все внешние воздействия, которые приводят тебя к данной точке. И не дай бог ошибешься - все заново придется. А у меня реальная модель внешних воздействия всегда приводит в нужную проблемную часть кода, где я могу застопориться и продолжить в пошаговом исполнении, чтобы смотреть, что происходит и кто виноват.

Как это так? Отладчик это остановка выполнения по событиям и доступ к памяти, внутреннему состоянию. Если речь об отладке в симуляторе, то это моделирование а не отладка.

Это и то, и другое. Модель с реальной (повторю) прошивкой с возможностью перехода в пошаговый режим исполнения как самой модели через обычный gdb, так и прошивки через avr-gdb.

Исправление Zubok, :

Симуляция HDL гарантировала бы идентичность поведения (и багов) симулятора и реального МК.

Не, ты что-то очень сильно перемудрил. Никакой HDL тут вообще не нужен даже близко. Я даже сейчас не знаю, как на это ответить. Просто не нужен и все. Просто программная реализация внешних проявлений безотносительно к тому, как это реализовано.

А реализация модели периферии по информации из ДШ слишком времязатратное и невыгодное занятие.

Да никакое оно не времязатратное. Ну нисколько вообще. Есть у тебя, предположим, внешний датчик, который выдает аналоговый сигнал в ADC. Какие проблемы? Напиши формулу преобразования, результат передай в симулятор МК. Это все, что нужно. Вообще не проблема ни разу.

У меня в своих устройствах обычно есть cli на одном из uart. Из него устройтсво можно конфигурировать, имитировать какие-то события, снимать телеметрию, и просто вызывать нужные куски кода с заданными параметрами. Но это все доступно только в реальном МК.

Опять не очень понимаю. Я еще раз опишу, как это работает у меня. Есть симулятор AVR - проект simavr. Это просто библиотека libsimavr.so, предоставляющая API, которое позволяет установить входное воздействие на любую ножку, получить событие, когда любая ножка изменила значение, получать события по обмену по USART и другие функции. Эта штука кушает реальную прошивку! Я пишу прошивку и гружу ее в этот симулятор. Он работает как реальный AVR, к которому можно просто программно прицепиться. Если мне нужно сделать простейшую вещь - сделать светодиодик, то я в программе (которая использует libsimavr.so) конфигурирую коллбэк, который вызывается, когда какая-то ножка (скажем, PE0) изменит значение. В процедуре я просто пишу «Зажегся светодиод на PE0\n» или могу его просто нарисовать, что он зажегся.

Когда внешние микросхемы, то просто ставлю коллбеки на все ножки, которые подсоединены к ним и получаю все события. Когда появляется комбинация по включению моторов, изменению направления, то я все это раппортую. Я вижу, что программа работает так, как я ее задумал. Если надо принимать какие-то события, то я пишу функции, которые у AVR управляют портами (все в API есть). А сценарии просто можно в main() симулятора даже делать. И я даже могу программно из симулятора внутрь МК залезть, чтобы происпектировать, а записалось ли значение в регистр, а как выставился какой-нибудь коэффициент деления и, если очень надо, могу просто подмахнуть снаружи любой регистр, если какая-то периферия у МК не реализована пока.

Твой cli через UART также будет работать в симуляторе, если он тебе будет нужен. Но с симулятором он тебе вообще не нужен. Просто тереметрию программно сделай в симуляторе. У меня так и прет телеметрия с временными отметками: что включилось, что выключилось, что получили деньгоприемники, что ответили, что спросил хост-компьютер, что ему ответило устройство. Никакие врезки в прошивку типа отладочного канала я вообще не далаю - прошивка такая, какая она будет в итоге.

Добавлю сюда также то, что ты можешь несколько отдельных прошивок написать для отладки модулей и тоже гонять их на симуляторе, потом модули объединить. Но тогда получишь уже новую программу. Ее тоже надо отлаживать. Для этого у меня комплексная отладка и симуляция.

Сам моделирую периферию следующим образом, для примера есть H-мост управляемый таймером. В коде есть hal функция hb_set_dc(float dc) устанавливающая заполнение. Все что внутри этой функции при моделировани не важно. Её параметр напрямую идет в модель, которая может даже не учитывать частоту а просто выставлять эквивалентное напряжение.

Не совсем понятно, но если я правильно понял, то именно об этом и идет речь. Что не надо никаких HDL. У тебя есть значение частоты, которое известно, что будет таким-то напряжением по формуле. Вот и преобразуй по ней. Вот именно так и работает.

Отладкой с точками остановки как-то не привык пользоваться, особенно на МК.

А когда нет модели внешних воздействия, то это будет маленьким адиком, о котором я говорил. Чтобы добраться тебе до определенного кода в пошаговом исполнении, тебе понадобится подсовывать в регистры все внешние воздействия, которые приводят тебя к данной точке. И не дай бог ошибешься - все заново придется. А у меня реальная модель внешних воздействия всегда приводит в нужную проблемную часть кода, где я могу застопориться и продолжить в пошаговом исполнении, чтобы смотерть, что происходит и кто виноват.

Как это так? Отладчик это остановка выполнения по событиям и доступ к памяти, внутреннему состоянию. Если речь об отладке в симуляторе, то это моделирование а не отладка.

Это и то, и другое. Модель с реальной (повторю) прошивкой с возможностью перехода в пошаговый режим исполнения как самой модели через обычный gdb, так и прошивки через avr-gdb.

Исправление Zubok, :

Симуляция HDL гарантировала бы идентичность поведения (и багов) симулятора и реального МК.

Не, ты что-то очень сильно перемудрил. Никакой HDL тут вообще не нужен даже близко. Я даже сейчас не знаю, как на это ответить. Просто не нужен и все. Просто программная реализация внешних проявлений безотносительно к тому, как это реализовано.

А реализация модели периферии по информации из ДШ слишком времязатратное и невыгодное занятие.

Да никакое оно не времязатратное. Ну нисколько вообще. Есть у тебя, предположим, внешний датчик, который выдает аналоговый сигнал в ADC. Какие проблемы? Напиши формулу преобразования, результат передай в симулятор МК. Это все, что нужно. Вообще не проблема ни разу.

У меня в своих устройствах обычно есть cli на одном из uart. Из него устройтсво можно конфигурировать, имитировать какие-то события, снимать телеметрию, и просто вызывать нужные куски кода с заданными параметрами. Но это все доступно только в реальном МК.

Опять не очень понимаю. Я еще раз опишу, как это работает у меня. Есть симулятор AVR - проект simavr. Это просто библиотека libsimavr.so, предоставляющая API, которое позволяет установить входное воздействие на любую ножку, получить событие, когда любая ножка изменила значение, получать события по обмену по USART и другие функции. Эта штука кушает реальную прошивку! Я пишу прошивку и гружу ее в этот симулятор. Он работает как реальный AVR, к которому можно просто программно прицепиться. Если мне нужно сделать простейшую вещь - сделать светодиодик, то я в программе (которая использует libsimavr.so) конфигурирую коллбэк, который вызывается, когда какая-то ножка (скажем, PE0) изменит значение. В процедуре я просто пишу «Зажегся светодиод на PE0\n» или могу его просто нарисовать, что он зажегся.

Когда внешние микросхемы, то просто ставлю коллбеки на все ножки, которые подсоединены к ним и получаю все события. Когда появляется комбинация по включению моторов, изменению направления, то я все это раппортую. Я вижу, что программа работает так, как я ее задумал. Если надо принимать какие-то события, то я пишу функции, которые у AVR управляют портами (все в API есть). А сценарии просто можно в main() симулятора даже делать. И я даже могу программно из симулятора внутрь МК залезть, чтобы происпектировать, а записалось ли значение в регистр, а как выставился какой-нибудь коэффициент деления и, если очень надо, могу просто подмахнуть снаружи любой регистр, если какая-то периферия у МК не реализована пока.

Твой cli через UART также будет работать в симуляторе, если он тебе будет нужен. Но с симулятором он тебе вообще не нужен. Просто тереметрию программно сделай в симуляторе. У меня так и прет телеметрия с временными отметками: что включилось, что выключилось, что получили деньгоприемники, что ответили, что спросил хост-компьютер, что ему ответило устройство. Никакие врезки в прошивку типа отладочного канала я вообще не далаю - прошивка такая, какая она будет в итоге.

Добавлю сюда также то, что ты можешь несколько отдельных прошивок написать для отладки модулей и тоже гонять их на симуляторе, потом модули объединить. Но тогда получишь уже новую программу. Ее тоже надо отлаживать. Для этого у меня комплексная отладка и симуляция.

Сам моделирую периферию следующим образом, для примера есть H-мост управляемый таймером. В коде есть hal функция hb_set_dc(float dc) устанавливающая заполнение. Все что внутри этой функции при моделировани не важно. Её параметр напрямую идет в модель, которая может даже не учитывать частоту а просто выставлять эквивалентное напряжение.

Не совсем понятно, но если я правильно понял, то именно об этом и идет речь. Что не надо никаких HDL. У тебя есть значение частоты, которое известно, что будет таким-то напряжением по формуле. Вот и преобразуй по ней. Вот именно так и работает.

Отладкой с точками остановки как-то не привык пользоваться, особенно на МК.

А когда нет модели внешних воздействия, то это будет маленьким адиком, о котором я говорил. Чтобы добраться тебе до определенного кода в пошаговом исполнении, тебе понадобиться подсовывать в регистры все внешние воздействия, которые приводят тебя к данной точке. И не дай бог ошибешься - все заново придется. А у меня реальная модель внешних воздействия всегда приводит в нужную проблемную часть кода, где я могу застопориться и продолжить в пошаговом исполнении, чтобы смотерть, что происходит и кто виноват.

Как это так? Отладчик это остановка выполнения по событиям и доступ к памяти, внутреннему состоянию. Если речь об отладке в симуляторе, то это моделирование а не отладка.

Это и то, и другое. Модель с реальной (повторю) прошивкой с возможностью перехода в пошаговый режим исполнения как самой модели через обычный gdb, так и прошивки через avr-gdb.

Исправление Zubok, :

Симуляция HDL гарантировала бы идентичность поведения (и багов) симулятора и реального МК.

Не, ты что-то очень сильно перемудрил. Никакой HDL тут вообще не нужен даже близко. Я даже сейчас не знаю, как на это ответить. Просто не нужен и все. Просто программная реализация внешних проявлений безотносительно к тому, как это реализовано.

А реализация модели периферии по информации из ДШ слишком времязатратное и невыгодное занятие.

Да никакое оно не времязатратное. Ну нисколько вообще. Есть у тебя, предположим, внешний датчик, который выдает аналоговый сигнал в ADC. Какие проблемы? Напиши формулу преобразования, результат передай в симулятор МК. Это все, что нужно. Вообще не проблема ни разу.

У меня в своих устройствах обычно есть cli на одном из uart. Из него устройтсво можно конфигурировать, имитировать какие-то события, снимать телеметрию, и просто вызывать нужные куски кода с заданными параметрами. Но это все доступно только в реальном МК.

Опять не очень понимаю. Я еще раз опишу, как это работает у меня. Есть симулятор AVR - проект simavr. Это просто библиотека libsimavr.so, предоставляющая API, которое позволяет установить входное воздействие на любую ножку, получить событие, когда любая ножка изменила значение, получать события по обмену по USART и другие функции. Эта штука кушает реальную прошивку! Я пишу прошивку и гружу ее в этот симулятор. Он работает как реальный AVR, к которому можно просто программно прицепиться. Если мне нужно сделать простейшую вещь - сделать светодиодик, то я в программе (которая использует libsimavr.so) конфигурирую коллбэк, который вызывается, когда какая-то ножка (скажем, PE0) изменит значение. В процедуре я просто пишу «Зажегся светодиод на PE0\n» или могу его просто нарисовать, что он зажегся.

Когда внешние микросхемы, то просто ставлю коллбеки на все ножки, которые подсоединены к ним и получаю все события. Когда появляется комбинация по включению моторов, изменению направления, то я все это раппортую. Я вижу, что программа работает так, как я ее задумал. Если надо принимать какие-то события, то я пишу функции, которые у AVR управляют портами (все в API есть). А сценарии просто можно в main() симулятора даже делать. И я даже могу программно из симулятора внутрь МК залезть, чтобы происпектировать, а записалось ли значение в регистр, а как выставился какой-нибудь коэффициент деления и, если очень надо, могу просто подмахнуть снаружи любой регистр, если какая-то периферия у МК не реализована пока.

Твой cli через UART также будет работать в симуляторе, если он тебе будет нужен. Но с симулятором он тебе вообще не нужен. Просто тереметрию программно сделай в симуляторе. У меня так и прет телеметрия с временными отметками: что включилось, что выключилось, что получили деньгоприемники, что ответили, что спросил хост-компьютер, что ему ответило устройство. Никакие врезки в прошивку типа отладочного канала я вообще не далаю - прошивка такая, какая она будет в итоге.

Сам моделирую периферию следующим образом, для примера есть H-мост управляемый таймером. В коде есть hal функция hb_set_dc(float dc) устанавливающая заполнение. Все что внутри этой функции при моделировани не важно. Её параметр напрямую идет в модель, которая может даже не учитывать частоту а просто выставлять эквивалентное напряжение.

Не совсем понятно, но если я правильно понял, то именно об этом и идет речь. Что не надо никаких HDL. У тебя есть значение частоты, которое известно, что будет таким-то напряжением по формуле. Вот и преобразуй по ней. Вот именно так и работает.

Отладкой с точками остановки как-то не привык пользоваться, особенно на МК.

А когда нет модели внешних воздействия, то это будет маленьким адиком, о котором я говорил. Чтобы добраться тебе до определенного кода в пошаговом исполнении, тебе понадобиться подсовывать в регистры все внешние воздействия, которые приводят тебя к данной точке. И не дай бог ошибешься - все заново придется. А у меня реальная модель внешних воздействия всегда приводит в нужную проблемную часть кода, где я могу застопориться и продолжить в пошаговом исполнении, чтобы смотерть, что происходит и кто виноват.

Как это так? Отладчик это остановка выполнения по событиям и доступ к памяти, внутреннему состоянию. Если речь об отладке в симуляторе, то это моделирование а не отладка.

Это и то, и другое. Модель с реальной (повторю) прошивкой с возможностью перехода в пошаговый режим исполнения как самой модели через обычный gdb, так и прошивки через avr-gdb.

Исправление Zubok, :

Симуляция HDL гарантировала бы идентичность поведения (и багов) симулятора и реального МК.

Не, ты что-то очень сильно перемудрил. Никакой HDL тут вообще не нужен даже близко. Я даже сейчас не знаю, как на это ответить. Просто не нужен и все. Просто программная реализация внешних проявлений безотносительно к тому, как это реализовано.

А реализация модели периферии по информации из ДШ слишком времязатратное и невыгодное занятие.

Да никакое оно не времязатратное. Ну нисколько вообще. Есть у тебя, предположим, внешний датчик, который выдает аналоговый сигнал в ADC. Какие проблемы? Напиши формулу преобразования, результат передай в симулятор МК. Это все, что нужно. Вообще не проблема ни разу.

У меня в своих устройствах обычно есть cli на одном из uart. Из него устройтсво можно конфигурировать, имитировать какие-то события, снимать телеметрию, и просто вызывать нужные куски кода с заданными параметрами. Но это все доступно только в реальном МК.

Опять не очень понимаю. Я еще раз опишу, как это работает у меня. Есть симулятор AVR - проект simavr. Это просто библиотека libsimavr.so, предоставляющая API, которое позволяет установить входное воздействие на любую ножку, получить событие, когда любая ножка изменила значение, получать события по обмену по USART и другие функции. Эта штука кушает реальную прошивку! Я пишу прошивку и гружу ее в этот симулятор. Он работает как реальный AVR, к которому можно просто программно прицепиться. Если мне нужно сделать простейшую вещь - сделать светодиодик, то я в программе (которая использует libsimavr.so) конфигурирую коллбэк, который вызывается, когда какая-то ножка (скажем, PE0) изменит значение. В процедуре я просто пишу «Зажегся светодиод на PE0\n» или могу его просто нарисовать, что он зажегся.

Когда внешние микросхемы, то просто ставлю коллбеки на все ножки, которые подсоединены к ним и получаю все события. Когда появляется комбинация по включению моторов, изменению направления, то я все это раппортую. Я вижу, что программа работает так, как я ее задумал. Если надо, наоборот, принимать какие-то события, то я пишу функции, которые у AVR управляют портами (все в API есть). А сценарии просто можно в main() симулятора даже делать. И я даже могу программно из симулятора внутрь МК залезть, чтобы происпектировать, а записалось ли значение в регистр, а как выставился какой-нибудь коэффициент деления и, если очень надо, могу просто подмахнуть снаружи любой регистр, если какая-то периферия у МК не реализована пока.

Твой cli через UART также будет работать в симуляторе, если он тебе будет нужен. Но с симулятором он тебе вообще не нужен. Просто тереметрию программно сделай в симуляторе. У меня так и прет телеметрия с временными отметками: что включилось, что выключилось, что получили деньгоприемники, что ответили, что спросил хост-компьютер, что ему ответило устройство. Никакие врезки в прошивку типа отладочного канала я вообще не далаю - прошивка такая, какая она будет в итоге.

Сам моделирую периферию следующим образом, для примера есть H-мост управляемый таймером. В коде есть hal функция hb_set_dc(float dc) устанавливающая заполнение. Все что внутри этой функции при моделировани не важно. Её параметр напрямую идет в модель, которая может даже не учитывать частоту а просто выставлять эквивалентное напряжение.

Не совсем понятно, но если я правильно понял, то именно об этом и идет речь. Что не надо никаких HDL. У тебя есть значение частоты, которое известно, что будет таким-то напряжением по формуле. Вот и преобразуй по ней. Вот именно так и работает.

Отладкой с точками остановки как-то не привык пользоваться, особенно на МК.

А когда нет модели внешних воздействия, то это будет маленьким адиком, о котором я говорил. Чтобы добраться тебе до определенного кода в пошаговом исполнении, тебе понадобиться подсовывать в регистры все внешние воздействия, которые приводят тебя к данной точке. И не дай бог ошибешься - все заново придется. А у меня реальная модель внешних воздействия всегда приводит в нужную проблемную часть кода, где я могу застопориться и продолжить в пошаговом исполнении, чтобы смотерть, что происходит и кто виноват.

Как это так? Отладчик это остановка выполнения по событиям и доступ к памяти, внутреннему состоянию. Если речь об отладке в симуляторе, то это моделирование а не отладка.

Это и то, и другое. Модель с реальной (повторю) прошивкой с возможностью перехода в пошаговый режим исполнения как самой модели через обычный gdb, так и прошивки через avr-gdb.

Исходная версия Zubok, :

Симуляция HDL гарантировала бы идентичность поведения (и багов) симулятора и реального МК.

Не, ты что-то очень сильно перемудрил. Никакой HDL тут вообще не нужен даже близко. Я даже сейчас не знаю, как на это ответить. Просто не нужен и все. Просто программная реализация внешних проявлений безотносительно к тому, как это реализовано.

А реализация модели периферии по информации из ДШ слишком времязатратное и невыгодное занятие.

Да никакое оно не времязатратное. Ну нисколько вообще. Есть у тебя, предположим, внешний датчик, который выдает аналоговый сигнал в ADC. Какие проблемы? Напиши формулу преобразования, результат передай в симулятор МК. Это все, что нужно. Вообще не проблема ни разу.

У меня в своих устройствах обычно есть cli на одном из uart. Из него устройтсво можно конфигурировать, имитировать какие-то события, снимать телеметрию, и просто вызывать нужные куски кода с заданными параметрами. Но это все доступно только в реальном МК.

Опять не очень понимаю. Я еще раз опишу, как это работает у меня. Есть симулятор AVR - проект simavr. Это просто библиотека libsimavr.so, предоставляющая API, которое позволяет установить входное воздействие на любую ножку, получить событие, когда любая ножка изменила значение, получать события по обмену по USART и другие функции. Эта штука кушает реальную прошивку! Я пишу прошивку и гружу ее в этот симулятор. Он работает как реальный AVR, к которому можно просто программно прицепиться. Если мне нужно сделать простейшую вещь - сделать светодиодик, то я в программе (которая использует libsimavr.so) конфигурирую коллбэк, который вызывается, когда какая-то ножка (скажем, PE0) изменит значение. В процедуре я просто пишу «Зажегся светодиод на PE0\n» или могу его просто нарисовать, что он зажегся.

Когда внешние микросхемы, то просто ставлю коллбеки на все ножки, которые подсоединены к ним и получаю все события. Когда появляется комбинация по включению моторов, изменению направления, то я все это рапортую. Я вижу, что программа работает так, как я ее задумал. Если надо, наоборот, принимать какие-то события, то я пишу функции, которые у AVR управляют портами (все в API есть). А сценарии просто можно в main() симулятора даже делать. И я даже могу программно из симулятора внутрь МК залезть, чтобы происпектировать, а записалось ли значение в регистр, а как выставился какой-нибудь коэффициент деления и, если очень надо, могу просто подмахнуть снаружи любой регистр, если какая-то периферия у МК не реализована пока.

Твой cli через UART также будет работать в симуляторе, если он тебе будет нужен. Но с симулятором он тебе вообще не нужен. Просто тереметрию программно сделай в симуляторе. У меня так и прет телеметрия с временными отметками: что включилось, что выключилось, что получили деньгоприемники, что ответили, что спросил хост-компьютер, что ему ответило устройство. Никакие врезки в прошивку типа отладочного канала я вообще не далаю - прошивка такая, какая она будет в итоге.

Сам моделирую периферию следующим образом, для примера есть H-мост управляемый таймером. В коде есть hal функция hb_set_dc(float dc) устанавливающая заполнение. Все что внутри этой функции при моделировани не важно. Её параметр напрямую идет в модель, которая может даже не учитывать частоту а просто выставлять эквивалентное напряжение.

Не совсем понятно, но если я правильно понял, то именно об этом и идет речь. Что не надо никаких HDL. У тебя есть значение частоты, которое известно, что будет таким-то напряжением по формуле. Вот и преобразуй по ней. Вот именно так и работает.

Отладкой с точками остановки как-то не привык пользоваться, особенно на МК.

А когда нет модели внешних воздействия, то это будет маленьким адиком, о котором я говорил. Чтобы добраться тебе до определенного кода в пошаговом исполнении, тебе понадобиться подсовывать в регистры все внешние воздействия, которые приводят тебя к данной точке. И не дай бог ошибешься - все заново придется. А у меня реальная модель внешних воздействия всегда приводит в нужную проблемную часть кода, где я могу застопориться и продолжить в пошаговом исполнении, чтобы смотерть, что происходит и кто виноват.

Как это так? Отладчик это остановка выполнения по событиям и доступ к памяти, внутреннему состоянию. Если речь об отладке в симуляторе, то это моделирование а не отладка.

Это и то, и другое. Модель с реальной (повторю) прошивкой с возможностью перехода в пошаговый режим исполнения как самой модели через обычный gdb, так и прошивки через avr-gdb.