- 博客(48)
- 资源 (18)
- 收藏
- 关注

原创 嵌入式Linux设备实现SD卡或U盘自动挂载
一、前言在Linux系统中常用udev或mdev来实现可移动存储设备的节点创建和挂载。这两者功能相似,但是mdev更精简。因此在空间受限的嵌入式设备中,mdev更常用。二、mdev介绍 mdev有两种用法:1)/sbin/mdev2)/sbin/mdev -s 区别在于1是创建或删除发生变化的设备节点,通常在发生热插拔时调用;2是创建所有设备节点,通常在启动脚本中调用。我们看到的/dev下的所有设备,都是...
2021-09-06 16:36:03
4173

原创 移植编译libubox、ubus、json-c的详细过程
一、引言 近期项目中需要用到ubus相关内容,ubus是OpenWrt中的进程间通信机制。Ubus源码可以很容易地从网上下载到,但是要想应用到实际项目中,需要进行移植。网上关于ubus移植的文章琳琅满目,但是仔细阅读下来发现,这些文章要么讲得很粗略,要么充斥着一些无效和重复的内容。对于刚接触ubus的开发者来说,这些文章并不能正确指导开发者如何移植和使用ubus。因此博主写下此文,记录移植的详细过程,同时也为其他开发者提供一些参考。二、ubus的依赖关系 Ubu...
2020-08-04 15:58:12
5786
4
原创 嵌入式Linux系统TF卡热插拔检测问题
像这种基础功能,原则上按芯片厂商的参考设计来,就没任何问题了,可能是硬件团队的同事出于某种考虑,将这个CD脚调整了。既然在uboot里识别和读取正常,说明至少硬件上读写是没问题的,结合内核启动时的打印信息,我推测问题应该是出在卡检测上面。这个函数的功能是设置卡检测的管脚,但是管脚的信息是通过参数传进来的,于是向上一层层追溯,最终发现这个CD脚的定义并不在这里,而是通过dts也就是设备树动态传递过来的。可以看到当前是PB27,改成PB26后,重新编译内核,烧录,成功检测到TF卡!
2024-09-28 15:28:24
824
原创 Ubuntu离线安装net-tools
新装的Ubuntu 18.04版本默认没有安装net-tools,导致ifconfig命令用不了。于是想安装net-tools,但是没有网,一直安装不上。找了好多资料,终于找到一个有效的离线安装办法。下载完毕后,执行deb包安装。net-tools官方下载。
2023-07-30 22:49:28
7030
原创 Linux查看GPIO被哪个程序占用了
设备上有一个GPIO,在通过命令:echo 53 > /sys/class/gpio/export初始化时报错:sh: write error: Device or resource busy。于是想查看一下这个管脚被谁给占用了,执行如下命令:cat /sys/kernel/debug/gpio结果报错,提示没有这个文件:cat: can't open '/sys/kernel/debug/gpio': No such file or directory。上网查了下,需要先执行这个命
2023-01-07 20:03:43
6156
6
原创 Linux动态库和静态库混合链接的问题
项目中需要链入2个第三方的库,结果遇到了一个比较有意思的问题,这里记录一下分析和解决过程。两个第三方的库,一个是动态库,暂且称之为libone.so;另一个是静态库,暂且称之为libtwo.a。而libone.so中调用了libtwo.a中的一个函数func(void),我刚开始的编译命令这样写的
2023-01-04 23:23:08
1009
原创 Linux设备修改主机名、用户登录密码的方法
芯片厂家提供的制作好的rootfs,默认的用户命名是root,主机名是Ingenic-uc1_1,没有登录密码,如下图所示。现在需要更改为用户名test,主机名ipc,登录密码test。本文介绍如何修改这几项内容。
2022-11-09 11:12:03
1855
原创 curl、openssl、mbedtls的交叉编译过程
cURL是一个利用URL语法在命令行下工作的文件传输工具,在Linux系统中常被用来下载或上传文件。curl需依赖openssl或者mbedtls这两个加密库,可以根据实际需要选择其一。本文主要记录如何交叉编译这3个库,使之能运行在嵌入式Linux设备上。
2022-11-08 18:43:13
3394
原创 嵌入式Linux设备自动获取IP地址
DHCP全称是:动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)它是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:1)用于内部网或网络服务供应商自动分配 IP 地址;2)给用户用于内部网管理员作为对所有计算机作中央管理的手段。DHCP分为服务器端和客户端,通常是客户端向服务端申请地址,嵌入式产品上运行的一般是DCHP客户端。
2022-11-07 17:25:18
4611
原创 Ubuntu设置静态IP地址的几种方法(亲测有效)
在某些场景下,我们可能需要将一台电脑的IP地址设置成静态的。例如在局域网内部署一个服务器,我们可能不希望他通过DHCP获取动态地址,而造成无法访问。设置静态IP在window系统下比较容易,但在Linux系统下稍微麻烦一点。下面介绍2种Ubuntu 18.04系统下设置静态IP的方法,博主亲测有效。
2022-09-07 18:23:59
156101
12
原创 设备的tar命令不支持-z选项的解决方法
tar命令是由Busybox提供的一个打包工具,注意仅仅是打包,tar本身没有压缩文件的功能。如需要打包的同时进行文件压缩,则需要tar命令后面加上-zcvf选项。相对应的,如果要解压.gz格式的包,则需要在tar命令后面带上-zxvf选项,同样的,系统里面需要预先安装gunzip程序。2.一般芯片厂商提供的busybox源码,都带有一份默认的配置文件,先用它生成默认的busybox配置信息,若没有,则跳过这一步。嵌入式产品运行的是Linux系统,调试时发现设备的tar命令不支持-z选项,报错为。...
2022-08-15 16:39:36
6843
原创 QT每天一个小技巧
使用QT进行开发的过程中,经常发现一些实用的小技巧,有时候能给开发带来不少便捷。因此,写下此文积累一些这方面的知识,便于自己查阅以及给广大开发者提供一些参考。
2022-01-12 10:59:43
476
1
原创 利用VLC-QT制作一个能播放RTSP视频流的简易播放器
一、前言最近项目上需要用到一个小的工具软件,能播放RTSP视频流。翻阅网上大量资料后,决定采用LVC-QT库搭配QT5来实现。本文记录实现过程。二、VLC-QT简介VLC-Qt 是一个免费库,用于连接 Qt 和 libvlc 库。它包含用于主要媒体播放的核心类和一些用于更快开发媒体播放器的 GUI 类。下载地址:https://vlc-qt.tano.si我这里下载的是MinGW版本:三、QT工程我安装的QT库版本是:Qt 5.9 for Desktop (MinGW 5.3
2022-01-05 18:13:04
2892
1
原创 在虚拟机里通过U盘引导安装Win10教程
本文介绍了在虚拟机里安装Win10系统的详细过程,以及可能遇到的问题和解决方法,供广大爱好者参考和交流。
2021-12-12 15:59:15
11212
4
原创 QT在其他cpp文件中使用MainWindow的界面和控件的方法
Qt工程中默认所有的代码都写在mainwindow.cpp里,当代码量不多时尚可,但一旦代码量多,就会使mainwindow.cpp非常臃肿,给开发和阅读造成不便,因此考虑将部分代码剥离出来,放到另外的cpp文件里。这里就会涉及到在另外的cpp里如何使用mainwindow中的控件的问题。经过摸索,找到了一种简单且有效的办法。1.在工程目录下创建.cpp和.h文件,这里以user.cpp举例user.cpp的源码:#include "user.h"Ui::MainWindo...
2021-03-04 12:18:21
8832
17
原创 FM17550功耗高的原因记录
最近在整理智能门锁项目的代码,将原有FM17550芯片的相关驱动代码更新为厂商提供的最新代码。更新完后发现FM17550在进入LPCD模式后,功能比正常高了2mA左右。经过不断的跟踪是试验,发现是LPCD调校之后,VIMD电源未关闭导致的。关于这块内容,手册《FM175xx_LPCD_ug_chs.pdf》中有描述:在旧代码中,LPCD调校完成后,就立即将这个位清除了。但最新的代码不知为何没有这一步,导致这个硬件模块一直在偷偷运行,造成了功耗高。解决办法为在Lpcd_Get_Calibr...
2021-02-01 17:16:46
2809
5
原创 nRF52833使用两个UART的方法
一、前言 近期项目上采用了Nordic的nRF52833这颗BLE SoC芯片,该芯片有2个UART,分别是UART0和UART1,但是官方例程却没有关于如何使用UART1的例子。经过一番摸索,终于把UART1用起来了。写下此博文,希望给读者提供一些参考。二、环境说明 SDK版本:nRF5_SDK_17.0.2_d674dde SoftDevice版本:S113_nrf52_7.2.0 Demo程序:nRF5_SDK_17.0.2_...
2020-11-06 10:54:38
1684
原创 Windows连接不上Linux的Samba服务器的解决办法
1.查看Linux本地的端口开启情况sudoufw status如果samba要用的139、445端口没有开启,则需要手动打开2.开启139、445端口sudo ufw allow 139sudo ufw allow 4453.再次查看本地的端口开启情况sudoufw status发现139、445端口已开启4.Windows下打开运行,输入\\192.168.x.x\xxx(填写实际的IP地址和共享目录名称),成功连接。...
2020-07-15 17:43:31
8466
3
原创 合泰32位单片机HT32F50230外部时钟改为内部时钟的方法
项目上用到了合泰的32位单片机HT32F50230,出于成本考虑,不打算外接晶振,而是采用芯片内部的振荡器为单片机提供时钟。但是合泰的例程都是默认使用的外部时钟。下面将介绍如何将外部时钟改为内部时钟。 方法其实很简单,合泰的SDK提供了时钟选择相关宏。打开“system_ht32f5xxxx_04.c”文件,找到如下一段代码(也可以全局搜索HCLK_SRC这个宏):将HCLK_SRC的值由2改为3,同时将HSI_ENABLE的值改为1,将HSE_ENABLE的值改为...
2020-06-20 14:43:05
1157
原创 解决git每次拉取都需要输入账号密码的问题
1.在要拉取的目录里空白处右击,点击"Git Bash Here"启动git命令行;2.在命令行里执行"git config --global credential.helper store",这会在gitconfig目录下创建一个文件,用于记录账号和密码;3.再执行一次"git pull",输入正确的账号密码,以后就不用再输了。...
2020-02-10 20:57:11
5304
原创 Nordic DFU OTA参考资料
本文记录的是Nordic官方的帮助文件,里面有OTA有关的参考资料的查找方法。链接:https://infocenter.nordicsemi.com/index.jsp图示:
2020-01-10 19:44:37
802
原创 NB-IoT终端收不到平台下发数据的问题
首先,NB-IoT终端收不到平台下发数据的问题在产品调试初期会经常遇见,最主要的原因是NB模组进入了PSM模式,此时下行不可达。如果平台发送了实时消息,则一定会发送失败。解决办法一是关闭NB模组休眠功能,二是在发送下行数据前先唤醒NB模组,三是实时消息改为发送缓存消息。 而本文中遇到的问题,不是上述问题。调试设备发现,即使激活了NB模组,且NB模组成功地往平台上报...
2019-12-17 19:29:00
3405
原创 NB-IoT终端收到OneNet平台下发的数据格式异常问题
1.问题描述 NB-IoT终端对接OneNet平台调试过程中发现,终端收到的平台下发的数据偶尔会出现格式异常现象。例如,平台本来下发的数据是字符串形式的“abc”,但是NB模组收到的实际数据是这条字符串的ASCII码“979899”。这种现象有一定概率出现。2.原因分析 看现象应该是平台的编码转换有问题,如果是这样也无法解释为什么问题是偶现,而不是必现。经...
2019-12-17 19:09:00
1794
转载 关于NB-IoT你想知道的都在这了
工信部下发通知推动150万NB-IoT基站落地。NB-IoT汹涌而来。很多网友要求雇佣军科普一篇NB-IoT,为此来一篇超级啰嗦的技术文。1NB-IoT一路走来从2G到4G,移动通信网络不断更新换代…2G:GSM▼2G:GPRS/EDGE▼3G:UMTS/HSPA▼4G:LTE▼从GPRS到LTE,移动网速越来越快。我们开玩笑讲,...
2019-09-16 11:17:02
1945
转载 RSRP RSRQ RSSI SNR的含义和区别
安卓手机中关于网络信号的测量有多个名词,这里统一解释一下。RSRPRSRP (Reference Signal Receiving Power,参考信号接收功率) 是LTE网络中可以代表无线信号强度的关键参数以及物理层测量需求之一,是在某个符号内承载参考信号的所有RE(资源粒子)上接收到的信号功率的平均值。通俗得理解,RSRP的功率值 代表了每个子载波的功率值用处和规范都等同于WCDMA...
2019-09-10 18:36:02
57113
2
原创 nRF52810 DFU升级失败以及Flash空间分配问题分析
本文主要分析由于Flash空间受限,导致nRF52810无法进行DFU的问题。先看下nRF52810的Flash空间分配:从图中可以很清楚地看出,nRF52810的Flash大小为192KB,其中100KB分配给SoftDevice,也就是协议栈。32KB分配给Bootloader,剩下的60KB分配给应用程序。因此,理论上应用程序大小最大可以是60KB。但实际上很多情况下...
2019-07-11 16:33:12
2906
2
原创 码云修改登录密码后终端连不上的问题
本文转载自:https://www.cnblogs.com/cnsdhzzl/p/10129711.html码云修改了登录密码后,终端无法连接服务端,解决办法是修改系统凭证管理器里保存的账号密码。控制面板=>用户账号=>凭证管理器,可修改账号密码或删除。...
2019-06-18 16:45:51
1412
原创 完美解决pyserial报"UnicodeEncoudeError"的问题
通过Python调用电脑的串口,在pyserial已经正确安装的情况下,通过“python -m serial.tools.list_ports -v”命令列出电脑所有的串口,结果显示如下: 通过上网搜索资料得知,这是因为Python默认调用ASCII编码解码程序去处理字符流,当字符流不属于ASCII范围内时,就会抛出异常(ordinal not in ran...
2019-06-02 17:18:01
703
原创 nRF52系列芯片开启UART导致进Default_Handler的问题
一、问题描述 使用nRF52810开发产品,一次不经意删除了工程目录\examples\ble_peripheral\ble_app_uart\pca10040e\s112\arm5_no_packs下的RTE文件夹,虽然重新编译会生成一个新的RTE文件夹,但是会导致串口一通信,程序就会卡死。通过在线调试,发现程序是进入了Default_Handler默认的中断服务函数。二、...
2019-05-08 17:57:19
1213
原创 不定长度密码虚位比对算法的思路
假设数据库里已存在一条长度为8位,值为“12345678”的密码。规定输入长度达到6位才开始比对。下文将分别列出用户输入密码长度分别是6、7、8位三种情况下,算法需要比对的内容和次数。一、输入密码长度6位时 输入待匹配密码:123456 需要比对的次数:1 需要比对的内容:循环计数变量 截取长度 ...
2019-04-26 10:46:32
631
原创 nRF52832 GPIOTE中断丢失的问题
产品中需要用到GPIO外部中断功能,可以使用芯片的GPIOTE功能实现。但是自己配置GPIOTE有点麻烦,于是偷个懒,直接用例程中的Button相关代码,把外部中断当成是按键输入。 实际上Button模型底层也是通过GPIOTE加定时器实现的,只不过SDK做了一些封装,加了延时消抖功能。使用起来确实很方面,但是也有弊端,那就是容易“丢中断”,意思就是外部中断信号并...
2019-04-24 16:14:22
2624
1
原创 nRF52832 DFU升级导致FDS数据丢失的问题
产品使用nRF52832的FDS模块来存储用户数据。产品在使用过程中,发现DFU升级有一定概率导致FDS数据丢失。经过查找相关资料,发现在Bootloader程序中有一个宏,用来指定受保护Flash区的大小。在保护范围之外的,会被Bootloader给擦除。这个宏是:#ifndef DFU_APP_DATA_RESERVED#define DFU_APP_DATA_RESERVE...
2019-03-19 18:54:02
2974
4
原创 nRF52832改变MTU大小的方法
nRF52832的MTU最大支持247字节,但是SDK默认的不是最大, 修改方法如下:1.改变"sdk_config.h"头文件中相关宏// <o> NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. #ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE#define NRF_SD...
2019-02-21 18:03:03
6548
原创 nRF52832的NFC天线脚用作GPIO的方法
调试nRF52832的过程中,发现P0.09和P0.10这两只管脚,无法通过程序控制输出指定的电平。翻查芯片手册,发现这两只脚默认是作为NFC的天线引脚,因此用 GPIO函数对它进行控制是无效的。 解决方法:在system_nrf52.c文件的开始处,加上#define CONFIG_NFCT_PINS_AS_GPIOS,重新编译运行就行了。...
2019-01-26 16:09:02
1480
原创 C语言测量字符串长度使用strlen和sizeof的区别
sizeof是C的运算符,而strlen是C的库函数。两者都可以用来测量一个字符串的长度,但实际上两者的测量结果是有区别的。这个区别取决于被测量对象的性质,先来看个实验。int main(void){ char str_buff[3] = {"abc"}; printf("Test1, strlen = %d\r\n", strlen(str_buff))...
2018-12-26 11:35:05
4306
2
原创 nRF52832频繁打印“APP_UART_COMMUNICATION_ERROR”的问题
在调试nRF52832的uart的过程中,发现调试信息会时不时打印“APP_UART_COMMUNICATION_ERROR”这个错误,看上去似乎毫无规律。查看SDK的相关说明,可以大致知道打印这个的提示的原因是uart硬件接收到了一些错误数据。但是为什么会收到错误数据呢? 经过反复试验,发现只要用手触碰到芯片的RX引脚,就会打印这个错误提示。由此,可以推测是手触...
2018-12-25 18:43:33
5241
15
原创 Nordic SDK14 添加蓝牙服务为空的问题记录
在SDK 14.1.0的nus例程中,添加了自己的自定义服务。但是发现服务可以添加,但是服务里的内容为空。我定义的一些特征值,在这个服务里全部没有。 经过仔细研究,发现Nordic的SDK有一个宏“NRF_SDH_BLE_VS_UUID_COUNT”,这个宏是用于控制自定义特征值(准确说是UUID)的数量。这个值默认很小,把它改大一点,就能解决添加服务为空的问题了...
2018-12-22 16:22:25
567
转载 单片机常用滤波算法
说明:假定从 8位 AD中读取数据(如果是更高位的 AD可定义数据类型为 int),子程序为 get_ad(); 一、 限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为 A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如...
2018-11-29 15:57:38
2889
nRF-Command-Line-Tools_10_10_0_Installer.exe
2020-11-24
nRF5_SDK_17.0.2_d674dde.zip
2020-10-15
Nordic SDK 15.3.0 官方原版
2019-08-27
AES加解密小工具
2019-03-23
NordicSemiconductor.nRF_DeviceFamilyPack.8.24.1
2019-03-21
MAC地址的申请方法及费用
2019-03-09
STM32F103模板工程
2018-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人