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






Reply via email to