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

 
 
> Управление периферией HPS из под OS
R6L-025
сообщение Aug 29 2016, 06:01
Сообщение #1


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

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



Доброго времени суток!
Недавно начал ковырять альтеровский SoC, в связи с чем возник довольно глупый вопрос - как правильно работать с периферией HPS из под OS (linux)?
Например пробовал поднять контроллер SPI. Пробовал из под userspace вручную управлять его регистрами - ничего хорошего не получилось.
Правильно ли я понимаю что самый корректный способ в данном случае работа с драйвером? Или есть иные решения?
И поможет ли чем альтеровская HWLIB при работе из под OS? Как я понял она больше рассчитана на работу с baremetal, да и в сорцах альтеровских драйверов я не встречал упоминаний о ней.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
R6L-025
сообщение Aug 30 2016, 06:08
Сообщение #2


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

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



Да, в Qsys все описано, в ядре поддержка SPI включена, он даже видится в /dev. Если с драйвером работать то осталось только разобраться как им рулить. Было интересно как вообще управление железом делается. По видимому да, самое логичное наитивными для OS путями - через драйвер)
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 30 2016, 06:53
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(R6L-025 @ Aug 30 2016, 09:08) *
Да, в Qsys все описано, в ядре поддержка SPI включена, он даже видится в /dev. Если с драйвером работать то осталось только разобраться как им рулить.

SPI не может "видится" в /dev, обычно он представлен устройством на канале или /dev/spidevX.X
смотрите в исходниках драйвера - чем он занимается и что создает в системе

Цитата
Было интересно как вообще управление железом делается. По видимому да, самое логичное наитивными для OS путями - через драйвер)

поищите в разделе OS->linux треды, там где-то выкладывались названия литературы - устройство линукса, линукс для чайников, линукс и драйверы..
возможно на местном фтп они есть или в сети

напрямую к железу HPS можно обратиться примерно так (прописав адреса HPS и имея права на доступ)
Код
if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1)
{
printf("Cannot open /dev/mem.\n");
exit(EXIT_FAILURE);
}
printf("/dev/mem opened.\n");
mapped_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, MAP_BASE & ~MAP_MASK);
if (mapped_base == (void *) -1)
{
printf("Memory mapping error.\n");
exit(EXIT_FAILURE);
}
mapped_base+=(MAP_BASE & MAP_MASK);
printf("Target address mapped 0x%08x-->0x%08x\n",(int) MAP_BASE,(int)mapped_base);
// -----------------------------------------------------------------------
printf("GPIOH_DIR=%08X\n", GPIOH_DIR);

но это чисто почитать/пописать в регистры, задействовать, например, прерывания или DMA уже не получится - такие вещи делают через драйвер..
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 17:03
Рейтинг@Mail.ru


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