goon86 发表于 2008-08-27 16:38

如何读取arm9 gpio脚位的高低电平?

你好,
   cpu使用的是ks8695x,需要读取gpio4脚位的高低电平,请问有什么函数可以读取其脚位的电平,是不是先要设置输出方向等等的,函数是什么?谢谢。

cjaizss 发表于 2008-08-27 16:49

看datasheet

goon86 发表于 2008-09-02 22:21

找了好几天,只找到一些寄存器,0xe604 0xe600 0xe608这三个控制,

#define KS8695_READ_REG(offset) (*(volatile u_int *)((void *)IO_ADDRESS(KS8695_IO_BASE) + offset))

int main(void)
{
        unsigned int uReg=0;
        uReg = KS8695_READ_REG(0xE604);
        return 0;
}


编译执行后老出现
Segmentation fault

麻烦大大们指点一下。谢谢

cjaizss 发表于 2008-09-02 23:06

你是跑在linux下吗?有MMU的CPU,并且开启了MMU功能.那么就应该写个驱动来想办法访问这些地址,而直接在应用程序使用这些地址自然会导致"段错误".

goon86 发表于 2008-09-03 16:52

嵌入式arm9的芯片,arm922t的,有mmu。看过一些资料说用这三个函数就可以了,但编译不过。google也找不到这几个函数。
GPIO_set_controller(...)//配置GPIO方向,功能
GPIO_set_value(...)//配置某个GPIO的高低电平
GPIO_get_level(...)//读取某个GPIO的引脚电平
uboot里有些程序,但找不到相关说明。
“.那么就应该写个驱动来想办法访问这些地址,”能详细点吗?谢谢。

cjaizss 发表于 2008-09-03 17:04

回复 #5 goon86 的帖子

驱动怎么写......并不是我说几句你就可以写出来的

tianyukeji 发表于 2008-09-03 21:35

smartham_whl 发表于 2008-09-08 22:49

你这个只能在用户空间使用, 一般处理器的配置空间都映射在内核空间中,所以你执行会出那个问题
你的没有问题, 将代码写到内核模块中即可以读了.

在内核中注意基址寄存器, 是否配置空间从 KS8695_IO_BASE 的宏开始的,好运~

bxfqing 发表于 2008-09-09 13:16

samsung
是:
s3c2410_gpio_getpin
页: [1]
查看完整版本: 如何读取arm9 gpio脚位的高低电平?