[an error occurred while processing this directive]
|
Разбирались давно, помню примерно.
1. В функции, где разбираются источники прерываний (кажется, int_determinator) есть команда pmovlay=page(xxx). По идее linker должен поставить туда страницу переменной (обычно 0), вместо нее он вгоняет абстрактное число. Кстати, от поддержки прерываний через interrupt() мы отказались - там больше 60 команд на вход в прерывание - DSP превращается в PIC. Лучше переделать startup код и использовать обычные вектора, как на асме.
2. При включенной "оптимизации" программа на 21xx вообще улетает в неизвестном направлении, так как в библиотечной функции завершения подпрограммы загрузка toppcstack выполняется непосредственно перед rts. Кстати, в симуляторе все работает прекрасно.
Вообще от С в VDSP2.0 для 218x осталось тоскливое впечатление - компилятор втыкает кучу абсолютно лишних команд, имеются глюки в компиляторе (в частности, не работает конструкция struct1->struct2->x)
и в симуляторе (см выше). Сейчас разбираюсь с vdsp3.0, может что-то исправилось.
E-mail: info@telesys.ru