Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
Вопрос по кросскомпиляции для SK-AT91SAM9260
Kris
Добавлено 27.07.2011 16:37 Редактировалось 27.07.2011 16:39
0
Сообщение: 1
Kris
0

Пункты: 234
Регистрация: 27.07.2011
Есть плата SK-AT91SAM9260, с ней система сборки в виде образа виртуальной машины.
а именено
/home/user/src/buildroot-2010.02
/home/user/src/linux-2.6.28 - ядро, скрипты сборки внутри
/usr/local/cross-gcc/...
Все собирается. Уже собрал zlib, glib, ncurses и mc. MC на плате запустился!

Хочу собрать вот такой файл:
#include <stdlib.h>
#include <stdio.h>
#include <mach/gpio.h>
int main(void)
{
printf ("Reading GPIO pins...\n");
printf("0 - %d", at91_get_gpio_value(0));
return 0;
}

Собираю командой arm-none-linux-gnuebi-gcc -static test.c -o test. Просто printf работает на плате и все печатает.

А тут не находит иклуд gpio. Он лежит /home/user/src/linux-2.6.28/arch/arm/mach-at91/include/mach.

Вопрос такой, а как сказать компилятору, что я собираю под at91sam, исходники ядра linux-2.6.28 лежат там-то. Какие переменные окружения ему следует указать? какие пути к библиотекам?

Вообщем как сделать некий шаблон для makefile для своего проекта? Может у кого пример под эту платку(с системой сборки от starkit на виртуалке) есть?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 27.07.2011 17:17 Редактировалось 27.07.2011 21:41 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

А тут не находит иклуд gpio. Он лежит /home/user/src/linux-2.6.28/arch/arm/mach-at91/include/mach.


Эти заголовки не предназначены для использования в юзерспейс - это интерфейс ядра, ф-ции можно использовать только в модулях ядра.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 27.07.2011 23:36 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
пардон, что влезаю..
2Kris почитайте местную [url=http://wiki.starterkit.ru/чтение-запись_физических_адресов_в_linux]WiKi [/url]
или вольную интерпретацию типа
там надо поправить базовый адрес (а может и не надо)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Kris
Добавлено 01.08.2011 16:53 Сообщение: 4
Kris
0

Пункты: 234
Регистрация: 27.07.2011
Спасибо, с двинулся с мертвой точки
Спуститься к концу Подняться к началу
Персональная информация
Kris
Добавлено 08.08.2011 17:31 Сообщение: 5
Kris
0

Пункты: 234
Регистрация: 27.07.2011
Еще небольшой вопрос по опросу пинов и общей структуры программы остался.

Программа должна осуществлять следующее. Опрос 4-х пинов, на которых ...пусть будут кнопки и 1-го пина, на котором импульсы для счета, минимальная длительность импульса 10 мс.
По каждому нажатию кнопки отправляется snmptrap. Далее добавится telnet, ftp-сервер, возможно gsm какнал и.т.п.

Не подскажите как оптимально построить программу в этом случае. Прерывания по пинам лучше не использовать?
Все это было реализовано на 8-битном контроллере.
Там было все в общем цикле и прерывания:
while (1) {
опрос кнопок
обработка snmp
и.т.д.
}
Как это грамотнее всего реализовать в линуксе?
При этом еще 10 мс импульсы успевать считать.
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 09.08.2011 11:36 Редактировалось 09.08.2011 11:49 Сообщение: 6
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
1. Изучи в документации к ядру Documentation/gpio.txt
2. Внимательно посмотри на arch/arm/mach-at91/board-sam9260ek.c раздел GPIO buttons
3. Посмотри на drivers/input/keyboard/gpio_keys.c
4. Прочесть в Documentation/input/ файлы input.txt и input-programming.txt
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.08.2011 12:00 Редактировалось 09.08.2011 12:04 Сообщение: 7
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

и 1-го пина, на котором импульсы для счета, минимальная длительность импульса 10 мс.


У AT91SAM9260 есть 6 аппаратных счетчиков - нет смысла делать счетчик на gpio вручную, к ним нужно только интерфейс удобный придумать (напрмер чтение значения счетчика через файл символьного устройства) , тут зависит от того что вы с этим счетчиком делать хотите. С кнопками удобней было бы сделать свой модуль ядра с работой по прерыванию, но можно и в юзерспейс что-нибуть придумать - как это оптимально сделать у меня мыслей нет кроме опроса в цикле, возможно событие от прерывания через uio в юзерспейс кидать. Можно и через готовые средств - как написал Lampus, но там опять же циклический опрос скорей всего.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux