spi

AML工作原理快速调研

馋奶兔 提交于 2020-03-21 02:30:01
3 月,跳不动了?>>> 前两天邀请人做这个文档的Review: in nek:评审邀请:Linux内核软件架构基础 ,有读者告诉我我对AML的理解有误。我找我们做BIOS的兄弟确认了一把,把逻辑链放在这里。 先定义一下问题:ACPI是一种定义BIOS和OS之间接口的方法。和其他一些方法,比如Device Tree(简称DTS),不同,ACPI支持函数接口,也就是说,OS可以通过“调用”接口给出的函数实现功能。这种所谓的“调用”,有几种可能: BIOS中给定一个数据结构,整体描述了一个函数,这个函数本身就是CPU的本地汇编。BIOS把整个数据接口传递到OS管理的内存空间,OS直接调用这个空间中的函数。 BIOS中给定一个数据结构,整体描述了一个函数,这个函数本身就是CPU的本地汇编。这个数据结构留在BIOS控制的内存中,传递给OS一个指针,OS远程调用这个指令的地址,完成请求。 BIOS中实现了一个本地函数,然后把这个函数的位置和格式告知OS,OS通过一个统一的接口把函数的标识和请求的参数传递给BIOS,BIOS内部完成调用,然后把结果通知OS。 BIOS给定一个数据结构,整体描述了一个函数,用一种平台无关的格式标识,这个数据结构整体提供给OS,OS上有一个解释器,解释执行这个平台无关的格式,实现对功能的执行。 用图来表达,区别如下: 严格来说,前两个方案没有什么区别,内存这东西

Spring中WebApplicationInitializer的理解

做~自己de王妃 提交于 2020-03-20 00:06:54
3 月,跳不动了?>>> 现在JavaConfig配置方式在逐步取代xml配置方式。而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口。通过实现WebApplicationInitializer,在其中可以添加servlet,listener等,在加载Web项目的时候会加载这个接口实现类,从而起到web.xml相同的作用。下面就看一下这个接口的详细内容。 首先打开这个接口,如下: public interface WebApplicationInitializer { void onStartup(ServletContext var1) throws ServletException; } 只有一个方法,看不出什么头绪。但是,在这个包下有另外一个类,SpringServletContainerInitializer。它的实现如下: package org.springframework.web; import java.lang.reflect.Modifier; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import javax.servlet

ApplicationListener使用

房东的猫 提交于 2020-03-19 12:04:54
3 月,跳不动了?>>> 1. 介绍 Spring有两大类事件 ,一类是 Application事件,超类是SpringApplicationEvent, 这类事件是在Spring程序启动时,每执行到一个阶段就发出一个事件,依次对应ApplicationStartingEvent到ApplicationReadyEvent,表示spring程序从启动开始到启动完成的过程。当然还有一个如果在启动过程中出现异常,就会发出 ApplicationFailedEvent 事件。 另一类是ApplicationContext事件,超类是 ApplicationContextEvent ,这类事件 表示ApplicationContext生命周期内的各个阶段 。 2. 内置事件 其中spring有一些内置的事件,当完成某种操作时会发出某些事件动作。 ApplicationContext内置事件 序号 内置事件 描述 1 ContextRefreshedEvent ApplicationContext 被初始化或刷新时,该事件被发布。这也可以在 ConfigurableApplicationContext接口中使用 refresh() 方法来发生。此处的初始化是指:所有的Bean被成功装载后处理Bean被检测并激活,所有Singleton Bean 被预实例化

ApplicationContextInitializer的使用

