BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #14667同步于 2014/4/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

嵌入式驱动程序开发问题

HFlyaway
2014/4/26镜像同步3 回复
比如在开发裸机程序时控制IO口比方说GPACON 0X56000000,直接对这个地址写数据就可以了,但是在linux环境下开发驱动程序,ARM芯片内部一些寄存器定义是在哪里实现的呢?没有找到相应的头文件啊?
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
deng0515001机器人#1 · 2014/4/28
刚学arm,同不懂,同问,楼主弄明白了说一下
ArmStrong机器人#2 · 2014/4/29
去看看Linux设备驱动 关于地址映射那一章吧 【 在 HFlyaway (HFlyaway) 的大作中提到: 】 : 比如在开发裸机程序时控制IO口比方说GPACON 0X56000000,直接对这个地址写数据就可以了,但是在linux环境下开发驱动程序,ARM芯片内部一些寄存器定义是在哪里实现的呢?没有找到相应的头文件啊?
HFlyaway机器人#3 · 2014/5/5
【 在 deng0515001 的大作中提到: 】 : 刚学arm,同不懂,同问,楼主弄明白了说一下 我们在写裸机程序时用到的寄存器地址为物理地址,比如0x56000000,在linux系统中需要将此物理地址转化为虚拟地址,控制寄存器就相当于控制该虚拟地址。 我现在看到主要两种方法: 1:在驱动程序中直接宏定义 如#define GPBCON 0x56000000 在后续程序中调用linux内核函数如viradd=ioremap(GPBCON,,)将该物理地址转化为虚拟地址,之后就可以控制该虚拟地址了。 2:linux内核中会有一些板级支持,会有针对ARM芯片的一些宏定义。 例如/arm/mach-s3cXX/include/mach/regs-gpio.h中(不同的内核版本可能不同),这些宏定义帮我么实现地址的转换,我们可以直接利用这些宏定义来实现寄存器的配置。 刚开始学,可能不是很正确,希望对你有帮助。。