在u-boot里操作led灯
来源:互联网 发布:chrome 淘宝联盟插件 编辑:程序博客网 时间:2024/05/01 04:24
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
0 0
- 在u-boot里操作led灯
- 在U-boot中添加led驱动步骤
- u-boot-2009.08在mini2440上的移植(一)---LED显示Uboot运行状况
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(点亮led灯)
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(点亮led灯)
- 08 在ZStack里的led灯控制
- cubieboard上通过U-boot点亮板载LED
- Cubieboard上使用U-boot通过定时器中断控制LED
- u-boot下运行led测试测程序
- u-boot-2014.10移植第3天----LED裸机程序
- U-BOOT-1.3.4里 添加命令
- AM335X U-BOOT 里添加开机画面
- 往 u-boot 里添加路径
- u-boot里添加timing information
- u-boot移植总结(二)LED点灯调试 和 u-boot加载地址
- u-boot在命令列中參數
- u-boot 2010.09 移植 (一)u-boot工程结构和u-boot操作概述
- U-boot操作Flash (NOR, NAND & SPI)
- JavaWeb 过滤器
- 关于@property&@synthesize使用详解
- 类型转换
- NYOJ 975 关于521
- URAL 1907. Coffee and Buns(数论推导+容斥原理)
- 在u-boot里操作led灯
- Linux内核态抢占机制分析
- 网络图片浏览器异常问题
- 最短路_HDU_4370
- 解决办法:mysql_connect()不支持请检查mysql模块是否正确加载
- 常用Linux知识
- uinavigationController和uiSrcoll以及uiPageControl的结合使用---小相册
- 基于EasyDarwin实现幼儿园监控类项目
- 天真无谐