SPI 是一种高速、高效率的串行接口技术。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换,被广泛应用于 ADC、LCD 等设备与 MCU 之间。全志的 spi 控制器支持以下功能:
1,cubieboard2 A20系列,无论是官方还是社区的系统,默认都是不支持SPI总线驱动的。需要重新编译配置内核,修改文件才能支持SPI全双工通信。本文以Cuieboard2 Debain为例,进行讲解;
SPI NOR Framework:这层主要是处理不同厂家的NOR 物理特色差异,初始化SPINOR的工作状态,如工作线宽(1 线、2 线、4 线、8 线)、有效地址位(16M 以上的NOR 需要使用4 地址模式),为上层MTD 提供读写擦接口。
SPI接口是一种高速的, 全双工, 同步的通信总线. 适配D1H芯片的Tina Linux的BSP-SDK(以下简称SDK)中已包含相关驱动文件: spi-sunxi.c. 它提供的了仅内核态下主从机的简易通信验证实验, 这或许是考虑到SPI通信速率比较高的特性. 验证操作
W25Q64是一颗SPI接口的Flash存储芯片,是华邦W25QXX系列里的一个具体型号,这个系列里包含了W25Q16,W25Q32,W25Q64,W5Q128等等。编程代码逻辑都差不多,主要是容量的区别。
NXP官方linux仓库地址为:https://github.com/Freescale/linux-fslc/tree/5.4-2.1.x-imx。
VS1053是一款硬件编解码的音频芯片,提供SPI接口和IIS接口两种通信协议,这篇文章是介绍在Linux下如果模拟SPI时序来操作VS1053完成录音、播放音频歌曲功能。但是没有注册标准的音频驱动,没有对接音频框架,只是在驱动层完成VS1053的直接控制,本篇的重点主要是介绍如何初始化开发板的GPIO口,使用Linux的延时函数,模拟SPI时序,代码写了两种版本,一种是直接通过ioremap直接映射GPIO口地址,完成配置,一种是直接调用官方内核提供的库函数接口,完成GPIO口初始化,控制。
Linux 提供了一套完整的屏幕驱动,支持 RGB,MIPI DSI,eDP,LVDS,E-INK屏幕,也支持低分辨率的 SPI,IIC 屏幕。具体屏幕的驱动情况,需要根据芯片而确定。本文将通过介绍 D1-H Kernel 中的 LCD 驱动,讲解配置屏幕驱动的基本方法。
ospfv3是基于ipv6的路由协议,因为IPV6本身的IPSEC安全特性,OSPFV3本身就已经没有再带安全认证功能,这一功能由IPV6协议来完成。
最近手痒研究LoRaWAN基站,初步了解了LoRaGateway的github工程,做些梳理记录。
SPI 控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按 SPI 总线的时序要求发送给 SPI 设备,同时把从设备收到的数据返回给上层的协议驱动,因此,内核把 SPI 控制器的驱动程序独立出来。
上周分享了一篇远程控制空调的文章(一次DIY远程空调控制的经历(长篇多图)),里面提到了一个USB转无线的模块,有朋友想要这个资料,于是我找了下。
之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言。我们尽量满足。
工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本质上都是ADC,大家注意查看这些传感器的手册,会发现他们内部都会有个 ADC,传感器对外提供 IIC或者 SPI 接口,SOC 可以通过 IIC 或者 SPI 接口来获取到传感器内部的 ADC 数值,从而得到想要测量的结果。Linux 内核为了管理这些日益增多的 ADC 类传感器,特地推出了 IIO 子系统,我们学习如何使用 IIO 子系统来编写 ADC 类传感器驱动。
在网上一直没有找到一篇专门讲SPI NAND介质改动的文章。实际上需要修改的地方很少,但是由于自己不熟悉,也折腾了不少时间。这篇文章更多是自己折腾过程的记录。同时也给可能遇到同样问题的小伙伴一个参考。
还有就是可以存储固件,用于OTA的设计。特别是对于有远程更新app的需求来说,这个就必须用起来了。
此次分享通过双排插座引出的SPI,利用Python,进行经典的0.96寸OLED显示控制。
这部分特色,可以参考之前我们的文章:NVIDIA 悄悄升级了JetPack ,居然变了这么多?
本项目是基于全志V3S的随身终端(类似MP4),命名为V3S-PI,开发板使用四层板制作,全板采用0603电容电阻,相较于0402,制作更为方便,同时成本可压缩至100以内。
不知道大家是否还记得前段时间同一位作者发布的V3S开发板,由于该开发板的硬件解码一直无法完成适配,于是作者希望再找一块性能更强,接口更丰富的芯片来替代V3s。
当前版本作者联系方式(长期有效):E-mail: WindForest@yeah.net
SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,提供方便,简单易用。
trace是内核自带的工具,相比于perf工具,trace只管抓trace数据并没有分析,perf在trace数据分析方面做出了很多成果。 但是我们现在就想看一下底层多调用关系,所以使用trace抓一下数据是非常有必要的,还可以分析一下驱动性能。
Windows 开发环境: Windows 7 64bit 、Windows 10 64bit
本文基于Linux kernel 5.15版本进行说明,旨在解析Linux设备树覆盖(Device Tree Overlay, DTO)的工作原理及其应用场景。
IDO-SOM3908-V1 是基于 RK3399 系列 CPU 开发设计的一款高性能核心板,双 Cortex-A72 大核+四 Cortex-A53 小核,六核 64 位 CPU,搭载 Android7.1/LINUX 系统,主频高达 2.0 GHz,采用 Mali-T864 GPU,支持 4K、H.265 硬解码。核心板内置 EDP、MIPI-DSI、HDMI、DP 显示接 口。并且还带有 2 路 MIPI-CSI 以及千兆 RGMII 等。其接口丰富,性能更强,速度更快。
总线、设备和驱动模型,如果把它们之间的关系比喻成生活中的例子是比较容易理解的。举个例子,充电墙壁插座安静的嵌入在墙面上,无论设备是电脑还是手机,插座都能依然不动的完成它的使命——充电,没有说为了满足各种设备充电而去更换插座的。其实这就是软件工程强调的高内聚、低耦合概念。
在前面学习了Linux高级编程的基础上,开始对硬件正式有所交集,以前学习Linux可能只知道某些传感器的数据存放在哪个文件夹下,读取相应的数据就完事,大部分是应用层方面的实现,而不知道这些传感器的数据具体是怎么来的。学习了stm32单片机之后,与硬件打交道,离底层又更近了一步。
本文档对内核的 GPIO 接口使用进行详细的阐述,让用户明确掌握 GPIO 配置、申请等操作的编程方法。
近年来,随着中国新基建、中国制造2025的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是能源电力、工业控制、智慧医疗等行业通常需要ARM+FPGA架构的处理器平台来实现特定的功能,例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等。
Tina 提供了2种 SPI TFT 显示屏的驱动方式。第一种是官方推荐的 fbdev 方式,使用 Framebuffer implementaion without display hardware of AW 进行 SPI屏幕的驱动。另外一种是使用 fbtft 进行 SPI 屏幕驱动。 fbdev 方式由于 pinctrl 在新内核中调用方式出现修改,所以暂时无法使用。修改难度较大。fbtft 虽然官方wiki表明不建议在 Linux 5.4 中使用,但是其实也是可以使用的,只需要修改一下 GPIO 的注册方式就行。
smem是一个工具,可以提供大量关于 Linux 系统内存使用情况的报告。与现有工具不同,smem 可以报告比例集大小 (PSS),它更有意义地表示虚拟内存系统中库和应用程序使用的内存量。 由于大部分物理内存通常在多个应用程序之间共享,因此称为常驻集大小 (RSS) 的内存使用标准度量将大大高估内存使用。相反,PSS 衡量每个应用程序在每个共享区域中的公平份额,以给出一个现实的衡量标准。 Smem功能 系统概览列表 按进程、映射、用户输出 按进程、映射或用户过滤输出 来自多个数据源的可配置列 可配置的输出单
ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。
在本文中,我们将介绍关于spi-mem Linux内核框架的工作,该框架将允许在SPI NOR设备和常规SPI设备以及SPI NAND设备上复用SPI控制器驱动程序。
树莓派4的rt-thread一直在不断的更新,充分挖掘可以树莓派底层硬件的特性,同时借助各种外设,使得树莓派4成为一个更加适合学习嵌入式开发,验证各种外设功能,学习操作系统的好用的平台。
GPIO名为"General Purpose Input/Output",通用目的输入/输出,就是常用的引脚。
1 配置GPIO, In ..\ arm-linux-3.3\linux-3.3-fa\drivers\spiftssp010_spi.c
学习 I2C 和 SPI 驱动的时候,针对 I2C 和 SPI 设备寄存器的操作都是通过相关的 API 函数进行操作的。这样 Linux 内核中就会充斥着大量的重复、冗余代码,但是这些本质上都是对寄存器的操作,所以为了方便内核开发人员统一访问 I2C/SPI 设备的时候,为此引入了 Regmap 子系统。
Linux身份鉴别机制是保护操作系统安全的重要机制之一,是防止恶意用户进入系统的一个重要环节。早期的身份鉴别机制就是传统的UNIX身份鉴别机制,它采用口令加密并与原密码进行对比的方式来对用户身份进行鉴别。但是这种加密方式过于单一,在一个服务中用户的帐号密码泄露会涉及到多个服务的安全性,所以为了增强系统的安全性,出现了许多其他的身份鉴别机制,如指纹认证、USB认证等。但是这样导致了一个问题,为了应用这些认证机制,就需要重新编写并编译应用程序(如系统登陆服务login)。为了解决这个问题,1995年Sun公司的Vipin Samar和 Charlie Lai提出了PAM(Pluggable Authentication Modules)身份鉴别机制,它采用模块化设计和插件功能,使得系统在更改认证机制时不再需要修改应用程序,极大的提高了认证机制的灵活性。本报告对Linux各用户帐号的权限区别进行了分析,对传统UNIX身份鉴别机制的实现过程进行了研究,重点对PAM身份鉴别机制的实现过程进行了研究与分析,最后通过一个具体的PAM策略演示场景实现了身份鉴别机制的执行过程,研究结果也发现Linux身份鉴别机制是在Linux用户态下实现的,并不涉及内核的具体实现。
学习 Linux 有两种路线:第一种是按照 Linux 启动流程,去梳理每个子系统。第二种是先把 Linux 所有用到的子系统学会,再组合起来。
本来做的是M484,看好了它的片上高速USB、双SDHC、QSPI FLash等,结果入了新塘第一坑:LQFP64封装是.4间距的,偶直接拖了个STM32F205的封装过来,.5间距的,结果就是下面这样:
前言 本文先介绍一下VLAN Trunk的基本概念,以及OpenStack Neutron和OpenFlow based SDN是如何为Trunk port提供网络支持。OpenStack对VLAN Trunk的支持具体是什么?虽然OpenStack与容器,物理主机也做了集成,但是OpenStack最主要的应用还是虚机管理,而现代的操作系统,不论是Linux还是Windows,都支持将网卡配置成Trunk port。OpenStack对VLAN Trunk的支持就是指对OpenStack所管理的虚机的Tru
继续往下跟踪就是我们要介绍的关键了SelectorProvider.provider()
素时钟不超过180MHz 都支持。或者两个串行RGB 接口,串行RGB 的最高分辨率最大不超过800*480@60
现在手上有一块V3S的板子,想将其用起来。现在来记录一下这个过程。记录一下荔枝派zero的使用流程。
linux下设备驱动都有一套标准的结构,字符设备,块设备,网络设备都是自己的一套框架。编写驱动只需要把内核的框架搞清楚,然后照着结构填入参数,注册进内核,在应用层就可以按照标准的形式调用了。 对于网络设备而言,主要目的就是网络数据的收发,编写驱动时将linux网络设备驱动里的接口与实际网卡硬件的操作接口对应上,应用层就可以操作网卡完成网络通信了。底层驱动里编写网卡驱动与单片机一样。
我们知道DM368有两个串口,UART0和UART1。但是UART0默认为调试串口,也就是说一般不用这个作为通信串口,此刻UART1就成为了DM368和上位机通信的唯一选择。
SDK切换存储介质需要修改board.dts、sys_config.fex、内核配置、TINA系统配置。另外,在spinor 存储介质下,通过 u-boot-sun8iw21p1.bin 进行烧录,u-boot-spinor-sun8iw21p1.bin 启动,使用sys_partition_nor.fex作为分区表。在非spinor介质(spinand、emmc、sdnand),通过u-boot-sun8iw21p1.bin进行烧录和启动,使用sys_partition.fex作为分区表。下文将介绍spinor切换spinand、spinand切换spinor、spinor切换emmc、spinor切换sdnand四种切换方式。
领取专属 10元无门槛券
手把手带您无忧上云