回眸只為那壹抹淺笑 提交于 2020-03-18 20:04:40
3 月,跳不动了?>>> 1.介绍 ApplicationContextInitializer主要用在容器刷新之前调用改接口实现类的initialize方法,并将ConfigurableApplicationContext类的实例作为参数传入。通常用于根据应用上下文进行处理的编程中。且实现类可以通过Ordered接口或 @Order注解 进行多个Initializer的排序。 2.有三种使用方式 首先定义一个测试initializer public class TestApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext>, Ordered { @Override public void initialize(ConfigurableApplicationContext applicationContext) { System.out.println("Initializer调用:" + applicationContext.getApplicationName()); } @Override public int getOrder() { return 0; } } 第一种:在启动类的main方法中使用

深入理解SPI机制

北战南征 提交于 2020-03-18 14:44:03
SPI 全称为 Service Provider Interface ,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。 Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 Dubbo 进行拓展。如果大家想要学习 Dubbo 的源码,SPI 机制务必弄懂。接下来,我们先来了解一下 Java SPI 与 Dubbo SPI 的用法,然后再来分析 Dubbo SPI 的源码。 1.0 Java SPI 示例 //定义接口 public interface SpiInterface { void sayHello(); } //实现类 public class SpiImpl01 implements SpiInterface { @Override public void sayHello() { System.out.println("Hello, I am SpiImpl01."); }} public class SpiImpl02 implements SpiInterface{ @Override public void sayHello() {

接口文档工具分享

半世苍凉 提交于 2020-03-17 15:52:46
某厂面试归来,发现自己落伍了!>>> 接口文档工具分享: 工具的使用 两种工具使用方式 mock的支持 工具的原理 启动与清理 maven插件(不绑定任何maven阶段) maven-invoker 在root pom执行 clean install -Dmaven.test.skip=true 然后对各个子module进行扫描,对包含controller的类进行接口上传 清理不属于该项目的接口和分类 spring spi机制 启动项目 扫描项目下的controller的类,进行接口上传 清理不属于该启动项目的接口和分类 实现细节: 参考了志辉和志敏提供的项目,基于志敏提供的项目二次开发 原先项目解析controller封装openapi3.0 json json上传yapi后发现很多返回结果和参数展示存在问题 后续还发现json解析也存在一些问题 仅支持import_data 接口 该接口只支持新增和更新,也就是说上传完后还是需要人工操作的 解析细节 使用qdox jar包,javadoc也是使用的该jar 包 源码解析 同时也大面积使用反射 个人觉得这俩使用一个即可 仅仅使用源码解析的话兼容性会更加的好 调取 yapi开放接口实现上传 由于yapi接口以及json格式版本变化比较大,出现各种不适配情况 我采用了相对简单粗暴的方法 yapi平台,F12,进行各种操作后

RK3399PRO的字符spi设备驱动

别来无恙 提交于 2020-03-17 15:36:21
Linux 4.4内核SPI驱动特性: ①默认采用摩托罗拉SPI协议 ②支持8位和16位 ③软件可编程时钟频率和传输速率高达50MHz ④支持SPI 4中传输模式的配置 ⑤每个SPI控制器支持一个到两个片选 1. 首先申请设备号(动态): int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name); 含义就是申请一个动态主设备号,并申请一系列次设备号。 baseminor为起始次设备号,count为次设备号的数量,name为设备名,会在设备/proc/devices创建同名设备。 实例: alloc_chrdev_region(&devno, 0,255, "myOled"); // 申请设备号devno,直观看到就是“myOled”会在系统的/proc/devices内显示。 2.注册设备到系统( 没有创建设备 ): int cdev_add(struct cdev *p, dev_t dev, unsigned count) 含义为 cdev 结构的指针,起始设备编号,以及设备编号范围。 实例接上: spidev_major = MAJOR(devno);//get allocated major number dynamicly,根据devno获取到主设备号。

嵌入式开发常用通信协议(总结)

痞子三分冷 提交于 2020-03-17 07:54:01
在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线。 以下内容为常用板上通信接口:包括I2C、SPI、UART、1-Wire 1. I2C总线(Inter Integrated Circuit) I2C总线是一种同步、双向、半双工的两线式串行接口总线。这里,半双工的含义 是指在任意给定的时刻,只有一个方向上是可以通信的 。I2C总线最早由Philips半导体公司于20世纪80年代研发面市。I2C最初的设计目标是为微处理器/微控制器系统与电视机外围芯片之间的连接提供简单的方法。 I2C总线由两条总线组成:串行时钟线SCL和串行数据线SDA。 SCL线——负责产生同步时钟脉冲。 SDA线——负责在设备间传输串行数据。 I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上。连接到I2C总线上的设备既可以用作主设备,也可以用作从设备。主设备负责控制通信,通过对数据传输进行初始化/终止化,来发送数据并产生所需的同步时钟脉冲。从设备则是等待来自主设备的命令,并响应命令接收。主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生。在相同的总线上,I2C支持多个主设备的同时存在。图1-1显示了I2C总线上主设备和从设备的连接关系。 图1-1                   图1-2

创龙TI AM5728浮点双DSP C66x +双ARM Cortex-A15开发板拓展IO信号、底板B2B连接器

偶尔善良 提交于 2020-03-16 17:48:36
某厂面试归来,发现自己落伍了!>>> 处理器 创龙基于TI A M5728浮点 双 DSP C66 x +双ARM Cor t ex-A15 工业 控制及高性能 音 视频处理器 。 拥有多种工业接口资源,下图 为 A M5728 CPU资源框图: 拓展IO信号 J 4引出 了SPI/PWMSS/MMC/TIMER/UART拓展信号,J6 引出 了GPMC/QSPI 拓展 信号。其 硬件 图及引脚定义如下: J4 SPI/PWMSS/MMC/TIMER/UART拓展信号 ( J4 ) J6 GPMC/QSPI 拓展 信号 (J 6) 底板 B2B连接器 开发板使用 底板 +核心板设计模式,通过2x 80pin公头 B2B,2x 80pin母头B2B,间距0.5mm,合高5.0mm;1x 80pin 高速连接器,共400pin ,其中 底板 CON0C和CON0D 为 母座,CON0A和CON0B 为 公座, 下图 为 底板 各个B2B的 实物 图 , 引脚定义详见光盘 中 的底板 原理 图: 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/3196068

单片机是什么?在大学里学习单片机,对以后的就业会有帮助吗

試著忘記壹切 提交于 2020-03-16 11:50:11
某厂面试归来,发现自己落伍了!>>> 学习单片机非常有用,可以从事硬件工程师或者嵌入式工程的职位,就业前景非常好。 1. 单片机的应用 现在的电子类产品功能非常丰富,上手体验很人性化,这些都离不开单片机。正是由于单片机可以编程,从而降低了产品的开发难度,降低了电路的复杂度。下面的图片是小米体脂称的拆解图: 图片来源于GEEKiFIX 图中LQFP48扁平封装的就是一颗单片机芯片,只不过这颗芯片是合泰的,在市面上不常用。 2. 单片机是什么 单片机上CPU内核、RAM、ROM、GPIO口、中断、定时器/计数器等功能,高端一点的单片机可能还包括PWM、A/D转换、UART通信、IIC通信、SPI通信、CAN通信等资源,以单片机为核心,利用单片机的片上资源可以搭建不同的外设电路,从而实现不同的功能,由于可编程,电路的硬件逻辑设计已被大大的简化了。单片机也从8位,发展到了16位,32位。出现了高端的ARM芯片,DSP芯片,还有FPGA。 3. 会单片机可以从事什么岗位 单片机设计到硬件设计和编程,所以分出来两个大类硬件和软件。 硬件工程师 :主要设计产品的硬件原理图,设计PCBlayout,小公司如果软硬不分家的话,可能要编程; 软件工程师 :这里的软件工程师是指与硬件底层相关的软件,如编写驱动程序、嵌入式软件开发等; PCB设计 4. 发展前景怎么样 如果对单片机很感兴趣