Linux-I2C驱动
Linux-I2C 驱动
序言
I2C 具体通信协议本文不涉及,本文主要介绍在 Linux 中 I2C 的驱动框架。
I2C 有两条信号线:SCL 和 SDA。
SCL:时钟线,数据收发同步
SDA:数据线,传输具体数据
I2C 驱动框架
Linux I2C 驱动由三部分组成:I2C 核心、I2C 总线驱动、I2C 设备驱动。
I2C 核心层驱动作为顶层驱动,管理整个I2C子系统,并提供了基本的I2C操作接口。
I2C 适配器驱动负责与底层硬件的 I2C 控制器进行交互,通过适配器驱动,I2C总线核心驱动能够与硬件进行通信。
I2C 设备驱动则针对具体的 I2C 设备编写,实现了对设备的初始化、读写数据等操作。
I2C 核心(I2C Core Driver)
I2C 核心负责管理 I2C 总线适配器和设备,提供 I2C 总线驱动和设备驱动和注册、注销方法,完成 I2C 设备和 I2C 驱动匹配过程。这一部分不涉及硬件的操作,一般由系统厂编写。
I2C 核心中主要函数如下:
12345678910111213141516// 1.i2c_adapter 注册/注销函数int i2 ...
基于IIC的OLED驱动代码编写
基于IIC的OLED驱动代码编写
序言
支持软件 IIC 和硬件 IIC。
mqttFx测试
mqttFx测试
使用 mqttFx 软件测试连接阿里云平台和 OneNET 平台。
阿里云平台
1. 平台添加产品设备
首先到阿里云物联网平台,添加一个产品,然后在这个产品下面添加一个设备,接着点开 DeviceSecret,复制设备的三个要素 ProductKey、DeviceName、DeviceSecret。
2. 生成 Client ID 用户名和密码
打开 MQTT_Password 软件(将阿里云连接的三元素转换为 MQTT 连接的 Client ID 用户名和密码)
保存生成的计算结果。
3. 填入 mqttFx 软件中
计算得到的结果填入 Client ID、User Name、Password
域名地址 Broker Address:iot-06z00h6z06dknsn.mqtt.iothub.aliyuncs.com
端口号 Broker Port:非加密端口 1883
消息发布主题(Publish)
/sys/ProductKey/DeviceName/thing/event/property/post
消息订阅主题(Subscribe)
/ ...
芯片相关名词
芯片相关名词
CPU、GPU、MPU、NPU、TPU等概念
CPU
中央处理器(CPU,Central Processing Unit),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。电脑中所有操作都由 CPU 负责读取指令,对指令译码并执行指令的核心部件。
CPU 的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。
MPU
MPU (Micro Processor Unit)微处理器,微机中的中央处理器(CPU)称为微处理器(MPU),是构成微机的核心部件,也可以说是微机的心脏。它起到控制整个微型计算机工作的作用,产生控制信号对相应的部件进行控制,并执行相应的操作。
GPU(Graphics Processing Unit)
GPU 即图形处理器,就如它的名字一样,GPU 最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算 ...
ROM-RAM-FLASH
ROM、RAM、FLASH 基本介绍
随机存储器(RAM)
RAM 是一种可读/写存储器,特点是存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。RAM 通常都是在 掉电之后就丢失数据。
RAM 又分为 SRAM(静态随机存储器以触发器原理寄存信息)和 DRAM(动态随机存储器以电容充放电原理寄存信息)。SRAM 速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如 CPU 的一级缓冲,二级缓冲。DRAM 保留数据的时间很短,速度也比 SRAM 慢,不过它还是比任何的 ROM 都要快,但从价格上来说 DRAM 相比 SRAM 要便宜很多,计算机内存就是 DRAM 的。
DDR RAM(Date-Rate RAM)也称作 DDR SDRAM,简称为 DDR。这种改进型的 RAM 和 SDRAM 是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了,这是目前电脑中用得最多的内存。
内存(DRAM)工作原理
内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内 ...
刷路由器流程
校园网路由器
前言
实现路由器自动认证广大校园网。
基本步骤
刷入 Breed
刷入 Openwrt 系统
装入 MiniEAP 插件
配置路由器
刷入Breed
简要
为了防止刷入 Openwrt 失败导致路由器变砖,我们需要先刷入 Breed (不死鸟)。因为有些官方升级固件自带 bootloader(引导加载程序),如果从官方固件升级,会导致现有 bootloader 被覆盖。而当 Breed 更新固件时,它会自动删除固件附带的 bootloader(引导加载程序),从而可以防止 Breed 被覆盖。
刷入 Breed 之前我们可以先将几个重要的 bin 文件(all、bootloader、eeprom)保存,保留路由器原来的系统(如果需要保留的话),一般能够刷机的路由器网上资料都很多,这里我就没有进行保存了。
注意:你需要有一台能够刷机的路由器,请自行到网上查询你的路由器是否能刷机
方法
刷入 Breed 一般有两种方法,一种是 telnet 方法,另一种是 ssh 方法。主要就是通过 PC 端远程控制路由器内部的文件。Breed 常用平台有 MT7620平台、MT7621 ...
Windows使用Docker访问ChatGPT
前言
冲浪发现好玩的东西,于是就开干!
直接通过 ChatGPT 官网可以免费使用,但是奈何魔法不够强大(money 不够┭┮﹏┭┮),经常会访问不了,或者超慢的生成速度。
网上有一种方式,是利用 Github + Vercel 部署绑定自有的域名,通过调用 OpenAI API Key 实现在国内访问使用其功能,但是这种方式既需要有自己的域名,又需要有额度的 ChatGPT 账号,新注册的账号有免费额度 5 美元,但只有注册的前三个月有效。于是就衍生了这种白嫖的方法——潘多拉(Pandora)项目,目前刚开始使用,体验很不错!
前置条件
一个能用的 ChatGPT 账号
能够科学上网
环境配置
检查环境
首先你需要先检查一些电脑是否已经开启虚拟化,打开任务管理器,点击性能、CPU,右下角即可看懂是否开启。
若是没有启用的话,则需要通过进入 bios 下进行设置;这一部分可以上网搜索一下 windows 开启虚拟化,因为不同机子的 bios 界面不太一样,这里就不给出操作步骤了,操作很简单的。
其次你如果你是 Windows 家庭版则需要安装 Hyper-V,安装方法也很简单。
...
基于Opencv的手势识别
前言
本文采用 Opencv C++ 实现简单的手势识别;主要步骤为获取手部轮廓、提取特征、训练网络、预测结果。
肤色检测
这一步主要是便于后续的手部轮廓提取。这里用到的方法是 基于 YCrCb + OSTU 的方法的,其他方法可参考上一篇文章基于Opencv的人体肤色检测。
相关代码
1234567891011121314151617181920Mat YCrCb_otsu_Detect(Mat& src){ //resize(src, src, Size(300,300)); Mat ycrcb_img; cvtColor(src, ycrcb_img, COLOR_BGR2YCrCb); // 分离通道 提取Cr分量 vector<Mat> channels; split(ycrcb_img, channels); Mat cr_img = channels[1]; threshold(cr_img, cr_img, 0, 255, THRESH_BINARY | THRESH_OTSU); Mat ycrcb_otsu_detect; src.co ...
基于Opencv的人体肤色检测
前言
opencv 中进行肤色检测的方法大致为以下五种方法。本文中的人体肤色以黄种人为例。
三种图像颜色空间
RGB
RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。
Opencv 采用的是 BGR,顺序不一样了而已。
HSV
RGB 是从硬件的角度提出的颜色模型,在与人眼匹配的过程中可能存在一定的差异,HSV色彩空间是一种面向视觉感知的颜色模型。
HSV色彩空间从心理学和视觉的角度出发,指出人眼的色彩知觉主要包含三要素:色调(Hue,也称为色相)、饱和度(Saturation)、亮度(Value),色调指光的颜色,饱和度是指色彩的深浅程度,亮度指人眼感受到的光的明暗程度。
HSV范围H:0~180 S:0~255 V:0~255
**色调:**色调与混合光谱中的主要光波长相关,例如“赤橙黄绿青蓝紫”分别表示不同的色调。如果从波长的角度考虑,不同波长的光表现为不同的颜 ...