- 博客(169)
- 资源 (11)
- 收藏
- 关注
原创 FT4232芯片(USB转4串口)的国产化替代
官网留意到这么一句话:USB转串口芯片CH910X/CH911X系列:CH9101U、CH9101H、CH9101R、CH9101Y、CH9102F、CH9102X、CH9103M、CH9104L、CH9114L、CH9114W等型号是为了满足用户的国产化替代需求而推出的引脚兼容型号。除此之外,USB内置终端电阻也是一样的做法,其他的CH9114的电源引脚更少,外围更精简些。显示这个名称要注意下了,芯片默认使用的计算机上自带的CDC串口驱动,这个驱动做数据传输还可以,做标准串口差了点意思。
2024-09-03 10:29:30
1674
1
原创 CH9114 USB转四串口替换FT4232H系列芯片
高速USB转4串口芯片在主机端需要同时连接多路串口外设的时候应用十分方便,当USB接入主机,配合原厂提供的串口驱动程序,设备管理器中会出现4路独立的COM口,每个COM口拥有独立的收发缓冲区支持单独的串口参数设定,因此每个串口都可以独立进行工作,互相之间没有任何影响。早前CH系列芯片只发现有单串口型号的替换,4串口芯片苦于迟迟找不到替换型号,所幸今年和他们工程师聊天中获悉,高速USB转4串口芯片FT4232系列的替代型号也发布了,CH9114系列型号。当芯片处于挂起状态,则输出有效信号。
2024-09-02 11:50:25
1566
原创 CH9102 USB转串口应用体验
近期使用CH9102 USB转串口芯片成功用在原有使用CP2102的产品板上,整个替换和验证过程还是很顺利的,顺带写个blog做个记录。原项目上使用CP2102搭载ESP32实现Arduino物联网应用,采用USB转串口芯片实现串口下载,代码的Debug调试,以及编程软件的控制与交互。公司其他项目在用的比较多的USB转串口芯片还有CH340。因为使用CP2102的项目和产品用量不是很大,所以原项目设计更改也一直没有提上日程。因疫情原因,原使用CP210...
2021-09-13 13:56:53
7902
2
原创 OpenWrt 之 MT7628 使用GPIO中断
在支持设备树的系统中使用中断一般有2种方式。一、DTS配置interrupt节点这里有个挺好的博客,链接地址:https://biscuitos.github.io/blog/DTS-interrupt/也即,找到dts文件中的GPIO中断控制器节点,然后在你的dts驱动节点中根据interruptcells数量做下声明。二、通过宏gpio_to_irq获取我在实验中是...
2020-03-27 10:03:26
1909
原创 OpenWrt 之 MT7628 移植第三方SPI驱动
1、在OpenWrt系统上移植SPI驱动前,首先要确保SPI相关引脚未被复用为其他功能,比如GPIO;以下操作已假定该条件成立,否则请修改相关dts和c文件中复用配置;2、打开dts配置文件进行修改,这里我是用的硬件为WRTNODE2R,所以文件路径为:/target/linux/ramips/dts/WRTNODE2R.dts。在SPI控制器节点下添加与我们要添加的SPI设备及驱动匹配的信息...
2020-03-26 16:21:47
3077
原创 gcc工具链查看默认编译选项
命令:echo "" | gcc -v -x c++ -E -如在Ubuntu系统下输出结果为:rambo@ubuntu:/tmp$ echo "" | gcc -v -x c++ -E -Using built-in specs.COLLECT_GCC=gccOFFLOAD_TARGET_NAMES=nvptx-noneOFFLOAD_TARGET_DEFAULT=1T...
2020-03-26 13:08:19
6526
原创 苹果MacOS系统上安装第三方驱动失败/无效
近期不少用户在苹果系统上安装一些第三方驱动时反馈没有作用,但是驱动安装提示是完成的,并拷贝到了系统的驱动路径下;造成该问题的原因可参见如下苹果官方说明:User-Approved Kernel Extension Loading引用下第一段官网说明macOS High Sierra 10.13引入了一项新功能,在加载新安装的第三方内核扩展(KEXT)之前,需要用户批准。 当请求加载用户...
2020-03-23 14:23:47
6464
2
原创 Windows系统USB转CDC串口驱动限制说明
USB转串口芯片目前主流的几种USB类别有:1、USB厂商类;2、USBCDC类;3、USBHID类;其中若使用USBCDC系统内置驱动时,使用时会有诸多特殊性,如下为使用说明:1、测试中出现若打开串口状态下,拔掉USB硬件,然后插上。关闭串口后重新打开一定会出错,除非再插拔一次硬件才能恢复;2、CTS引脚在CDC协议中没有相对应的字段,实际上,若DCD、RI、DSR...
2020-03-23 14:08:37
2257
原创 The futex facility returned an unexpected error code
在 linux 程序执行中若遇到该错误,考虑下是否是如下变量使用了强制内存对齐导致。比如:在将如上变量包含到结构体中,强制1字节或2字节内存对齐。如:信号量相关 struct semaphore,线程相关的 pthread_mutex_t,以及 pthread_cond_t 等等。解决办法:1、取消强制内存对齐;2、不要包含在结构体中或类中;...
2020-02-11 10:18:29
7461
原创 C++ Tips
1、析构函数调用时机<1> 栈中定义的对象程序会自动调用析构函数例如CLassName object;这样声明的对象,当程序运行到了对象作用域之外或者程序退出,对象都会被销毁,当然析构函数也会被调用<2> 堆中new的对象使用new声明的对象,必须手动调用delete才会调用析构函数...
2019-07-27 15:49:06
322
原创 使用std::thread线程相关函数,-static静态编译的程序运行时的一些常见错误
使用std::thread的应用程序,编译时如果是动态链接pthread线程库运行正常,-static静态链接时在某些平台下可能会遇到一些意外错误。如常见编译命令:g++ -std=C++11 test.c -o test -pthread1、Segmentation fault(段错误)2、terminate called after throwing an instance of 's...
2019-07-27 13:58:01
1357
1
原创 Ipad平板作为MAC苹果电脑的扩展屏幕的技术研究
直入主题,这方面的研究直接参考当前使用基数最大,反馈最好的两个产品。最新产品讯息,请分别进入各自官网。BTW,Duet Display也跟随Luna Display开始发布硬件了。Duet Display 颠覆了基于 Wi-Fi 的传统运作原理,改经 USB 数据线实现,虽然此前也有使用 USB 的类似应用,但二者的实现方式有本质的区别。其次,Duet Display 并非通过纯粹的「屏幕...
2019-05-31 17:48:11
5131
原创 Linux驱动如何在不同版本上快速迭代升级
As well known,Linux内核版本更新很快,有些内核版本的迭代升级可能会导致在使用的驱动版本存在编译失败或使用的兼容性问题,如何快速定位到内核版本间变更的地方,并处理掉该问题,列一下我常用的解决方法。(之前遇到问题,就下载对应的内核版本安装测试的方法,看来很foolish)1、通过kernel.org内核官网查看具体版本相较于上版本的ChangeLog。该方法可以全面看到内核版...
2019-05-24 18:08:39
1414
原创 安卓BLE开发教程(二) BLE开发流程
在安卓上进行BLE开发时,就不必像理解BLE协议栈那样复杂了。因为安卓的BLE包为我们提供了十分丰富的API、各类常量、各类连接通信情况下的回调API等。具体流程一、声明权限二、获取Adapter适配器三、开启蓝牙四、BLE扫描与停止五、连接设备六、枚举特征值及其属性七、利用特征值通讯八、关闭蓝牙一、声明权限在AndroidManifest.xml文件中...
2018-12-20 18:33:58
2030
原创 安卓BLE开发教程(一) BLE基础
我试图以一种简单的方式去把重要的事情讲清楚。目的是希望BLE协议栈和基础概念简单化,让自己及类似的安卓开发者可以在较短的时间内把握住BLE的核心及使用方法。BLE本身很复杂,但对于安卓开发而言只要抓住一些核心点,便已足够。如果你想全面了解BLE协议栈,包括分层及每层功能,那么你从这里可能得不到答案。1、BLE协议栈层次然而,安卓BLE开发不用理解如此复杂的分层结构。因为我们不是在开发B...
2018-12-20 15:50:50
4965
原创 安卓获取屏幕最大(绝对)分辨率
安卓开发时,在很多应用场景需要获取手机屏幕的真实分辨率,然而查阅了大部分博客提供的获取方法发现获取方法并不对。下面几种常用的方法(错误)和最终正确获取的方法均会展示在下面。实验场景:Activity(隐藏或不隐藏状态栏、虚拟导航栏等场景)、Service 中。错误方法一:DisplayMetrics metrics = new DisplayMetrics();getWindowM...
2018-12-14 14:00:45
2547
7
原创 Android/Linux 系统添加对多点触摸屏的支持
含有 HID 多点触摸控制器的触摸屏、触摸板在 Android 和 Linux 内核中都是由 "hid-multitouch" 驱动进行支持的。因此如果你的系统连接触摸屏没有反应,问题基本都出于驱动未加载或者与触摸屏的 VID 与 PID 不适配。以下分情形讨论:1、系统中已存在“hid-multitouch”驱动 若“hid-multitouch”驱动是以内核模块的方式存在于系统里...
2018-07-06 09:52:12
5204
5
原创 安卓App报错:android.os.FileUriExposedException
安卓7.0开始,不再允许在App中把 file://Uri 暴露给其他App,因此在代码中需要做下版本判断,在7.0版本及以上需要使用 FileProvider 生成 content://Uri 来代替 file://Uri。同时安卓工程需要做以下调整:1、在 AndroidManifest.xml 的 application 标签页下增加 provider 声明 <applicati...
2018-06-29 09:54:38
902
原创 解决 Windows Update 更新错误/无法创建还原点 代码 0x80246008
这个问题在我的电脑上由来已久,但是大部分的更新工作可以由其他第三方软件来完成,所有有时候得过且过。但同时,有一些棘手的问题,会提示系统进行 Windows Update,只有硬着头皮解决了。如果你遇到了“系统无法创建还原点”,也可以参考此博客。1. 一般更新出现 80246008 是由于 BITS 服务没有启动导致的。又名:后台智能传送服务 / Background Intelligent Tra...
2018-03-03 18:08:36
5386
原创 中标麒麟/NeoKylin 安装QT开发环境
1. 如果你对中标麒麟系统安装有疑问,请阅读上一篇文章:《中标麒麟/NeoKylin U盘安装系统》。2. 进入系统打开终端,以 root 模式操作。<1> yum install gstream* libXext-devel libX11-devel<2> ln -s /usr/lib64/libXrender.so.1.3.0 /usr/lib64/libXrend...
2018-02-13 11:51:34
5999
原创 中标麒麟/NeoKylin U盘安装系统
这里以 NeoKylin6 为例,其他版本与此相类似大同小异。但是下载指定版本的镜像时要注意配合该版本的软件包是否充足,不然就会遇到安装好系统很多软件无法安装或更新的情况。1. 官方下载地址:http://download.cs2c.com.cn/neokylin/desktop/releases/2. 第二步,在上个地址中找你想要下载的版本,注意前面说的先检查下资源,以我想下载的版本 6.0 为...
2018-02-13 11:41:58
16844
1
原创 USB OTG 的进一步理解
一直以来在做安卓系统相关的嵌入式通讯(USB、BLE、网络、串口等),最近在讨论 OTG 问题的时候,对该规范又重新理解了一次,这里仅做一些概要和核心点说明,下方会给出具体 OTG 包含协议的参考链接,大同小异就不多赘述了。1. 硬件接口与传统的 4 线USB接口不同,OTG接口除了 VCC、GND、D+、D-之外还多了一根 ID 线,对支持 OTG 规范的设备来说,按照连接时的 ID 线状态分为
2018-02-06 14:50:29
2597
原创 Vmware提示:the operation was canceled by the user
一般遇到这种情况是由于当前虚拟机资源中的资源文件被其他进程占用导致的。如果你的系统中有 DAEMON Tools Lite 软件,那么多半是因为这个原因。因此下面针对此情况提出两种解决办法:1. 检查有无安装 DAEMON Tools Lite 软件,若安装此程序,打开任务管理器,显示所有进程,找到是否有名称为 DiscSoftBusService 的存在,有的话,结束该进程。然后重新启动 Vmw
2017-12-08 11:15:47
10898
原创 Windows与Linux下tftp服务的使用
tftp 协议是基于 udp 的,轻量小巧,用在局域网和嵌入式上很顺手。大部分帖子把在 linux 上配置的过程描述的过于复杂,其实只是个工具而已。研究协议抓下包对比协议内容也可以满足需求了,下面进入正文。分别讲下在 linux 以及 windows 环境下的tfpd使用教程。1. windows 工具链接下载地址:Tftpd32 链接2. Linux 软件包安装sudo apt-get inst
2017-12-06 15:22:35
6780
1
原创 《言简意赅之Linux设备驱动编程》 前言
linux 内核与驱动开发是一门很深的学问,主要是由于覆盖知识面较广、内核架构设计层级较深、软硬件知识要兼具。因此自己在学习理解时会经常遇到某一章节需要反复阅读理解多次。所以,我想用一种言简意赅的方式讲述 Linux 内核与设备驱动开发。我认为把一个概念阐述的比较言简意赅的关键在于抽象与从宏观角度理解。也即,充分理解框架与核心点,然后在实际开发中不断强化该知识点的学习与使用。这样可以起到事倍功半的
2017-11-13 20:11:36
791
原创 frameworks/av/media/CedarX-Projects/CedarAndroidLib/LIB_KK44_/Android.mk: No such file or directory
在安卓系统编译过程中如果遇到上述或者与之类似的错误,可以采取相同的处理方法进行解决。直接进入到 CedarAndroidLib 目录下,也即此例中的 frameworks/av/media/CedarX-Projects/CedarAndroidLib。看一下当前文件:注意第9行为包含标题中报错的那个 Android.mk 文件。可见为此步骤出错,上述字符串定义如内容所示,查看上级目录
2017-09-30 10:59:23
2672
1
原创 VMware 虚拟机占用磁盘空间
使用VMware创建的虚拟机尽管已经设定分配的磁盘大小,但仍然会发现虚拟机占用的磁盘空间会越来越大,而直观体现就是虚拟机系统文件 vmdk 不断增大。因此下面介绍一个简单的方法,使用 VMware 自带的工具对 vmdk 文件进行压缩以节省磁盘空间。拿我的系统为例:如果有很多 vmdk 文件,那是由于虚拟机创建的时候选择了把磁盘存储成多个文件,选择合并(又快照时不合并会影响后面的压缩)
2017-09-30 10:22:10
8401
原创 JAVA循环队列
关于自定义循环队列的实现原理和要点可以参见之前的博文系列:循环队列及C语言实现。这里主要对JAVA下的具体实现方式与原理进行说明。一、JAVA 中已经自带了 Queue、DQueue、ArrayList、LinkedList 等常用的数据结构,为什么还要单独实现循环队列?之所以使用自定义循环队列,出发点还是基于我们在实际应用中对于数据处理各种各样的需求。使用自定义数据结构的好处就在于可以更
2017-09-15 15:25:44
4446
原创 Android开发如何使用JNA
在非安卓的平台上,一般我们直接使用这两个 jar 包就可以轻松使用 JNA 并进行安卓开发了。在安卓上由于这两个 jar 包默认没有对应安卓版本的 libjnidispatch.so 文件,因此我们需要从 jna master 中提取该文件并对 jna.jar 文件进行改造,或者使用 jna-min.jar 文件。
2017-08-07 19:48:18
7408
4
原创 Java 结构体之 JavaStruct 使用教程<三> JavaStruct 数组进阶
经过前面两篇博客的介绍,相信对于 JavaStruct 的认识以及编程使用,读者已经有一定的基础了。只要理解和实践结合起来,掌握还是很容易的。下面进行一些数组使用方面的实例说明及演示。在结构体类中使用数组有几种方式,可以使用静态指定大小的方式也可以通过使用 ArrayLengthMaker 进行动态分配。数组的大小既可以在类中定义,也可以在定义对象后通过对象进行指定。静态指定方法如下所
2017-07-21 18:07:55
11543
9
原创 Java 结构体之 JavaStruct 使用教程<二> JavaStruct 用例分析
使用环境前一篇在介绍 JavaStruct 类时指定了使用库使用环境为 Java 5 及以上,也即开发我们使用的 JDK 版本为1.5及以上就可以了。以下讲解的用例可以直接将 code 直接粘贴到 java 的 main 函数中执行就可以了,后面会给出测试用例和结果。使用方法JavaStruct 类用于打包和解包结构体,也即使用方法为用该类的 pack 与 unpack 方法将定义的
2017-07-21 14:23:21
30162
12
原创 Java 结构体之 JavaStruct 使用教程<一> 初识 JavaStruct
Javastruct 是什么简而言之,Javastruct 是一个第三方库,用于像处理 C 或者 C++ 结构体那样处理 java 对象。也即利用 Javastruct 可以在 java 上实现类似于结构体的功能和操作。Javastruct 的用途在 java 或者 Android 应用程序与一些嵌入式设备通讯或者C、C++ 应用程序通讯时,比如网络、无线、蓝牙、串口通讯等场景,由于实
2017-07-20 18:06:30
19923
2
原创 Linux 驱动编译报错:error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
编译驱动时遇到这个错误提示,表示当前编译环境中将关于 DATE 以及 TIME 的警告也作为错误来进行处理的。有如下几种方法可以参考:1. 在编译驱动的相应 Makefile 中增加一行:CFLAGS += -Wno-error=date-time,然后保存重新 make;2. 若 CFLAGS 不生效,将关键字替换为 EXTRA_FLAGS;3. 修改 /lib/modules/
2017-07-17 11:32:18
7817
1
翻译 安卓USB开发教程 <六> 安卓 AOA 2.0
Android Open Accessory Protocol 2.0目录Detecting AOAv2 supportAudio supportHID supportInteroperability with AOAv1Connecting AOAv2 without an Android app目录检测AOAv2支持音频支持H
2017-07-10 19:58:33
3849
原创 安卓USB开发教程 <五> 安卓 AOA 1.0
Android Open Accessory Protocol 1.0(AOA 协议 1.0)Android USB 配件必须遵从 Android Open Accessory(AOA)协议,该协议定义了配件如何检测和建立与 Android 设备的通信。配件应执行以下步骤:等待并检测连接的设备确定设备的配件模式支持尝试以配件模式下启动设备(如果需要)如果设备支持 AOA,与设备
2017-07-10 11:13:10
2605
原创 安卓USB开发教程 <四> 安卓 AOA
Android 开放性配件协议(AOA)Android 开放性配件协议(AOA)支持允许外部 USB 硬件(Android USB 配件)与工作在配件模式下的 Android 设备进行交互。当处于配件模式的 Android 设备被供电,所连接的配件充当 USB 主机(为总线供电并枚举设备),Android 设备作为 USB 配件。Android USB 配件旨在连接 Android 设
2017-07-09 23:42:55
2160
原创 Cygwin 下载极速源推荐
Cygwin 默认列表中的源下载速度太慢,国内使用时常用以下两个源,经过实际使用速度很快,下载时不妨两者都尝试下:如上图所示,下载时在此栏填写 URL 地址即可,推荐地址:http://mirrors.sohu.com/cygwin/http://mirrors.163.com/cygwin/添加完,选中新的源后,再进入下一步就可以了。
2017-07-05 14:14:28
922
安卓电视与BLE遥控器交互蓝牙报文.zip
2019-07-23
Android/Linux触摸屏解决方案
2018-07-06
解决 Windows Update 更新错误/无法创建还原点 代码 0x80246008
2018-03-05
Office2007转PDF插件
2018-02-09
安卓JNA例程
2017-09-25
JavaStruct库与应用文档
2017-07-20
安卓串口应用资料
2017-07-20
CCIE路由与交换认证考试指南(英文版)
2016-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人