Nowe posty

Autor Wątek: OpenWrt - moduł do jądra  (Przeczytany 2115 razy)

piotr232

  • Gość
OpenWrt - moduł do jądra
« dnia: 2012-04-13, 12:10:56 »
Witam Wszystkich ,
Mam taki problem : korzystam z modułu Mmnet1002 ( http://www.propox.com/products/t_232.html ) jest to moduł z ARM9 z systemem operacyjnum linuks (Open Wrt). Na jednym z pinów modułu chce wystawić sygnał i aby to zrobić trzeba ustawić rejestry ARM-a. Wykonuje to mniej więcej taki program :

#include
#include
#include
#include
#include
#include
#include

int main()
{

unsigned int pck = 1;
unsigned int mode = AT91C_PMC_CSS_SLOW_CLK | AT91C_PMC_PRES_CLK;

AT91C_BASE_PMC->PMC_SCDR = AT91C_PMC_PCK1;
AT91C_BASE_PMC->PMC_IDR = AT91C_PMC_PCK1;
AT91C_BASE_PMC->PMC_PCKR[pck] = mode; //set pclk mode
AT91C_BASE_PMC->PMC_SCER = AT91C_PMC_PCK1; //enable pclk clock

while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_PCK1RDY));

AT91C_BASE_PMC->PMC_SCDR = AT91C_PMC_PCK1;

}

Problem polega na tym że po uruchomieniu programu na module otrzymuje SEGMENTATION FAULT... Z tego co się dowiedziałem w systemie linux nie ma dostępu do sprzętu z przestrzeni użytkownika a żeby taki dostęp mieć trzeba zrobić moduł do jądra... Jest ktoś w stanie pomóc ?

pozdrawiam

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3071
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
OpenWrt - moduł do jądra
« Odpowiedź #1 dnia: 2012-04-13, 13:54:06 »
Jeżeli te piny to jakieś GPIO, to na 100% masz gotowy moduł wystawiający to GPIO jako urządzenie w /dev .
Jeżeli to (a tak to wygląda) jakiś komponent wewnętrzny (port szeregowy) to jest pewnie zarządzany własnym modułem i tam musisz popatrzeć na parametry konfiguracyjne. Nie jest wykluczone że MODE ustawić się da jako parametr przy ładowaniu tegoż modułu.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy