DM8148 开发板使用 GPIO 的问题 - TMS320DM8148 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5468|回复: 7

[已解决] DM8148 开发板使用 GPIO 的问题

[复制链接]

2

主题

7

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2016-4-13 09:09:14 | 显示全部楼层 |阅读模式
我使用的是创龙电子 DM8148 开发板,运行的是自带的系统(没有做过修改),内核版本是 Linux 2.6.37。现在我在用户空间通过 sysfs 来操作 GPIO 时遇到了一些问题:
1. 我在开发板的终端上进入 /sys/class/gpio/gpioN/ 目录,在这个目录下修改 ./direction 和 ./value 来修改相应 GPION 的输入输出方向与电平值,但用万用表测试发现 GPION 一直输出高电平;

2. 我再用 C 语言写了一个测试 GPIO 输入输出的应用程序,编译后在开发板上运行。在输入测试中 GPION 可以准确读出输入的高低电平,但在输出测试中 GPION 依旧只输出高电平;

3. 我将 GPIO 输入输出测试程序中的 GPIO 编号改为 LED1 对应的 GPIO 的编号,然后在开发板上用 insmod 先安装 LED 模块之后再用 rmmod 卸载 LED 模块,然后运行输出测试程序,结果这次可以测出 GPIO 的电平变化。

假如是没有加载 GPIO 模块的话,那么在 /sys/class/ 目录下就不会出现 ./gpio/ 目录;假如是我写的程序有误的话,那么按理在 LED 对应的 GPIO 上会出现跟 2 一样的现象。

不知有没有朋友也遇到过这样的问题?肯请解答。
回复

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
发表于 2016-4-13 10:28:59 | 显示全部楼层

回帖奖励 +2

使用gpio还需要确认对应的pin有没有配置成个gpio功能:
arch/arm/mach-omap2/board-ti8148evm.c:
static struct omap_board_mux board_mux[] __initdata = {
        /* som leds pin*/
        TI814X_MUX(MLBP_SIG_P, (OMAP_MUX_MODE7 | TI814X_PIN_INPUT_PULL_UP)),                /* gpio1_07_mux1 */
        TI814X_MUX(MLBP_SIG_N, (OMAP_MUX_MODE7 | TI814X_PIN_INPUT_PULL_UP)),                /* gpio1_08_mux1 */

        /* lcd backlight pin*/
        TI814X_MUX(MCASP4_AXR1, (OMAP_MUX_MODE6 | TI814X_PIN_INPUT_PULL_UP)),                /* timer6_mux0 */
        TI814X_MUX(UART0_DSRN, (OMAP_MUX_MODE4 | TI814X_PIN_INPUT_PULL_UP)),                /* spi0_cs2 */
        /* pwm fan pin*/
        TI814X_MUX(MCASP5_AXR1, (OMAP_MUX_MODE6 | TI814X_PIN_INPUT_PULL_UP)),                /* timer7_mux0 */
        { .reg_offset = OMAP_MUX_TERMINATOR },
};

pinmux的定义在:
arch/arm/mach-omap2/mux814x.c
回复 支持 反对

使用道具 举报

2

主题

7

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
 楼主| 发表于 2016-4-13 16:50:36 | 显示全部楼层
多谢了,之前主要是不知道 DM8148 的配置文件放在哪里,还以为放在 /arch/arm/mach-davinci/ 这个目录下,原来是放在 /arch/arm/mach-omap2/ 这个目录下。

下面这篇文章根据 Linux 源码分析 MUX 配置,写得也挺好的:http://blog.chinaunix.net/uid-12077574-id-3527526.html
回复 支持 反对

使用道具 举报

2

主题

7

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
 楼主| 发表于 2016-4-13 17:06:58 | 显示全部楼层
teddy 发表于 2016-4-13 10:28
使用gpio还需要确认对应的pin有没有配置成个gpio功能:
arch/arm/mach-omap2/board-ti8148evm.c:
static s ...

我修改了 arch/arm/mach-omap2/board-ti8148evm.c 这个文件,编译内核成功并重新生成 uImage 文件。

然后我把 uImage 拷贝到 SD 卡的 ROOT 分区并覆盖原来的 uImage 文件,启动的时候却显示 /lib/modules/2.6.37/kernel/drivers/dsp/ 目录下的 syslink.ko 模块格式无效,因此启动出错。

然后我把 /ROOTFS/etc/rc5.d/ 目录下的 S01load-hd-firmware.sh 文件删除,这样系统就能顺利启动了。

但系统启动后出现新的问题是:原来在 /sys/class/ 目录下存在的 gpio/ 目录找不到了,可能是没有装载 GPIO 驱动模块的原因。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
 楼主| 发表于 2016-4-13 17:33:10 | 显示全部楼层
Freed 发表于 2016-4-13 17:06
我修改了 arch/arm/mach-omap2/board-ti8148evm.c 这个文件,编译内核成功并重新生成 uImage 文件。

然 ...

果然是没有把 GPIO 的 sysfs 加载到内核。重新编译内核的时候在 menuconfig 中把 GPIO 的 sysfs 添加进内核就可以了。
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
发表于 2016-4-13 17:45:12 | 显示全部楼层
好的,恭喜你问题解决了。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
 楼主| 发表于 2016-4-14 20:21:08 | 显示全部楼层
teddy 发表于 2016-4-13 17:45
好的,恭喜你问题解决了。

非常感谢
回复 支持 反对

使用道具 举报

7

主题

29

帖子

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
发表于 2017-6-6 10:47:48 | 显示全部楼层

回帖奖励 +2

加收藏~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 02:02 , Processed in 0.047896 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表