GSH 0 6 октября, 2004 Опубликовано 6 октября, 2004 · Жалоба Помогите разобраться с С компилятором для процессора ADSP-2191. После успешной работы на ассемблере возникло желание перейти на С, но ничего не получается. После загрузки программы от процессора никакой реакции, изменение настроек компилятора не на что не влияет. Вот текст простейшей программы. Если делать проект только на асме, то все работает: выводится счетчик в юарт, и дергается ножка процессора. Если компилировать данный файл – ничего не работает, хотя в отладчике все выполняется. Также ничего не работает, если вместо ассемблерной вставки тоже самое написать на С. Что я делаю не так? Компилятор VisualDSP++ 3.5 с последним апдейтом, процессор грузится через юарт, отладочного кабеля нет. void main(void) { asm(" #include <def2191.h> MSTAT = 0x10; IMASK = 0x0000; ICNTL = 0x0000; iopg = General_Purpose_IO; ax0 = 0x04; io( DIR ) = ax0; iopg = UART_Controller_Page; ax0 = 0x80; io( LCR ) = ax0; ax0 = 0x41; io( DLL ) = ax0; ax0 = 0x00; io( DLH ) = ax0; ax0 = 0x03; io( LCR ) = ax0; ax1 = 0x0000; lb1: ar = ax1 + 1; ax1 = ar; iopg = UART_Controller_Page; io( THR ) = ax1; ay0 = 0x20; TxTest: ax0 = io( LSR ); af = ax0 and ay0; if EQ jump TxTest; iopg = General_Purpose_IO; ax0 = 0x04; io( FLAGS ) = ax0; CNTR = 600; DO add_loop UNTIL CE; add_loop: nop; iopg = General_Purpose_IO; ax0 = 0x04; io( FLAGC ) = ax0; CNTR = 600; DO add_loop2 UNTIL CE; add_loop2: nop; jump lb1; "); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DropDown 0 6 октября, 2004 Опубликовано 6 октября, 2004 · Жалоба может есть смысл начать ковырять с стартапа? я файлы сразу перетащил в рабочую папку, убрал лишнее и сделал частью проекта. файлы 219x_hdr.asm, 219x_int_tab.asm из {ADSP}\219x\lib\src\crt_src у правда файл таблицы прерываний отсутствует, поскольку прерывания реализовал на асме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSH 0 9 октября, 2004 Опубликовано 9 октября, 2004 · Жалоба На сколько я понял, если проект делать на с, то сам компилятор создает таблицу прерываний и выполняет необходимую инициализацию процессора. Это видно в дебагире. Еще я пробовал сам все это делать на асемблере и вызывать сишную функцию - результат тотже. посмотрев получившийся код я выяснил что процессор не работает если в программе есть I4 = I5 ; I5 = DM(I5 += M5); RTS; (это выход из функции), даже если этот код никогда не выполняется. если заменить I4 = I5 нопом, то все работает. Может я чтото делаю неправельно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DropDown 0 11 октября, 2004 Опубликовано 11 октября, 2004 · Жалоба я не совсем понял, читал ли GSH мой ответ. компилятор в начале программы прилинковывает два модуля - 219x_int_tab.asm - это таблица прерываний и 219x_hdr.asm - это инициализация, в которой и устанавливаются // stack pointer points to first unused location I4 = ldf_stack_base; // stack pointer I5 = ldf_stack_base; // frame pointer исходники - лучшая документация! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Slavik 0 15 октября, 2004 Опубликовано 15 октября, 2004 · Жалоба Проще говоря не трогай своими ручёнками то, что пользует компилятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
solit 0 18 октября, 2004 Опубликовано 18 октября, 2004 · Жалоба Вообще-то если все делать правильно, то ASM и С отлично друг с другом дружат. Сейчас втянулся и только на смешанном и пишу... Для начала, приведенный текст С-шным никак не назвать... Для того чтобы компилятор все нормально переварил нужно указывать входные-выходные аргументы, изменяемые регистры и прочие... А если совсем по правильному делать, то сперва нужно почитать документацию. Есть достаточно подробное описание С-шной модели, т.е. как устроен стек, как им пользоваться из асм-ра, как правильно передавать и получать аргументы... Sorry, за повторы инет - собака тормозит... Кстати, в описание С модели также описано какие регистры и для чего нужно использовать. Если сам описание не найдеш, то могу закачать куда-нибудь... Короче резюме: Учите мат.часть, и все у Вас будет хорошо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Esquire 0 18 октября, 2004 Опубликовано 18 октября, 2004 · Жалоба solit В следующий раз, прежде чем отправлять 3 поста подряд в одной теме, воспользуйся кнопкой "Редактировать" и допиши все, что хотел сказать . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться