手把手教你从零实现Linux misc设备驱动二(基于友善之臂4412开发板)

上一节,我教大家实现了一个最简单的MISC设备驱动,那么这节,我们将用一个实例来驱动蜂鸣器,这里为了方便,我就不再写应用程序进行测试,直接在驱动里调用open函数,这个程序是在Android系统里跑起来,后面我会教大家如何在Android下写应用测试程序。我们参考以前写的蜂鸣器驱动程序,将它移植到我们这个程序里,让它成为一个MISC设备。参考以前写的文章:接下来,看看代码:#include <li
阅读本文

嵌入式图形界面ugfx源码工程文件分析

1 ugfx源码工程文件分析 版本依据 version 2.5 1.1 源码文件总览 文件夹类: /3rdparty /boards /demos /docs /drivers /src /tools 文本类: Doxygenfile ffconf.h gfx.h gfx.mk gfxconf.example.h license mf_bwfont.h mf_rlefont.h mf_sca
阅读本文

手把手教你从零实现Linux misc设备驱动一(基于友善之臂4412开发板)

关于如何来写一个misc设备,在前面有篇文章已经介绍了大致的流程,现在就让我们来实现一个最简单的misc设备驱动。关于前面的字符设备有以下四篇文章,可以做参考:为什么要学习misc设备的编程?因为,如果我们 每个驱动设备都要像最初那样子去写一个字符设备驱动一样,要分配主设备号,次设备号,实现对应的文件操作函数等等的步骤,未免就有点多了,而且也不好记住它,为此,Linux内核提供了一系列偷懒的技巧,
阅读本文

Exynos 4412 Cortex-A9嵌入式Linux驱动开发学习笔记-第一期

一、Linux 体系结构 如下图所示,Linux 体系结构,从大的方面可以分为用户空间(User Space)和内核空间 (Kernel Space)。 用户空间中包含了 C 库,用户的应用程序。在某些体系结构图中还包含了 shell,当然 shell脚本也是 Linux 体系中不可缺少的一部分。 内核空间包括硬件平台、平台依赖代码、内核、系统调用接口。 另外,用户空间和内核空间是
阅读本文

时间选择器,选择日期DatePicker

时间选择器,选择日期DatePicker效果图 布局比较简单,直接从看代码: import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.
阅读本文

关于#pragma的使用

#pragma CODE_SEG default 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。  其格式一般为: #Pragm
阅读本文

Linux电源管理(2)-Generic PM基本概念和软件架构

http://www.wowotech.net/pm_subsystem/generic_pm_architecture.html1. 前言这里的Generic PM,是蜗蜗自己起的名字,指Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些手段是在嵌入式Linux普及之前的PC或者服务器时代使用的。
阅读本文

linux驱动开发流程

嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的。设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,完成以下功能:◇ 驱动程序的注册和注销。◇ 设备的打开和释放。◇ 设备的读写操作。◇ 设备的控制操作。◇ 设备的中断和轮
阅读本文

Linux电源管理(5)_Hibernate和Sleep功能介绍

http://www.wowotech.net/pm_subsystem/std_str_func.html1. 前言Hibernate和Sleep两个功能是Linux Generic PM的核心功能,它们的目的是类似的:暂停使用——>保存上下文——>关闭系统以节电········>恢复系统——>恢复上下文——>继续使用。顺便感概一下,虽然这些机制在Linux系统中存在很久了(类似的概念也存在于W
阅读本文

Linux电源管理(3)-Generic PM之reboot过程

http://www.wowotech.net/pm_subsystem/reboot.html1. 前言2. Kernel支持的reboot方式也许你会奇怪,reboot是重启的意思,所以用它实现Restart是合理的,但怎么用它实现关机操作呢?答案是这样的:关机之后,早晚也会开机啊!所以关机是一种特殊的Restart过程,只不过持续的时间有点长而已。所以,内核根据不同的表现方式,将reboot
阅读本文

蓝牙中数据包传输的大小的定义

蓝牙数据包大小的请教    在4.0蓝牙规范的《2 AIR INTERFACE PACKETS》这一节中定义BLE蓝牙链路层数据包的结构,如下:      规定了PUD的大小最大是39个byte,这里分析数据通道的PUD大小,我们看看如下定义:        而下面关于payload的长度 Length有如下解释:          也就说明payload长度最大是27个byte!
阅读本文

用户空间访问 rtc

安卓访问 rtc: http://www.embedu.org/column/Column468.htm imx6q自带的snvs-rtc的of_device节点在文件imx6qdl.dtsi文件中 用户空间访问RTC 2013-05-10 13:45:30
阅读本文

硬件改动导致软件配置错误的问题(更新ing)

硬件改动导致软件配置错误的问题 1.问题:由于硬件改动,在初始检查I/O口时看岔了两个相邻的引脚,导致通讯引脚配置错误,功能不能实现。 2.问题出现的原因:实质上是初始检查时不够仔细导致的。 3.目前考虑到的解决方案: 首先要求硬件设计者出具change list ,然后据此抽一个完整的时间段进行check,得出引脚配置方案
阅读本文

一文看懂嵌入式总线技术,ISA总线最流行?

http://www.21ic.com/app/rf/201702/702829.htm[导读] 总线基础总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。 总线基础总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的
阅读本文

python -m json.tool 中文乱码 Format JSON with python

现在以 json 为数据传输格式的 RESTful 接口非常流行。为调试这样的接口,一个常用的办法是使用 curl 命令:curl http://somehost.com/some-restful-api 对于返回的 json 字符串,一般在服务端不加处理的情况下,都是没有任何 ‘t‘ 和 ‘n‘ 的。为了方便查看,在 bash 上可以简单地对它进行格式化:curl http://someho
阅读本文

关于C指针的一些理解

有时总被指针的用法及类型所困扰,那我简单理解一下指针。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。如下例子:(1)int*ptr;(2)char*ptr;(3)int**ptr;(4)int(*ptr)[3];(5)int*(*ptr)[4]
阅读本文