Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78519
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-25 14:06
文章分类
文章存档

2013年(13)

我的朋友

分类: 嵌入式

2013-07-26 08:42:11

昨天上午开始调试开发板,将流程梳理了一遍,心想放在这供大家分享,没想到还让版主推荐到前面去了,感觉还可以,毕竟一直在这里遇到问题就索取,所以也想把自己所解决问题的方法和查找资料总结的东西写在这里供大家查阅。

昨天上午写来一篇,昨天晚上再来一篇,昨天晚上将pwm也就是蜂鸣器的内核代码和应用层代码学习了一下,今天发出来,分享一下中间的代码段和所理解的意思,如下:

先看内核设备驱动代码
1. struct semaphore lock;
     定义一个信号量,信号量是保护临界区的一种方法,只有得到信号量的进程才能执行临界区代码,当得不到信号量时,系统进入休眠等待状态。
     那神马是临界区呢?温习一下,就是在任何给定的时间里,只有一个进程可以访问的代码段。
2. void PWM_Set_Freq(unsigned long freq);
     配置pwd频率,配置各个寄存器的函数。
3. s3c2410_gpio_cfgpin,配置端口的GPIO的功能
4. __raw_readl和__raw_writel
    Linux对I/O的操作都定义在asm/io.h中,相应的在arm平台下的在asm-arm/io.h中,它们两个都是原始的操作IO的方法,读写寄存器操作
5. PWM_Stop()
    关闭PWM操作函数
6. open和close和ioctl在这里就不赘述了
7. struct file_operations dev_fops,初始化设备的文件操作结构体
8. struct miscdevice misc,杂设备结构体
9. 初始化init和退出exit函数完成注册和注销的任务
10.最后的MODULE在这就不赘述了

应用层的代码下次再说吧
阅读(1435) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~