1、教程自定义 GPIO 应用程序Ralink RT5350 SDKRalink RT5350:添加自定义GPIO应用程序开发环境: 21编写LED应用程序,并修改相关配置文件 31.1 新建led目录 31.2新建led.c 31.3 编写led.c 31.4新建led目录下Makefile 61.5 修改led上层目录下的Makefile 61.6 将IO口的模式配置为GPIO模式 72. 添加内核支持,并编译得到应用程序led 92.1修改配置文件config.in 92.2 添加内核对LED的支持,配置menuconfig 102.3 编译内核,得到应用程序led 123. 烧写内核文件(
2、root_uImage)到开发板 123.1 首先将USB串口链接到电脑 133.2 打开超级终端,并配置 133.3 配置电脑的网卡 143.4 打开tftpd32,并配置 153.5 连接网线 153.6 将内核下载到开发板 164. 验证应用程序led 184.1 查看/bin目录下是否存在应用程序led 184.2 使用led,点亮和熄灭LED灯 184.3 验证GPIO_1的电平的变化 18附录:开发板(ZQ-WIFI-130)电路图 19Pillar Peng 202015.10.11 20开发环境:Window: WIN7 旗舰版Linux: Fedora6雷凌原厂开发包:Ral
3、ink_ApSoC_SDK_4000_20120222.tar开发板:主控芯片MIPS = 雷凌Ralink RT5350F具体如下图。本文目的:编写新的GPIO应用程序,然后添加内核支持,并且加入到根文件系统,最后烧写进开发板上使用。Ralink SDK中自带的GPIO应用程序的弊端:本身SDK自带的GPIO应用程序根本不适用,它的读写功能都是同时改变所有的IO口,使用GPIO写时,会死机,重新启动系统。本文写的应用程序是控制RT5350的GPIO_1的高低电平,由于本人使用GPIO_1来控制LED,所以应用程序名改为LED。1编写LED应用程序(根据原有的GPIO应用程序而得),并修改相关
4、配置文件1.1 新建led目录,在/root/RT288x_SDK/source/user/rt2880_app目录下#cd /root/RT288x_SDK/source/user/rt2880_app#mkdirled1.2进入led目录,接着新建led.c#cd ./led#viled.c1.3 编写led.c内容,内容如下:#include #include #include #include #include #include #include #include #include ralink_gpio.h#define GPIO_DEV /dev/gpiovoidled_on(vo
5、id) intfd, req, arg; /open device gpio fd = open(GPIO_DEV, O_RDONLY); if (fd 0) perror(GPIO_DEV); return -1; /set gpio_1 direction to output req = RALINK_GPIO_SET_DIR_OUT; arg = 0x00000002; if (ioctl(fd, req, arg) 0) perror(ioctl); close(fd); return -1; /set gpio_1 ; turn on led req = RALINK_GPIO_SE
6、T; arg = 0x00000002; if (ioctl(fd, req, arg) 0) perror(ioctl); close(fd); return -1; close(fd); return 0;voidled_off(void) intfd, req, arg; /open device gpio fd = open(GPIO_DEV, O_RDONLY); if (fd 0) perror(GPIO_DEV); return -1; /set gpio_1 direction to output req = RALINK_GPIO_SET_DIR_OUT; arg = 0x0
7、0000002; if (ioctl(fd, req, arg) 0) perror(ioctl); close(fd); return -1; /clear gpio_1 ; turn off led req = RALINK_GPIO_CLEAR; arg = 0x00000002; if (ioctl(fd, req, arg) 0) perror(ioctl); close(fd); return -1; close(fd); return 0;void usage(char *cmd) printf(Usage: clear gpio_1: %s 0 n, cmd); printf(
8、 set gpio_1: %s 1n, cmd); exit(0);int main(intargc, char *argv) /如果参数小于两个,则打印该应用程序的用法 if (argc,进入下一个界面,如下图所示:选择Customize Vendor/User Settings (NEW),然后退出,再退出,保存配置。接着出现以下配置界面:选择Ralink Proprietary Application -,进入下一个界面,如下图所示:使用空格,选择“* LED(NEW)”,然后退出,再退出,保存配置。2.3 编译内核,得到应用程序led,其位置就在led的目录下2.3.1 回到sourc
9、e目录然后编译内核#cd /root/RT288x_SDK/source/#make dep#make 几分钟后,便可编译完成。2.3.2编译完成后,查看是否生成应用程序led,查看得到内核文件。1) 查看是否有生成应用程序led#ls /root/RT288x_SDK/source/user/rt2880_app/led/led2) 查看是否将应用程序加入到根文件系统(ROMFS)的/bin目录中#ls /root/RT288x_SDK/source/romfs/bin/led3) 查看内核文件:root_uImage#ls /root/RT288x_SDK/source/images3.
10、烧写内核文件(root_uImage)到开发板使用到的工具如下:1) 超级终端2) Tftpd323) 串口(这里使用的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才可以
11、,如下图所示: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.21) 接着键入“y”2) Input device
12、 IP (10.10.10.123) =:10.10.10.123,回车;这个是开发板的IP3) Input server IP (10.10.10.3) =:10.10.10.3,再回车;这个是电脑的IP4) Input Linux Kernel filename () =:root_uImage,输入内核名root_uImage,然后回车具体如下图所示:3.7.3看到下图内容说明所有的连接都正确,正在将内核文件下载到开发板。3.7.4看到下面的内容说明开发板的系统已经启动完成。4. 验证应用程序led4.1 查看/bin目录下是否存在应用程序led在超级终端里输入以下命令:#ls /bin
13、/led结果如下图所示:4.2 使用led,点亮和熄灭LED灯在超级终端里输入以下命令:#led 1 ;GPIO_1输出高电平(点亮LED)#led 0 ;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)电路图最后附上自己用万用表炒出来的关于本开发板的部分电路图,电路图是按照开发板的布局。下面的图片是属于矢量图,可以放大看得。Pillar Peng2015.10.11
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1