spi

设计一个可拔插的 IOC 容器

爷,独闯天下 提交于 2019-12-01 09:54:15
前言 磨了许久,借助最近的一次通宵上线 cicada 终于更新了 v2.0.0 版本。 之所以大的版本号变为 2,确实是向下不兼容了;主要表现为: 修复了几个反馈的 bug 。 灵活的路由方式。 可拔插的 IOC 容器选择。 其中重点是后面两个。 新的路由方式 先来看第一个:路由方式的更新。 在之前的版本想要写一个接口必须的实现一个 WorkAction ;而且最麻烦的是一个实现类只能做一个接口。 因此也有朋友给我提过这个 issue 。 于是改进后的使用方式如下: 是否有点似曾相识的感觉。 如上图所示,不需要实现某个特定的接口;只需要使用不同的注解即可。 同时也支持自定义 pojo , cicada 会在调用过程中对参数进行实例化。 拿这个 getUser 接口为例,当这样请求时这些参数就会被封装进 DemoReq 中. http://127.0.0.1:5688/cicada-example/routeAction/getUser?id=1234&name=zhangsan 同时得到响应: {"message":"hello =zhangsan"} 实现过程也挺简单,大家查看源码便会发现;这里贴一点比较核心的步骤。 扫描所有使用 @CicadaAction 注解的类。 扫描所有使用 @CicadaRoute 注解的方法。 将他们的映射关系存入 Map 中。 请求时根据 URL

iTOP-IMX6Q开发板设备树-RFID驱动-修改手册

