教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx

上传人:b****5 文档编号:30741466 上传时间:2023-08-20 格式:DOCX 页数:24 大小:4.10MB
下载 相关 举报
教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx_第1页
第1页 / 共24页
教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx_第2页
第2页 / 共24页
教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx_第3页
第3页 / 共24页
教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx_第4页
第4页 / 共24页
教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx

《教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx》由会员分享,可在线阅读,更多相关《教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx(24页珍藏版)》请在冰豆网上搜索。

教程自定义 GPIO 应用程序Ralink RT5350 SDK.docx

教程自定义GPIO应用程序RalinkRT5350SDK

RalinkRT5350:

添加自定义GPIO应用程序

开发环境:

2

1.编写LED应用程序,并修改相关配置文件3

1.1新建led目录3

1.2新建led.c3

1.3编写led.c3

1.4新建led目录下Makefile6

1.5修改led上层目录下的Makefile6

1.6将IO口的模式配置为GPIO模式7

2.添加内核支持,并编译得到应用程序led9

2.1修改配置文件config.in9

2.2添加内核对LED的支持,配置menuconfig10

2.3编译内核,得到应用程序led12

3.烧写内核文件(root_uImage)到开发板12

3.1首先将USB串口链接到电脑13

3.2打开超级终端,并配置13

3.3配置电脑的网卡14

3.4打开tftpd32,并配置15

3.5连接网线15

3.6将内核下载到开发板16

4.验证应用程序led18

4.1查看/bin目录下是否存在应用程序led18

4.2使用led,点亮和熄灭LED灯18

4.3验证GPIO_1的电平的变化18

附录:

开发板(ZQ-WIFI-130)电路图19

PillarPeng20

2015.10.1120

开发环境:

Window:

WIN7旗舰版

Linux:

Fedora6

雷凌原厂开发包:

Ralink_ApSoC_SDK_4000_20120222.tar

开发板:

主控芯片MIPS=雷凌RalinkRT5350F具体如下图。

本文目的:

编写新的GPIO应用程序,然后添加内核支持,并且加入到根文件系统,最后烧写进开发板上使用。

RalinkSDK中自带的GPIO应用程序的弊端:

本身SDK自带的GPIO应用程序根本不适用,它的读写功能都是同时改变所有的IO口,使用GPIO写时,会死机,重新启动系统。

本文写的应用程序是控制RT5350的GPIO_1的高低电平,由于本人使用GPIO_1来控制LED,所以应用程序名改为LED。

1.编写LED应用程序(根据原有的GPIO应用程序而得),并修改相关配置文件

1.1新建led目录,在/root/RT288x_SDK/source/user/rt2880_app目录下

#cd/root/RT288x_SDK/source/user/rt2880_app

#mkdirled

1.2进入led目录,接着新建led.c

#cd./led

#viled.c

1.3编写led.c内容,内容如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include"ralink_gpio.h"

#defineGPIO_DEV"/dev/gpio"

voidled_on(void)

{

intfd,req,arg;

//opendevicegpio

fd=open(GPIO_DEV,O_RDONLY);

if(fd<0)

{

perror(GPIO_DEV);

return-1;

}

//setgpio_1directiontooutput

req=RALINK_GPIO_SET_DIR_OUT;

arg=0x00000002;

if(ioctl(fd,req,arg)<0)

{

perror("ioctl");

close(fd);

return-1;

}

//setgpio_1;turnonled

req=RALINK_GPIO_SET;

arg=0x00000002;

if(ioctl(fd,req,arg)<0)

{

perror("ioctl");

close(fd);

return-1;

}

close(fd);

return0;

}

voidled_off(void)

