安卓移植和驱动开发第七章心得体会

第七章 Led为我闪烁

尽管 Linux 驱动直接与硬件打交道,但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的内存(νO Memory,位于内核空间〉进行交互。所谓 1/0 内存是通过各种接口(PCI、USB、蓝牙、以太网口等〉连接到主机( PC、手机〉的硬件〈网卡。声卡、摄像头等〉在主机内 存中的映射。例如,在 Ubuntu Linux 上运行的驱动只需要访问运行 Ubuntu Linux 的主机中的内存即可,然后Linux内核会利1/0内存中的数据硬件交互。

如果在不同Linux内核版本之间的移植,主要是移植第1 部分( Linux驱动的内部处理,一般Linux 内核版本相差较大时,Linux内核的APl 会有很大差别),如果在不同硬件平台(如在不同开发板之间的移植)的移植,主要是移植第2部分。当然,在一些情况不, Linux 驱动的移植基本上相当于重新编写一遍Linux 驱动,在这种情况下,就要更好地了解Linux 驱动的高级技术,在后面的章节将深入地介绍Linux 驱动的这些技术,以便读者可以驾轻就熟地编写Linux 驱动。1.创建LED驱动的设备文件

使用cdev_init函数初始化cdev;指定设备号 ;Linux设备文件的设备号分为主设备号和次设备号,前12位主设备号,后20位表示次设备号。设备号指定方法:直接在代码中指定(硬编码),动态分配,多个Linux设备文件可以拥有同一个主设备号。但两个设备的主设备号和次设备号不都能一样。使用cdev_add函数将字符设备添加到内核中德字符设备数组中。使用class_create宏创建struct class。使用device_create函数创建设备文件

2.卸载Led驱动的设备文件

依次调用三个方法:

Void device_destroy(struct class *class,dev_t devt)

Void class_destroy(struct class *cls)

Void unregister_chrdev_region(dev_t from,unsigned count)

3.设置寄存器与初始化LED驱动

4.控制LED

通过字符串控制LED;通过I/O命令控制LED

5.LED驱动的模块参数

如果Linux驱动中有多个模块参数,需要将这些参数用单引号或双引号括起来

LED 驱动可以使用如下两种方式控制:LED通过字符串控制;通过命令控制LED。在将LED灯代码编写完成后,然后进行LED灯的测试。也可以使用JAVA测试LED灯驱动。测试完成后可以将LED灯移植。

时间: 2024-11-04 14:48:26

安卓移植和驱动开发第七章心得体会的相关文章

安卓移植和驱动开发第四章心得体会

第四章我们学习了安卓移植环境的搭建,首先构建开发是任何开发工作的基础,对于软,硬件非常丰富的嵌入式系统来说,构建高效,稳定的环境是否开展工作的重要因素之一,在构建开发环境之前,我们必须了解相关的开发流程,主要流程包括,下载安卓内核,熟悉开发环境和工具,交叉开发环境.是安卓系统移植开发的基本模型,Linux内核环境配置,GUN工具链,测试工具甚至集成开发的环境都是安卓系统移植的利器:熟悉Linux内核,因为安卓系统移植和开发需要重新制定Linux内核,所以熟悉内核配置,编译和移植很重要:熟悉目标板

安卓移植和驱动开发第三章心得体会

第三章学习了安卓移植平台工具的介绍,三星公司生产的FS -S5PC100开发平台,是基于Cortex-A8内核的S5PC100处理器设计而成的,此平台主要用于嵌入式系统教学,来适应只能操作系统的发展及市场需求,以它为例,该开发平台具有丰富的硬件资源,包括硬件加速器,比如动态视频处理,显示控制和缩放,支持多种格式的硬件编解码,其视频解码能力很强大并且省电,支持电视输出,支持2D 和3D 加速,广泛用于智能手机,平板电脑等产品,通过学习,我们还了解的该开发平台的各种功能,比如摄像头功能的展示,高清播

安卓移植和驱动开发第六章心得体会

第六章 第一个LINUX驱动程序:统计单词个数 统计单词数的word_count 驱动是本书实现的第一个完整的Linux 驱动.虽然word_count 驱动的功能并不复杂,但足以让以前从来接触过Linux 驱动的开发人员了解Linux 驱动的完整开发过程.本章不仅仅是介绍一个示例,还介绍了如何使用不同的方法测试Linux 驱动.这些方法主要以平台来区分.当然,要编写 Linux 驱动程序还需要更高级的功能. 如向打印机驱动写入数据时, 对于打印机 驱动来说,需要接收这些被写入的数据,并将它们通

《Android深度探索》(卷1)HAL与驱动开发 第七章心得体会

驱动的移植. 在drivers/char 目录下,我们建立一个驱动程序文件mini2440_leds.c,内容如下: <span style="font-size: 18px;">#include <linux/miscdevice.h>#include <linux/delay.h>#include <asm/irq.h>#include <mach/regs-gpio.h>#include <mach/hardwar

Android系统移植与驱动开发——第七章——LED驱动

LED驱动的实现原理 编写LED驱动: 测试LED驱动之前需要用USB数据线连接开发板,然后打开电源,成功启动之后,执行build.sh脚本文件编译和安装LED驱动,顺利则会自动连接 如果有多个设备文件将会在后来使用,则要通过指针变量cdev.list.prev和cdev.list.next指针变量连接,从而形成双向链接. 在创建设备文件时要注意: Device_count表示建立设备文件的个数 Alloc_chrdv_region函数的第2个参数表示分配的起始设备号. 卸载Linux驱动的设备

android驱动开发第七章心得笔记

这一章主要讲了控制发光二极管. 主要学习的内容有,编写驱动,创建LED驱动设备文件的时候:使用cdev_init函数初始化cdev:指定设备号:使用cdev_add函数将字符设备添加到内核中的字符设备数组中:使用class_creat宏创建struct class:使用device_creat函数创建设备文件. 还有学习的内容有,卸载LED驱动的设备文件的时候:调用device_destroy,class_destroy和unregister_chrdev_region方法:设置寄存器与初始化L

《Android深度探索》(卷1)HAL与驱动开发 第五章心得体会

本章我学习了S3C6410开发环境配置的过程如下: 1安装串口调试工具:minicom 以Ubuntu Linux为例,需要按照如下步骤安装.配置和调试minicom: 第一步:检测当前系统是否支持USB转串口 #lsmod | grep usbserial 如果有usbserial说明系统支持USB转串口 第二步:安装minicom #apt-get install minicom 第三步:配置minicom #minicom -s 进入配置页面,进入“Serial port setup”菜单

《Android深度探索》(卷1)HAL与驱动开发 第六章心得体会

编写Linux驱动程序的步骤: 第1步:建立Linux驱动骨架(装载和卸载Linux驱动) 任何类型的程序都有一个基本的结构,例如,C语言需要有一个入口函数main.Linux驱动程序也不例外.Linux内核在使用驱动时首先需要装载驱 动. 在装载过程中需要进行一些初始化工作,例如,建立设备文件,分配内存地址空间等.当Linux系统退出时需要卸载Linux驱动,在卸载的过程中需要释放 由Linux驱动占用的资源,例如,删除设备文件.释放内存地址空间等.在Linux驱动程序中需要提供两个函数来分别

安卓移植和驱动开发第二章心得体会

第二章我们学习了安卓系统与嵌入式开发,我们都知道安卓操作系统是基于Linux内核的,从系统移植和驱动开发的角度来说,安卓的底层开发移植,和传统嵌入式Linux系统的开发关系非常密切,两者的驱动在开发上几乎保持了完全一致,另外,安卓的底层开发和移植也与Linux嵌入式的环境保持了一致,嵌入式在我们生活中应用非常广泛,在消费电子,网络,航空航天,军事国防,医疗设备等都有非常大的应用,嵌入式系统主要由软件和硬件组成,硬件是基础,软件是核心与灵魂,而在硬件设备中,包括了嵌入式处理器和外围设备,而嵌入式的