Перейти к содержанию
    

Как зажечь светик на mpc8323e-rdb

Есть у меня сабжевый кит с линукс на борту. На нем есть 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 ([email protected]) (gcc version 4.0.2 20060628 (Wasabi))

Изменено пользователем Славка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть у меня сабжевый кит с линукс на борту. На нем есть 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 ([email protected]) (gcc version 4.0.2 20060628 (Wasabi))

 

попробуйте поискать в ядре gpio char interface:

(для uclinux):

device drivers->charaster devices->simple gpio char interface

далее пересобрать ядро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня не ucLinux :(

нет там нигде такого... есть в кросстулах две библиотеки ioctl.h и ite_gpio.h...

чо это такое до сих пор вдуплить не могу :( но явно в них над ковыряца...

Чо ж так трудно то светик зажечь в Линуксе? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чо ж так трудно то светик зажечь в Линуксе? :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Вот именно что у других процессоров есть либо драйвер, либо функции управления портами в BSP. А у этого не нашел таких. У этого проца GPIO привязан к памяти. Чтоб что то изменить надо обращаться непосредсвтенно в область памяти... Но как то это через попу получается... Пока внятного примера для этого проца не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

#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... такое ощущение что в этой сборке зажечь светик тупо невозможно :(

Изменено пользователем Славка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите как реализовано для других архитектур и попробуйте сделать по аналогии. (Исходники ядра).

:bb-offtopic: На форуме кросс-постинг наказуем. Выберите тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...