喜你入骨 提交于 2019-12-01 09:44:51
此文档基于迅为iTOP-iMX6开发板 1.内核 拷贝rc522驱动到iTOP-iMX6_android6.0.1/kernel_imx/drivers/spi目录下。 打开iTOP-iMX6_android6.0.1/kernel_imx/drivers/spi/Makefile 添加: obj-$(CONFIG_SPI_RC522) += rc522.o iTOP-iMX6_android6.0.1/kernel_imx/drivers/spi/Kconfig 在文件末尾添加: config SPI_RC522 tristate "RC522 Module driver support" help This supports RC522 Module drivers. 2.修改设备树文件 iTOP-iMX6_android6.0.1/kernel_imx/arch/arm/boot/dts/imx6qdl-sabresd.dtsi (1)添加: &ecspi2 { fsl,spi-num-chipselects = <1>; cs-gpios = <&gpio2 27 0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ecspi2>; status = "okay"; rfid: rc522@0 { #address

STM32HAL库使用SPI驱动1.44寸TFTLCD

隐身守侯 提交于 2019-12-01 07:05:11
  关于STM32F4单片机,使用HAL库自带的SPI,驱动TFTLCD屏幕的资料网上好像不太多,正好最近我做了这项工作,把成果分享给大家。我的代码实现了这些功能:任意坐标画点,指定首尾坐标画线,画方框,指定区域显示彩图,显示16* 16或者12* 12的汉字、ASCII码,并附带ASCII码表与少量的汉字字库。 硬件设计   屏幕选择:使用了一款低成本十六位彩屏,只要十块钱。 链接    厂家看到文章请联系我打广告费,哈哈。   虽然用这个屏幕的可能不多,但我了解到,只要其 控制芯片是ST7735S ,那么程序就应该差不多。不同的地方在于,厂家的封装与玻璃不太一样,玻璃有个伽马值不同,会导致颜色看上去不太一样。   屏幕的引脚信息   我的原理图设计:使用了STM32F405RG芯片的SPI1,屏幕没有MISO。 cubeMX中SPI的配置大致如下:   其实SPI的速度我选的是21MBITS/s,可能再快一点也行,没有测试。   其它引脚比较散,都是当做IO来用,CubeMX中的配置过程就不说了,汇总如下 名称 引脚 功能 LCD_RST PC5 屏幕复位 LCD_CD PB0 0数据1指令 SPI_MOSI PB5 数据线 SPI_CLK PB3 时钟线 LCD_CS PB1 片选,低电平有效 LCD_LED PB2 背光,高电平有效 发送数据与指令的基本函数  

dubbo源码分析系列(1)扩展机制的实现

爱⌒轻易说出口 提交于 2019-11-30 19:54:51
#1 系列目录 dubbo源码分析系列(1)扩展机制的实现 dubbo源码分析系列(2)服务的发布 dubbo源码分析系列(3)服务的引用 dubbo源码分析系列(4)dubbo通信设计 #2 SPI扩展机制 站在一个框架作者的角度来说,定义一个接口,自己默认给出几个接口的实现类,同时允许框架的使用者也能够自定义接口的实现。现在一个简单的问题就是:如何优雅的根据一个接口来获取该接口的所有实现类呢? 这就需要引出java的SPI机制了 ##2.1 SPI介绍与demo 这些内容就不再多说了,网上搜一下,一大堆,具体可以参考这篇博客 Java SPI机制简介 ; 我这里给出一个简单的demo: 定义一个接口:com.demo.dubbo.demo.spi.service.HelloService 接口的实现类: com.demo.dubbo.demo.spi.service.impl.DefaultHelloService com.demo.dubbo.demo.spi.service.impl.CustomHelloService 然后在类路径下,创建META-INF/services/com.demo.dubbo.demo.spi.service.HelloService文件,内容如下: com.demo.dubbo.demo.spi.service.impl

Dubbo SPI介绍

假装没事ソ 提交于 2019-11-30 19:54:45
为什么要设计adaptive?注解在类上和注解在方法上的区别? adaptive设计的目的是为了识别固定已知类和扩展未知类。 1.注解在类上:代表人工实现,实现一个装饰类(设计模式中的装饰模式),它主要作用于固定已知类, 目前整个系统只有2个,AdaptiveCompiler、AdaptiveExtensionFactory。 a.为什么AdaptiveCompiler这个类是固定已知的?因为整个框架仅支持Javassist和JdkCompiler。 b.为什么AdaptiveExtensionFactory这个类是固定已知的?因为整个框架仅支持2个objFactory,一个是spi,另一个是spring 2.注解在方法上:代表自动生成和编译一个动态的Adpative类,它主要是用于SPI,因为spi的类是不固定、未知的扩展类,所以设计了动态$Adaptive类. 例如 Protocol的spi类有 injvm dubbo registry filter listener等等 很多扩展未知类, 它设计了Protocol$Adaptive的类,通过ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(spi类);来提取对象 为什么dubbo要自己设计一套SPI? 这是原始JDK spi的代码

More than two SPI devices on an Arm board that supports only two?

余生颓废 提交于 2019-11-30 18:47:40
问题 The Arm processor on one of our boards has an spi port with two chip select lines. It is mentioned in the processor's datasheet that it can control upto two spi devices. Is it possible to use a GPIO as a slave select for an additional spi device? How to modify the existing libraries/device drivers to support this change? So far i've found a file in the kernel's source which contains the addresses of SPI port pins. Can anyone plz tell in which direction should i proceed? 回答1: You don't mention

探究Dubbo的ExtensionLoader

穿精又带淫゛_ 提交于 2019-11-30 17:51:33
一定要对比JDK的SPI机制,才能更好的理解Dubbo的SPI实现! 扩展点:即接口 扩展:扩展点的实现,即接口的实现类 获取扩展点的ServiceLoader实例 通过扩展点的ServiceLoader实例,完成扩展的方法调用 package com.nucc; ​ import java.util.ServiceLoader; ​ /** * JDK SPI Sample. */ public class App { public static void main(String[] args) { ServiceLoader<Command> serviceLoader = ServiceLoader.load(Command.class); ​ for (Command cmd : serviceLoader) { cmd.execute(); } } } 通过以上代码理解了JDK的SPI机制,那么DUBBO SPI机制该怎么实现? 1⃣ 获取扩展点的ExtensionLoader实例,希望它是单例的,初始化后将它缓存起来(方便以后拿出来直接用); 2⃣ 获取扩展的实例,为了避免JDK SPI中一次全部加载带来的资源损耗问题,Dubbo SPI机制应在设计上应采用延迟加载机制,即只获取想要的扩展,而非将全部扩展进行加载。 深入探究Dubbo的ExtensionLoader

nRF24L01 是一款工作在2.4~2.5GHz 世界通用ISM 频段的单片无线收发器芯片

亡梦爱人 提交于 2019-11-30 14:56:56
nRF24L01 是一款工作在2.4~2.5GHz 世界通用ISM 频段的单片无线收发器芯片无线收发器包括: 频率发生器增强型SchockBurstTM 模式控制器功率放大器晶体振荡器调制器解调器输出功率频道选择和协议的设置可以通过SPI 接口进行设置极低的电流消耗当工作在发射模式下发射功率为-6dBm 时电流消耗为9.0mA 接收模式时为12.3mA掉电模式和待机模式下电流消耗更低。 特性 ● 真正的GFSK 单收发芯片 ● 内置链路层 ● 增强型ShockBurstTM ● 自动应答及自动重发功能 ● 地址及CRC 检验功能 ● 数据传输率1 或2Mbps ● SPI 接口数据速率0~8Mbps ● 125 个可选工作频道 ● 很短的频道切换时间可用于跳频 ● 与nRF 24XX 系列完全兼容 ● 可接受5V 电平的输入 ● 20 脚QFN 4 4mm 封装 ● 极低的晶振要求60ppm ● 低成本电感和双面PCB 板 ● 工作电压1.9~3.6V 应用 ● 无线鼠标键盘游戏机操纵杆 ● 无线门禁 ● 无线数据通讯 ● 安防系统 ● 遥控装置 ● 遥感勘测 ● 智能运动设备 ● 工业传感器 ● 玩具 刘先生:13632658391/Q:2355239041 来源: https://my.oschina.net/u/4187645/blog/3111979

了解一下Java SPI的原理

流过昼夜 提交于 2019-11-30 14:55:23
了解一下Java SPI的原理 1 为什么写这篇文章? 近期,本人在学习dubbo相关的知识,但是在dubbo官网中有提到Java的 SPI,这个名词之前未接触过,所以就去看了看,感觉还是有很多地方有使用的,比如jdbc、log相关的技术上均有使用,还是很有用处的,就在这里总结一下自己的学习内容!(本文有参考相关资料:比如dubbo官网、相关blog等) 2 SPI是什么? Java SPI(Service Provider Interface)是JDK内置的一种动态加载扩展点的实现。在ClassPath的META-INF/services目录下放置一个与接口同名的文本文件,文件的内容为接口的实现类,多个实现类用换行符分隔。JDK中使用java.util.ServiceLoader来加载具体的实现。 Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 3 自定义一个SPI 3.1 创建工程 创建dubbo-spi的工程,这里展示一下完整的spi示例程序结构: 3.2 创建接口 在包top.flygrk.ishare.spi.service下创建接口: SPIService package top.flygrk.ishare.spi.service; /** * @Package top.flygrk.ishare.spi.service *

MT2625 SPI学习

安稳与你 提交于 2019-11-30 10:32:21
https://blog.csdn.net/qq_38410730/article/details/80318821 https://zhuanlan.zhihu.com/p/37506796 https://wenku.baidu.com/view/cf7de1dcfd0a79563d1e7220.html DMA Direct Memory Access. DMA is a feature of computer systems that allows certain hardware subsystems to access main system memory independent from the central processing unit (CPU). FIFO First In, First Out. FIFO is a method for organizing and manipulating a data buffer, where the first entry, or 'head' of the queue, is processed first. GPIO General Purpose Inputs-Outputs. NVIC Nested Vectored Interrupt Controller. NVIC is the interrupt