自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linux/Android/AI

If you only do what you can do,you will never be more than what you are.

  • 博客(48)
  • 资源 (7)
  • 收藏
  • 关注

原创 实时的神经网络:Faster-RCNN技术分析

另CNN在人工智能领域脱颖而出的是许多精妙的思想,受生物视觉所启发的局部感知策略,基于统计特性的权值共享,利用特征聚合的池化……这些tricks优化performance的同时,也以指数级递减了计算的复杂度,再者为架构并行和数据切分训练提供了可能。 而作者通过交替训练方式进一步把参数共享的思想推到当前学术水平的极致.

2016-04-29 16:39:19 121672 20

原创 L2CAP数据发送和接收

ACL 链路在 Bluetooth 中非常重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用,BNEP等都要建立 ACL 链路,发送/接收ACL 包。跟大家一起来分析 ACL 包发送/接收流程,以及涉及到的重要 command/event。ACL包发送下面的图(点击大图)是各种应用层使用 L2CAP 的 API:L2CA_DataWrite 发送数据流的过程,此A

2016-01-28 21:43:33 21110 5

原创 Android bluetooth start discovery analyse

一. start_discovery的上层一系列的调用1. 界面上的"search for device"在./device/softwinner/common/packages/TvdSettings/src/com/android/settings/bluetooth/BluetoothSettings.java中当点击“searching devices"或者打开时就会去扫描蓝牙

2015-11-05 23:00:56 37132 8

原创 Bluedroid 之GKI框架

1. 概述GKI以库libbt-brcm_gki.so(Static Lib?)的形式提供给BlueDroid使用该层是一个适配层,适配了OS相关的进程、内存相关的管理,还可以用于线程间传递消息 主要通过变量gki_cb实现对进程的统一管理typedef struct{ pthread_mutex_t GKI_mutex; pthread_t

2015-08-18 12:19:07 103227 4

原创 Android Recovery Ui 分析

Android recovery和android本质上是两个独立的rootfs, 只是recovery这个rootfs存在的意义就是为android这个rootfs服务,因此被解释为Android系统的一部分。 recovery作为一个简单的rootfs, 提供了非常有限的几个功能,只包含了几个简单的库,UI的显示采用的是直接刷framebuffer的形式,作为android framew

2015-07-22 21:15:20 102284 4

原创 bluedroid 框架

bluedroid项目代码的框架:Bta:1. ag(audio gateway):蓝牙音频网关的实现2. Ar(audio/video registration):音频/视频注册模块的实现3. Av(advanced audio/video):更先进的音频/视频实现4. Dm(device mana

2015-03-01 11:00:29 116588 5

原创 EMMC 驱动

块设备是Linux最复杂的设备之一,但是作为固执于知其然的Geek,我们总会把代码翻个遍,把道理弄个透。当然了,快速地学习一种新的东西,方法是最重要的,个人觉得: 内核当中 MMC/SD 卡驱动程序构架是学习EMMC 驱动程序的重点,只有理解了它才能真正理解该块设备驱动程序,同时才能真正理解 LINUX 块设备驱动程序。

2015-01-18 22:03:02 120203 3

原创 SDIO 接口的wifi驱动

1、sdio接口层解析SDIO总线     SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的 通信 都是 由HOST端 发送 命令 开始的,Device端只要能解析命令,就可以相互通信。  CLK信号:HOST给DEVICE的 时钟信号,每个时钟周期传输一个命令。  CMD信号:双向 的信号,用于传送 命令 和 反应。

2014-11-23 21:04:37 101965 1

原创 Android 升级脚本updater-script 的函数简介

这是Android系统来运行updater-scripts中的函数介绍。函数都是的Edify语言,当调用这些函数结束的时候,会返回数据给脚本。当然,你也可以使用这些函数的返回值来确认成功与否,例如:ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Successfully Mounted!")

2014-11-13 22:51:41 102609 2

原创 Linux 和 Android 系统性能分析

作为一名Linux 或 Android 平台的系统工程师,在开发系统新功能外,主要工作就是优化系统性能,使系统上以最优的状态运行,但是由于硬件问题、软件问题、网络环境等的复杂性和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题, 从系统入手,阐述由于系统软、硬件配置不当可能造成的性能问题,并且探讨检测系统故障和优化性能的一般方法和流程。

2014-11-13 22:47:42 103333 2

原创 USB wifi调试笔记

本文以realtek 8192CU WiFi模块为例,介绍usb

2014-11-03 22:41:22 105191 3

原创 《Linux Device Drivers》第十八章 TTY驱动程序——note

简介tty设备的名称是从过去的电传打字机缩写而来,最初是指连接到Unix系统上的物理或虚拟终端Linux tty驱动程序的核心紧挨在标准字符设备驱动层之下,并提供了一系列的功能,作为接口被终端类型设备使用有三种类型的tty驱动程序:控制台、串口和pty/proc/tty/drivers当前注册并存在于内核的tty设备在/sys/class/tty下都有自己的子目录小型TTY驱动程序

2014-10-12 13:56:20 391200 1

原创 一步一步 在mac上安装ubuntu

做为程序员的你一定听说过Linux甚至非常喜欢Linux.最近买了一台mac air,我非常喜欢苹果的工艺,但作为屌丝程序员,我依旧喜欢基于Linux内核的Ubuntu 进行开发.下面我就讲述一步一步在mac上安装ubuntu系统.1首先是下载bantu镜像,mac版本2打开终端

2014-10-12 13:55:06 13294 1

原创 《Linux Device Drivers》 第十七章 网络驱动程序——note

简介网络接口是第三类标准Linux设备,本章将描述网络接口是如何与内核其余的部分交互的网络接口必须使用特定的内核数据结构注册自身,以备与外界进行数据线包交换时调用对网络接口的常用文件操作是没有意义的,因此在它们身上无法体现Unix的“一切都是文件”的思想网络驱动程序异步自外部世界的数据包网络设备向内核请求把外部获得的数据包发送给内核Linux内核中的网络子系统被设计成完全与协议无关在网络世

2014-10-11 18:04:28 390690 1

原创 《Linux Device Drivers》第十六章 块设备驱动程序——note

简介一个块设备驱动程序主要通过传输固定大小的随机数据来访问设备Linux内核视块设备为与字符设备相异的基本设备类型Linux块设备驱动程序接口使得块设备可以发挥其最大的功效,但是其复杂程序又是编程者必须面对的一个问题一个数据块指的是固定大小的数据,而大小的值由内核确定数据块的大小通常是4096个字节,但是可以根据体系结构和所使用的文件系统进行改变与数据块对应的是扇区,它是由底层硬件决定大小

2014-10-11 16:53:46 779385 1

原创 《Linux Device Drivers》第十五章 内存映射和DMA——note

简介许多类型的驱动程序编程都需要了解一些虚拟内存子系统如何工作的知识当遇到更为复杂、性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到本章的内容分成三个部分讲述mmap系统调用的实现过程讲述如何跨越边界直接访问用户空间的内存页讲述了直接内存访问(DMA)I/O操作,它使得外设具有直接访问系统内存的能力Linux的内存管理地址类型Linux是一个虚拟内存

2014-10-09 08:41:33 779763 1

原创 《Linux Device Drivers》第十四章 Linux 设备模型

简介2.6内核的设备模型提供一个对系统结构的一般性抽象描述,用以支持多种不同的任务电源管理和系统关机与用户空间通信热插拔设备设备类型对象生命周期kobject、kset和子系统kobject是组成设备模型的基本结构对象的引用计数sysfs表述数据结构关联热插拔事件处理kobject基础知识嵌入的kobject内核代码很少去创建一个单独的k

2014-10-09 08:40:51 389869 1

原创 《Linux Device Drivers》第十二章 PCI驱动程序——note

简介本章给出一个高层总线架构的综述讨论重点是用于访问Peripheral Component Interconnect(PCI,外围设备互联)外设的内核函数PCI总线是内核中得到最好支持的总线本章主要介绍PCI驱动程序如果寻找其硬件和获得对它的访问本章也会介绍ISA总线PCI接口PCI是一组完整的规范,定义了计算机的各个不同部分之间应该如何交互PCI规范涵盖了与计算机接口相关的

2014-10-05 13:59:50 391009

原创 《Linux Device Drivers》第十一章 内核的数据类型——note

简介由于Linux的多平台特性,任何一个重要的驱动程序都应该是可移植的与内核代码相关的核心问题是应该能够同时访问已知长度的数据项,并充分利用不同处理器的能力内核使用的数据类型主要被分成三类类似int这样的标准C语言类型类似u32这样的有确定大小的类型像pid_t这样的用于特定内核对象的类型本章将讨论在什么情况下使用这三种类型以及如何使用使用标准C语言类型当我们需要“

2014-10-05 13:57:40 390457 1

原创 Git 常用命令

聪明的程序员都喜欢偷懒,So我们在home目录添加一个全局配置文件:.git/config,并定义快捷键:

2014-10-01 10:37:28 1757 1

原创 Android System Property 解析

一 System Property      今天在折腾HDMI 显示,为Setting提供接口,遇到很多跟Android系统属性相关的问题.因此,顺便分析和总结一些.  android的代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置, 顾名思义系统属性,肯定

2014-09-28 17:59:26 2932 11

原创 《Linux Device Drivers》第十章 中断处理——note

概述:系统要及时的感知硬件的状态,通常有两种方式:一种是轮询;一种是通过响应硬件中断。前者会浪费处理器的时间,而后者不会。

2014-09-28 09:31:29 390326 4

原创 《Linux Device Drivers》第八章 分配内存——note

kmalloc函数的内幕不对所获取的内存空间清零分配的区域在物理内存中也是连续的flags参数GFP_KERNEL在空闲内存较少时把当前进程转入休眠以等待一个页面分配内存的函数必须是可重入的GFP_ATOMIC用于在中断处理例程或其他运行于进程上下文之外的代码中分配内存,不会休眠GFP_USER用于为用户空间页分配内存,可能会休眠GFP_

2014-09-28 09:26:09 778936 2

原创 《Linux Device Drivers》 第九章 与硬件通信

每种外设都通过读写寄存器进行控制在硬件层,内存区域和I/O区域没有概念上的区别:它们都通过向地址总线和控制总线发送电平信号进行访问,再通过数据总线读写数据I/O寄存器和常规内存I/O寄存器和RAM的最主要区别就是I/O操作具有边际

2014-09-28 09:24:07 191742

原创 《Linux Device Drivers》 第七章 时间、延时及延缓操作——note

度量时间差内核通过定时器中断来跟踪时间流时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据HZ的值设定,在常见的x86 PC平台上,默认定义为1000jiffies_64unsigned long jiffies使用jiffies计数器int time_after(unsigned long a, unsigned long b);int time_before(

2014-09-27 22:11:31 389856 2

原创 《Linux Device Drivers》第六章 高级字符驱动程序操作——note

ioctl支持的操作,例如简单数据传输控制动作,例如用户空间发起弹出介质动作反馈硬件的状态,例如报告错误信息参数配置,例如改变波特率执行自破坏用户空间的ioctl方法原型:int ioctl(int fd, unsigned long cmd, …);每个ioctl命令就是一个独立的系统调用,而且是非公开的驱动程序的ioctl方法原型:int (*ioctl) (struct

2014-09-27 22:04:40 389840

原创 《Linux Device Drivers》第五章 并发和竞态——note

并发及其管理竞态通常作为对资源的共享访问结果而产生当两个执行线程需要访问相同的数据结构(或硬件资源)时,混合的可能性就永远存在只要可能就应该避免资源的共享共享通常是必需的,硬件资源本质上就是共享的访问管理的常见技术称为“锁定”或者“互斥”信号量和互斥体建立临界区:在任意给定的时刻,代码只能被一个线程执行可以使用一种锁定机制,当进程在等待对临界区的访问时,此机制可让进程进入休眠状

2014-09-27 21:55:29 390210

原创 《Linux Device Drivers》第四章 调试技术——note

内核中和调试相关的选项CONFIG_DEBUG_KERNELCONFIG_DEBUG_SLABCONFIG_DEBUG_PAGEALLOCCONFIG_DEBUG_SPINLOCKCONFIG_DEBUG_SPINLOCK_SLEEPCONFIG_INIT_DEBUGCONFIG_DEBUG_INFOCONFIG_MAGIC_SYSRQCONFIG_DEBUG_STACKOVERFLOWCONF

2014-09-24 10:47:28 390569

原创 《Linux Device Drivers》第三章 字符设备驱动程序——note

主设备号和次设备号那些名称被称为特殊文件、设备文件,或者简单称之为文件系统树的节点,它们通常位于/dev目录通常而言,主设备号标识设备对应的驱动程序一个主设备号对应一个驱动程序设备编号的内部表达dev_t()dev_t是一个32位的数,12位表示主设备号,其余20位表示次设备号MAJOR(dev_t dev);MINOR(dev_t dev);MKDEV(int major

2014-09-23 21:54:13 390201

原创 FFmpeg 基本知识

容器(container):就是文件格式,在视频文件进入处理后,我们会给这个视频文件一个抽象,这个抽象就是存放这种视频文件的容器,在FFMPEG中,用来抽象文件格式的容器就是AVFormatContext;数据流(stream):数据流就是我们平时看到的多媒体数据流,它包含几种基本的数据流,包括:视频流、音频流、字幕流;按照我的理解,这三种基本的数据流在时间轴上交错放置,只有这

2014-09-23 14:55:00 100326

原创 《Linux Device Drivers》第二章 构造和运行模块——note

Hello World模块#include #include MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void){    printk(KERN_ALERT "Hello, world\n");    return 0;} static void hello_exit(void){

2014-04-20 14:26:22 389487

原创 《Linux Device Drivers》第一章 设备驱动程序简介——note

设备驱动程序的作用驱动程序的编写实际上都可以分成两部分需要提供什么功能(机制)如何使用这些功能(策略)不带策略的驱动程序包括一些典型的特征同时支持同步和异步操作驱动程序能够被多次打开充分利用硬件特性内核功能划分功能模块进程管理创建进程销毁进程进程间通信信号管道内存管理虚拟地址空间文件系统Unix的每个对象都可以当作

2014-04-20 13:34:09 390597

原创 板级支持包 BSP

1、硬件平台的多样性是嵌入式系统的主要特点,如何使嵌入式操作系统在不同的硬件平台上有效地运行,是嵌入式系统开发中需要解决的关键问题。解决的方法是:在硬件平台和操作系统之间提供硬件相关层来屏蔽这些硬件的差异,给操作系统提供统一的运行环境,这种硬件相关层就是嵌入式系统中的板级支持包BSP(BoardSupportPackage,简称BSP)。

2014-04-17 08:49:01 103122

原创 Linux中查看硬件信息

查看CPU信息:cat /proc/cpuinfo查看内存信息:cat /proc/meminfo查看USB设备:cat /proc/bus/usb/devices查看键盘和鼠标:cat /proc/bus/input/devices查看各分区使用情况:df查看体系结构:busybox uname -a查看中断信息:cat /proc/interrupts

2014-04-16 07:49:58 100192

原创 Nand Flash基础知识与坏块管理机制的研究

概述Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做

2014-04-13 23:07:19 116205

原创 驱动程序调试笔记

1.uboot无法引导Linux系统,机器号不一致。2.屏幕闪屏:使用自旋锁,每次进入背光函数时,先获取锁,退出时候释放锁。3.Wifi打不开的问题比较常见:     (1)有时候在system/lib/目录下有相应驱动了,但是系统起来后,驱动没法加载上去,一般是驱动和正在使用的内核不是兼容的,所以无法加载,这个可以通过查看log,看出魔数不匹配。       (2

2014-04-13 20:00:28 100489

原创 驱动程序 基本知识

什么是驱动程序驱动程序就是使硬件工作的一种特殊软件,它运行在操作系统的内核空间(虚拟地址0xC0000000到0xFFFFFFFF),封装硬件细节,服务于系统调用。 驱动程序和应用程序的区别1.应用程序运行在用户空间,驱动程序运行在内核空间。2.应用程序可使用标准的库函数,而驱动程序连接到内核,只能使用内核导出的符号和函数。3.应用程序错误,一般只会杀死进程,而驱动程序错误

2014-04-07 20:06:42 101295

原创 网络驱动程序概述

网路驱动程序:使用net_device描述设备,使用套接字描述符sk_buff封装数据。注册:alloc_ethdev分配net_device结构和私有的数据区、并初始化以太网设备结构、标志、硬件地址、初始化缓冲区描述符、申请中断号并注册中断处理函数,最后向全局网络设备链表添加初始化后的网络设备。发送:1.内核发送数据包的时候,使用套接字sk_buff作为参数,调用驱动的ndo_sta

2014-04-07 19:37:16 100900

原创 Uboot 和 Linux启动流程

Uboot启动流程第一阶段:关闭看门狗,设置系统时钟,初始化RAM,复制第二阶段的代码到内存中,设置好栈,跳转到第二阶段的C语言入口点。第二阶段:检测内存映射,将内核映像和要传给内核的参数从flash复制到内存中,,设置处理器为SVC模式,关闭MMU、缓存,调用theKernel函数,传入机器号和参数列表地址作为参数,跳转到内核在内存的地址,从而启动内核。Linux内核启动

2014-04-07 19:36:18 100897

原创 《Linux Device Drivers》第十三章 USB驱动程序——note

1. USB主机在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。Linu

2014-04-07 17:47:18 390091

Java编程思想 第四版

JAVA编程思想第四版,完整版,带书签,清晰,可以复制。

2013-08-03

linux设备驱动程序第三版 清晰 有目录

linux设备驱动程序第三版 清晰 有目录

2013-03-28

Linux那些事儿之我是usb 第一和第二版都有,非常有用

linux那些事儿之我是usb完整版(第一版,和第二版都有),非常清晰,有目录,对于学驱动的同学很有帮助

2012-11-05

超声波测距程序

超声波测距 智能水位控制 lcd1602显示 平均精度可达2mm 稳定测量状态最高可达 1mm

2012-09-09

智能车源代码和电路图完整版

智能车,寻迹机器人,救灾机器人,包含电路图和源代码

2012-09-03

2012ti杯比赛题目

2012年,德州仪器杯电子设计大赛,第二阶段比赛题目,

2012-09-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除