реклама на сайте
подробности

 
 
> Что такое ARM7 и как с ним бороться
Bird2
сообщение Dec 23 2006, 18:28
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 19-12-06
Пользователь №: 23 672



Дали небольшую задачку, но камень должон быть AD ADuC 7026 (там вроде как хорошие ЦАПы). А я с этим ядром вообще не знаком... А тут еще операционные системы под них...
Подскажите, плз, где взять инфу про работу с кейлом для АРМ и про ОС для них.
Спасибо за внимание
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Dec 23 2006, 23:49
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
А что касается прерываний, то таки да, два приоритета: FIQ и IRQ (остальные исключения ради простоты можно сейчас не рассматривать).

Один раз посмотреть на регистровые банки достаточно. Неплохо помнить о переключении ARM/THUMB (хотя для начала можно писать под любой из режимов). Помнить о продвинутом контроллере прервываний (VIC/AIC etc.). Подход к периферии непривычен с точки зрения человека привыкшего к 8-биткам.
Лично я, когда начинал, больше намучился с периферией, чем с ядром. Долго воевал с векторными прерываниями и снятием флажков. С конфигурированием. А сама идея отдельного банка для прерываний проста как шоколад.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 24 2006, 13:03
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(beer_warrior @ Dec 23 2006, 22:49) *
Неплохо помнить о переключении ARM/THUMB

Ну, обычно об этом должен помнить компилятор.
Цитата(beer_warrior @ Dec 23 2006, 22:49) *
Помнить о продвинутом контроллере прервываний (VIC/AIC etc.).
Точнее об его полном отсутствии в ADuC и необходимости вручную накладывать маску на флаги при опознавании источника прерываний.
Цитата(beer_warrior @ Dec 23 2006, 22:49) *
Подход к периферии непривычен с точки зрения человека привыкшего к 8-биткам.
Да нет там ничего особо непривычного. Компилятор сам помнит какой регистр периферии 8 бит а какой 32 или 16, и сам подставляет нужную команду (не ошибаясь).

Про ОС - вышел релиз scmRTOS 3.0beta, там есть порт под ADuC, но, к сожалению, пока только для IAR.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 24 2006, 15:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Сергей Борщ @ Dec 24 2006, 13:03) *
Цитата(beer_warrior @ Dec 23 2006, 22:49) *

Неплохо помнить о переключении ARM/THUMB

Ну, обычно об этом должен помнить компилятор.

Обычно об этом должен помнить линкер. И автор программы, когда дело доходит до прерываний.

Цитата(Сергей Борщ @ Dec 24 2006, 13:03) *
Цитата(beer_warrior @ Dec 23 2006, 22:49) *

Помнить о продвинутом контроллере прервываний (VIC/AIC etc.).
Точнее об его полном отсутствии в ADuC и необходимости вручную накладывать маску на флаги при опознавании источника прерываний.

Сколько производителей, столько и мнений smile.gif

Цитата(Сергей Борщ @ Dec 24 2006, 13:03) *
Компилятор сам помнит какой регистр периферии 8 бит а какой 32 или 16, и сам подставляет нужную команду (не ошибаясь).

Компилятор знать ничего не знает ни о перифирии, ни о размерности ее регистров. А ошибки, связанные с неправильным описанием регистров, не так уж редки.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 24 2006, 18:47
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(aaarrr @ Dec 24 2006, 14:34) *
Цитата(Сергей Борщ @ Dec 24 2006, 13:03) *

Цитата(beer_warrior @ Dec 23 2006, 22:49) *

Неплохо помнить о переключении ARM/THUMB

Ну, обычно об этом должен помнить компилятор.

Обычно об этом должен помнить линкер. И автор программы, когда дело доходит до прерываний.
Линкер-то да, но компилятор должен предоставить возможность выбрать либо универсальный переход (BX) если смена режима, либо более короткий и быстрый BL если смены нет. А на попытку описать функцию как обработчик прерывания в thumb ругатья должен таки компилятор. Как следствие ошибка отлавливается в процессе компиляции а не после запуска.

Цитата(aaarrr @ Dec 24 2006, 14:34) *
Цитата(Сергей Борщ @ Dec 24 2006, 13:03) *

Цитата(beer_warrior @ Dec 23 2006, 22:49) *

Помнить о продвинутом контроллере прервываний (VIC/AIC etc.).
Точнее об его полном отсутствии в ADuC и необходимости вручную накладывать маску на флаги при опознавании источника прерываний.

Сколько производителей, столько и мнений smile.gif
Это точно. Но: 1) В исходном посте ечь шла про ADuC и 2) Ну что им сложно было сделать аппаратное наложение маски?????

Цитата(aaarrr @ Dec 24 2006, 14:34) *
Цитата(Сергей Борщ @ Dec 24 2006, 13:03) *

Компилятор сам помнит какой регистр периферии 8 бит а какой 32 или 16, и сам подставляет нужную команду (не ошибаясь).

Компилятор знать ничего не знает ни о перифирии, ни о размерности ее регистров.
Почему? Конечно с его точки зрения это обычные sfr, но они уже описаны, причем в описании указан размер. Ошибка в описании если и есть то после первого же вылавливания исправляется и не возникает совершенно случайно в одном из n обращений к этому sfr. В отличие от писания на ассемблере где размер sfr надо помнить программисту, а творческий простор для неправильных обращений к sfr практически не ограничен :-)

Для Bird2: Им еще в ADuC удалось сделать совершенно чудовищные sfr портов ввода-вывода, поэтому во избежание дурацких недоразумений очень удобно "дерганье ног" делать сразу через макросы (спасибо Аскольду Волкову за идею). Внутри файла комментарии как использовать. Сам пользуюсь уже 6 лет.
Прикрепленные файлы
Прикрепленный файл  ascold.zip ( 1.17 килобайт ) Кол-во скачиваний: 94
 


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Bird2   Что такое ARM7 и как с ним бороться   Dec 23 2006, 18:28
- - aaarrr   Цитата(Bird2 @ Dec 23 2006, 18:28) Дали н...   Dec 23 2006, 18:48
- - beer_warrior   В принципе если писать на С ядром можно и не замор...   Dec 23 2006, 22:37
|- - aaarrr   Цитата(beer_warrior @ Dec 23 2006, 22:37)...   Dec 23 2006, 22:52
|- - aaarrr   Цитата(Сергей Борщ @ Dec 24 2006, 18:47) ...   Dec 24 2006, 19:18
|- - Сергей Борщ   Цитата(aaarrr @ Dec 24 2006, 18:18) Компи...   Dec 24 2006, 19:53
- - beer_warrior   ЦитатаНу, обычно об этом должен помнить компилятор...   Dec 24 2006, 22:07
|- - Сергей Борщ   Цитата(beer_warrior @ Dec 24 2006, 21:07)...   Dec 25 2006, 16:04
- - Bird2   То есть, если я правильно понял, на С по барабану,...   Dec 24 2006, 22:38
|- - aaarrr   Цитата(Bird2 @ Dec 24 2006, 22:38) То ест...   Dec 24 2006, 23:40
- - Bird2   Понятно, будет бороться. Крайний вопрос: скачал ке...   Dec 27 2006, 00:54
- - Dopler   Боюсь, вы скачали не тот Keil. Для ARM нужен uVisi...   Dec 27 2006, 01:43
- - VAI   Цитатаскачал кейл 8.02, Это для 51-х, а Вам надо д...   Dec 27 2006, 09:43
- - Andy Great   Ну, если быть точным, то могут сосуществовать 2я и...   Dec 27 2006, 11:05


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.0142 секунд с 7
ELECTRONIX ©2004-2016