spi

【翻译】ARM虚拟化软件和架构支持的设计,实现和评估

对着背影说爱祢 提交于 2019-11-28 20:02:18
这是一篇论文:https://academiccommons.columbia.edu/doi/10.7916/D8D238J2/download 学习ARM虚拟化非常好的材料,这里翻译了其中几个章节。 ----------------------------------------------------------------------------------------------------------- 2.1 ARM虚拟化扩展 由于ARM体系结构不是经典的可虚拟化(参见第1章),因此ARM引入了虚拟化扩展(VE)作为ARMv7 [11]和ARMv8 [13]体系结构的可选扩展。 诸如Cortex-A15之类的ARM CPU [10]包括对虚拟化的硬件支持,针对服务器和网络市场的所有ARMv8 CPU都包括虚拟化扩展。 我简要介绍了ARM虚拟化扩展。 2.1.1 CPU虚拟化 要运行VM,必须虚拟化特权CPU模式以保持隔离,并使管理程序保持对物理硬件的控制。如果允许VM完全控制底层硬件,那么它们会妨碍系统上的其他任务和VM运行,关闭CPU,甚至危及系统其他部分的完整性。如第1章所述,可虚拟化体系结构可以通过在非特权用户模式下运行所有​​VM(包括guest内核)来虚拟化特权CPU模式,并将每个敏感操作捕获到管理程序并在软件中模拟操作。要在非虚拟化架构(如ARM

Sound — An API for playing sound data from applications.

好久不见. 提交于 2019-11-28 19:08:13
https://docs.oracle.com/javase/tutorial/sound/index.html The Java Sound API is a low-level API for effecting and controlling the input and output of sound media, including both audio and Musical Instrument Digital Interface (MIDI) data. The Java Sound API provides explicit control over the capabilities normally required for sound input and output, in a framework that promotes extensibility and flexibility. Java Sound API是一个底层API,用于实现和控制声音媒体的输入和输出,包括音频和乐器数字接口(MIDI)数据。 Java Sound API在一个促进可扩展性和灵活性的框架中提供对声音输入和输出通常所需功能的显式控制。 The Java Sound API fulfills the needs of a wide range of application

Dubbo源码分析(7):SPI扩展机制剖析

扶醉桌前 提交于 2019-11-28 16:28:45
我们都是知道一个合格的开源框架对于扩展的支持都要是相当弹性的,Dubbo 也不例外。Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。Dubbo的扩展机制是基于SPI思想来实现的,但是并没有采用JDK中原生的SPI机制。 1.什么是SPI java spi的具体约定为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。 基于这样一个约定就能很好的找到服务接口的实现类,而不需要再代码里制定。jdk提供服务实现查找的一个工具类:java.util.ServiceLoader。 2.为什么Dubbo自己实现SPI JDK中SPI具有很大的缺点,JDK中标准的SPI会一次性实例化扩展点所有的实现,不管这些实例化出来的扩展点实现有没有被用到。有的扩展点实现初始化时非常的耗时,即使没有用到也会被加载,这样就很浪费资源。 Dubbo的SPI机制中增加了对扩展点IOC和AOP的支持,一个扩展点可以直接setter注入到其他的扩展点中。 3.Dubbo中扩展点的概念 Dubbo作用灵活的框架

STM32F0xx HAL 库使用问题记录

