码迷,mamicode.com
首页 > 移动开发 > 详细

android深度探索读书笔记

时间:2016-06-06 10:21:52      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

 

Android深度探索(1)HAL与驱动开发读书笔记

  第五章的搭建S3C6410开发板的测试环境可以划分为以下几部分:

1使用cdev_init初始化cdev

2指定设备号

3使用cdev_add函数将字符设备添加到内核中的字符设备组中

4使用class_creat宏创建struct class

5使用device_creat函数创建设备文件

然后卸载led驱动的设备文件卸载LED驱动的设备文件:

void device_destory(sruct class *class,dev_t devt)

void clss_dsetroy(struct class *class)

void unregister_chrdex_region(dev_t from,unsigned count)

设置寄存器与初始化LED驱动时了解到,LED有两个引脚:GPB0和GPB1。其中一个引脚连接到了ARM处理器的GPI0端口,另一个引脚经过一个限流电阻连接到电源。控制LED需要通过3个寄存器来完成,分别为GPMCON、GPMDAT、GPMPUD。每一个寄存器可以使用4个字节。

  第六章的第一个linux个程序:统计单词个数主要讲了如何设计一个统计单词个数的程序,以下是步骤:

第 1 步:建立 Linu x 驱动骨架 (装载和卸载 Linu x 驱动);第 2 步:注册和注销设备文件;第 3 步指定与驱动相关的信息;第 4 步指定回调函数 ;第 5 步编写业务逻辑 ;第 6 步:编写 Makefile文件 ;第 7 步z 编译 Linux 驱动程序 ;第 8 步2 安装和卸载 Linux 驱动;

Printf函数运行在用户空间,printk函数运行在内核空间。

测试linux驱动步骤

第一步:导入test_count.c文件第二步:设置include路径第三步:建立target第四步:build工程第五步:运行测试程序

使用Android NDK测试

使用Java代码直接操作设备文件测试:需要拥有root权限。

  第七章的控制发光二极管可以分为以下几个部分:

 1、 一个完整的Linux驱动主要由内部处理和硬件交互两部分组成,其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等;与硬件交互主要是指通过函数与硬件中的寄存器进行数据交互。

2、LED驱动的实现原理:尽管Linux驱动直接与硬件打交道,但并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。每一个连接Linux的硬件在I/O内存中都会有映射的首地址。

3、LED有两个引脚:GPB0和GPB1;控制LED需要通过3个寄存器来完成,3个寄存器分别是GPMCON,GPMDAT和GPMPUD;每个寄存器可以使用4个字节;使用GPMCON寄存器的低16位将LED的两个端口的属性设为output;使用GPMDAT寄存器的低4位控制4个LED的亮灭;使用GPMPUD寄存器的低8位分别打开4个LED的上拉电路。

4、创建LED驱动的设备文件的步骤:第一步,使用cdev_init函数初始化cdev;第二步,指定设备号,设备号有两种指定方式分别是直接在代码中指定和动态分配;第三步,使用cdev_add函数将字符设备添加到内核中的字符设备数组中;第四步,使用class_create宏创建struct class;第五步,使用device_create函数创建设备文件。       http://www.cnblogs.com/xcswdd/ 

 

     

android深度探索读书笔记

标签:

原文地址:http://www.cnblogs.com/xcswdd/p/5562765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!