嵌入式Linux的几个小问题

来源:互联网 发布:惠普m1216扫描软件 编辑:程序博客网 时间:2024/05/17 08:35

  关于s3c6410的pwm帖子中的问题都是一些很基本的问题,是我在学习嵌入式Linux中遇到的一些问题,自己在网上搜到答案并且贴出来。

  我学习嵌入式Linux时所使用的开发板是友善之臂出版的tiny6410开发板,主控为三星s3c6410。

  1 linux驱动和应用程序关系?

  驱动程序运行在内核空间,而应用程序运行于用户空间。一般情况下应用程序是不能直接访问硬件的,但最终程序的执行结果必然是要到硬件的,这时就需要驱动程序。
打个比方,你要将一段字符写进硬盘,你在应用程序中是以文件的抽象方式进行的,但是在这个层面上你很难理解到底为什么这个函数能够写呢,它是如何找到硬件的呢,又是如何写进去的呢,此时其实我们可爱的驱动程序就发挥了作用,把你的数据写到硬盘由它来做,给你“屏蔽”掉许多复杂的硬件操作,可以让您更专注于应用程序本身的设计。
其实总结一下,驱动程序扮演的是硬件和应用程序之间的桥梁作用,是操作系统的一部分。

 2 Linux应用程序是如何调用驱动程序的?

  一般的驱动程序是不允许应用程序调用的,只有当驱动程序留出这种供外界访问的接口才行,这种接口一般包括read,write,open,ioctl等接口,如果驱动中预留出了这些接口,就可以在应用程序中调用,比如fd=open(设备,参数);或者fd=ioctl(设备,参数);,这样就会调用到这个设备驱动中的open或者ioctl函数。所以一般如果想再应用程序中调试某个驱动程序,常见的方法就是自己建立一个驱动模块,这个模块中预留出对外接口,比如ioctl。然后在你新建的这个驱动模块中完成ioctl函数,如下:
int device_ioctl(fd,argv) {
/* your function; */
}
static struct file_operations device = {
.ioctl = device_ioctl //预留外部接口
};
应用程序如下:
ioctl(device,argv);
上面这句就可以完成你的模块中ioctl中的功能。

 6410的PWM有四个,其中一个用于内部使用无输出接口,另外一个用于电源控制而不可使用,另外两个GPF14和GPF15可用,可以输出,但是一个用于lcd背景灯调节,一个用于camera,也可以引出后做其他使用。

  有的单片机有内置的硬件pwm功能,它的输出可能只能在某几个管脚上选择;如果自己编写程序实现软件PWM,则没有限制,所有的引脚都可以作为PWM输出。

  关于单片机内置的硬件pwm功能,就是单片机内部的一种资源,你不需要用程序编写PWM的实现过程,只需要配置好相应的寄存器,例如PWM的频率、占空比、端口等信息,再启用硬件PWM即可,此时单片机内部的硬件自动按你指定的参数实现PWM,其实现的过程与程序运行是并行的,不占用程序资源。

  

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 个人支票丢了怎么办 鼻子长巨大脓包怎么办 微信里怎么提现怎么办 天猫账号被风控怎么办 618津贴不够用怎么办 天猫精灵不灵敏怎么办 淘宝被恶意退款怎么办 天猫红包失效怎么办 预约人数满了怎么办 淘宝签证拒签怎么办 天猫美的差评怎么办 直通车欠费三块怎么办 上海个人户口卡怎么办 网购信息泄露怎么办 单张券达到上限怎么办 未成年偷钱充q币怎么办 被香港中炎骗了怎么办 房东要收回店面怎么办 天猫字迹模糊怎么办 淘宝类目不叫上架怎么办 淘宝直播有延迟怎么办 淘宝直播间中奖怎么办 微信扫码付款后卖家不发货怎么办 淘宝打骚扰电话怎么办 淘宝卖家打骚扰电话怎么办 被商家打了怎么办 保底消费入坑怎么办 留党查看到期怎么办 遭遇淘宝控价怎么办 淘宝店没有了怎么办 淘宝店铺运费险不出单怎么办 闲鱼定金被骗怎么办 肯德基团购过期怎么办 word不可以修改怎么办 店铺预售不发货怎么办 埋件设置不符合怎么办 闲鱼付了款卖家不发货怎么办 微信里付了款卖家不发货怎么办 运动鞋穿臭了怎么办 小车陷泥土了怎么办 孩子有心事不说怎么办