依然范特西╮ 提交于 2019-11-28 10:21:37
1. SPI 数据收发函数 HAL_SPI_xxx 传入传出 buf 指针地址必需16位对齐 例如,SPI收发数据函数 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout) , pTxData和pRxData,必需16位对齐,若不能保证16位对齐,可以在调用SPI收发函数之情,申请两个16位对齐的buf替代原有的buf进行SPI收发数据,示例如下: HAL_StatusTypeDef spiTxRx(const uint8_t *txData, uint8_t *rxData, uint16_t length) { HAL_StatusTypeDef ret; /* txbuf, rxbuf 地址是16位对齐的,可作为SPI收发函数的参数 */ uint8_t txbuf[255]; uint8_t rxbuf[255]; /* 将SPI要发送的数据拷贝到txbuf */ if(txData != NULL) { memcpy(rxbuf, txData, length); } /* 使用txbuf和rxbuf进行SPI数据收发 */ ret = HAL_SPI

Initializing SD card in SPI issues

守給你的承諾、 提交于 2019-11-28 07:42:55
I've had a look at Stack Overflow question Initialization of a microSD card using an SPI interface and didn't see any answers that matched my issue (that is, things I haven't already tried). I have a similar issue where I'm trying to access a SD card through a microcontroller's SPI interface (specifically an HC908 ). I've tried following the flow charts in the Physical Layer Simplified Specification v2.00 and it seems to initialize correctly on Transcend 1 GB & 2 GB and an AE&C 1 GB card. But I'm having problems on three other random cards from my stash of old cards that I've used on my camera

【转】SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样

旧城冷巷雨未停 提交于 2019-11-28 05:12:40
转自:http://m.elecfans.com/article/778203.html 本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH的区别进行了详细的区分。   SPI FLASH   首先它是个Flash,Flash是什么东西就不多说了(非易失性存储介质),分为NOR和NAND两种(NOR和NAND的区别本篇不做介绍)。SPI一种通信接口。那么严格的来说SPI Flash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下人们说的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。      NorFlash根据数据传输的位数可以分为并行(Parallel,即地址线和数据线直接和处理器相连)NorFlash和串行(SPI,即通过SPI接口和处理器相连)NorFlash

u-boot-1.1.4代码阅读(转)

自作多情 提交于 2019-11-28 03:09:19
写在前面:通过uboot的阅读我学到了很多东西,高手写的代码就是不一样。 代码阅读顺序: 1.第一阶段(Stage 1) 第一阶段的启动代码在 cpu\<cpu type>\start.s中,完成的工作主要有: CPU自身初始化:包括 MMU,Cache,时钟系统,SDRAM 控制器等的初始化 重定位:把自己从非易失性存储器搬移到 RAM中 分配堆栈空间,设置堆栈指针 清零 BSS 数据段 跳转到第二阶段入口函数 start_armboot() /Uboot114/u-boot-1.1.4/cpu/arm926ejs/start.S 2.第二阶段(Stage 2) 第二阶段是 u-boot 的主体,入口点是 lib_arm\board.c 中的 start_armboot()函数,完成的主要工作包括: 为 U-boot 内部私有数据分配存储空间,并清零 依次调用函数指针数组 init_sequence 中定义的函数进行一系列的初始化 如果系统支持 NOR Flash,调用 flash_init ()和 display_flash_config ()初始化并显示检测到的器件信息(AT91SAM9260EK不需要) 如果系统支持LCD或VFD,调用lcd_setmem()或vfd_setmem()计算帧缓冲(Framebuffer)大小,然后在 BSS 数据段之后为

SPI协议简介

时光怂恿深爱的人放手 提交于 2019-11-28 02:37:38
http://hi.baidu.com/hieda/blog/item/2dcb1f3845b9582097ddd8da.html SPI协议简介 (下面内容摘自互联网) 一 SPI协议概括 二 SPI协议举例 三 SPI协议心得 一 SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200. SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 (1)SDO – 主设备数据输出,从设备数据输入 (2)SDI – 主设备数据输入,从设备数据输出 (3)SCLK – 时钟信号,由主设备产生 (4)CS – 从设备使能信号,由主设备控制

STM32 SPI Slow Compute

你说的曾经没有我的故事 提交于 2019-11-28 00:20:11
I'm using a STM32F4 and its SPI to talk to a 74HC595 like in this tutorial. Difference is for starters I'm using the non-DMA version for simplicity. I used STMCubeMX to configure SPI and GPIO Issue is: I'm not getting the latch PIN, that I set to PA8 to toggle during transmission fast enough. The code I'm using: spiTxBuf[0] = 0b00000010; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); HAL_SPI_Transmit(&hspi1, spiTxBuf, 1, HAL_MAX_DELAY); // while(HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); HAL_Delay(1); Things I tried: Set the

利用C51单片机模拟SPI进行双机通信

人盡茶涼 提交于 2019-11-27 23:49:30
SPI协议简述   SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。由Motorola首创。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线。 优缺点: 协议简单,相对数据速率高。 占用的Pin口较多 没有指定的流控制,没有应答机制确认是否接收到数据。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI,SDO,SCK,CS。 SDO – 主设备数据输出,从设备数据输入 SDI – 主设备数据输入,从设备数据输出 SCK – 时钟信号,由主设备产生 CS – 从设备使能信号,由主设备控制 CS: 其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效,这就允许在同一总线上连接多个SPI设备成为可能。 SCK:SCK为时钟信号线,主要控制时序。相当于整个SPI协议是以SCK为准进行的。因此SCK的控制在每次发送中只能在主机的控制下进行,从机不可控制。 SDI/SDO: 通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议