{

intfd,req,arg;

//opendevicegpio

fd=open(GPIO_DEV,O_RDONLY);

if(fd<0)

{

perror(GPIO_DEV);

return-1;

}

//setgpio_1directiontooutput

req=RALINK_GPIO_SET_DIR_OUT;

arg=0x00000002;

if(ioctl(fd,req,arg)<0)

{

perror("ioctl");

close(fd);

return-1;

}

//cleargpio_1;turnoffled

req=RALINK_GPIO_CLEAR;

arg=0x00000002;

if(ioctl(fd,req,arg)<0)

{

perror("ioctl");

close(fd);

return-1;

}

close(fd);

return0;

}

voidusage(char*cmd)

{

printf("Usage:

cleargpio_1:

%s0\n",cmd);

printf("setgpio_1:

%s1\n",cmd);

exit(0);

}

intmain(intargc,char*argv[])

{

//如果参数小于两个,则打印该应用程序的用法

if(argc<2)

usage(argv[0]);

switch(argv[1][0])

{

case'0':

//输入命令:

#led0;则gpio_1=0,即是ledoff

led_off();

break;

case'1':

//输入命令:

#led1;则gpio_1=1,即是ledon

led_on();

break;

default:

usage(argv[0]);

}

return0;

}

/****************************led.c已完*********************************/

1.4在led目录下,新建Makefile

#viMakefile

Makefile文件的内容如下:

(参考gpio目录下的Makefile)

EXEC=led

CFLAGS+=-I$(ROOTDIR)/$(LINUXDIR)/drivers/char

all:

$(EXEC)

$(EXEC):

$(EXEC).c

$(CC)$(CFLAGS)$(LDFLAGS)-o$@$@.c$(LDLIBS)

romfs:

$(ROMFSINST)/bin/$(EXEC)

clean:

-rm-f$(EXEC)*.elf*.gdb*.o

###########################LEDMakefile已完################################

1.5修改led上层目录(/root/RT288x_SDK/source/user/rt2880_app)下的Makefile

#cd/root/RT288x_SDK/source/user/rt2880_app

#viMakfile

在Makefile文件的第一行添加如下代码:

ra_dir_$(CONFIG_RALINKAPP_LED)+=led

修改完后,如下图所示:

1.6将IO口的模式配置为GPIO模式

1.6.1修改文件ralink_gpio.h

1)打开文件:

#vi/root/RT288x_SDK/source/linux-2.6.21.x/drivers/char/ralink_gpio.h

2)找到下面这行内容:

#defineRALINK_GPIOMODE_DFT(RALINK_GPIOMODEUARTF)

并将这行改为如下内容:

#defineRALINK_GPIOMODE_DFT(RALINK_GPIOMODEUARTF|1)

注:

这行大概位于367行,也可以使用vi的查找命令(/DFT)。

1.6.2RT5350的IO口有几种模式:

一种是GPIO模式,另一种是正常模式(即是复用端口模式)。

RT5350的数据手册中的1.3PinSharingScheme,中有说明,GPIO口与复用功能引脚的对应关系,具体如下图所示:

本文所用的GPIO_1是I2C的复用引脚,而系统默认的正常模式(复用端口模式),所以需要将GPIO_1更改为GPIO模式。

而GPIO的模式由寄存器GPIOMODE控制,GPIOMODE寄存器介绍,如下图所示:

2.添加内核支持,并编译得到应用程序led

2.1修改配置文件config.in

Config.in文件的位置:

/root/RT288x_SDK/source/config

#cd/root/RT288x_SDK/source/config

#viconfig.in

在config.in中找到下面这行:

bool'GPIO'CONFIG_RALINKAPP_GPIO,

然后在其上一行或者下一行,添加以下代码:

bool'LED'CONFIG_RALINKAPP_LED

修改完成后,保存退出(ESC:

wq),结果如图所示:

2.2添加内核对LED的支持,配置menuconfig

2.2.1回到source目录

#cd/root/RT288x_SDK/source

2.2.2进入配置界面,进行配置

#makemenuconfig

出现界面,如下图所示:

选择Kernel/Library/DefaultsSelection--->,进入下一个界面,如下图所示:

