code of blink led

Sean McNeil sean at mcneil.com
Thu Jun 5 20:35:18 CEST 2008


Oops! Minor correction. I write "timer" to 
/sys/class/leds/gta02-aux:red/trigger

Cheers,
Sean

Sean McNeil wrote:
> Hi,
>
> I'm not sure why you want to reinvent/recode the startup. Usually one 
> just uses ld or gcc (which ends up calling ld) with a program and lets 
> it add in the crt*.o that it determines you need. Then your main() 
> gets run without any problem.
>
> Also, when you are accessing hardware in an application, you usually 
> don't go into the harware registers but you use an abstraction layer. 
> For the LEDs, this would be accessing /sys/class/leds/*.
>
> Here is an example of how I use the LEDs...
>
> 1) put into trigger mode so I can blink them: write "trigger" to 
> /sys/class/leds/gta02-aux:red/trigger
> 2) write the amount of time off to 
> /sys/class/leds/gta02-aux:red/delay_off
> 3) write the amount of time on to /sys/class/leds/gta02-aux:red/delay_on
>
> On the GTA02, there are 3 LEDs. They are behind the buttons. The red 
> LED is behind the aux button on the upper left of the device. The Blue 
> and Amber are under the power button. You can essentially make 3 
> colors under the power button: Blue, Amber, or Purple (both on).
>
> Once you have your program, you can either run it directly over an nfs 
> mount to your host computer from the phone, copy onto the phone with 
> ssh, ftp, or some other mechanism, put on an sdcard, or some other 
> method depending on your resources and needs.
>
> Cheers,
> Sean
>
> xiangfu wrote:
>> Hi
>> I write some code. but i don't know how to download it to GTA02
>> and how to run it?
>> another question :
>>    where is the GTA02's LED? :-)
>>    what is the best TEXT_BASE value
>>
>>
>> ::::::::::::::
>> led.c
>> ::::::::::::::
>> extern void delay(int time);
>> #define GPBCON        (*(volatile unsigned *)0x56000010)
>> #define GPBDAT        (*(volatile unsigned *)0x56000014)
>> #define GPBUP        (*(volatile unsigned *)0x56000018)  #define    
>> LED3_ON()    (GPBDAT &= ~(0x1)) #define    LED4_ON()    (GPBDAT &= 
>> ~(0x2))  #define    LED3_OFF()   (GPBDAT |= (0x1))
>> #define    LED4_OFF()   (GPBDAT |= (0x2))
>> void main()
>> {
>>    GPBCON = 0x5;
>>    GPBUP = 0xffff;
>>    while(1)
>>    {
>>    LED3_ON();
>>    delay(0xfffff);
>>    LED4_ON();
>>    delay(0xfffff);
>>    LED3_OFF() ;
>>    delay(0xfffff);
>>    LED4_OFF();
>>    delay(0xfffff);     }
>> }
>> ::::::::::::::
>> led.s
>> ::::::::::::::
>> .text
>> .global _start
>>    ldr sp,=1024*4
>> .extern main
>>    bl main
>> .global delay
>> delay:
>>    sub   r0,r0,#1
>>    cmp   r0,#0x0
>>    bne   delay
>>    mov   pc,lr
>> .end
>>   ::::::::::::::
>> Makefile
>> ::::::::::::::
>> CROSS_COMPILE=arm-angstrom-linux-gnueabi-
>> TEXT_BASE=0x0000000
>> led_on: led.s led.c
>>    $(CROSS_COMPILE)gcc -g -c -o led.o led.s
>>    $(CROSS_COMPILE)gcc -g -c -o led_on.o led.c
>>    $(CROSS_COMPILE)ld -Ttext $(TEXT_BASE) -g led.o led_on.o  -o 
>> led_on_c.o
>>    $(CROSS_COMPILE)objcopy -O binary -S led_on_c.o led_on
>>
>> clean:
>>    rm -f *.o
>>    rm -f led_on
>>
>
>
>





More information about the openmoko-kernel mailing list