/*
* am335x_gpio_app1.c
*
* Created on: 2014年4月7日
* Author: qhq
*/
#include <linux/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
// 头文件放在同一个文件里面就行,另外一个应该是include文件
// 我这次是要操作 GPIO1—21
#include "am335x_gpio.h"
// 我擦,桌面图标的创建方式是什么??
// main 函数里面的 两个参数是不是固定的???
int main(int argc, char **argv)
{
int fd;
// unsigned int 是32位??
unsigned int cmd;
// 下面这个数字写错了,要操作的是LED1, GPIO1——21,应该是53
cmd = SET_GPIO_VALUE_BASE + 53;
// open 这个函数应该也是在 am335x_gpio.c 里面写,实际证明是没有的
// /dev/leds 这个是什么?? 和什么有联系??
// 看来是跟 mknod /dev/leds c 231 0
// 但是上面这句话 怎么和 模块联系起来??
// 我明白了,这个句子是创建应用程序的 节点,不是直接联系模块
// 看来是open 函数的问题吧
// 好像模块里面写的是 /dev/am335x-gpio,所以下面这句话是错误的把
//fd = open("/dev/leds",0);
fd = open("/dev/am335x-gpio",0);
if(fd < 0)
printf("open leds faild\n");
// 第二个参数是 cmd , 有四部分组成,看来是需要函数生成cmd ,才行,应该是 _IOC
// am335x_gpio.h 里面定义的有幻数 MOTOR_MAGIC 'L', 需要把这个幻数添加到 cmd 里面
// 然后这个函数里面检查幻数
// 现在问题是,cmd 里面的那几位是对应的 选择GPIO口??
// ioctl 的最后一个参数是干吗的?? 设置高低电平的
ioctl(fd ,cmd, 0);
printf("test ok\n");
close(fd);
return 0;
}
// 1.OK, 先编译一下把
// 遇到一下问题
//root@qhq-virtual-machine:/home/qhq/am3359/ti-a8-linux-04.06.00.07/drivers/leds# arm-none-linux-gnueabi- -O am335x_gpio_app am335x_gpio_app.c
//arm-none-linux-gnueabi-:找不到命令
// 2.书上是 make 一下,那我先修改一下makefile文件把
// 3.提示找不到头文件,怎么可能啊
// 解决办法,把PATH 路径设置一下把
// 4. #include <am335x_gpio.h> 和 #include "am335x_gpio.h"
// 5.am335x_gpio_app.c:43:1: 错误: 程序中有游离的‘\277’
// 这句话怎么理解???
// 网上的说法是使用了中文的标点符号
// 6. 目前这个问题消失了,但是出现am335x_gpio_app.c: 在函数‘main’中:
// am335x_gpio_app.c:12:11: 错误: expected expression before ‘int’
// 看来我需要先显示行号,在行号的位置右击--show line number
// 是不是头文件的问题?
// 好像可以了??
//7.root@am335x-evm:/lib/modules/3.2.0-gfb050b4# insmod am335x_gpio.ko
//insmod: error inserting 'am335x_gpio.ko': -1 File exists
// 应该是我之前已经安装过这个模块了rmmod,确实是的
// 8. /am335x_gpio_app.o: line 1: syntax error: word unexpected (expecting ")")怎么会遇到这个问题??
// 判断一是一个括号引起的问题??
// 判断二 我应该用am-none-linux-gnueabi- 编译这个程序把?? 找不到这个命令。我先用arm-linux-gcc 试试
// 暂时不会报错了,哈哈,但是不要高兴的太早啊。
// 9. 暂时还是没有反应,但是LED 灯一个亮,一个不亮,难道是因为这个这两个灯已经用到了???
// 我打算重启一下,看/dev目录里面是否有leds.没有的,目前模块刚安装上去的时候,LED灯会发生变化的
// 10.会不会是 fd 这个参数的数据类型错误??
// 11. 会不会是open 函数出问题了? fd 小于 0?? 不过其他的文件也没有,估计是头文件的问题把
// 原来是 设备的名字搞错了,真蛋疼,哈哈