/*ÏÂÃæµÄ·½Ê½ÊÇͨ¹ýÖ±½Ó²Ù×÷¿âº¯Êý·½Ê½¶ÁÈ¡IO*/#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) //PE4#define
分类:
其他好文 时间:
2015-06-11 01:44:19
阅读次数:
113
1、概述
在一般情况下,2.6内核中已经初始化并挂载了一条platform总线在sysfs文件系统中。那么我们编写platform模型驱动时,需要完成两个工作:1:实现platform驱动 2:实现platform设备,然而在实现这两个工作的过程中还需要实现其他的很多小工作,在后面介绍。platform模型驱动的实现过程核心架构就很简单,如下所示。
platform驱动模型三个对象:platform总线、platform设备、platform驱动。
platform总线对应的内核结构:struct bus...
分类:
系统相关 时间:
2015-06-10 22:38:56
阅读次数:
173
GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructu.....
分类:
其他好文 时间:
2015-06-10 00:51:32
阅读次数:
413
问题描述:最近这两天再调试 platform 驱动,程序老是有点小问题,得不到自己想要的结果,突然意识到内核调试重要性,重新整理一下 printk 基本用法。内核通过 printk() 输出相关信息,在调用 printk() 函数时必须要指定日志级别。
1、printk 日志等级
在 include/linux/kernel.h 中定义了如下几个日志级别
#define KERN_EMERG "" /* 系统崩溃 */
#define KERN_ALERT "" /* 必须紧急处理 */
...
分类:
系统相关 时间:
2015-06-09 21:59:11
阅读次数:
318
问题描述:前文我们知道了/sys是包含内核和驱动的实施信息的,用户可以通过 /sys 这个接口,用户通过这个接口可以一览内核设备的全貌。本文将从Linux内核的角度来看一看这个设备模型是如何构建的。
1、kobject 结构
在Linux内核里,kobject是组成Linux设备模型的基础,一个kobject对应sysfs里的一个目录。从面向对象的角度来说,kobject可以看作是所有设备对象的基类,因为C语言并没有面向对象的语法,所以一般是把kobject内嵌到其他结构体里来实现类似的作用,这里的其他...
分类:
系统相关 时间:
2015-06-08 17:32:54
阅读次数:
229
反汇编
wuyingqiang@ty-kf1:~/1$ gcc hello.c -o app
wuyingqiang@ty-kf1:~/1$ gcc hello.c -g -o app
-g参数决定反汇编之后的文件中,还能否看到c代码
wuyingqiang@ty-kf1:~/1$ objdump -dSsx app > file...
分类:
其他好文 时间:
2015-06-08 13:23:14
阅读次数:
145
支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在 CM3中,有两个区中实现了位带。其中一个是
SRAM 区的最低
1MB 范围,第二个则是片内外设区的最低
1MB 范围。这两个区中的地址除了可以像普通的
RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。
...
分类:
其他好文 时间:
2015-06-08 09:56:34
阅读次数:
161
P1、P2端口上的每个管脚都支持外部中断。P1端口的所有管脚都对应同一个中断向量(Interrupt Vector),类似的,P2端口的所有管脚都对应另一个中断向量;通过PxIFG寄存器来判断中断来源于具体哪个管脚。相关的寄存器如下表所示。 Register Short Fo...
分类:
其他好文 时间:
2015-06-07 14:30:11
阅读次数:
131
一. 背景知识:逻辑运算符的使用当程序初始化时,对于复位状态有不确定性的寄存器(如PxOUT),建议采用直接赋值;其他情况下最好使用逻辑运算符修改寄存器。直接赋值REGISTER = 0b11110000;REGISTER = 0xF0;“开启”某位(置1),保持其他位不变REGISTER |= B...
分类:
其他好文 时间:
2015-06-06 17:57:15
阅读次数:
125
原文网址:http://www.apkbus.com/android-98520-1-1.html前面几节都是将Linux驱动编译成模块,然后动态装载进行测试。动态装载驱动模块不会随着Android系统的启动而自动装载,因此Android系统每次启动都必须使用insmod或modprobe命令装载L...
分类:
系统相关 时间:
2015-06-04 19:19:21
阅读次数:
184