spi

Linux Kernel DT(Device Tree)【转】

不羁岁月 提交于 2020-04-24 02:09:50
转自: https://www.jianshu.com/p/923b380366bb 之前在使用的3.0.8版本内核还没有使用上DT,而最近在研发使用的3.10.37版本内核已使用上了DT,瞬间感觉自己的知识体系更新慢了,查了资料发现3.x版本的内核已经支持DT了,为何ARM也要使用上DT呢? 在旧版本的ARM Linux内核里,我们习惯上会去arch/arm/mach-XXX/目录下进行一些板载级设备配置,尤其在board-YYY.c文件里使用platform_add_devices()等函数去注册一堆硬件设备以及板级初始化操作,还有如下宏: MACHINE_START(project name, "board name") .boot_params = PLAT_PHYS_OFFSET + 0x800, .fixup = XXX_fixup, .reserve = &XXX_reserve, .map_io = XXX_map_io, .init_irq = XXX_init_irq, .timer = &XXX_timer, .init_machine = XXX_init, MACHINE_END 其中的XXX_init函数里就会调用platform_add_devices()。 以及arch/arm/plat-XXX目录下也有一堆平台级的操作,一般在进行移植工作的时候

Sentinel 1.7.2 发布,完善开源生态及扩展性

孤人 提交于 2020-04-23 07:50:42
Sentinel 1.7.2 正式发布,带来了 Logger SPI 扩展机制、Zuul 2.x 网关流控、SOFARPC 适配等多项特性和改进。下面我们来一起探索一下 Sentinel 1.7.2 的重要特性。 多样化的适配模块 到目前为止,Sentinel 已覆盖微服务、API Gateway 和 Service Mesh 三大板块的核心生态,同时多语言已推出 Java、C++、Go 三种语言的原生实现。 得益于社区的贡献,Sentinel 1.7.2 带来了更多的适配模块: Zuul 2.x 适配模块:可以针对 Zuul 2.x 网关配置定制化的流控策略,流控粒度可以是路由维度以及自定义 API 分组维度。 SOFARPC 适配模块:可以针对 SOFARPC provider/consumer 接口和方法配置规则,支持来源限流,支持配置 fallback 处理逻辑。 日志扩展机制 1.7.2 版本引入了全新的日志扩展机制,新增 Logger SPI 扩展点(目前仅针对 RecordLog 和 CommandCenterLog 生效)。用户可以自定义 Logger 实现来适配项目中的日志模块(如 slf4j、logback、log4j2 等)。Sentinel Core 默认的日志实现仍然基于 JDK logging,同时社区提供了 slf4j 适配模块,用户只需引入

linux内核中的MFD子系统【转】

我只是一个虾纸丫 提交于 2020-04-22 16:26:11
转自: https://www.cnblogs.com/dakewei/p/10991941.html 分析用的 内核版本为5.1.3 1.MFD全称   Multi-function Device,多功能设备 2. 为何会出现MFD子系统   由于出现了一类具有多种功能的外围设备或cpu内部集成的硬件模块 3. 有哪些多功能设备呢?   3.1 PMIC,电源管理芯片     da9063: 调节器,led控制器,看门狗,实时时钟控制器,温度传感器,震动马达驱动,长按关机功能(ON key)     max77843: 调节器,充电器,燃油量表,触觉反馈,led控制器,micro USB接口控制器     wm831x: 调节器,时钟,实时时钟控制器,看门狗,触摸控制器,温度传感器,背光控制器,状态led控制器,GPIO,长按关机功能(ON key),ADC     其它: 甚至具有codec功能   3.2 atmel-hlcdc: 显示控制器和背光pwm   3.3 Diolan DLN2: USB转I2C,SPI和GPIO控制器   3.4 Realtek PCI-E读卡器: SD/MMC和记忆棒读取器 4. MFD子系统解决的主要问题   在不同的内核子系统中注册这些驱动。特别是外部外围设备仅仅由一个结构体struct device(或是指定的i2c_client或spi

SelectorProvider作用

隐身守侯 提交于 2020-04-21 23:32:49
转载 SelectorProvider就是为了创建DatagramChannel,Pipe,Selector,ServerSocketChannel,SocketChannel,System.inheritedChannel()而服务的, 在相应的通道和选择器的open方法中调用系统默认的SelectorProvider相关的open*方法,创建相应的通道和选择器。 SelectorProvider的provider方法主要是实例化SelectorProvider, 过程为: 判断java.nio.channels.spi.SelectorProvider系统属性是否被定义为一个具体的SelectorProvider实现类的唯一类名,是则加载此类,实例化, 如果加载实例化失败,返回一个错误。 如果无没有选择器提供者属性配置,则在SelectorProvider的实现且对系统类加载器可见Jar包中,的资源文件META-INF/services的目录下,提供了provider-configuration文件java.nio.channels.spi.SelectorProvider,则文件的第一个class类将会被加载和实例化,如果加载实例化失败,返回一个错误。 上两步失败,则加载系统默认的选择器提供者。 inheritedChannel方法主要是更具系统网络服务,更具具体的网络请求

Java 线程基础,从这篇开始

送分小仙女□ 提交于 2020-04-21 14:22:36
线程作为操作系统中最少调度单位,在当前系统的运行环境中,一般都拥有多核处理器,为了更好的充分利用 CPU,掌握其正确使用方式,能更高效的使程序运行。同时,在 Java 面试中,也是极其重要的一个模块。 线程简介 一个独立运行的程序是一个进程,一个进程中可以包含一个或多个线程,每个线程都有属于自己的一些属性,如堆栈,计数器等等。同时,一个线程在一个时间点上只能运行在一个 CPU 处理器核心上,不同线程之间也可以访问共享变量。线程在运行时,系统给每个线程分配一些 CPU 时间片,CPU 在时间片这段时间运行某个线程,当这个时间片运行完又跳转至下一段时间片线程,CPU 在这些线程中进行高速切换,使得程序像是在同时进行多个线程操作。 线程的实现 实现线程常用的两种方式:继承 java.lang.Thread 类、实现 java.lang.Runnable 接口。 继承 Thread 类方式 通过实例化 java.lang.Thread 类获得线程。创建 Thread 对象,一般使用继承 Thread 类的方式,然后通过方法重写覆盖 Thread 的某些方法。 首先创建一个继承 Thread 的子类。 public class DemoThread extends Thread{ // 重写 Thread 类中的 run 方法 @Override public void run() { //

创龙TI AM5728浮点双DSP C66x +双ARM Cortex-A15开发板视频输入拓展口(V-PORT)

拜拜、爱过 提交于 2020-04-20 12:27:51
处理器 基于TI A M5728浮点 双 DSP C66 x +双ARM Cor t ex-A15 工业 控制及高性能 音 视频处理器 。 拥有多种工业接口资源,下图 为 A M5728 CPU资源框图: 视频输入 拓展 口(V-POR T ) 底板CON14 口为视频输入拓展 口 , 以48 pin的 欧式端子公 座 连接器 引出了 CPU 视频 输入 通道的VIN4 和 McASP2 、 SPI2 、 I2C5 。 可以配套 广州 创龙 视频 输入拓展 模块 使用 , 如:TVP5158 四 路D1视频采集模块, GV 7601 HD- SD I视频采集模块 等 。 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/3276006

SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)

冷暖自知 提交于 2020-04-20 04:38:22
SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringApplication对象是如何构建的? SpringBoot源码(八) 1 温故而知新 温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了 SpringApplication对象的构建过程及SpringBoot自己实现的一套SPI机制 ,现将关键步骤再浓缩总结下: SpringApplication 对象的构造过程其实就是给 SpringApplication 类的 6 个成员变量赋值; SpringBoot通过以下步骤实现自己的SPI机制: 1)首先获取线程上下文类加载器; 2)然后利用上下文类加载器从 spring.factories 配置文件中 加载所有的SPI扩展实现类并放入缓存中 ; 3)根据SPI接口从缓存中取出相应的SPI扩展实现类; 4)实例化从缓存中取出的SPI扩展实现类并返回。 2 引言 在SpringBoot启动过程中,每个不同的启动阶段会分别广播不同的内置生命周期事件,然后相应的监听器会监听这些事件来执行一些初始化逻辑工作比如 ConfigFileApplicationListener 会监听 onApplicationEnvironmentPreparedEvent

Mysql Hibernate报错

牧云@^-^@ 提交于 2020-04-19 14:35:02
错误信息: 2020-04-17 08:43:28,810 [http-nio-443-exec-8] ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - Packet for query is too large (1673 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. 当查询数据比较大的时候在网络中传输,超过默认值就会报以上错误 解决方法,找到mysql配置文件.my.ini,在[mysqld]下面添加以下配置 max_allowed_packet = 100M query_cache_limit = 40M 转载自:https://blog.csdn.net/xiaoping0915/article/details/64587042 来源: oschina 链接: https://my.oschina.net/u/4377796/blog/3274879

dts解析【转】

不打扰是莪最后的温柔 提交于 2020-04-17 17:39:43
转自: https://blog.csdn.net/wdjjwb/article/details/77297372 一.什么是DTS?为什么要引入DTS? DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF)。 在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data,这些板级细节代码对内核来讲只不过是垃圾代码。而采用Device Tree后,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。 每次正式的linux kernel release之后都会有两周的merge window,在这个窗口期间,kernel各个部分的维护者都会提交各自的patch,将自己测试稳定的代码请求并入kernel main line。每到这个时候,Linus就会比较繁忙,他需要从各个内核维护者的分支上取得最新代码并merge到自己的kernel source tree中。Tony Lindgren,内核OMAP development

Issues reading data from ADXL355 using SPI (STM32 board)

老子叫甜甜 提交于 2020-04-16 03:33:51
问题 I'm trying to read data from an EVAL-ADXL355-PMDZ connected to a STM2L072 Lora discovery kit through the SPI protocol for a project. At first I was using an ADXL345 sensor and I was able to read the accelerometric data and convert it to g without any issues. After switching the sensor to ADXL355, I keep receive all zeroes when reading data registers instead. I changed my initial code for ADXL345 accordingly to the datasheet of the ADXL355 sensor (https://www.analog.com/media/en/technical