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

/*
 * 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?? 不过其他的文件也没有,估计是头文件的问题把
// 原来是 设备的名字搞错了,真蛋疼,哈哈

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值