• <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • USB-C(USB Type-C)规范的简单介绍和分析

    作者:wowo 发布于:2017-12-18 16:18 分类:USB

    从1996年1月USB1.0正式发布至今(2017年9月 USB3.2发布),USB已经走过了21个年头。在这21年的时间了,USB标准化组织(USB Implementers Forum,USB-IF)折腾出来了各式各样、五花八门的接口形态:Type A、Type A SuperSpeed、Type B、Type B SuperSpeed、Mini-A、Mini-B、Micro-A、Micro-B、Micro-B SuperSpeed、Type C等等。

    另外,USB接口主要由插座(Receptacle)、插头(Plug)和线缆(Cable)三部分组成,再叠?#30001;?#36825;些奇奇怪怪的规范,灾难就发生了:

    A产品喜欢用Type A的插座,B产品偏偏喜欢Type B,连接它们的线缆就悲剧了,只能变成A-to-B的了。以此类推,A-to-A、B-to-B、A-to-MicroA、等等,于是我们的抽屉就挤满了各种不明用途的USB线……

    好吧,吐槽时间结束,因为本文的主角不是过去的那些奇奇怪怪的接口,而是最新的、红到发?#31995;腢SB-C(也称作USB Type C)规范。提起typec,它还真和它的A、B前辈们不太一样:

    因为它有自己独立的、自行演化的规范文件----USB Type-C Specification(2014年发8月布1.0版本,2017年7月发布1.3版本)。而前辈们就没有这样的待遇了,它?#23884;?#20381;附于具体的USB规范(USB 1.0、USB 1.1、USB 2.0、等等)。

    为什么会这样的呢?当然是因为它有独特之处了,具体请参考本文后续的描述。

    阅读全文>>

    标签: Power USB typec type-c 3.1 pd

    评论(15) 浏览(26193)

    Linux kernel内存管理的基本概念

    作者:wowo 发布于:2017-11-9 22:37 分类:内存管理

    内存(memory)在Linux系?#25345;?#26159;一种牵涉面极广的资源,上至应用程序、下至kernel和driver,无不为之魂牵梦绕。?#30001;?#23427;天然的稀缺性,导致内存管理(Memory Management,简称MM)是linux kernel中非常重要又非常复杂的一个子系统。

    重要性就?#27426;?#35828;了,Kernel自有分寸。关于复?#26377;裕?#37492;于Linux kernel优秀的抽象能力),应该不会被普通人(Linux系统的使用者、应用工程师、驱动工程师、轻?#32771;?#30340;内核工程师)感知到才对。事?#31561;肥等?#27492;,Kernel屏蔽掉了大多数的实现?#38468;冢?#23613;量以简单、易用的方式向其它模块提供memory服务。

    不过呢,这个世界上没有完美的存在,kernel的内存管理也是如此,由于两方面的原因:一、众口难调,内存管理有关的需求实在太复杂了?#27426;PU、Device和Memory之间纠结的三角恋(参考下面图片),导致它也(不得不)提供了很多啰里啰唆的、不易理解的功能(困扰了很多从入门级到资深级的linux软件工程师)。

    memory_topology

    图片1 CPU, Device and Memory

    基于上面的原因,本站内存管理子系统发布了很多分析文章,以帮助大?#20381;?#35299;内存管理有关的概念。不过到目前为止,还缺少一篇索引类的文章,从整体出发,理解Kernel内存管理所需要面对的软?#24067;?#23616;面、所要解决的问题,以及各个内存管理子模块的功能和意义。这就是本文的目的。

    阅读全文>>

    标签: Linux Kernel 内核 内存管理 mm 概念

    评论(6) 浏览(12659)

    Linux kernel scatterlist API介绍

    作者:wowo 发布于:2017-10-13 22:20 分类:内存管理

    我们在那些需要和用户空间交互大量数据的子系统(例如MMC[1]、Video、Audio等)中,经常看到scatterlist的影子。对我们这些“非英语母语”的人来说,初见这个词汇,?#28304;布?#23601;蒙圈了。scatter可翻译成?#21543;?#24320;、分散”,list是“列表”的意思,因而scatterlist可翻译为?#21543;?#21015;表”。?#21543;?#21015;表”又是什么?太抽象了!

    之所以抽象,是因为这个词省略了主语----物理内存(Physical memory),?#30001;?#21518;,就好理解了多了,既:物理内存的散列表。再通俗一些,就是把一些分散的物理内存,以列表的形式组织起来。那么,也许你会问,有什?#20174;么?#21602;?

    当然有用,具体可参考本文后续的介绍。

    阅读全文>>

    标签: Linux Kernel 内核 scatterlist sg_table

    评论(6) 浏览(9243)

    X-026-KERNEL-Linux gpio driver的移植之gpio range

    作者:wowo 发布于:2017-9-27 22:27 分类:X Project

    我们在[1][2]中提到过,鉴于gpio的特殊性,pinctrl subsystem特意留了一个后门(gpio range),gpio driver可以通过这个后门直接向pinctrl subsystem申请将某个pin用作gpio功能。本文将根据一个简单的?#32416;?#20171;绍这个后门的使用方法,以?#30001;?#23545;相关机制的理解。

    注1:本文的测试方法和[3]中的一致,即?#21644;?#36807;gpiolib sysfs api控制LED0(GPIOA19)的亮灭,因而不再罗列详细步骤。

    阅读全文>>

    标签: driver GPIO porting pinctrl range

    评论(1) 浏览(6071)

    X-025-KERNEL-Linux gpio driver的移植之基本功能

    作者:wowo 发布于:2017-9-13 22:18 分类:X Project

    本文将基于本站GPIO subsystem[1]相关的文章,结合”X Project”?#30446;?#21457;过程,实现一个简单的gpio driver,并利用gpiolib提供的sysfs api进行简单的测试,进而?#30001;?#23545;gpio相关概念的理解。

    注1:本文后续的描述,kernel基于本?#23613;?/span>X Project”所使用的kernel版本,?#24067;?#22522;于 ”X Project”所使用的“Bubbugum-96”平台[2]

    阅读全文>>

    标签: sysfs driver GPIO porting gpiolib

    评论(2) 浏览(7018)

    蓝牙协议分析(11)_BLE安全机制之SM

    作者:wowo 发布于:2017-9-7 19:49 分类:蓝牙

    注1:此SM是Security Manager的缩写,非彼SM,大家不要理解歪了!

    书接上文,我们在“蓝牙协议分析(10)_BLE安全机制之LE Encryption”中介绍了BLE安全机制中的终极武器----数据加密。不过使用这把武器有个前提,那就是双方要共同拥有一个加密key(LTK,Long Term Key)。这个key至关重要,怎么生成、怎?#20174;?#36890;信的双方共享,关系到加密的成败。因此蓝牙协议定义了一系列的复杂机制,用于处理和加密key有关的操作,这就是SM(Security Manager)。

    另外,在加密链?#26041;?#31435;之后,通信的双方可以在该链路上共享其它的key(例如在“蓝牙协议分析(9)_BLE安全机制之LL Privacy”中提到的IRK),SM也顺便定义了相应的规范。

    阅读全文>>

    标签: 蓝牙 Bluetooth BLE SMP 配对 pairing 鉴权 authentication security

    评论(15) 浏览(14000)

    Linux reset framework

    作者:wowo 发布于:2017-9-1 10:46 分类:电源管理子系统

    大家都知道,复杂IC内部有很多具有独立功能的?#24067;?#27169;块,例如CPU cores、GPU cores、USB控制器、MMC控制器、等等,出于功耗、稳定性等方面?#30446;悸牵?#26377;些IC在内部为这些?#24067;?#27169;块设计了复位信号(reset signals),软件可通过寄存器(一般1个bit控制1个?#24067;?#25511;制这些?#24067;?#27169;块的复位状态。

    Linux kernel为了方便设备驱动的编写,抽象出一个简单的软件框架----reset framework,为reset的provider提供统一的reset资源管理手段,并为reset的consumer(各个?#24067;?#27169;块)提供便捷、统一的复位控制API。

    reset framework的思路、实现和使用?#25380;?#24120;简单、易懂(参考kernel有关的API--include/linux/reset-controller.h、include/linux/reset.h可知),不过麻雀虽小,五脏俱全,通过它可以?#30001;?#23545;Linux kernel的设备模型、驱动框架、分层设计、provider/consumer等设计思想的理解,因此本文将对其进行一个简单的罗列和总结。

    阅读全文>>

    标签: Linux Kernel 内核 framework reset

    评论(0) 浏览(5512)

    linux内核中的GPIO系?#25345;?):gpio subsysem和pinctrl subsystem之间的耦合

    作者:wowo 发布于:2017-8-10 22:17 分类:GPIO子系统

    按理说,kernel中gpio subsystem和pinctrl subsystem的关系应该非常清楚:

    pinctrl subsystem管理系统的所有管脚,GPIO是这些管脚的用途之一,因此gpio subsystem应该是pinctrl subsystem的client(?#37096;?#21483;做backend、consumer),基于pinctrl subsystem提供的功能,处理GPIO有关的逻辑。 

    不过,?#23548;是?#20917;却不是这么简单,它们之间有着较为紧密的耦合(看一看kernel中pinctrl和gpio相关的实现就知道了)。本文将对这种耦合进行一个简单的分析,解释为什么要这样设计。

    阅读全文>>

    标签: GPIO subsystem pinctrl range

    评论(2) 浏览(9542)

    X-024-OHTHERS-在windows平台下使用libusb

    作者:wowo 发布于:2017-7-23 22:21 分类:X Project

    ?#20843;?#25105;们“X Project”的第一个任务就是通过USB将主机?#31995;腎mage文件下载到开发板的Ram中执行(参考[1]中有关的内容),为此我们在host中porting了一个简单的应用程序(称作DFU[2]),负责和开发板ROM中的代码交流,下载并执行Image文件。为了方便,该应用程序使用libusb[3]进行USB有关的操作。

    libusb不止使用起来简单,还有一个极大的优点,就是“跨平台”的特性。我们之前的例子[4]都是在Linux平台下操作的,最近由于win10内置了Ubuntu,Linux平台有关?#30446;?#21457;工作,基本上都可以在这里完成了,因此就不需要费时、费神地切换到纯Linux环境下工作了。

    不过呢,Win10的Ubuntu好是好,但没法像纯Linux系统那样支持USB设备,DFU有关的工作就无法在这里正常工作,因此就发挥libusb的特性,把“X Project” DFU[2]有关的代码在Windows下跑起来,也算感受一下“跨平台”的魅力。具体步骤如下。

    阅读全文>>

    标签: MinGW libusb windows zadig dfu

    评论(1) 浏览(5927)

    X-023-KERNEL-Linux pinctrl driver的移植

    作者:wowo 发布于:2017-7-14 21:58 分类:X Project

    本文是“linux内核中的GPIO系?#25345;?):pinctrl驱动的理解和总结”的一个实例,结合”X Project”?#30446;?#21457;过程,介绍pinctrl driver的移植步骤,进而?#30001;?#23545;pinctrl framework的理解。

    注1:本文后续的描述,kernel基于本?#23613;?/span>X Project”所使用的kernel版本[4],?#24067;?/span>基于 ”X Project”所使用的“Bubbugum-96”平台。

    阅读全文>>

    标签: Linux Kernel driver porting pinctrl

    评论(0) 浏览(3085)

    Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog
    连码三全中是什么
  • <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • 极速快乐十分是哪里的 北京快乐赛车直播 快乐十分投注技巧 体育彩票走势图大乐透走势图 新疆时时彩2019021459 河南十一选五奖金分配 北京pk10开奖结果 河南快三走势图在线 六合彩最快开奖 开拓者vs尼克斯历史 内蒙古快三推选号码 体彩p3总跨度带连线 北京赛车宝pk10 斯诺克海口公开赛 三肖中特精准24码免费公开