Цитата(DimSun @ May 2 2005, 13:26)
Цитата(aal @ May 2 2005, 08:09)
В иаре хорошо циклы программы проверять, код оптимизировать, проверять правильность работы своих выкрутасов, но с переферией он не дружит....
Что вообще? Тогда зачем он нужен?
В IAR'е есть специальные макросы для эмуляции периферийных устройств. Т.е. не для собственно симуляции того, как, например, таймерный регистр щелкает, а для эмуляции результатов работы периферийных устройств. По опыту скажу, что на деле это ценнее и лучше, нежели простая симуляция периферии, которая только и годится для того, чтобы проверить, а запустился ли таймер.
Поясню. Предположим, я отлаживаю протокол обмена через UART, где летают пакеты - загловок, тело, трейлер (контрольная сумма). Вот мне и надо логику отладить. Как это с помощью симулятора сделать? Правильно - написать ему стимул на вход (для UART'а), который изображает всю диаграмму! Не такое простое дело, между прочим. И на деле этого-то мне тут и не надо - мне ведь не правильность работы UART'а надо проверять, а логику работы своего принимающего кода. Поэтому меня бы просто устроила возможность подавать принятые байты на обработчик прерывания. Вот именно это и дает сделать С-SPY: пишу скриптик, где задаю прерывание (с определенным периодом, задержкой и т.д.), задаю immediate breakpoint на обращение к регистру данных UART'а, при котором будет вызван макрос (мною же написанный), где в этот регистр (еще до чтения его процессором) будет подсунуто значение из файла.
Таким образом, просто составляю текстовый файл, где просто прописываю байты на прием, и указываю этот файл как входной для симулятора. Все.
Та же история с АЦП. Подаю файл с данными и смотрю, как АЦП "оцифровывает" "данные".
Очень просто можно смоделировать, например, ситуацию, когда в момент выполнения обработчика прерываний приходит другое прерывание (например, чтобы отследить использование стека в прерываниях) - достаточно задать нужные задержки возникновения прерываний.
В общем, макросы эти - очень мощное и гибкое средство моделирования! А для чего еще симулятор нужен?! Именно для моделирования. А уж таймер правильно запустить можно и без симулятора.
«Отыщи всему начало, и ты многое поймёшь» К. Прутков