🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
8 messages
8 total messages Started by elonica.pl Fri, 22 Jul 2011 14:44
Sterownik I2C
#72264
Author: elonica.pl
Date: Fri, 22 Jul 2011 14:44
21 lines
2003 bytes
Witam,

Na poczatek pytam, czy ktos na linux.programowanie zna tematy
sterownikow w kernelu. Ewentualnie czy znacie inna aktywna grupe (pol,
ang) gdzie mozna zadawac pytania w tej dziedzinie.

Przymierzam sie do napisania wlasnego sterownika dla IIC. SDK dla SoC
na ktorym pracuje udostepnia tylko wlasny sterownik. Nie jest on
kompatybilny z warstawmi linuxa. Nie moge do niego podpiac np.
strownika RTC. Przegladajac kod doszedlem do wniosku, ze bede musial
stworzyc wlasny plik w katalogu busses i kiedy dopasuje interfejsy
wszystko powinno dalej dzialac.

Wiecie moze na ktorym sterowniku najlepiej bazowac ? Do obslugi I2C
mam ~9 32-bitowych rejestrow i pewnie wystarczy je dobrze wkomponowac
w kod.

i2c-ibm_iic.c wydaje mi sie dosc przejrzysty.

Pozdrawiam
Bartlomiej Grzeskowiak
Re: Sterownik I2C
#72265
Author: Krzysztof Halasa
Date: Fri, 22 Jul 2011 16:56
18 lines
1490 bytes
"elonica.pl" <bartlomiej.grzeskowiak@gmail.com> writes:

> Przymierzam sie do napisania wlasnego sterownika dla IIC. SDK dla SoC
> na ktorym pracuje udostepnia tylko wlasny sterownik. Nie jest on
> kompatybilny z warstawmi linuxa. Nie moge do niego podpiac np.
> strownika RTC. Przegladajac kod doszedlem do wniosku, ze bede musial
> stworzyc wlasny plik w katalogu busses i kiedy dopasuje interfejsy
> wszystko powinno dalej dzialac.
>
> Wiecie moze na ktorym sterowniku najlepiej bazowac ? Do obslugi I2C
> mam ~9 32-bitowych rejestrow i pewnie wystarczy je dobrze wkomponowac
> w kod.
>
> i2c-ibm_iic.c wydaje mi sie dosc przejrzysty.

To chyba nie ma zadnego problemu?
-- 
Krzysztof Halasa
Re: Sterownik I2C
#72266
Author: elonica.pl
Date: Fri, 22 Jul 2011 21:05
5 lines
1480 bytes
Pytam, czy macie jakieś doświadczenie z takimi sterownikami.
Może obrałem złą drogę, Czeka mnie jeszcze taka sama przeprawa z SPI i
USB gadget.

Wszelkie informacje będą mi pomocne.
Re: Sterownik I2C
#72267
Author: Krzysztof Halasa
Date: Sat, 23 Jul 2011 13:21
14 lines
1351 bytes
"elonica.pl" <bartlomiej.grzeskowiak@gmail.com> writes:

> Pytam, czy macie jakieś doświadczenie z takimi sterownikami.
> Może obrałem złą drogę, Czeka mnie jeszcze taka sama przeprawa z SPI i
> USB gadget.
>
> Wszelkie informacje będą mi pomocne.

Latwiej odpowiedziec raczej na konkretne pytanie, w rodzaju "XXX mi nie
dziala" itp.
Jasne jest chyba ze wzorowanie sie na istniejacym kodzie to dobre
(jedyne?) rozwiazanie.
-- 
Krzysztof Halasa
Re: Sterownik I2C
#72268
Author: elonica.pl
Date: Wed, 10 Aug 2011 16:03
28 lines
2165 bytes
Witam,

OK. Jeśli moglibyście mnie trochę naprowadzić co nie działa.
Potrzebuje uruchomić RTC (pcf8563) który jest podłączony przez I2C do
procka.

Stworzyłem prosty moduł sterownika i2c-rt3352. Jak na razie niewiele
sie w nim dzieje, ale chciałbym dotrzeć do miejsca w którym wywołanie
hwclock będzie wysyłało do niego ioctl-e. Ładuje po kolei:
insmod i2c-core
insmod i2c-rt3352
insmod rtc-pcf8563
insmod rtc-dev

Po zaladowaniu tego ostatniego mam:
#cat /proc/devices
253 rtc

