摘要:
硬件环境: SLTB010A(BRD4184A Rev A02 / EFR32BG22C224F512IM40) 软件环境: SimplicityStudio5/gecko_sdk_3.2.3 分析工程: Bluetooth Mesh SensorClient 恶补了 BluetoothMesh 相 阅读全文
摘要:
网上大部分人的做法是通过拦截按键消息来屏蔽,实际正确的做法是: 1. 在对话框头文件重载 OnOK()(回车会触发) 和 OnCancel()(ESC会触发) 函数。 // XXXXXXXDlg.h class CXXXXXXXDlg : public CDialogEx { ...... priv 阅读全文
摘要:
不得不提 在移植的过程中,发现 LVGL 的文件操作接口并不十分完善,在我看来, LVGL 的文件操作接口,应该更多的是为了 LVGL 内部接口方便读取资源文件而设立的,例如读取图像文件,加载字库文件等等。 遍历目录也形同鸡肋,特别是读取目录的接口定义,简直要吐血,最后一个参数居然没有附带缓冲区长度 阅读全文
摘要:
一、下载源代码 wget http://ffmpeg.org/releases/ffmpeg-4.4.tar.gz tar -zxvf ffmpeg-4.4.tar.gz 二、编译配置脚本 #! /bin/bash export PREFIX=`pwd`/build/ export TOOLCHAI 阅读全文
摘要:
下载并解压源码 wget https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.4.tar.gz -O jsoncpp_1.9.4.tar.gz tar -zxvf jsoncpp_1.9.4.tar.gz 在源码根 阅读全文
摘要:
一、命令行联网 # 启用网卡 busybox ifconfig wlan0 up # 启用服务 wpa_supplicant -iwlan0 -Dnl80211 -c/system/etc/wifi/wpa_supplicant.conf & # 连接网络 (add_network 指令会返回一个序 阅读全文
摘要:
工作中有遇到需要使用支持 http2 访问的 https 安全加密的开源库,便于使用 http2 与云端通信,经过调研发现 libcurl 可以满足需求,但是 libcurl 本身也是需要依赖于 nghttp2 来支持 http2 通信,以及需要 openssl 来实现安全加密的通信(访问带 htt 阅读全文
摘要:
以下的代码很有意思,在相同时刻,相同的内存地址,数据居然会不一样。 #include <iostream> int main(void) { const int const_val = 3; int *nomal_pot = (int*)&const_val; *nomal_pot = 9; pri 阅读全文
摘要:
LVGL 介绍 官方网站:LVGL - Light and Versatile Embedded Graphics Library 源码位置:GitHub - lvgl/lvgl: Powerful and easy-to-use embedded GUI library with many wid 阅读全文
摘要:
Xradio Sdk 的 Audio 驱动框架和 Linux 的 ASOC 驱动框架非常相似,只不过简化了很多。 驱动和芯片之间的关系图 下面的 SOC 表示的是 XR872 芯片,这里以 AC107 为例讲解,XR872 其实只有一路 I2S,这里画出了两路主要是便于后续的讲解。 从上图可以看出: 阅读全文
摘要:
XR872 的 SDK 是我目前接触过那么多款 MCU 的 SDK 中,唯一一个将框架和 RTOS 结合的非常完美的 SDK 。无论是代码风格还是框架的设计,看起来都很赏心悦目,而且是源码开源。希望能有更多的机会可以在项目上应用这款芯片,便于更加深入的理解和学习它的框架设计思想,当然,如果有一段连续 阅读全文
摘要:
问题简介 有个项目,主控需要将多路音频通过 I2S 传给山景芯片,然后借助山景芯片 USB 接口通过 UAC 协议传送给 PC 或其他 ARM 平台。 设计之初,主控作为 I2S 主机,山景芯片作为 I2S 从机,同时也作为 USB Audio 设备,可接入到 PC 或者其他的 ARM 平台。 我实 阅读全文
摘要:
ASOC 各部分框图示意 Platform 一般由 SOC 芯片原厂负责编写,主要涉及到 SOC 内部数字音频接口DAI(I2S)和 DMA 的寄存器配置。 Codec 一般由硬件方案的驱动工程师或者 Codec 芯片原厂负责编写,主要涉及到 Codec 芯片相关的寄存器配置。 Machine 一般 阅读全文
摘要:
应用场景 在工作上经常会遇到需要对接多个外设,如离线语音识别芯片、NFC刷卡器芯片等等,这些大部分都是通过UART、SPI等接口进行通信,且具有各自的数据包通信协议。 除了通信接口和通信协议(即数据封包解包)有差异外,这些数据处理逻辑都一样,所以可以将数据处理逻辑统一,将通信差异部分抽离出来,分别根 阅读全文
摘要:
发现问题 客户反馈说我们的硬件关机漏电流很大,但是拔掉电池之后再上电(仍处于关机状态)就会恢复为 16~20uA 左右。这让我也讶异,因为亲自测试过,漏电流只有 MCU 的休眠电流 16~20uA 左右 (包含一些电子元器件),远远低于项目要求的 <100uA。 观看客户的复现步骤,发现客户每次在关 阅读全文
摘要:
前言说明 此文章仅作为技术经验记录,核心思想,就是在 init.rc 里面移除服务,致使 frameworks 不被启动,其它不便多说。 此文章内容为系统服务移除篇,最终实现的效果是 Android 相关的系统核心服务均不被运行,实现释放大量的硬件资源。 下一篇为文件裁剪篇(视情况而定),主要目的是 阅读全文
摘要:
使用方法 opencv 官方的 SDK 已经有编译好的 so 库,我们可以直接使用,因此我们只需要将平台架构对应的 so 库文件以及头文件提取出来,使用 Android.mk 进行预安装,然后在需要使用 opencv 程序中的 Android.mk 引用头文件和动态链接库即可。 具体步骤 一、下载 阅读全文
摘要:
前言说明 在我所接触到的很多MCU源代码(不跑RTOS),无论是我们的同事还是其它方案的源代码,为了实现某些不需要太精确固定周期的工作,常见的做法都会是启动一个定时器,按照比较小的间隔来产生中断,如 0.1 毫秒一次,在定时器中断函数里面进行计数,根据计数值来给多个全局变量置1,在需要的源文件里面导 阅读全文
摘要:
前言说明 某些情况下,需要缓存一些文件到磁盘中,我们可以借助 tmpfs 文件系统,来提升读写缓存文件的速度,并且也可以避免频繁读写缓存文件所带来的对 flash 的寿命影响。 使用方法 通过 mkdir 创建一个文件夹作为分区挂载点,再通过 mount 命令挂载指定大小的 tmpfs 类型分区到该 阅读全文
摘要:
前言说明 现在有很多单片机的硬件定时器都具备PWM输出功能,不过有时候会因为器件成本或硬件设计等原因,导致数量不够或者所使用的引脚不支持定时器输出。尴尬的是,笔者接手的项目两种情况都存在,项目需要支持 8 个电机,每个电机支持正反转,因此需要 8 * 2 = 16 路 PWM 信号。 思考了一阵,觉 阅读全文
摘要:
前言说明 在项目开发初期,很经常会需要临时操作某个GPIO来验证某些功能,可以通过编写一个简单的驱动程序来操作,但更方便的是可以通过命令行直接操作 GPIO ,这样不需要经过编写代码、编译驱动、推入文件、加载驱动那么繁琐的步骤。 以下为全志平台命令行操作 GPIO 的方法 启用功能 挂载 debug 阅读全文
摘要:
前言说明 在文中《【学习笔记】开源库之 - sigslot (提供该库存在对象拷贝崩溃问题的解决方案)》已经介绍过 sigslot ,此文主要应用在实际的工作项目中时,发现会有拦截信号的需求,而原生的 sigslot 不支持拦截。因此增加 sigslot 拦截特性,便于适应这种需求。 应用场景 在很 阅读全文
摘要:
介绍说明 模板设计模式是一种非常简单的设计模式,其主要是利用了虚函数的特性实现。非常适合应用在一些算法、流程、业务逻辑是固定的形式,其中某些步骤的实现方式又无法确定下来的场景。 举例说明 以下为模拟某芯片基于串口通信的固件升级代码,可以提供一个 FirmwareUpgrade 的类用于使用者集成。考 阅读全文
摘要:
介绍说明 学习 QT 的时候,觉得 QT 提供的信号槽机制非常有用,这种机制可以解决对象与对象之间通信中的耦合问题,原本想从网络上了解一下具体的实现思路用于项目中,意外的发现了用 C++ 实现的信号槽开源库 - “sigslot” 。它仅有一个 sigslot.h 源文件,简单而又满足了我想将这种机 阅读全文
摘要:
添加资源 将存有资源文件的文件夹放到工程目录中,如文件夹名称为 “Image”,里面有 Luffy.png 文件。在 Qt Creator 中右击工程选择【添加新文件】。在弹出的对话框中的文件和类选择【Qt】->【Qt Resource File】。在弹出的对话框中填好名称如 “res”,然后选择【 阅读全文
摘要:
前言概述 因以下原因,导致不得不通过代码分析来学习如何在该平台下进行摄像头驱动移植 香橙派开发商(迅龙软件)仅提供能跑起来的源代码、固件,以及简单的编译文档,不提供其它技术支持baidu、google 所找到的修改方法与所拿到的源代码完全不符,因此无借鉴价值借助搜索引擎以及一些论坛也没有找到可以参考 阅读全文
摘要:
QMainWindow QMainWindow 是一个为用户提供主窗口程序的类,包含以下几种类型部件,是许多应用程序的基础。 示例代码 void MainWindow::test() { // 菜单栏(只能有一个) QMenuBar *menuBar = this->menuBar(); this- 阅读全文
摘要:
Lambda Lambda 表达式很有意思,相信很多人初次见到 Lambda 表达式都会不能理解有什么用,我也一样,看了视频教程之后,突然意识到,Lambda 真的是太好用了,它可以在某些情况下可以很大程度上简化代码。 应用场景 下面的代码给我的启发:实现通过信号槽的方式实现点击按钮时,触发修改按钮 阅读全文
摘要:
介绍说明 学习 QT 的目的只是为了可以实现跨平台的具有GUI 的程序,以前用的 MFC,但是无法应用在嵌入式平台。后来在全志的 Tina 系统中有看到 QT ,因此特地去了解了QT,挺有意思的,UI也可以做到很漂亮,因此开始学习 QT 之旅。 按照视频课程顺序,摘录比较重要的知识点以及心得,下图给 阅读全文
摘要:
介绍说明 这篇笔记承接《【学习笔记】C/C++ 设计模式 - 工厂模式(上)》文章,主要记录 “抽象工厂设计模式” 的学习笔记,上一次是以音频播放器来作为例子,主要是想体现出的是接口标准化的优势,但不适用于 “抽象工厂设计模式” 的示例,因此这里改为台式电脑作为例子。 上文说到工厂模式属于 “创建型 阅读全文