
嵌入式linux笔记
平时工作遇到的问题与总结记录
fensnote
嵌入式linux系统设计开发
C/CPP Qt应用开发
展开
-
移远RG200U-CN模组WAKEUP_IN引脚
主板引minipcie图:下面是RG200U-CN 5G模组硬件手册上的图:下面是EC200N 4G模组的图:原来主板直接接EC200N 4G模组是没问题的,EC200N的1引脚不是WakeUP-in,RG2200U-CN的1引脚和19引脚都是Wakeup-in,导致模组USB没有识别。这里将主板上的1引脚上拉电阻去掉,就可以正常识别了。原创 2025-04-03 11:55:26 · 257 阅读 · 0 评论 -
移远RG200U-CN模组适配问题
5G模组RG200U-CN适配。原创 2025-04-02 17:49:49 · 238 阅读 · 0 评论 -
patchelf用法
除了上述常见的用法外,patchelf还有其他功能,如设置程序运行时加载库的搜索路径、设置程序的运行时属性等。总的来说,patchelf是一个非常实用的工具,可以帮助我们解决程序在不同环境下的依赖库问题,让程序更加灵活地运行。patchelf是一个用于修改动态链接器属性的工具,它能够修改可执行文件的运行时属性,如修改程序的依赖库路径、修改程序的运行时加载库等。通过上述命令,我们可以修改可执行文件的运行时库路径,这对于程序在不同环境下运行时依赖库路径不一致的情况非常有用。原创 2025-03-07 17:15:40 · 220 阅读 · 0 评论 -
linux检查防火墙是否阻挡端口,浅析linux查看防火墙状态和对外开放的端口状态
添加指定需要开放的端口:firewall-cmd --add-port=123/tcp --permanent。移除指定端口:firewall-cmd --permanent --remove-port=123/tcp。查看想开的端口是否已开:firewall-cmd --query-port=6379/tcp。查询指定端口是否开启成功:firewall-cmd --query-port=123/tcp。查询指定端口是否已开 firewall-cmd --query-port=666/tcp。转载 2024-12-17 16:44:05 · 188 阅读 · 0 评论 -
shell下从标准输入里取数据
shell里从标准输入读取数据,有多个命令可以实现,不同命令有差别。原创 2024-11-11 15:32:22 · 189 阅读 · 0 评论 -
rk3568 debin系统如何设置开机自启动浏览器
完成上述步骤后,重启您的RK3568设备,浏览器应该会在启动时自动全屏打开指定的网址。替换为您要启动的浏览器命令(例如。替换为您希望打开的具体网址。原创 2024-11-05 10:40:03 · 299 阅读 · 0 评论 -
ffmpeg拉流分段存储到文件-笔记
使用了 -segment_time 选项,ffmpeg 会在每个时间段结束时自动创建一个新的分段文件,即使当前的网络流还在继续。这样可以确保视频文件的时长符合指定的分段时间,但也可能意味着最后一个分段文件的时长会少于60秒,如果流在时间段结束前停止了。这是必要的,因为默认情况下 ffmpeg 使用 UDP 协议,而 UDP 在网络质量不佳时可能会导致数据丢失。这条 ffmpeg 命令的作用是从一个 RTSP 流中捕获视频,并将其分割成一系列的视频文件,每个文件持续时间为60秒。原创 2024-10-28 23:17:41 · 1120 阅读 · 0 评论 -
海思hi3536c配置内核支持USB摄像头
内核更新后,系统启动,插上摄像头,在dev下面就可以看到video0设备了。选择Multimedia support,并进入。选择Media USB Adapters,并进入。内核版本:linux-3.18.20。进入Device Drivers。保存退出,重新编译内核下载。原创 2024-10-15 08:52:30 · 646 阅读 · 0 评论 -
新唐的MA35D1 usb连接问题
刚开始以为是USB接口问题、启动模式不对,后来发现是虚拟机影响的,把虚拟机关闭后就正常连接了。原创 2024-08-26 11:19:58 · 343 阅读 · 2 评论 -
sqlite3交叉编译问题(对‘fcntl64@GLIBC_2.28’未定义的引用)
在网上查了下这个问题的原因可能是在GLIBC库2.28版本中, "fcntl"函数的底层实现发生了变化。因此,如果在较旧的版本的GLIBC库下使用这个库可能会导致错误。还有一种办法是直接用sqlite3的静态库,也可以解决。这样的话需要升级glibc库。原创 2024-08-22 08:37:03 · 710 阅读 · 0 评论 -
NUC980_NuWriter 烧写或者启动报错Err-DDR
在调试新唐的nuc980时,遇到一个问题,烧写或者重启时,有时会出现内存错误:Err-DDR从上面的讨论中可以看出来可能是电源芯片的时序不匹配问题。原创 2024-06-12 08:20:41 · 428 阅读 · 0 评论 -
socat用法记录
在服务端接收文件时,执行命令socat -u TCP-LISTEN:8080 open:test.bin,create。在客户端发送文件时,执行命令socat -u open:test.bin TCP:localhost:8080。在终端2上启动客户端连接TCP,输入命令socat - TCP:localhost:8080。在终端1上启动服务器监听TCP,输入命令socat - TCP-LISTEN:8080。在客户端登录时,输入命令socat - TCP:localhost:8080。原创 2024-04-30 17:57:16 · 1015 阅读 · 0 评论 -
关于物联网的技术与概念
嵌入式系统是以应用为中心,以计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。它们通常用于特定的任务,具有高度的集成性和优化,以满足特定的性能要求。嵌入式系统技术是一种集成了硬件和软件的计算系统,旨在为特定任务或应用提供高效、可靠的解决方案。它通常用于嵌入在其他设备或系统中,以完成特定的功能,如家电、汽车、医疗设备等。嵌入式系统技术的发展促进了物联网的兴起。物联网(IoT)是一个由大量互联的设备组成的网络,这些设备能够收集、交换和处理数据。原创 2024-03-18 08:33:53 · 961 阅读 · 1 评论 -
推荐一款嵌入式C的开源代码框架-tboox / tbox
TBOX是一个用c语言实现的跨平台开发库。针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发,而不是把时间浪费在琐碎的接口兼容性上面,并且充分利用了各个平台独有的一些特性进行优化。这个项目的目的,是为了使C开发更加的简单高效。目前支持的平台有: Windows, Macosx, Linux, Android, iOS, *BSD等等。通过xmakeRelease: 正式版编译,禁用调试信息、断言,各种检测机制,启用编译器优化。原创 2024-03-13 08:30:14 · 1274 阅读 · 0 评论 -
cppzmq入门
cppzmq是一个基于ZeroMQ的开源C ++库,用于构建分布式和并发应用程序。它提供了与ZeroMQ消息队列进行通信的简单接口。本文将介绍cppzmq的基本概念、常用模式以及示例代码。原创 2024-02-28 18:47:52 · 916 阅读 · 0 评论 -
LuaJit交叉编译移植到ARM Linux
Lua与LuaJit的主要区别在于LuaJIT是基于JIT(Just-In-Time)技术开发的,可以实现动态编译和执行代码,从而提高了程序的运行效率。原创 2023-10-15 21:51:44 · 1806 阅读 · 0 评论 -
luajit简介
LuaJIT是一种高效的Lua解释器,其通过即时编译技术将Lua代码转换为机器代码,从而提供了非常快速的执行速度。在本文中,我们将介绍LuaJIT的原理、使用方法以及在嵌入式Linux系统中的应用示例。原创 2023-10-13 09:28:20 · 2149 阅读 · 0 评论 -
lua 如何在嵌入式Linux中与c语言结合
可以使用apt-get、yum等命令从Linux软件库中安装Lua库,也可以从Lua官网下载源代码编译安装。在嵌入式Linux中,可以使用Lua语言来扩展C语言应用程序的功能。具体而言,Lua可以被嵌入到C语言应用程序中,以便通过Lua脚本文件调用C语言函数或库。在Lua脚本中可以使用C语言函数的名字,通过Lua库的API将这个函数绑定到Lua虚拟机中的一个函数名。C语言应用程序需要使用Lua库的API来加载和执行Lua脚本。通过上述步骤,可以在嵌入式Linux中使用Lua语言扩展C语言应用程序的功能。原创 2023-10-10 08:48:20 · 650 阅读 · 2 评论 -
shell脚本简介
Shell脚本是一种命令行脚本语言,它是Linux和Unix中经典的命令行脚本语言,通过编写Shell脚本工具可以简化日常的系统管理任务。我们可以使用任何文本编辑器来编写Shell脚本,比如Vim、Nano、Sublime等。脚本的第一行是指定脚本解释器的路径,本例中使用的是bash。第二行是实际的脚本代码,使用echo命令输出一行文本。除此之外,还有很多其他的命令,可以查看Linux的手册或者网上相关教程。如果一切正常,你应该可以看到“Hello World!原创 2023-10-07 09:57:48 · 169 阅读 · 0 评论 -
Mqtt学习笔记--接入阿里云(2)
在阿里云IoT平台中,MQTT协议是一种重要的连接方式,可以用于设备与平台之间的通信。通过配置设备的Topic和订阅规则,设备可以在平台上发布/订阅消息,实现设备状态的监控、控制和数据的传输。同时,阿里云IoT平台还提供了MQTT SDK和API,方便开发者快速接入平台,实现物联网应用的开发和部署。我们可以基于Mqtt接口,将自己的设备接入阿里云的IOT平台,这里主要记录实现方法,具体阿里云上的产品、设备创建不再记录,阿里云文档上比较详细了。原创 2023-09-05 09:07:40 · 347 阅读 · 0 评论 -
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue。原创 2023-01-28 16:36:45 · 1291 阅读 · 0 评论 -
常用Linux开机启动添加方法
Ubuntu与Centos开机启动添加方式原创 2022-12-16 15:48:09 · 1686 阅读 · 0 评论 -
交叉编译器环境配置与boa嵌入式web服务器移植问题
第一次见这种形式的sdk安装脚本:不过确实挺方便,把压缩包和脚本组合在一起,方便使用。这个sdk安装过之后,交叉编译时遇到一些问题,这里记录一下。这个也可以安装在wsl里面,这样可以不用虚拟机了。原创 2022-09-09 15:18:11 · 577 阅读 · 0 评论 -
NUC980 添加XT25BF256BWSIG spi-nor flash
nuc980板子更换了一个新的spi-nor flash,需要在boot和内核里注册,注册后启动挂载文件系统报错,这里简单记录一下处理方法。原创 2022-08-11 17:58:09 · 826 阅读 · 0 评论 -
Linux内核读取spi-nor flash sn
设备量产时,需要自动设置一个mac地址和sn,如果使用随机数生成的话,可能会有重复的,这里读取spi-nor的sn,参考sn来生成设备的mac和sn;原创 2022-08-10 10:53:59 · 1631 阅读 · 9 评论 -
linux启动卡一会在random: nonblocking pool is initialized之前
linux启动卡一会在random: nonblocking pool is initialized之前原创 2022-07-07 15:45:06 · 4253 阅读 · 0 评论 -
shell空文件夹查找
使用git维护代码或者文件时,git默认是不上传空文件夹的,如果是用git托管文件系统,可能就会导致好多空文件夹漏传,可以通过以下shell脚本来查找到当前目录下的所有空文件夹,并在文件夹里创建一个隐藏文件,这样文件夹就不是空的了,就可以把文件夹上传上去了:list=`find . -type d -empty` #查找所有空目录for i in $list do cd $i #进入改目录 touch .tmp #创建一个空文件 cd -原创 2022-02-16 17:25:58 · 803 阅读 · 0 评论 -
boost库交叉编译ARM版本
1.下载boost源码:地址:https://sourceforge.net/projects/boost/files/boost/编译:1)解压,cd 到目录–show-libraries可查看所有库,如下Building Boost.Build engine with toolset gcc... tools/build/v2/engine/bin.linuxx86/b2The following Boost libraries have portions that require a原创 2022-02-11 13:35:53 · 3993 阅读 · 7 评论 -
NUC980修改内核支持spi-nand
修改内核支持spi-nandarch/arm/mach-nuc980/dev.c static struct flash_platform_data nuc980_qspi0_flash_data = {-#ifdef CONFIG_BOARD_IOT+#ifdef CONFIG_BOARD_ETH2UART .name = "mt29f",#else .name = "m25p80",static struct spi_board_info nuc原创 2022-02-11 09:24:22 · 4621 阅读 · 0 评论 -
nuc980使用官方默认内核配置编译过大问题
nuc980使用官方默认内核配置编译过大,不管怎么裁剪也降不来,后来发现是因为内核里把文件系统给打包进去了!内核默认选择了RAM disk方式启动,如下界面,这里去掉后,编译出来才2M多!原创 2022-02-11 09:07:39 · 473 阅读 · 0 评论 -
嵌入式Linux系统小技巧之U盘自动运行脚本
上次说了一个脚本小技巧(预留启动脚本),这次说的这个小技巧,是U盘自动运行脚本。U盘自动运行脚本的用处U盘自动运行脚本,也属于是系统预留的一个接口吧。当系统忘记密码、没有debug调试线、网络进不去等等时,U盘就发挥作用了!系统预留了这个自动运行脚本,那可以解决好多问题。在这里简单罗列几点:修改系统密码自动升级自动导入/导出配置文件导出日志导出数据等等……U盘自动运行脚本配置方法Linux系统下是使用udev或者轻量级的类udev工具来自动自动挂载设备,这里以udev为例,来说下.原创 2022-01-15 22:31:42 · 4563 阅读 · 0 评论 -
移远EC20、EC200S-CN上网测试
EC20与EC200S-CN模块上网测试记录;EC20默认是自动拨号上网,EC200S-CN需要手动拨号上网;手动拨号上网的命令:at+qnetdevctl=2,1,1这样模块就会自动维持网络,出现断网后,会自动重新拨号上网,这一点比较好,减少应用层程序的控制逻辑。上网模式设置使用如下命令设置为usbnet,因为我驱动力是usbserial,所以这里使用的usbnetecho -e "AT+QCFG=\"usbnet\",1\r\n" > /dev/ttyUSB2这个命令使用后需要原创 2022-01-07 17:08:20 · 8001 阅读 · 3 评论 -
ubuntu下NFS挂载常见错误的解决方法[转载]
nfs挂载常见错误及解决方法1、问题一reason given by server: Permission denied解决方法:服务器端启动一定要sudo启动,不然启动失败,服务拒绝。2、问题二svc: failed to register lockdv1 RPC service (errno 111).lockd_up: makesock failed, error=-111mount: mounting 192.168.1.101:/home/share on /mnt failed:转载 2022-01-12 09:48:34 · 3048 阅读 · 0 评论 -
嵌入式Linux系统脚本小技巧之启动脚本
这里介绍一个小技巧,在系统启动时,预留一个启动脚本,在需要临时修改一些系统配置或者额外启动程序时比较方便。这个方法主要针对只读文件系统,如果时可读写的文件系统则不需要了,可读写的文件系统可以随时修改。我们都知道一般嵌入式Linux系统启动脚本是/etc/init.d/rcS,我们的应用程序启动入口也是在这个脚本里添加,一般会在这里添加一个应用程序的启动脚本,最好不要再这里直接添加启动程序,这样便于后期应用程序启动脚本的修改,而不再需要修改文件系统里的脚本。现在在系统启动脚本rcS里添加一个应用程序.原创 2021-11-28 22:22:37 · 1198 阅读 · 0 评论 -
嵌入式Linux系统关闭串口调试信息的输出
在嵌入式Linux系统中,有时需要关闭调试串口,不让调试口输出信息,这也可以保证系统程序的安全。关闭调试串口输出的方法也很简单,可以在uboot阶段通过修改参数来实现,参数设置如下:setenv bootargs ’mem=756M console=null,115200 initrd=0x82600000,0x700000 , root=/dev/ram0 init=nuxrc mtdparts=hi_sfc:1M(boot),1M(logo),5M(kernel),7M(rootfs),26M(qt原创 2021-10-13 08:54:54 · 4312 阅读 · 4 评论 -
嵌入式Linux移植dropbear
dropbear是一个开源的ssh服务工具,包括客户端和服务端;这里要移植到嵌入式Linux系统里,主要是用目标平台的编译器交叉编译一下即可。下面简单说下编译步骤和方法:1.下载源码下载dropbear源码包,可以在官网下载,亦可以在这里下载:Linux/tool/dropbear-2019.78.tgz · fensnote/零散Demo代码 - Gitee.com我这里是把依赖的zlib代码一起打包的。2.编译1. 解压源文件压缩包解压后有一下文件目录:drop.原创 2021-09-30 17:24:35 · 1129 阅读 · 2 评论 -
华为ME909s-821模块电信卡发短信问题
在使用华为ME909S-821模块时,有时需要用到发短信功能,有一次客户使用了电信卡;上网没问题,但是就是短信发送不出去,提示如下错误:CMS: ERROR 500查看华为的手册文档,如下:未知错误!这种未知错误最坑人了,不知道是什么问题;找模块技术支持,他们查了半天也没找到问题,后来突然说了句:821 模块无IMS域, 有cs域 有ps域,电信运营商不支持cs域,所以不能通过821语音和发短信!好吧,用电信卡发不了短信,在此记录下,大家不要再采坑!微信公众号:...原创 2021-08-20 19:17:04 · 1123 阅读 · 0 评论 -
Linux网关路由配置
Linux系统下使用route命令查看和设置路由如果eth0为192.168.1.12/255.255.255.0eth1为192.168.2./255.255.255.0则命令格式如下:#route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 dev eth0#route add -net 192.168.2.0 gw 192.168.1.1 netmask 255.255.255.0 dev eth1上面的命令把发送给原创 2021-07-28 16:59:51 · 1033 阅读 · 1 评论 -
onvif客户端(SOAPClient)编译错误记录
1.freelocale未定义问题编译错误提示:stdsoap2.c:7468:对‘freelocale’未定义的引用stdsoap2.c:7468:对‘freelocale’未定义的引用stdsoap2.c:7468:对‘freelocale’未定义的引用stdsoap2.c:16684:对‘strtod_l’未定义的引用stdsoap2.c:16684:对‘newlocale’未定义的引用把stdsoap2.h中的这个定义注释掉即可:# elif defined(__GLIBC__)原创 2021-07-16 13:16:29 · 777 阅读 · 0 评论 -
移植openssl到海思3536c平台
可以直接用以下命令生成makefile:CC=arm-hisiv500-linux-gcc ./config no-asm shared --prefix=/opt/openssl/就可直接使用make命令进行编译,使用make install命令安装。然后把生成的头文件和库文件放到编译器下一份,再把库文件放到板子上一份即可。...原创 2021-07-15 18:18:44 · 438 阅读 · 0 评论