From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Wed 22 Sep 2004 - 14:11:03 EEST
Selamlar..
> > Selamlar
>
> Selam,
>
>
> > Embedded bir sistemde LCD nin enable register ni set etmek
> > istiyorum. Normalde bu ii user spacede aadaki =C3
> > =A7arlar
> > kullanarak yapyorum.
>
> Bu soru önceden de sorulmuştu sanırım ama başka şekilde. 2.6 kernel içinde
> gerekli olan led_start define edilmiş vaziyette kullanabilirsin arm için.
>
> veya
>
> 2.6 kerneldan seninkine uyarlarsak
>
> #define GPIO_GPIO14 (0x00000001 << (14))
> #define GPDR __REG(0x90040004)
>
> #define LED_STATE_ENABLED 1
>
> static unsigned int led_state;
> static unsigned int hw_led_state;
>
> #define LED_23 GPIO_GPIO23
> #define LED_MASK (LED_23)
>
> GPDR |= LED_23;
> hw_led_state = LED_MASK;
> led_state = LED_STATE_ENABLED;
>
> gerisini de vs vs istediğin gibi düzenlersin.
Gayet makul yontemler..
ARM icin phys_to_virt(physical_address) olayi vardi diye hatirliyorum.
Generic olarak bakarsak, bu durumda:
gpio_start = phys_to_virt(GPIO_GPDR_OFFSET);
/* Elbet, map vs. ile birlikte tam offset adresi olacak */
gpio_start[GPIO_LED_VEYA_HERNEYSE] = 1;
Seklinde, dogrudan erisim imkani mumkun. Bu da pek tavsiye edilen bir
yontem degil :(
MTRR uzerinden erisim dusunmek daha iyi olabilir, eger mumkunse. Mumkun
olup olmadigi mimari (SA1110 ?) gibi bir takim kriterlere bagli.
ARM Ozelinde bakarsak:
Genel kaide olarak ARM uzerinde GPIO_GPIO(#) basta olmak uzere, GPIO
erisimini duzenleyen seyler mevcut. Mesela Assabet icn _LEDS, GPIO_RADIO
vs. bir suru tanim hazir mevcut. Bunlari kullanmak daha iyi olacaktir
saniyorum..
Saygi ve sevgiler..