外设

DMA简介

好久不见. 提交于 2019-11-29 15:05:14
注意: 个人整理,有误无责。 0. CPU控制的数据传输方式介绍 由CPU控制的数据传输方式有两种:查询、中断。 0.1 查询方式    查询方式是由程序控制的,如果CPU中执行的程序需要进行数据传输,CPU查询外设状态,如果外设准备好,那么进行数据传输。 0.2 中断方式    当外设需要与CPU进行数据交换的时候,外设向CPU发出中断请求,CPU中断当前执行的程序,相应外设的数据传输请求。当外设的数据传输结束后,CPU继续执行被中断的程序. 上面两种方式,数据都需经过CPU来传递,下面介绍DMA控制的数据传递。 1. DMA介绍    DMA方式,Direct Memory Access,也称为成组数据传送方式,有时也称为直接内存操作。DMA方式在数据传送过程中,没有保存现场、恢复现场之类的工作。    由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数等操作。内存地址修改、传送字 个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的。所以DMA方式能满足高速I/O设备的要求,也有利于CPU效率的发挥。 (参考自百度) 2. 工作原理    直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传 输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。   

iOS 作为蓝牙外设广播信息

北慕城南 提交于 2019-11-29 04:16:29
苹果蓝牙后台的限制,原本广播会有两个段分别是localName和serviceUUID这两块,但现在后台广播时,是不发送在这两段的 手机app可以作为一个蓝牙外设端来模拟外设硬件,但广播包里的数据只能包含localName和serviceUUID,相对于外设硬件来说还是有一些不足之处。 一个128位的蓝牙UUID来标示 32个 x 是 0-9 或 a-f 范围内的一个十六进制的数字(0x00),X是字符串格式 把数据按uuid的格式加进去 self.peripheralManager startAdvertising:@{CBAdvertisementDataServiceUUIDsKey:serviceUUIDs,CBAdvertisementDataNameKey:localName}]; 对应的值是数组 key: kCBAdvDataIsConnectable, value: 1 key: kCBAdvDataLocalName, value: SimpleBLEPeripheral key: kCBAdvDataServiceUUIDs // 数据就在这里 uuid(0): FF F0 key: kCBAdvDataTxPowerLevel, value: 0 Manufacturer Specific Data NSArray *keys =

鼠标

荒凉一梦 提交于 2019-11-28 03:14:24
前言 作为程序员,外设就是自己的工具。每天都这么累了,省点钱,买个外设用好久,挺划算的。 第一次选择 最一开始,因为买笔记本,需要一个鼠标,就直接看了罗技,因为只有它名声比较大,觉着靠谱。花100买了m280。小手鼠标,无线,挺好用,电池也很耐用。 第二次选择 既然种草了外设,那么就会随着时间的流逝,换外设的情绪越来越高涨。慢慢的各种看公司的鼠标不顺眼,所以,基于原来的m280,购买了m330放到公司使用。不过当长时间使用后,发现并不是很好用,说不出来。无奈,送给了小舅子。心疼后悔。 入门之路 这次教训后,觉着,要好好了解一下外设了。原来不愿意了解就是因为东西太多太麻烦了。不过为了买一个合意的产品,不得不去了解。 然后就去顺电试更详细的了解一下,但是临时试用与长时间使用差距很大,最终体验还是需要自己购买或是有朋友用过告诉你。 看了好久,每次去商场都要到顺电试试,当时考虑到不要太贵的,就看上了m720,在顺电试用的时候,第一次觉着,嗯,鼠标还有这种感觉,很舒服。 放弃 正好同事要买鼠标,我就安利了一下,过了几天他买了,但是用了一下,退掉了,说上手并不好用。我也只能放弃了。从此,开始了真正的鼠标外设学习之路。 深入 加入了鼠标贴吧,发帖一直没人回,发现人气好少。 只能在贴吧里泡着,把精品贴,使用体验贴,多年外设经验贴等,从头看到尾。中间提到的任何相关或是感兴趣的,都去查看了解

CAN通信详解

点点圈 提交于 2019-11-27 18:10:50
转:https://blog.csdn.net/CSDN_Yoa/article/details/81384924 并结合自己项目上CAN的配置觉得该文章很好希望帮助想了解CAN的网友。 本章参考资料:《STM32F4xx 中文参考手册2》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。 若对CAN通讯协议不了解,可先阅读《CAN总线入门》、《CAN-bus规范》文档内容学习。 关于实验板上的CAN收发器可查阅《TJA1050》文档了解。 40.1 CAN协议简介 CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的 德国 BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。 CAN总线协议已经成为 汽车计算机控制系统 和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,它具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境。 40.1.1 CAN物理层 与I2C、SPI等具有时钟信号的同步通讯方式不同,CAN通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有CAN

字节输出流OutputStream

