Помогите начать работу с платой c Linux-ом раньше не работал и вообще это первый мой опыт работы с АРМ-ми. До этого работал на 51-процах (в Keil-е ) и AVR на IAR. Что хочу сделать?
1. Приспособить платку для опроса датчиков .
2. Вести архивы по каждому из датчиков.
3. Сбрасывать эти архивы на флешку или MMC/SD карту.
4. Подключить 4х5 клавиатуру.
5. ЖКИ планирую подключить пока символьный но потом графику.
Вот в кратце задача которую хотелось бы решить. НО для начала стою перед выбором то ли Linux заливать то ли в Keil-e все делать. Выложите или дайте ссылку где скачать пример как ногой порта хотя бы подергать. По поводу Linux установил и запустил с диска RedHat. Попытался сделать простенькую прогу типа Hello World по примеру, откомпилить не получилось кучу ошибок выдал :(.
Меня тоже не бейте, я новичек, но пару слов скажу. :)
Для Keil-a, запускается и дрыгает ногой пример ...KeilARMBoardsAtmelAT91SAM9260-EKBlinkylinky.Uv2
Выполнил для Target SAM9260 Int RAM, для выполнения в Ext RAM поправлял SAM9260.s на другой кварц и SDRAM 16bit.
Запускал в DEBUG, пользуя MT-Link, включенный в Keil как J-Link. Без дебага пускал через командную строку JLink.exe со скриптом
Для получения .bin из .axf пользовал утилиту Кейла
fromelf --bin -o <mybin.bin> <axf-файл>
Почти простой HelloWorld, но и ещё пишет на карточку файл и измеряет скорость записи.
hello.cpp
И Makefile
Для удобства писанины включил на плате telnetd и из VisualStudio одной кнопкой компилю и выполняю удаленно на платке, с выводом всего в студию.
Если проблемы с большим "Линуксом" - то начинать надо с него. На плате будет то-же самое. В сети очень много материала по Unix системам - мой любимый ресурс www.opennet.ru Что-бы работать с GPIO скорей всего нужно будет написать свой простенький драйвер - если разберетесь с самим процессором и с Линукс, то это не сложно. Спрашивайте конкретно, поможем - все начинали когда-то ;)
Ребята, спасибо за участие!
Присоединяюсь к предыдущему совету, начните с Linux, проще потом будет свое решение на другие архитектуры переносить (если на них Linux будет работать).
В Linux нельзя из приложений пользователя обращаться напрямую к регистрам железа, по началу это кажется очень неудобно, но ко всему привыкаете (со временем создадите свой "проектный драйвер" через который будете обращаться ко всему на свете). Общаться с железом можно через системные вызовы или драйвера, я предпочитаю второй вариант.
В качестве "затравки" прилагаю к тексту драйвер (правда от платы SK-AT91SAM9XE512-S3E) для управления питанием модема SIM508 ...
2 Lexey
А Вы не гмогли бы поподробнее расписать манипуляции по настройке Ваших "удобств" (и как юзеров создавали чтоб телнетом заходить)?
Для gpio в 2.6.27 похоже будет возможность управлять из пространства пользователя через sysfs (посути просто запись в файл)
http://www.linuxhq.com/kernel/v2.6/27-rc9/Documentation/gpio.txt
Я на SK-LPC2478-S3E тоже захожу телнетом. Тот что идет в комплекте вообще не делает авторизацию - молча запускает "рутом" ;) Так дополнительные пользователи не нужны.
Все телодвижения - это включить inetd и telnetd в Network Application. Его автоматом прописывает в /etc/inetd.conf
Юзеров на плате я не создавал. Добавил в busybox-1.1.2 telnetd, на плате в etc/rc.d запускаю: "/usr/sbin/telnetd -l /bin/ash". И телнетом на плату заходит без юзеров.
Далее про удобства. Я пользуюсь VisualStudio.NET, начинал с ней работать для виндовых приложений, потом для FreeBSD в ней демонов писал, теперь и для ARM-а её заточил. Не спорю, что Eclips или Slickedit может и удобнее (в слике писал для МК Fujitsu), но привычка сильная штука. :)
Прикладываю архив работающего проекта для VS.NET.
vs.net.arm.ZIP
По архиву:
file_onEK_bin.zip - скрипт goarm, который выполняется на платке (его надо добавить в rootfs и обновить во флешке). Он копирует с tftp сервера и запускает прогу.
hello_vm_files.zip - файлы, которые лежат в виртуальной машине, в /home/projects/helloarm
proj_vs.zip - файлы проекта для VisualStudio.NET, лежат на виндовой машине в c:projectslinuxarm
kslink.zip - kslink.exe , самописная утилитка, некая прослойка для VS.NET, она всего лишь пускает другое приложение, в даннном случае plink и telnet, захватывает вывод, редактирует его и возвращает в окно студии. Это чтоб сообщения компилятора об ошибках обрабатывались по двойному клику в студии и "прыгало" на нужную строку. А также для запуска телнета с выполнением команд после подключения к платке. Можно без этой утилиты все настроить, но было проще написать её.
Ко всему этому мои локальные IP адреса:
Пришлось изменить и на плате, т.к. моя локалка другой подсети, а проводов и так много на столе.
192.168.1.8 - Моя рабочая машина с w2kPro и VisualStudio.NET
192.168.1.2 - Виртуальная машина с RedHat (с диска), потом перенесу на отдельное железо, ибо неудобно. Включена SAMBA, в рабочей машине и проекте выглядит как диск O.
192.168.1.136 - SK-MAT91SAM9XE512, соотвественно и адрес TFTP сервера на плате заменил на 192.168.1.2.
Как это все функционирует:
На VM лежат исходники, в студии я их редактирую, по F7 выполняется через SSH на виртуальной машине Makefile, все сообщения компилятора возвращаются в окно студии. После компиляции и копирования на VM в tftpboot, запускается телнет, но цепляется с платкой и выполняет скрипт, который в свою очередь копирует с tftp и запускает бинарник, опять же с выводом всего в окно VisualStudio.