4528|6

30

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【Arm Linux】如何在kernel中加入测试pin [复制链接]

5芯积分
环境说明:CPU(imx6)

问题:          在uboot中可以添加如下代码,来控制测试pin拉高。
                        *(volatile unsigned long*) 0x020A4000 |= (0x200000);    (数据输出值)
                        *(volatile unsigned long*) 0x020A4004 |= 0x200000;       (端口方向选择)


         但在kernel中则不行,大概是因为kernel的分页机制而不能访问对应的寄存器,请问有谁知道在内核中如何添加对测试pin的控制?

此帖出自ARM技术论坛

最新回复

没有关闭机制,你可以在标题后注明(已解决)  详情 回复 发表于 2016-1-20 15:14
点赞 关注
 

回复
举报

492

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
     一般是在内核中是使用poll()函数,设置事件监听类型为POLLPRI和POLLERR在poll()返回后,使用lseek()移动到文件开头读取新的值或者关闭它再重新打开读取新值。必须这样做否则poll函数会总是返回。
此帖出自ARM技术论坛
 
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

板凳
 
linux下寄存器需要做内存映射的,mmap后才能访问,具体操作自行搜索,因为我也不记得了,哈哈~
此帖出自ARM技术论坛
 
个人签名HELLO_WATER
 
 

回复

30

帖子

0

TA的资源

一粒金砂(初级)

4
 
一、动态映射(ioremap)方式

动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的ioremap函数动态创建一段外设I/O内存资源到内核虚拟地址的映射表,从而可以在内核空间中访问这段I/O资源。
Ioremap宏定义在asm/io.h内:
#define ioremap(cookie,size)           __ioremap(cookie,size,0)


__ioremap函数原型为(arm/mm/ioremap.c):
void __iomem * __ioremap(unsigned long phys_addr, size_t size, unsigned long flags);
phys_addr:要映射的起始的IO地址
size:要映射的空间的大小
flags:要映射的IO空间和权限有关的标志
该函数返回映射后的内核虚拟地址(3G-4G). 接着便可以通过读写该返回的内核虚拟地址去访问之这段I/O内存资源。


举一个简单的例子: (取自s3c2410的iis音频驱动)
比如我们要访问s3c2410平台上的I2S寄存器, 查看datasheet 知道IIS物理地址为0x55000000,我们把它定义为宏S3C2410_PA_IIS,如下:
#define S3C2410_PA_IIS    (0x55000000)
若要在内核空间(iis驱动)中访问这段I/O寄存器(IIS)资源需要先建立到内核地址空间的映射:
our_card->regs = ioremap(S3C2410_PA_IIS, 0x100);
if (our_card->regs == NULL) {
         err = -ENXIO;
         goto exit_err;
}
创建好了之后,我们就可以通过readl(our_card->regs )或writel(value, our_card->regs)等IO接口函数去访问它。
此帖出自ARM技术论坛

点评

楼主已经解决了?  详情 回复 发表于 2016-1-20 14:12
 
 
 

回复

2万

帖子

74

TA的资源

管理员

5
 
zjk200 发表于 2016-1-20 12:30
一、动态映射(ioremap)方式

动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的iore ...

楼主已经解决了?
此帖出自ARM技术论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

30

帖子

0

TA的资源

一粒金砂(初级)

6
 
soso 发表于 2016-1-20 14:12
楼主已经解决了?

问题已解决,怎么把帖子关闭?
此帖出自ARM技术论坛

点评

没有关闭机制,你可以在标题后注明(已解决)  详情 回复 发表于 2016-1-20 15:14
 
 
 

回复

2万

帖子

74

TA的资源

管理员

7
 
zjk200 发表于 2016-1-20 15:09
问题已解决,怎么把帖子关闭?

没有关闭机制,你可以在标题后注明(已解决)
此帖出自ARM技术论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表