1.编辑led.c代码
#define rGPJ2CON (*(volatile unsigned long *)0xe0200280)
#define rGPJ2DAT (*(volatile unsigned long *)0xe0200284)
void Led_RunDelay(volatile int count);
int Led_RunHorse(void)
{
int i=0;
rGPJ2CON = 0x1111;
rGPJ2DAT = 0xf;
while (1)
{
rGPJ2DAT = ~(0x1<<i);
Led_RunDelay(0xb0000);
i++;
if(i==4)
{
i=0;
rGPJ2DAT = 0xf;
}
}
return 0;
}
void Led_RunDelay(volatile int count)
{
while (count--);
}
2 编译代码
#arm-linux-gcc led.c -o led //不能这样编译,因为led是跟地址没有关系,它只能在linux系统上面跑
不能在u-boot上面跑,因为这是直接放到内存上跑的
1)编译:
#arm-linux-gcc -c -nostdlib -nostdinc led.c -o led.o
2)链接
#arm-linux-ld -Ttext=0x40000000 led.o -o led.elf
3)转换
#arm-linux-objcopy -O binary -S led.elf led.bin
3. 代码的执行
1)打开tftp服务器
2)设置网络(ping通)
set serverip
set ipaddr
set gatewayip
3)下载执行
tftp 40000000 led.bin
go 40000000
优化开发平台
1) 利用makefile来管理工程代码
#vim Makefile
添加以下内容:
all:led.bin clean
led.bin:led.o
arm-linux-ld -Ttext=0x40000000 led.o -o led.elf
arm-linux-objcopy -O binary -S led.elf led.bin
led.o:led.c
arm-linux-gcc -c -nostdlib -nostdinc led.c -o led.o
clean:
rm -rf led.o led.elf
2)利用u-boot自动启动功能来下载执行
# set bootcmd tftp 40000000 led.bin \;go 40000000
# save
# re
改回bootcmd
#save
程序如果是死循环就只能关开机重启。
-------------------------------------------------------------------
注意:如果报工具出错,记得加上以下两个操作
# ln -s arm-none-linux-gnueabi-ld arm-linux-ld
# ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy
# ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump
#define rGPJ2CON (*(volatile unsigned long *)0xe0200280)
#define rGPJ2DAT (*(volatile unsigned long *)0xe0200284)
void Led_RunDelay(volatile int count);
int Led_RunHorse(void)
{
int i=0;
rGPJ2CON = 0x1111;
rGPJ2DAT = 0xf;
while (1)
{
rGPJ2DAT = ~(0x1<<i);
Led_RunDelay(0xb0000);
i++;
if(i==4)
{
i=0;
rGPJ2DAT = 0xf;
}
}
return 0;
}
void Led_RunDelay(volatile int count)
{
while (count--);
}
2 编译代码
#arm-linux-gcc led.c -o led //不能这样编译,因为led是跟地址没有关系,它只能在linux系统上面跑
不能在u-boot上面跑,因为这是直接放到内存上跑的
1)编译:
#arm-linux-gcc -c -nostdlib -nostdinc led.c -o led.o
2)链接
#arm-linux-ld -Ttext=0x40000000 led.o -o led.elf
3)转换
#arm-linux-objcopy -O binary -S led.elf led.bin
3. 代码的执行
1)打开tftp服务器
2)设置网络(ping通)
set serverip
set ipaddr
set gatewayip
3)下载执行
tftp 40000000 led.bin
go 40000000
优化开发平台
1) 利用makefile来管理工程代码
#vim Makefile
添加以下内容:
all:led.bin clean
led.bin:led.o
arm-linux-ld -Ttext=0x40000000 led.o -o led.elf
arm-linux-objcopy -O binary -S led.elf led.bin
led.o:led.c
arm-linux-gcc -c -nostdlib -nostdinc led.c -o led.o
clean:
rm -rf led.o led.elf
2)利用u-boot自动启动功能来下载执行
# set bootcmd tftp 40000000 led.bin \;go 40000000
# save
# re
改回bootcmd
#set bootcmd nand read 40000000 600000 500000 \;bootm 40000000
再检查下bootargs,如果有变就改回
#set bootargs root=/dev/mtdblock4 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs rw#save
程序如果是死循环就只能关开机重启。
-------------------------------------------------------------------
注意:如果报工具出错,记得加上以下两个操作
# ln -s arm-none-linux-gnueabi-ld arm-linux-ld
# ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy
# ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump