您的位置:首页 > 编程语言

AM3359 gpio 应用程序调试记录,驱动代码后续给出

2014-04-08 10:07 316 查看
/*

 * 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?? 不过其他的文件也没有,估计是头文件的问题把

// 原来是 设备的名字搞错了,真蛋疼,哈哈
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: