Kompilacja modułu na system wbudowany

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Takedowner
Piegowaty Guziec
Piegowaty Guziec
Posty: 21
Rejestracja: 05 paź 2008, 17:50
Płeć: Mężczyzna
Środowisko graficzne: GNOME

Kompilacja modułu na system wbudowany

Post autor: Takedowner »

Witam,
Mam problem z kompilacją modułu. Chodzi oto, że sterownik, który obsługuje połączenie USB na poziomie systemu operacyjnego w zwykłej PC wersji jest cdc_acm. Mam płytkę rozwojową z ARM9 i linuksem. W jaki sposób mogę skompilować owy sterownik, jako moduł na docelową płytkę? Dystrybucja linuksa na płytce nie posiada owego sterownika. Z góry dziękuję za odpowiedź.
Awatar użytkownika
mszubart
Sędziwy Jeż
Sędziwy Jeż
Posty: 43
Rejestracja: 14 lis 2006, 08:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: Unity
Architektura: x86

Re: Kompilacja modułu na system wbudowany

Post autor: mszubart »

Po kolei.

1. Jeśli chcesz skompilować coś bezpośrednio na ARM9 to potrzebujesz krosskompilatora (eng. crosscompiler)
(<niski brutalny growl>Uuu! Nienawidzę spolszczania nazw w informatyce...).
Na ARM pewnie będzie pasował arm-gcc (czy jakoś tak, od tego masz google).
Żeby to wgrać, potrzeba programatora na JTAG (i programu i urządzenia).

2. (zapewne o to Ci chodziło gdy użyłeś słowa moduł).
Kompilacja Linuksa / modułów jądra / aplikacji użytkowych na określoną platformę (oraz dla zainstalowanej tam dystrybucji) wymaga czegoś co zwie się toolchainem.
Prawdopodobnie do tej płytki rozwojowej będzie dołączone to oprogramowanie (może nawet z buildrootem).

Tłumaczenie tutaj wszystkiego zajęło by kilka ładnych stron, więc odsyłam Cię do TEJ serii tekstów. Są napisane od początku i wiele wyjaśniają, później musisz sam szukać.

Dobra rada jest taka, żebyś wklepał w google / wiki, słowa, które Ci pogrubiłem - to też dużo Ci pomoże.

A i tak offtopowo: Czemu upierasz się na USB? Jeśli potrzebujesz przesłać mało danych to RS232 jest super, jeśli potrzebujesz przesłać dużo danych to najlepsze jest TCP/IP. Z jednym i drugim można użyć protokołu ModBus (którego gotowych implementacji znajdziesz multum)
Takedowner
Piegowaty Guziec
Piegowaty Guziec
Posty: 21
Rejestracja: 05 paź 2008, 17:50
Płeć: Mężczyzna
Środowisko graficzne: GNOME

Re: Kompilacja modułu na system wbudowany

Post autor: Takedowner »

Witam,
Serdecznie dziękuję za zainteresowanie moim problemem. Muszę jednak Cię przeprosić, ponieważ tego nie napisałem, ale właśnie to co wysłałeś w poście, to akurat mam wszystko opanowane. Mój problem polega na tym, że na pecetowej wersji linuksa, połączenie z moim armem przez kabelek USB jest obsługiwane przez sterownik cdc_acm i pojawia się jako węzeł do tego połączenia jako /dev/ttyACM0 przez, który to nie mam żadnych problemów z komunikacją. Ja jednak potrzebuję połączyć dwa army, z tym, że ten który gra role hosta, posiada jądro 2.6.30 i ma wkompilowane na stałe niezbędne moduły cdc-acm oraz usb_serial. Problem polega na tym, że węzły do połączęń USB pojawiają się jako /dev/usbdevX.X_epXX. Nigdy nie miałem styczności z taką strukturą i przyznam się, że nie znalazłem jak dotąd w sieci porady jak wykorzystać te węzły do otwierania, czytania i pisania strumienia w języku C. Pomyślałem właśnie, że mógłbym ten sterownik sobie skompilować z wersji pecetowej do wersji na arma.

PS.1 Co do Twojego pytania, czemu upieram się cały czas przy tym USB, to wyjaśniam Ci, że jest to narzucony temat projektu do szkoły

PS.2 Chciałem jeszcze zapytać, czy nie masz jakiegoś tutoriala do flash'owania pamięci w mikrokontrolerach ? Jedyny program jaki używam, to SAM-BA, ale niestety jestem zmuszony w tym celu zawsze korzystać z Windows'a, ponieważ pod linuksem nie chce mi ona działać
Awatar użytkownika
mszubart
Sędziwy Jeż
Sędziwy Jeż
Posty: 43
Rejestracja: 14 lis 2006, 08:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: Unity
Architektura: x86

Re: Kompilacja modułu na system wbudowany

Post autor: mszubart »

Myślę, że pomysł skompilowania sterownika z PC na ARM9 jest dziwne, bo widzisz to zupełnie inne architektury i sterownik (który gada ze sprzętem) jest bardzo zależny od platformy.
Jednakże nie wykluczam, że można to zrobić (gdyby używał tylko odwołań do interfejsu USB, zaimplementowanych w jajku, to może była by szansa powodzenia). Ale to tylko teoretyzowanie.

Druga sprawa, to czy ten sterownik jest osobnym modułem (jest opcjonalny i można go pobrać gdzieś), czy jest elementem kernela (znaczy się, że jest elementem wydania i dostarczany z jajcem)?

A co do flashowania (cokolwiek to słowo nie znaczy :) )
http://danielromaniuk.com/?q=node/19

A tu jakieś narzędzia: http://www.gnuarm.com/
Takedowner
Piegowaty Guziec
Piegowaty Guziec
Posty: 21
Rejestracja: 05 paź 2008, 17:50
Płeć: Mężczyzna
Środowisko graficzne: GNOME

Re: Kompilacja modułu na system wbudowany

Post autor: Takedowner »

Witam,
Mam jedno pytanie jeszcze, sterowniki, takie jak, np. cdc-acm wymagają praw root'a do wykonania ? Ponieważ niby jest to sterownik, który kontaktuje się ze stosem hosta w celu komunikacji z urządzeniem,ale tworzy węzeł w katalogu /dev co uniemożliwia użycie tego węzła bez uprawnień root'a.

PS. Co do tego flashowania, chodziło mi poprostu o programowanie pamięci
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości