- 博客(38)
- 资源 (15)
- 收藏
- 关注
翻译 2D图形加速引擎(GE2D)
32位2D图形引擎(GE2D)专门用于提高图形性能处理。它可以加速单个GUI功能的操作,如BitBLT和Bresenham线绘制在所有像素深度上运行,包括每像素8/16/32位。
2017-06-03 18:19:22 11267 1
原创 【智能家居篇】wifi驱动的理解(4)——usb接口在wifi模块中的角色
在上一篇文章中,当wifi模块的接收初始化函数中,注册了中断URB。即当wifi模块接收到数据的时候,通过中断URB产生中断之后,就会调用usb_read_port()函数,实现USB的读取。
2016-12-30 23:25:39 2648
原创 【智能家居篇】wifi驱动的理解(3)——usb接口在wifi模块中的角色
上一篇文章已经提到USB接口在wifi模块中的最重要两个函数是usb_read_port()和usb_write_port()。那它们是怎么和wifi扯上关系的呢?我们可以从以下三个方面去分析:1、首先需要明确wifi模块是USB设备,主控(CPU)端是USB主机;2、USB主机若需要对wifi模块进行数据的读写时,就必须经过USB接口;3、既然涉及到数据的读写操作,必然要用相应的读写函数,那么usb_read_port()和usb_write_port()即是它们的读写函数。
2015-03-30 20:24:59 3780 1
原创 【智能家居篇】wifi驱动的理解(2)——usb接口在wifi模块中的角色
上一篇文章我们已经通过三条线索简单地描述了wifi驱动的框架,现在我们开始深入到每条线索中。首先我们从USB设备这条线索开始。在分析之前,我们需要理解在整个wifi模块中,USB充当什么角色?它的作用是什么?实质上wifi模块上的数据传输有两端,一端是wifi芯片与wifi芯片之间,通过无线射频(RF)进行数据传输;另一端则是wifi芯片与CPU之间,通过USB进行数据传输。
2015-02-03 11:42:07 4155 1
原创 【智能家居篇】wifi驱动的理解(1)——驱动架构
网上很多文章分析Linux设备驱动都是从模块加载入手去分析它的驱动源码。以博主从事Linux设备驱动多年的经验,这确实是一条很直观又非常好的思路。但是这只局限于设备功能少、接口较简单、驱动源码较少的设备驱动。对于功能复杂、驱动源码庞大的设备驱动,根据这条思路,很多开发者可能会无耐心走下去,或者会走向死胡同。
2014-12-31 23:55:48 6130
原创 【智能家居篇】wifi网络接入原理(下)——关联Association
认证完成后,下一步就是关联(Association)。工作站与基站进行关联,以便获得网络的完全访问权。关联属于一种记录(record keeping)过程,它让分布式系统(Distribution System)得以记录每个移动式工作站的位置,以便将传送给移动式工作站的帧,转送给正确的基站。形成关联之后,基站必须为该移动式工作站在网络上注册,如此一来,发送给该移动式工作站的帧,才会转送至其所属基站。其中一种注册方式是送出一个ARP信号,让该工作站的MAC地址得以跟与基站连接的交换端口形成关联。
2014-11-17 19:51:23 7709
原创 【智能家居篇】wifi网络接入原理(中)——认证Authentication
用手机来举例,扫描完成后,我们会选择想要加入的WIFI热点。此时,大部分都会弹出一个输入密码的窗口,当然也有不用输入密码的。这个过程叫做:认证(Authentication)。本文侧重讲解现当代正在使用的WPA/WPA2加密方式,特别是倾向于家庭网络的WPA-PSK/WPA2-PSK。
2014-10-28 19:45:20 11434
原创 【智能家居篇】wifi网络接入原理(上)——扫描Scanning
对于低头党来说,在使用WIFI功能时,经常性的操作是打开手机上的WIFI设备,搜索到心目中的热点,输入密码,联网成功,各种低头上网。。。这个看似简单的过程,背后却是隐藏着大量的无线通信技术。用几个专业术语来表示这个过程,分别是:扫描(Scanning)、认证(Authentication)、关联(Association)。
2014-10-11 15:08:16 11486 5
原创 【智能家居篇】嵌入式WIFI与普通WIFI的区别
既然我们这系列的文章名称为《智能家居篇》,那么我们有必要提出一个与智能家居相关的概念。曾经一次在TI的无线研讨会上,提及这个概念。究竟是TI提出的,还是其他无线厂家提出的,这个就不去深究了。这个概念就是嵌入式WIFI,也有叫WIFI的IoT(全称:Internet of Things)解决方案,那么它和普通的WIFI又有什么区别呢?请继续阅读下文。
2014-09-27 19:48:18 4947
原创 【智能家居篇】wifi网络结构(下)
WIFI网络具有移动性,同时WIFI以无线电波作为传输媒介,这种媒介本质上是开放的,且容易被拦截,任何人都可以通过抓包工具截取无线网络的数据包。因此,在设计WIFI协议(其实就是802.11协议)时,需要提供一些传输数据和管理的服务。
2014-09-17 21:00:19 4870 2
原创 【智能家居篇】wifi网络结构(上)
WIFI是什么,相信大家都知道,这里就不作说明了。我们需要做的是深入了解其工作原理,包括软硬件、网络结构等。先说明一下WIFI是遵循IEEE802.11协议的,802.11是最早被国际标准组织认可的无线局域网协议,应该是1999年,到现在都有15年了。那时候哥还在读小学,连电脑都没摸过!太落后了。。。后来发展出很多以字母为后缀的802.11标准协议,如a、b、g、n、ac等。
2014-09-17 20:49:46 7261 2
原创 【智能家居篇】wifi在智能家居中的应用
在设计智能家居系统方案时,一个非常关键的point就是组网方式。组网方式关系到整个智能家居系统的稳定性、可扩展性、实时性等;从安装及维护等各方面考虑,对于组网方式,本人觉得现在应该没人会去搭建一个有线的智能家居网络了吧,呵呵。。。。。
2014-08-28 20:59:33 3720
原创 对Socket CAN的理解(5)——【Socket CAN控制器的初始化过程】
对于一般的CAN模块,初始化步骤:第一步,进入初始化模式,在CAN控制寄存器中,将Init位置1;第二步,在CAN控制寄存器中,将CCE位置1;第三步,等待Init位置1,此步聚为了确保已经进入初始化模式;第四步,将位时序的值写入到位时序寄存器(BTR)中;第五步,将CCE和Init位置为0;第六步,等待清除Init位,此步聚为了确保已经退出初始化模式;
2014-07-30 21:56:06 4699
原创 【智能家居篇】通信技术简介
下面我们来简单介绍一下智能家居的通信技术。 既然智能家居要把家用设备连接起来,进行控制,那么它就需要一套通信系统。用在智能家居的通信系统,我们可以分为两类:一、有线通信;二、无线通信。 而基于有线和无线通信的技术,又有很多。我们应该如何选择适合的通信技术进行智能家居通信系统的搭建呢?下面我们就分别针对有线通信、无线通信的各种通信技术进行一个简单的比较。
2014-06-28 16:15:03 3444
原创 对Socket CAN的理解(4)——【Socket CAN接收数据流程】
现在我们来分析一下CAN总线的接收数据流程,对于网络设备,数据接收大体上采用中断+NAPI机制进行数据的接收。同样,我们现在的CAN模块也是采用同样的方式进行数据的接收。由于我们只针对CAN总线接收数据这条主线进行分析。因些,会忽略一些针对CAN协议的设置及初始化等相关代码。 在初始化CAN设备时,我们需要给CAN设备分配NAPI功能。我们通过netif_napi_add()函数将CAN设备添加到NAPI机制列表中。
2014-05-16 23:30:18 8271
原创 对Socket CAN的理解(3)——【Socket CAN发送数据流程】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上一篇文章《对Socket CAN的理解(2)——【Socket的原理及使用】》。 当我们在用户层通过socket进行CAN数据的发送时,需要进行以下操
2014-03-30 15:35:52 10579 3
原创 对Socket CAN的理解(2)——【Socket的原理及使用】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 为了能够对Socket CAN的深入理解,我们需要了解Socket的机制。 Socket的中文翻译为“插座”,在计算机世界里称为套接字。Socket最初是作为网络上不同主机之间进程的通信接口,后来应用越来越广,在同一主机上的不同进程之间通信也可以用Socket。简单来说,
2013-12-31 16:54:39 19786 1
原创 对Socket CAN的理解(1)——【CAN总线原理】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!由于Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。因此,为了能够全面地了解Socket CAN的原理。我们需要了解以下几个方面的知识点:(1)CAN总线协议;(2)Socket原理;(3)Linux网络设备驱动;当熟悉以下三个方面的知识点后,我们再去分析基
2013-12-24 00:03:29 48239 1
原创 曾经的足迹——对CAN驱动中的NAPI机制的理解
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 通过poll的方法来轮询数据。采用NAPI技术可以大大改善短长度数据包接收的效率,减少中断触发的时间。
2013-09-25 23:44:28 5016
原创 曾经的足迹——对Linux CAN驱动的理解(1)
在Ti的AM335X系列Cortext-A8芯片中,CAN模块采用D_CAN结构,实质即两路CAN接口。在此分享一下对基于AM335X的Linux CAN驱动源码的理解。下面来分析它的驱动源码及其工作方式。
2013-09-25 23:24:39 7107 2
原创 底层之旅——DM9000网卡驱动源码分析
将近有一年多没写博客了。。。虽然网上有很多分析DM9000网卡驱动的,但是本文是基于Linux-2,6.32的,虽然驱动源码都差不多一样,不过,还是有点区别的。。。 Linux内核中,DM9000网卡采用平台设备驱动进行设备与驱动的分离。以下先分析DM9000的网卡驱动,然后再进行DM9000平台设备的注册。本文采用的是Linux-2.6.32内核。 分析驱动应从
2013-04-20 22:52:35 1985 1
原创 如何在ubuntu10.04下载android4.0的源码(并解决以往无法下载android源码的问题)
前段时间,由于Android背叛了GNU,背叛了Linux追求的自由开源思想,结果给踢出了Linux源码的主线。加上最近kernel.org给黑和Google对android的调整,种种原因。导致原来下载android源码的方法失效了。原来下载android的源码地址是:repo init -u git://android.git.kernel.org/platform/manifest.git,
2011-11-18 19:11:29 2050 2
原创 底层之旅——Android显示驱动(framebuffer)的分析
Android有其完整的显示系统,上层显示系统提供系统图形的输出设备,java层的和和控件的外观和直接的图形接口的绘制都是通过显示系统呈现出来的。Android的底层显示系统与Android的Surface库部分有也着很强的联系。底层显示系统提供的是基本的显示输出设备的封装,Surface库部分是基于这个显示终端,提供了多个图层的支持以及图层间的效果等功能。如图所示的是Android显示系统的基于
2011-11-16 11:02:22 9550 4
原创 底层之旅——Android蓝牙系统分析
Android蓝牙系统分为四个层次,内核层、BlueZ库、BlueTooth的适配库、BlueTooth的JNI部分、Java框架层、应用层。下面先来分析Android的蓝牙协议栈。 Android的蓝牙协议栈采用BlueZ来实现,BlueZ分为两部分:内
2011-10-13 09:59:56 4406
转载 mx51 TVOUT分析
1397 static int __init enable_tve_setup(char *options)1398 {1399 g_enable_tve = true;1400 1401 return 1;1402 }1403 __set
2011-09-22 16:58:54 41067
原创 底层之旅 —— IPU(Image processing unit)库分析
在i.MX51应用处理器中,有一个很重要的单元:IPU(Image Processing Unit)图像处理单元。图像处理单元的目标是提供从图像输入(摄像头传感器 / 电视信号输入等)到显示设备(LCD显示屏 / TV输出 / 外部图像处理单元等)端到端的数据流信号处理的全面支持
2011-09-21 20:48:51 1925
原创 底层之旅 —— Linux下的I2c体系结构
最近在搞电容式触摸屏驱动,用I2C总线接口来传输数据,所以趁机复习一下I2C总线原理。 I2C总线是Philips公司推出的芯片间品德传输总线,它采用两线制,由串行时钟线SCL和串行数据线SDA构成。在电路设计方面,由于I2C总线接口为开漏或开集电极输出,需
2011-09-02 20:52:11 1337
原创 浅谈:Android下的external源代码目录
对于Android这个庞大的系统,其源代码占据了10多G的地盘。当初次做Android移植时,例如要进行蓝牙模块、wifi模块移植时,external目录下的源代码对你就很重要了。源码目录 external /|—— alsa-lib ALSA 音频系统程序
2011-08-26 19:19:45 4554
原创 浅谈:Android顶层源代码结构
作为一位底层开发人员,特别是Android底层开发,最基本的是熟悉Android源代码。Android源代码目录非常庞大,包含Android的编译脚本、目标代码、主机编译工具、仿真环境。 顶层目录:|—— Makefile 全局的Makefile。
2011-08-25 21:37:33 1385
转载 在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务呢?在这一篇文章中,我们将在Android系统的应用层增加一个内置的应用程序,这
2011-08-25 10:23:51 1169
转载 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行。今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件。因此,软件和硬件的关系,在一定程度上可以说,硬件是为软件服务的。硬件工程师研发出一款硬件设备,自然少了
2011-08-25 10:21:11 932
转载 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口。实现这两者的目的是为了向更上一层提供硬件访问接口,即为Android的Application Frameworks层提供硬件服务。我们
2011-08-25 10:11:03 1013
转载 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法。简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着,在Ubuntu上为Android系统编写Linux内核驱动程
2011-08-25 10:08:19 1214
转载 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/proc/hello和devfs系统属
2011-08-25 10:05:09 1014
转载 在Ubuntu上为Android系统编写Linux内核驱动程序
在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达
2011-08-25 10:03:57 1444
转载 Android硬件抽象层(HAL)概要介绍和学习计划
Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核
2011-08-25 10:01:34 1331 2
原创 工作之余,写写博客
今天突然想到要写技术类的博客,因为觉得当自己离开了电脑,离开了工作的岗位,却发现自己所工作的一切都存在于看得见到摸不找的载体里,万一有一天,电脑坏了,智能电子产品也坏了,那么我所做的一切不就都消失了?所以,工作之余,写写博客,记录一下自己的工作成果以及总结自己所学到的知识,却是一
2011-08-12 20:47:08 945
原创 Android系统框架的分析
Android是一个开放的软件系统,还有另一种定义就是Android是一个包括操作系统、中间件和关键应用的移动设备软件堆。
2011-08-12 20:31:57 3112
Hi3518EV300 消费类IP Camera SoC产品简介.pdf
2019-09-10
等精度数字频率计设计
2011-03-07
课程设计:数据采集系统的设计
2011-03-07
基于CPLD/FPGA的出租车计费器
2011-01-13
步进电机控制系统设计
2011-01-13
V-M双闭环不可逆直流调速系统
2011-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人