雨燕双飞 提交于 2019-11-27 13:21:55
1、OutputStream是输出字节流的超类。 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { File file = new File("E:\\IO流\\java\\1.txt"); FileOutputStream f = new FileOutputStream(file, true);// 加true后可以实现续写功能 String str = "\r\n" + "nihao";// 换行 f.write(str.getBytes()); f.write("你好".getBytes()); f.write(8); f.close();//释放输出流的资源占用 } } 2、缓冲区 write()方法所写的数据并不是直接写入到外设,而是先存放到缓冲区中,积累到一定程度再写到外设,这样可以提高系统效率。但有的时候缓冲区不满就需要写到外设上,需要调用flush()方法。 来源: https://www.cnblogs.com/zhai1997/p/11365455.html

关于jvm系统属性-Djava.awt.headless 模式

為{幸葍}努か 提交于 2019-11-27 00:39:22
1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式。在系统可能缺少显示设备、键盘或鼠标这些外设的情况下可以使用该模式。 2. 何时使用和headless mode? Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。 3. 如何使用和Headless mode? 一般是在程序开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来: System.setProperty("java.awt.headless", "true"); 来源: https://www.cnblogs.com/zhjh256/p/11336832.html

计算机组成原理 - 一些简单题和设计分析题

此生再无相见时 提交于 2019-11-26 12:34:03
为了前几天的计算机组成原理的复习,从google上搜索的一些烟台大学历年考试试题进行的一些总结,现在分享给需要的朋友。 简答题 1. CPU中包括哪几种寄存器?分别说明其作用。 答:CPU有以下寄存器: (1)指令寄存器(IR):用来保存当前正在执行的一条指令。 (2)程序计数器(PC):用来确定下一条指令的地址。 (3)地址寄存器(AR):用来保存当前CPU所访问的内存单元的地址。 (4)缓冲寄存器(DR):<1>作为CPU和内存、外部设备之间信息传送的中转站。 <2>补偿CPU和内存、外围设备之间在操作速度上的差别。 <3>在单累加器结构的运算器中,缓冲寄存器还可兼作为操作数寄存器。 (5)通用寄存器(AC):当运算器的算术逻辑单元(ALU)执行全部算术和逻辑运算时,为ALU提供一个工作区。 (6)状态条件寄存器:保存由算术指令和逻辑指令运行或测试的结果建立的各种条 件码内容。除此之外,还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。 2.根据操作数所在位置,指出其寻址方式(填空)。 (1)、操作数在寄存器中,为____ 寄存器 ____寻址方式。 (2)、操作数地址在寄存器中,为_ 寄存器间接 _寻址方式。 (3)、操作数地址(主存)在指令中,为___ 直接 ___寻址方式。 (4)、操作数在指令中,为__ 立即 ____寻址方式。

关于RAID与SCSI的一些基本概念

不想你离开。 提交于 2019-11-26 10:13:43
RAID简介 内嵌微处理器的磁盘子系统通常称为R A I D系统。R A I D阵列的可用容量总小于成员磁盘的总量。 一、RAID 0(分块)是简单的、不带有校验的磁盘分块,本质上它并不是一个真正的R A I D,因为它并不提供任何形式的冗余。假如RAID 0的磁盘失败,那么,数据将彻底丢失。为了在RAID 0情况下恢复数据,唯一的办法是使用磁带备份或者镜像拷贝。 二、RAID 1(镜像)是非校验的R A I D级。 三、RAID 2(专有磁盘的并行访问)的定义涉及R A I D控制器中的错误校验电路。这个功能已经被集成到磁盘驱动器中,虽然便宜,但效率却不高。因此, RAID 2没有形成产品。 四、并行访问R A I D都属于R A I D 3。R A I D 3(使用专有校验磁盘的同步访问)子系统将数据分块存放到阵列中的所有驱动器,将校验数据写到阵列中的一个另外的校验磁盘, R A I D 3被认为是校镽 A I D。 五、RAID4(使用专用校验磁盘的独立访问)是一种独立访问的R A I D实现,它使用一个专用的校验磁盘。与RAID 3不同的是,RAID 4有更大量的分块,使多个I / O请求能同时处理。虽然它为读请求提供了性能的优势,但RAID 4的写开销特别大,因为在每次读、修改和写周期中,校验磁盘都被访问两次。 六、RAID 5(使用分布式校验的独立访问

iOS开发,Bluetooth你应该了解一些!

怎甘沉沦 提交于 2019-11-26 02:28:52
API结构导图 CoreBluetooth中,需要用到的类和协议( 完整导图 ): 基础知识 蓝牙分类中心端和外设端( 完整导图 )。 中心端(接收端) 1 .创建中心端控制器(CBCentralManager) 2 .扫描设备(Discover) 3 .连接 (Connect) 4 .获取Service和Characteristic 扫描Service (一个service中包含一个或多个Characteristic) 获取Service中Characteristic 获取Characteristic的值 5 . 数据交互(explore and interact) 订阅Characteristic的通知 6 . 断开链接 外设端(发送端) 创建Peripheral管理对象 创建Service和Characteristic树 发送广告 处理读写请求和订阅 蓝牙状态 typedef NS_ENUM(NSInteger, CBManagerState) { CBManagerStateUnknown = 0, CBManagerStateResetting, CBManagerStateUnsupported, //不支持 CBManagerStateUnauthorized, //未授权 CBManagerStatePoweredOff, //关闭

zynq开发板外设配置

浪子不回头ぞ 提交于 2019-11-25 20:18:49
有幸得到米尔电子zynq系列开发板Z-turn Board试用体验,下面说说我这款zynq系列的Z-TURN板子外设配置。从Z-turn Board原理图上看,目前可以配置的FPGA管脚大概有100多个,其它的管脚全部分配到A9上面,我用ISE14.6配置了几个通信接口,然后生成API接口,目前ARM端在裸机跑程序,后续上操作系统试试网口的通信功能,图中红色的圈即为配置的外设通信口。 来源: https://blog.51cto.com/14441885/2427317