после "дрыганья ногой" решил перейти к более серьезным вещам, но :
1. не могу понять - где лежат заголовочные файлы библиотеки at91lib, где она сама (библиотека), почему нет файла aic.h (отвечающего за прерывания). в общем такое впечатление что там ее нет, а какие-то обрывки. а?
2. вообще что там за toolchain? (в виртуалке)
3. вообще, извините за нубский вопрос, но может кто-то внятно, по шагам описать установку в эту виртуалку какой-то IDE? любой, пусть только для компиляции. очень буду признателен!
ответ лежит например в файле: /home/user/src/linux-2.6.24/make_menuconfig
настоящие суровые линуксоиды не пользуются ИДЕ :)
make, vi, less, grep, голая консоль и команды длиной в 500 байт - вот что отличает реального линусоида от галимого маздаевода :)
лично я вполне обхожусь mc и mcedit..
да я ими тоже обошелся, когда три года назад написал клиент-серверную систему для сбора и обработки данных на PC- платформе. а тут с этой чертовой кросс-компиляцией и тулчейнами ... ни хрена, признаться, не понимаю... не хватает какого-то пусть даже небольшого, но последовательного мануала. одни обрывки, никак в голове в единую картину не складываются :(
PS только-что наткнулся на ваш пост , который вы писали полгода назад:"Pavel Ivanchenko - да я собственно не против. на мой взгляд все же не хватает (особенно для начинающих) некой шпаргалки, т.с. "стартовый пинок" в нужном направление, иначе одни и те же вопросы будут всплывать вновь и вновь".
увы! кажется волшебный пинок так и не появится :( а жаль... хотелось бы все же разобраться с линуксом в AT91SAM9XE512 и заложить ее в мелкосерийный приборчик...
к вопросу о инструкциях для новичков:
вот например, товарищ (дай бог ему здоровья и достатка!) нашел минутку(!) и все расписал: http://www.starterkit.ru/html/index.php?name=forum&op=view&id=1647&num=2#1658
все четко, понятно, повторил, на HelloWorld полюбовался, потом пином подергал- радость! до прерываний дошел (PIT)- все, ступор :( библиотечку at91lib подключить не получается, а как без нее функцию на прерывание от PIT завести и вовсе не знаю...
по поводу #3 и #4, я сам (когда появилась первая плата от Павла) недоумевал и сердился на отсутствие ответов на свои вопросы. Теперь же, имея две платы с разной архитектурой АРМ, я понимаю какую непосильную задачу неспеша делает Павел.. Разработать схему, макетку, поднять железо в линуксе, запустить в производство и все это _один_ человек. Еще и сайт держит с поддержкой.
Поэтому, на мой взгляд, отвечать на примитивные вопросы не должно входить в его задачу. Для этого есть ворохи документации, сайты и форумы линуксоидов, мозги пользователей :)
даже если такой и появится, то он будет полезен только с точки зрения общей информации, ибо все меняется довольно быстро и непредсказуемо. И то что работало в том мануале, через полгода не запустится ни за какие коврижки..
о тулчейнах (типа на пальцах)
допустим, надо написать программу, которая запускается на АРМе. Ее можно написать, скомпилировать и запустить прямо на плате - нативная среда разработки.
существует возможность писать и компилировать эту же программу на другой архитектуре (например x86). Для этого в линукс х86 собирают отдельную версию компилятора, который генерит код под требуемую архитектуру (например АРМ).
Подробнее можно почитать на старом форуме. И поспрашивать местных асов, собаку съевших на сборки тулчейнов. На электрониксе есть отдельная ветка про тулзы..
зы сорри если длинно и путано :)
трудности - они понятны. но всегда есть пути их решения: создать службу поддержки. пусть даже из одного человека. но чтобы ни один вопрос на форуме не оставался без ответа.
иначе платы в "массы" будут идти со страшным скрипом. ну тяжело из "вороха" документации составить четкое представление.
тут я не согласен. как бы быстро все не менялась, большая часть остается неизменной. вот скажем внутренняя структура SAM7 и SAM9 практически та же самая. да, будут отличия от kit`а к kit`у - у одного кнопочки заведены на одни пины, у другого- на другие, но основные примеры gettingstarted будут понятны; основные операции (сборки, прошивки) также практически не меняются.
PS про то что из себя представляют тулчейны - это я уже понял. бог с этим, пока мне свой собирать не нужно, пробую разобраться с тем что предоставил Павел. :(
в общем-то поковырялся в at91lib и понял что библиотека предназначена для так сказать нативного использования ARM, т.е. без Linux, ибо в at91lib адреса периферии прописаны жестко (в h файлах).
ну-у.. на мой взгляд, такое врядли случится, да и ответить на все вопросы невозможно в принципе, ибо число пользователей в степени китов в степени проблем даст нереальное число комбинаций.
это то так, но незначительные ньюансы (например изменили ключ или хидер) и все, приплыли..
где-то тут я открыл тему как засетапить Дебиан, ссылки давал с "мануалами" по сборке. Кажется все шоколадно? А хрен там - сам делал с дюжину подходов, тут надо поправить, там пофиксить - телодвижения напоминают кубик Рубика - один раз сплодил успешно (берегу сборку как зеницу ока)..
Примеров масса, все меняется, фиг уследишь :(
неясно к какой области вопрос - сборка на плате, на х86, стандалон?
ну, вы преувеличиваете- посмотрите- с какой скоростью тут, на форуме задаются вопросы- по нескольку штук в день- вполне реально одному консультанту отвечать. Причем многие вопросы постоянно повторяются- и одному человеку проще давать ссылки на готовые обсуждения этих вопросов, и/или переносить их в wiki.
то что Павел "зашивается" это понятно, и делегировать функции тех.поддержки нужно однозначно. иначе получается как в анекдоте "не успеваем мы спасти одного больного, как тут же не успеваем спасти другого больного..."
библиотечку at91lib подключить не получается,
неясно к какой области вопрос - сборка на плате, на х86, стандалон?
э-э-э... не совсем понял уточнение. компилю в виртуалке (под Linux), а цель - kit.
но как я писал выше, я уже понял что at91lib для пользования под Linux не предназначена, там адреса регистров прямо заданы числами.
у меня сейчас задача запрограммировать вызов функции через таймер, причем интервал от 15 до 1000мкс.
я пробовал использовать функцию Linux setitimer(), но временную диаграмму еще не смотрел, не уверен, что с ее помощью удастся соблюсти жесткую периодичность. Поэтому и пытался задействовать PIT и AIC.
сейчас попробовал (в Linux) запрограммировать PIT и в AIC назначить соответствующую функцию-обработчик. отобразил адресное пространство регистров управления, записал параметры, адрес функции (по образцу в gettingstarted).
но видимо такой "финт ушами" в Linux не прокатит- видимо эта переферия там задействована ОС (ядром), потому что после запуска сыпятся сообщения:
но как я писал выше, я уже понял что at91lib для пользования под Linux не предназначена, там адреса регистров прямо заданы числами.
у меня сейчас задача запрограммировать вызов функции через таймер, причем интервал от 15 до 1000мкс.
я пробовал использовать функцию Linux setitimer(), но временную диаграмму еще не смотрел, не уверен, что с ее помощью удастся соблюсти жесткую периодичность. Поэтому и пытался задействовать PIT и AIC.
сейчас попробовал (в Linux) запрограммировать PIT и в AIC назначить соответствующую функцию-обработчик. отобразил адресное пространство регистров управления, записал параметры, адрес функции (по образцу в gettingstarted).
но видимо такой "финт ушами" в Linux не прокатит- видимо эта переферия там задействована ОС (ядром), потому что после запуска сыпятся сообщения:
PIT для своих целей нельзя использовать - на нем сделан системный таймер, кроме PIT есть TC0,1,2 - пример как с ними работать есть в at91lib. Библиотека at91lib очень даже полезна как пример кода, естественно без правки его в linux не перенести, то что там регистры константами заданы мало помешает - в linux эти же почти обозначения будут смещениями от базы, есть специальная ф-ция ioremap для ремапа в текущий поток области ввода-вывода. Точных задержек в linux вы никогда не добъетесь - это не rtos, можно поэкспериментировать с таймерами и назначить наивысший приоритет для их прерываний - AIC позволяет разруливать приоритеты аппаратно, но все равно любой поток может отключить прерывания в самый неподходящий момент. Кстати - ф-ция должна вызываться в пространстве ядра или в пространстве пользователя ? а то это сильно разные вещи.