|
SAM3S и таблица векторов, как подцепить обработчик прерываний? |
|
|
|
 |
Ответов
(1 - 11)
|
Jan 10 2013, 10:26
|
Частый гость
 
Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591

|
Здравствуйте, уважаемые участники форума.
Имеется задача создания таблицы векторов прерываний (и ISR к ним) для процессора TI DM368.
Пишу на CCS5. Насколько я понял, стартапный код пишется на ассемблере. Но он почему-то не хочет линковаться вместе с сишными файлами. Слышал, что надо его как-то объявить в мэйнике, либо настройках проекта, но как не знаю. Подскажите, если можно. И ещё вопрос. Скажите, если мы находимся в режиме user и у нас нет прерываний, то мы совсем не можем перейти в режим супервизора? Вручную меняю содержимое регистра CPSR с режима user на супервизора, он не принимает изменений. Что можно сделать? Если можно, подскажите хотя бы общую методологию, за конкретные ответы и примеры отдельный респект.
|
|
|
|
|
Jan 10 2013, 11:55
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(vladimir_orl @ Jan 10 2013, 15:09)  Насколько я понял, линковщик просто не видит асм файл, хотя он добавлен в проект. То есть там ни в карте памяти ни в бинарнике этих джампов нет. Но собирает без ошибок, просто не добавляет эту таблицу переходов Судя по всему Линковщик всё прекрасно увидел и все объектники собрал воедино. Проблема в чём-то или ком-то:-) другом. ПС2: Для вставки на форум исходников используйте теги [ codebox ] ваш код... [ /codebox ] (без пробелов) или изучите кнопочки над полем ввода текста. Цитата(vladimir_orl @ Jan 10 2013, 15:44)  Если смотреть бинарник, то по адресам с 0х80000000 (где сама программа) код есть, а с 0x00000000, где вектора перехода, ничего нет. А вам не приходило в голову что это может быть нормально? Могу предположить что с нулевого адреса находится РАМа в которую ваш стартап код должен закинуть данные, которые в бинарнике сидят совсем не по нулевому адресу.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jan 10 2013, 12:41
|
Частый гость
 
Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591

|
Да. По нулевому адресу есть что-то "EA001FFE". Это судя по всему, команда перехода, посмотрю, куда ведёт. И если можно подскажите команду перехода на смещение более 32 МБ. Она должна быть что-то вроде Код mov pc, #label ... label: ... Но компилер не принимает. Или опять не так?
|
|
|
|
|
Jan 11 2013, 05:35
|
Частый гость
 
Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591

|
И в продолжение темы ещё один вопрос, если можно. Пишу на ассемблере в файле foo.asm: Код table_size .set 10000 ; define the constant .global _table_size ; make it global В сишном файле: Код extern int table_size; /*external ref */ #define TABLE_SIZE ((int) (&table_size)) Компилятор говорит: Код <Linking>
undefined first referenced symbol in file --------- ---------------- table_size ./main.obj
error #10234-D: unresolved symbols remain error #10010: errors encountered during linking; "asm2.out" not built Что это может быть?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|