选择CustomizeVendor/UserSettings(NEW),然后退出,再退出,保存配置。

接着出现以下配置界面:

选择RalinkProprietaryApplication--->,进入下一个界面,如下图所示:

使用空格,选择“[*]LED(NEW)”,然后退出,再退出,保存配置。

2.3编译内核,得到应用程序led,其位置就在led的目录下

2.3.1回到source目录然后编译内核

#cd/root/RT288x_SDK/source/

#makedep

#make

几分钟后,便可编译完成。

2.3.2编译完成后,查看是否生成应用程序led,查看得到内核文件。

1)查看是否有生成应用程序led

#ls/root/RT288x_SDK/source/user/rt2880_app/led/led

2)查看是否将应用程序加入到根文件系统(ROMFS)的/bin目录中

#ls/root/RT288x_SDK/source/romfs/bin/led

3)查看内核文件:

root_uImage

#ls/root/RT288x_SDK/source/images

3.烧写内核文件(root_uImage)到开发板

使用到的工具如下:

1)超级终端

2)Tftpd32

3)串口(这里使用的USB转串口)

4)网线

以下是步骤:

3.1首先将USB串口链接到电脑

打开“设备管理器”,查看串口是否和电脑链接正常,正常则如下图所示:

3.2打开超级终端,并配置

3.2.1打开后输入新建“连接”的名称,然后确定,如图所示:

3.2.2选择你使用的串口,这里是COM4,然后确定。

3.2.3配置串口属性,一定注意波特率为:

57600;和数据流控制为:

无。

如下图所示:

3.2.4应用,确定,即可,超级终端配置完成。

3.2.5连接串口,注意开发板有两个串口,要使用串口2才可以,如下图所示:

3.3配置电脑的网卡,使用静态IP:

10.10.10.3(与开发板的Uboot时的IP地址10.10.10.123,处于同一网关即可),具体配置如下图所示:

3.4打开tftpd32,并配置,如下图所示:

图中1所示:

选择内核所在的文件夹,点击“Browe”可以选择。

图中2所示:

tftp服务器即是电脑。

3.5连接网线

注意:

网线一端连接刚刚配置的网卡上,另一端连接开发板的“LAN”口,如下图所示:

3.6将内核下载到开发板

3.6.1给开发板上电,马上对着超级终端窗口,不停的按数字键“2”,直到出现以下文字,如下图所示:

3.6.2

1)接着键入“y”

2)InputdeviceIP(10.10.10.123)==:

10.10.10.123,回车;这个是开发板的IP

3)InputserverIP(10.10.10.3)==:

10.10.10.3,再回车;这个是电脑的IP

4)InputLinuxKernelfilename()==:

root_uImage,输入内核名root_uImage,然后回车

具体如下图所示:

3.7.3看到下图内容说明所有的连接都正确,正在将内核文件下载到开发板。

3.7.4看到下面的内容说明开发板的系统已经启动完成。

4.验证应用程序led

4.1查看/bin目录下是否存在应用程序led

在超级终端里输入以下命令:

#ls/bin/led

结果如下图所示:

4.2使用led,点亮和熄灭LED灯

在超级终端里输入以下命令:

#led1;GPIO_1输出高电平(点亮LED)

#led0;GPIO_1输出低电平(熄灭LED)

4.3验证GPIO_1的电平的变化

4.3.1找到GPIO_1测量电平即可。

4.3.2在上面已经说过,LED灯是被GPIO_1控制的,那么GPIO_1在开发板的哪个位置呢?

这个开发板的GPIO_1的位置如图所示:

撒花,完结!

附录:

开发板(ZQ-WIFI-130)电路图

最后附上自己用万用表炒出来的关于本开发板的部分电路图,电路图是按照开发板的布局。

下面的图片是属于矢量图,可以放大看得。

PillarPeng

2015.10.11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1