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

 
 
> Как зажечь светик на mpc8323e-rdb
Славка
сообщение Apr 8 2010, 09:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Есть у меня сабжевый кит с линукс на борту. На нем есть 3 светика r y b подключенные к портам GPIO 416,417,418...
Ясен пень нужно на эти порты записать 0, и они зажгуться... начал с поиска как пользоваться GPIO...
http://www.mjmwired.net/kernel/Documentation/gpio.txt
посмотрел в /dev/ и не нашел модуля gpio... попробовал ~modprobe gpio результат FATAL: Module gpio not found.
есть ли другой способ их зажечь?? если нет, то как поставить этот модуль... хотя бы ссылку где взять
и как ставятся модули в линукс...
линукс собирался в Ltib с диска к киту...
Linux version 2.6.20.6 (r43496@ont06-sps-ultra.am.freescale.net) (gcc version 4.0.2 20060628 (Wasabi))

Сообщение отредактировал Славка - Apr 8 2010, 09:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
cpl
сообщение Apr 8 2010, 10:00
Сообщение #2


Местный
***

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



Цитата(Славка @ Apr 8 2010, 12:15) *
Есть у меня сабжевый кит с линукс на борту. На нем есть 3 светика r y b подключенные к портам GPIO 416,417,418...
Ясен пень нужно на эти порты записать 0, и они зажгуться... начал с поиска как пользоваться GPIO...
http://www.mjmwired.net/kernel/Documentation/gpio.txt
посмотрел в /dev/ и не нашел модуля gpio... попробовал ~modprobe gpio результат FATAL: Module gpio not found.
есть ли другой способ их зажечь?? если нет, то как поставить этот модуль... хотя бы ссылку где взять
и как ставятся модули в линукс...
линукс собирался в Ltib с диска к киту...
Linux version 2.6.20.6 (r43496@ont06-sps-ultra.am.freescale.net) (gcc version 4.0.2 20060628 (Wasabi))


попробуйте поискать в ядре gpio char interface:
(для uclinux):
device drivers->charaster devices->simple gpio char interface
далее пересобрать ядро.
Go to the top of the page
 
+Quote Post
Славка
сообщение Apr 8 2010, 10:36
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



У меня не ucLinux sad.gif
нет там нигде такого... есть в кросстулах две библиотеки ioctl.h и ite_gpio.h...
чо это такое до сих пор вдуплить не могу sad.gif но явно в них над ковыряца...
Чо ж так трудно то светик зажечь в Линуксе? smile.gif
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 8 2010, 14:31
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Славка @ Apr 8 2010, 14:51) *
Чо ж так трудно то светик зажечь в Линуксе? smile.gif

Возьмите примеры от другого процессора и посмотрите как делается (несколько способов). Этот вопрос неоднократно обсуждался для AT91SAM926x в разных местах и на разных форумах.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Славка
сообщение Apr 8 2010, 16:48
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(mdmitry @ Apr 8 2010, 18:46) *
Возьмите примеры от другого процессора и посмотрите как делается (несколько способов). Этот вопрос неоднократно обсуждался для AT91SAM926x в разных местах и на разных форумах.

Вот именно что у других процессоров есть либо драйвер, либо функции управления портами в BSP. А у этого не нашел таких. У этого проца GPIO привязан к памяти. Чтоб что то изменить надо обращаться непосредсвтенно в область памяти... Но как то это через попу получается... Пока внятного примера для этого проца не нашел.
Go to the top of the page
 
+Quote Post
Славка
сообщение Apr 9 2010, 09:40
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>

#define PIO_BASE 0x0x00001400

volatile unsigned int *CPDATD; //PortD data register
volatile unsigned int *CPDIR2D; //PortD datadirection2 register

int main (void)
{
//long delay=128000, delay2=100;
unsigned char *gpio;
int fd;
fd = open("/dev/mem", O_RDWR);
if (fd < 0){
printf("Failed to open /dev/mem");
return fd;
}
gpio = mmap(0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, PIO_BASE);

CPDATD = (unsigned int *)(gpio + 0x4C); //data
CPDIR2D = (unsigned int *)(gpio + 0x54);

*CPDIR2D |= 0x02;//set output
*CPDATD ^= (1 << 16);// turn ON Red LED (port D16)

return 0;
}

Вот такую програмку накатал...В даташите на mpc8323e есть адресс:
0x00_1400–0x00_17FF QUICC Engine parallel I/O ports 168 bytes 1 Kbyte

Вот только запускаю и выдает Segmentation fault... причем ругается когда я записываю что то в память...
*CPDIR2D |= 0x02;//set output
*CPDATD ^= (1 << 16);// turn ON Red LED (port D16)
На эти две строчки... Есть смутное сомнение, что адресс из даташита не имеет никакого отношения к памяти линукса...
Она распределяет как ей удобней... в исходниках кернела не нашел адресса для I/O... такое ощущение что в этой сборке зажечь светик тупо невозможно sad.gif

Сообщение отредактировал Славка - Apr 9 2010, 09:44
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 9 2010, 12:50
Сообщение #7


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Посмотрите как реализовано для других архитектур и попробуйте сделать по аналогии. (Исходники ядра).
bb-offtopic.gif На форуме кросс-постинг наказуем. Выберите тему.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:58
Рейтинг@Mail.ru


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