Dalej tworze noda:
#mknod /dev/rtc c 253 0
#ls -l /dev/rtc
crw-r--r-- 1 0 0 253, 0 /dev/rtc

Jednak w efekcie nadal dostaje:
#cat /dev/rtc
can't open: no such device or address
#hwclock
hwclock:can't open /dev/rtc
Re: Sterownik I2C
#72269
Author: Krzysztof Halasa
Date: Wed, 10 Aug 2011 20:06
39 lines
2176 bytes
"elonica.pl" <bartlomiej.grzeskowiak@gmail.com> writes:

> OK. Jeśli moglibyście mnie trochę naprowadzić co nie działa.
> Potrzebuje uruchomić RTC (pcf8563) który jest podłączony przez I2C do
> procka.
>
> Stworzyłem prosty moduł sterownika i2c-rt3352. Jak na razie niewiele
> sie w nim dzieje, ale chciałbym dotrzeć do miejsca w którym wywołanie
> hwclock będzie wysyłało do niego ioctl-e. Ładuje po kolei:
> insmod i2c-core
> insmod i2c-rt3352

Rozumiem ze to jest driver "adaptera i2c".

> insmod rtc-pcf8563
> insmod rtc-dev
>
> Po zaladowaniu tego ostatniego mam:
> #cat /proc/devices
> 253 rtc
>
> Dalej tworze noda:
> #mknod /dev/rtc c 253 0
> #ls -l /dev/rtc
> crw-r--r-- 1 0 0 253, 0 /dev/rtc

No tak, ale to nie oznacza, ze driver PCFa wykryl i zarejestrowal
istniejace urzadzenie. Najprosciej dopisac kilka

	printk(KERN_DEBUG "%s[%u]\n", __FUNCTION__, __LINE__);

np. w pcf8563_probe(), bedzie wiadomo w ktorym miejscu cos sie nie
udalo.

Tak w ogole rtc_device_register() tworzy pliki urzadzen w /dev (w /sys,
a na ich podstawie udev tworzy pliki w /dev), wiec wszelkie takie mknody
sa zbedne.
-- 
Krzysztof Halasa
Re: Sterownik I2C
#72270
Author: elonica.pl
Date: Thu, 18 Aug 2011 08:47
18 lines
2216 bytes
Tak, to jest driver adapreta i2c. Wyglada, ze u mnie
rtc_device_register() nie tworzy pliku automatycznie. To jest dosc
stary kernel - 2.6.21.

Ok. Zaczelo dzialac po przeanalizowaniu kolejnych wywolan z
printk(KERN_DEBUG "%s[%u]\n", __FUNCTION__, __LINE__);.

Zeby funkcja probe zaczela szukac kosci RTC musialem w rtc-pcf8563.c
dodac ares kosci (0xa2):
/* Addresses to scan: none
 * This chip cannot be reliably autodetected. An empty eeprom
 * located at 0x51 will pass the validation routine due to
 * the way the registers are implemented.
 */
static unsigned short normal_i2c[] = { 0xa2, I2C_CLIENT_END };

Pozdrawiam
Bartlomiej Grzeskowiak
Re: Sterownik I2C
#72271
Author: Krzysztof Halasa
Date: Fri, 19 Aug 2011 22:28
23 lines
2037 bytes
"elonica.pl" <bartlomiej.grzeskowiak@gmail.com> writes:

> Tak, to jest driver adapreta i2c. Wyglada, ze u mnie
> rtc_device_register() nie tworzy pliku automatycznie. To jest dosc
> stary kernel - 2.6.21.

Rozwazylbym upgrade do ostatniej. Zreszta tu nie ma wiele do rozwazania,
jesli system nie jest jakos ekstremalnie mocno zmodyfikowany to
oplacalnosc jest oczywista.

> Zeby funkcja probe zaczela szukac kosci RTC musialem w rtc-pcf8563.c
> dodac ares kosci (0xa2):
> /* Addresses to scan: none
>  * This chip cannot be reliably autodetected. An empty eeprom
>  * located at 0x51 will pass the validation routine due to
>  * the way the registers are implemented.
>  */
> static unsigned short normal_i2c[] = { 0xa2, I2C_CLIENT_END };

Zdaje sie ze lepszym pomyslem jest podanie tego jako parametrow kernela
(modulu), z tym ze jak to dokladnie wyglada to nie pamietam.
-- 
Krzysztof Halasa
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads