在本文中,我们将介绍关于spi-mem Linux内核框架的工作,该框架将允许在SPI NOR设备和常规SPI设备以及SPI NAND设备上复用SPI控制器驱动程序。
工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本质上都是ADC,大家注意查看这些传感器的手册,会发现他们内部都会有个 ADC,传感器对外提供 IIC或者 SPI 接口,SOC 可以通过 IIC 或者 SPI 接口来获取到传感器内部的 ADC 数值,从而得到想要测量的结果。Linux 内核为了管理这些日益增多的 ADC 类传感器,特地推出了 IIO 子系统,我们学习如何使用 IIO 子系统来编写 ADC 类传感器驱动。
GPIO名为"General Purpose Input/Output",通用目的输入/输出,就是常用的引脚。
SPI总线由四根通信线组成,全双工、主从方式串行同步通信,一次传输8bit,高位在前,低位在后。
内核许多子系统之间关联紧密,因此在一个子系统发生或者检测到的事件信息很可能对其他子系统来说也是有价值的。为了满足其他子系统对这些事件信息的需求,即在某个子系统内发生或检测到事件时,其他对此感兴趣的子系统也能知道事件的发生,内核提供了notification chain机制。
内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,并把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程师来实现,这就叫驱动框架。
接着上一篇的讲,我们上一篇研究了 GPIO 的硬件结构,其来源于 STM32 官方手册,研究了 GPIO 的八种工作模式和推挽输出及开漏输出原理,接下来我们研究 GPIO 的软件部分,分别从单片机平台和 Linux 平台来研究。
先说结论:任何一个领域,就像世间的五行,阴阳结合,虚实结合,利弊结合。对于哪个更好,不能一概而论,最重要的是要搞清楚,你更适合哪个?
W25Q64是一颗SPI接口的Flash存储芯片,是华邦W25QXX系列里的一个具体型号,这个系列里包含了W25Q16,W25Q32,W25Q64,W5Q128等等。编程代码逻辑都差不多,主要是容量的区别。
鸿蒙是一套完整的、普通人可以直接使用的操作系统,跟Windows、安卓、IOS类似。 常见的错误观点是把鸿蒙跟Linux放在一起来对比,这不对:
鸿蒙是一套完整的、普通人可以直接使用的操作系统,跟Windows、安卓、IOS类似。
SDIO-Wifi模块是基于SDIO接口的符合WiFi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。
学习 I2C 和 SPI 驱动的时候,针对 I2C 和 SPI 设备寄存器的操作都是通过相关的 API 函数进行操作的。这样 Linux 内核中就会充斥着大量的重复、冗余代码,但是这些本质上都是对寄存器的操作,所以为了方便内核开发人员统一访问 I2C/SPI 设备的时候,为此引入了 Regmap 子系统。
1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
Linux内核的作用是将应用程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。
介绍 Sunxi SPINand mtd/ubi 驱动设计, 方便相关驱动和应用开发人员
1、ARM全面进军虚拟硬件开发 今年2月份末,ARM正式上线虚拟硬件开发,虚拟硬件是 Cortex-M 设备子系统的精确仿真模型,专为复杂的软件验证和测试而设计,面向嵌入式,物联网和机器学习设计一条龙。
中断是大家用的最多的功能,不管是单片机还是 Linux 系统,都需要用到中断,对它的深入理解是非常必要的。
作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。
作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ —- 提供虚拟机技术的支持。
SPI 是一种高速、高效率的串行接口技术。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换,被广泛应用于 ADC、LCD 等设备与 MCU 之间。全志的 spi 控制器支持以下功能:
传统的配置 pin 的方式就是直接操作相应的寄存器,但是这种配置方式比较繁琐、而且容易出问题(比如 pin 功能冲突)。pinctrl 子系统就是为了解决这个问题而引入的,pinctrl 子系统主要工作内容如下:
这篇文章介绍在Linux下如何编写FT5X06系列芯片驱动,完成触摸屏的驱动开发, FT5X06是一个系列,当前使用的具体型号是FT5206,它是一个电容屏的触摸芯片,内置了8位的单片机(8051内核),完成了坐标换算等很多处理,在通过IIC,SPI方式传递给外部单片机。
点灯用到的都是GPIO的输出功能,这篇,通过按键的使用,来学习GPIO输入功能的使用。
SPI NOR Framework:这层主要是处理不同厂家的NOR 物理特色差异,初始化SPINOR的工作状态,如工作线宽(1 线、2 线、4 线、8 线)、有效地址位(16M 以上的NOR 需要使用4 地址模式),为上层MTD 提供读写擦接口。
创龙科技SOM-TL5728F是一款基于TI Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核工业级核心板。核心板内部AM5728与Artix-7通过GPMC、I2C通信总线连接,并通过工业级高速B2B连接器引出千兆网口、PCIe、USB 3.0、SATA、GTP等接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 1、村田和Cooler
创龙科技SOM-TL570x是一款基于TI Sitara系列AM5708 ARM Cortex-A15 + 浮点DSP C66x处理器设计的异构多核SoC工业级核心板。通过工业级B2B连接器引出千兆网口、PCIe、GPMC、USB 3.0等高速通信接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
近年来,随着中国新基建、中国制造2025的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是能源电力、工业控制、智慧医疗等行业通常需要ARM+FPGA架构的处理器平台来实现特定的功能,例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等。
在tina 根目录下,执行makekernel_menuconfig,配置路径如下:
随着ARM芯片技术的高速更新迭代,越来越多工业应用场景都使用ARM架构实现,ARM既可跑操作系统(Linux、FreeRTOS等)满足复杂应用需求,亦可跑裸机满足高实时等应用需求。由于ARM生态系统十分完善,因此在人机交互、网络通信、文件系统管理方面,有着得天独厚的优势。
1 这些显示电子系统中信号波形的动图,有助于帮助我们理解传输的机理。 01 SPI 传输 📷 ▲ 图1.1 SPI 数据传输(1) 📷 ▲ 图1.2 SPI 数据传输(2) 📷 ▲ 图1.3 SPI 时序信号 02 IIC 传输 📷 ▲ 图2.1 IIC 总线以及寻址方式 03 UART 传输 📷 ▲ 图3.1 PC 上通过UART来调试MCU 📷 ▲ 图3.2 RS-232通过电平转换芯片与MCU通讯 04 红外控制 📷 ▲ 图4.1 红外控制信号也是一个串行通讯信号 📷 ▲ 图4.2 红外信号接收与
这些显示电子系统中信号波形的动图,有助于帮助我们理解传输的机理。 1 SPI传输 ▲ 图1 SPI 数据传输 ▲ 图1.2 SPI数据传输(2) ▲ 图1.3 SPI时序信号 2 I²C传输 ▲ 图1.2.1 I2C总线以及寻址方式 3 UART传输 ▲ 图1.3.1 PC 上通过UART来调试MCU ▲ 图1.3.2 RS-232通过电平转换芯片与MCU通讯 4 红外控制 ▲ 图1.4.1 红外控制信号也是一个串行通讯信号 ▲ 图1.4.2 红外信号接收与放大整形电路
DM36x initialization passed! TI UBL Version: 1.50 Booting Catalog Boot Loader //启动目录Boot Loader BootMode = NAND //从nand启动 Starting NAND Copy… Valid magicnum, 0xA1ACED66, found in block 0x00000019. DONE Jumping to entry point at 0x81080000. PINMUX :- e54000
TMS320DM368 是德州仪器公司(TI)于2010 年4 月推出的新一代基于Davinci 技术的高清视频处理器,内部集成了一颗 ARM 内核和两个视频图像协处理器,同时内部还集成了一个视频处理子系统和丰富的系统外设[31]。芯片采用的 65nm 的制造工艺技术,性能稳定,成本低,单片价格约为 100RMB。ARM 内核是基于 ARM926EJ-S 的 RISC处理器,是整个 TMS320DM368 处理器的核心,执行整个系统的控制功能。两个视频图像协处理器分别为高清视频编解码处理器 HDVICP(HD Video Imagging Co-Processor)和 MJCP(MPEG-4 JPEG Co-Processor),支持 H.264、MPEG-2、MPEG-4、MJPEG 以及 VC1 等视频格式的编解码[32],HDVICP 最高可支持 1080p@30pfs 的高清视频 H.264 格式编码,MJCP 最高支持 1080p@25pfs 的 MPEG4 格式编码,功能十分强大。视频处理子系统 VPSS(Video Processing Subsystem)中包括视频处理前端 VPFE(Video Processing Front End)和视频处理后端 VPBF(Video Processing Back End)。视频处理前端包含有图像传感器接口、图像管道接口、图像管道,支持噪声过滤、视频稳定、自动白平衡、自动对焦、自动曝光、人脸检测以及边缘增强等影像增强技术,可显著提升视频处理的智能化水平[33]。视频处理后端包括屏幕显示、视频编码器和数字LCD控制器,不仅可将多个窗口的视频数据混合显示,同时还支持模拟 SDTV、数字 HDTV 和数字 LCD 等多种形式的视频输出。DM368 内部集成了多种常用的外设控制器,提供了丰富的外设接口,可实现视频编解码应用中与大多数外设器件的无缝连接。DM368的结构功能框图如图3.1 所示。
当前版本作者联系方式(长期有效):E-mail: WindForest@yeah.net
我们使用HAL库来开发项目,如果框架设计的好的话,在rtos上面代码不需要改动太多。
最近项目上需要用到 LED 子系统,在嵌入式 Linux 里面点个灯还是比较简单的,只要在某个灯对应的目录里,向相应文件写入特定值,就可以让 LED 亮/灭/闪烁。
gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。
本文档对内核的 GPIO 接口使用进行详细的阐述,让用户明确掌握 GPIO 配置、申请等操作的编程方法。
TI公司的TMS320C6655/57是不定点/浮点数字信号处理器(DSP),基于KeyStone多核架构,内核速度高达1.25GHz,集成了各种包括C66x内核,存储器子系统,外设和加速器在内的各种可编程子系统,非常适用于高性能可编程应用,如任务关键型,测试与自动化,医疗影像以及基础设施设备等领域。
创龙科技TL570x-EVM是一款基于TI Sitara系列AM5708 ARM Cortex-A15 + 浮点DSP C66x处理器设计的异构多核SoC评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
关注树莓派很久了,只是没有很感兴趣的应用场景,就没有买来玩。几个月前偶然得到一个小度音箱,发现了新大陆,各种语音控制功能,便捷性不言而喻,还买了一些外部设备可以通过小度控制,发现有红外遥控器可以控制家里的大部分红外家电,奈何码库不是很全,有些设备还是不能控制的,而且不支持定制功能。恰好在知乎看到了一些 geek 视频,想着自己也做一个,可以支持红外数据的定制,做到自由遥控。于是乎说干就干,从一个什么硬件都不懂的小白一步步的了解了点硬件知识,软件部分相对好实现一些。主要计划的功能是通过语音来控制红外家电、温湿度监控以及智能提醒等功能,先完成主体框架然后再不断开发插件形式来增强可玩性。
Linux内核分为CPU调度、内存管理、网络和存储四大子系统,针对硬件的驱动成百上千。代码的数量更是大的惊人。
领取专属 10元无门槛券
手把手带您无忧上云