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