嵌入式
柳鲲鹏
建立了编程学(编程基本功、平台化编程)、六石管理学等几个流派。
每涉及一个领域,都是顶级砖家。在这些领域中,如果遇到问题,最后肯定是搜索到本博客。
展开
-
视频抓图的两种方案
看到的视频,实际上经历了H264编码、H264解码的过程。所以向设备发送请求,把编码之前的图像抓到,变成图片后传递过来。就是从当前视频中抓图。原创 2024-04-25 14:24:58 · 75 阅读 · 0 评论 -
嵌入式交叉编译:Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable
遇到这个错误,如果是编译x86版本的,直接安装libssl-dev。我最近进行嵌入式交叉编译,被这个错误折腾得莫名其妙。开始使用了禁止办法,编译通过。然后就仔细研究,究竟是什么原因。即使你指定了库,还是会出问题。OPENSSL_ROOT_DIR肯定是个目录,这个目录下有什么东西?经过反复修改编译参数进行测试,吾发现,这个目录其实就是编译openssl之后,安装的目录。也就是在编译时,指定一个输出目录。假设是${HOME}/build_openssl。最后终于解决了,来了个全网首发。原创 2024-04-25 08:51:16 · 211 阅读 · 0 评论 -
交叉编译嵌入式openssl:error: unrecognized command line option ‘-m64‘
而Makefile是在config时候形成的。删除Makefile所有-m64。编译器不识别-m64。原创 2024-04-24 10:13:37 · 131 阅读 · 0 评论 -
交叉编译嵌入式openssl,关键是在config中指定编译器前缀
关键是指定编译器前缀。原创 2024-04-24 10:10:16 · 298 阅读 · 0 评论 -
单独接电源,板子网络通;接入系统,分流功率不足,导致板子网络不通
今天同事建议,不用系统电源,用独立电源试试?想想试试也无所谓,就找了独立电源接上。当时的心情其实以高兴为主。仔细看了一下,系统的电源是功率足够,就是分流到板子的部分不足。我一直认为是转接头不对。原创 2024-04-22 12:59:07 · 133 阅读 · 0 评论 -
嵌入式系统的时间保存问题,hwclock保存注意事项
【代码】嵌入式系统的时间保存问题,hwclock保存注意事项。原创 2024-04-16 08:58:45 · 113 阅读 · 0 评论 -
嵌入式系统如何使用hwclock正确保存时间
你使用hwclock保存时间,再重启,发现时间错了。仔细一看,把时间的时间,作为正式时间。在嵌入式系统上,你使用date设置好时间,一重启,时间又恢复了。这个时候你需要使用hwclock。原创 2024-04-11 10:03:19 · 124 阅读 · 0 评论 -
LINUX上,用命令cmake编译CLion项目
原来CLion项目是远程到开发板上进行编译,十分方便。现在想在虚拟机环境中编译,更加方便。于是进行了一番研究,还挺简单。开始编译还是很顺利的,就是编译结果不是我期望的ARM版。搜索到的编译命令如下,不适合我的项目。原创 2024-04-07 09:04:23 · 299 阅读 · 0 评论 -
cmake交叉编译项目时,指定编译器
这几天用cmake编译项目,成功是成功了,就是结果不是期望的。我是在虚拟机上编译的,产生的是X86程序;当然是指定交叉编译器,编译出想要的结果。如下,为cmake指定编译器。原创 2024-04-06 08:43:27 · 151 阅读 · 0 评论 -
工作争论:使用已有代码,还是新写一套?
同事提出异议,认为应该新写一套。一方面原来的系统云台有独立IP,现在是整合成一套;另一方面原来的写法可能有问题。前一点有道理,后面一点并无道理。如果是两个人同时操作云台,不管怎么设计,问题总是存在。前几天作准备链接云台。我的思路是,现在HTTP功能完善,可以直接走HTTP协议。原来的代码也是这样做的,又快又好。而且一套代码,方便维护,改一处即可。将来的想法是,把功能函数独立出来,HTTP和消息调用这些功能函数。考虑到他对嵌入式更熟悉,我也没有坚持。原创 2024-03-31 09:00:36 · 198 阅读 · 0 评论 -
ToolPlatform:烧录时TFTP报错
网线直连,即一根网线,一头插电脑,一头插板子。检查串口是否被占用。原创 2024-03-30 08:24:59 · 198 阅读 · 0 评论 -
PALCO-D协议命令的校验码计算
校验码 = MOD[(字节2 + 字节3 + 字节4 + 字节5 + 字节6)/100H]原创 2024-03-29 11:17:55 · 143 阅读 · 0 评论 -
LINUX交叉编译arm/aarch64简单脚本
PATH中那个目录,是安装的交叉编译环境。代码文件是test.c。原创 2024-03-28 09:06:06 · 382 阅读 · 0 评论 -
LINUX使用file命令检查交叉编译结果
【代码】LINUX使用file命令检查交叉编译结果。原创 2024-03-27 15:17:51 · 156 阅读 · 0 评论 -
嵌入式LINUX设置时区的办法
【代码】嵌入式LINUX设置时区的办法。原创 2024-03-27 09:42:29 · 240 阅读 · 0 评论 -
嵌入式相机WEB,用C直接处理?
顺着指点,我看了一下代码,都是C。在某个函数中,判断了1/2/3这些数字,并对应到页面(如update.html)。顺便查了一下HTTP请求字串的解析。于是大体上判断:嵌入式WEB相机,实际上并没有专门的WEB服务器,而是直接用C处理的。以前用HTTP连接相机的时候,以为是相机内部有一个类似tomcat之类的WEB服务器。收到相机命令后,通过链接库执行动作。当然了,这也只是表面上的理解。比如VUE这一套怎么处理的,还要研究一下。昨天想给相机增加一个时间显示,增加的项目一点就跳转到登录。原创 2024-03-21 09:01:16 · 873 阅读 · 0 评论 -
aarch/arm交叉编译:error while loading shared libraries: libisl.so.19: cannot open shared object file
就是利用系统的库进行编译(我也觉得奇怪)。原创 2024-03-18 16:45:22 · 456 阅读 · 0 评论 -
ToolPlatform烧录HI3403实战
既然是嵌入式,烧录是逃不掉的。主机有串口,或者用USB转接。原创 2024-03-18 09:43:22 · 451 阅读 · 0 评论 -
无法烧板子:USB转COM口转接线特别容易坏
这个时候,都是因为串口线坏了。原创 2024-03-17 08:56:19 · 371 阅读 · 0 评论 -
嵌入式摄像头,获取视频要通过进程通讯?
争论了一番,我是不信的。后来问到板子厂家,说还真是这样。原创 2024-03-16 09:00:29 · 581 阅读 · 0 评论 -
嵌入式LINUX,让自己的应用随机启动,应该加在telnet之后
我用另外一个板子分析了一下:执行sshd时,网络还没准备好;而程序怎么也不会想到有人如此脑残,网络没准备好就启动。本来这不是问题,实际上一个板子因此无法启动。原因是我加入的sshd过早,卡死了。那么应该加在哪里呢?很简单telnet语句之后。原创 2024-03-04 09:13:27 · 377 阅读 · 0 评论 -
接线导致USB转串口烧毁
于是就想,利用接头线,插到我的转接头,岂不是两全其美、珠联璧合?于是用剪刀、打火机处理了线,信心满满的开始工作。不出意外,意外发生了,我的转接头一下子变成无法识别的设备!对方也反复声称快递的时候已经测试过了。其实我也不搞不懂给他打电话干什么。一直等着烧板子,必须接串口才能烧。而且板子的接头非常怪异,PH2 1.25的。于是对方快递了一根。我想不通的是,怎么接个线就烧坏了?我就是短路,也不应该坏啊。坏都坏了,还能怎么办?等购买的转接头,又到网上搜索了一番转换线……我自己有个USB转串口,插上就认。原创 2024-03-01 16:11:43 · 421 阅读 · 0 评论 -
烧录工具ToolPlatform的BurnTool界面空白怎么办
从别的机器上复制过来的。原创 2024-03-01 13:08:44 · 408 阅读 · 0 评论 -
什么年代了,没有串口,连个开发板都烧不了
后来对方一问,说是必须连接串口。这年头离了串口不能过吗?今天试图烧个hi3403,结果死活烧不了。原创 2024-02-28 16:02:31 · 397 阅读 · 0 评论 -
嵌入式烧录报错:板端IP与PC的IP相同
我网卡配置了多个IP。一番删除添加还是报错。实际上我配置并没有错。原创 2024-02-28 14:55:16 · 561 阅读 · 0 评论 -
模拟串口工具VSPD的安装与使用
点击添加端口,就看到了两个串口。原创 2024-02-28 14:35:40 · 333 阅读 · 0 评论 -
嵌入式Linux:让程序随开机自动运行(基于BusyBox init)
这种方式下默认的 init 程序可以称其为BusyBox init。如果应用不依赖于其他脚本(即顺序无关),且不依赖rcS后续执行内容,直接写个Smn的脚本是可以的。关机时执行shutdown部分,最先执行脚本/etc/init.d/rcK(也可能没有这一句)系统rcS最后执行一句/opt/start.sh,吾把执行语句加到start.sh。启动后执行sysinit部分,最后执行脚本/etc/init.d/rcS。也就是说,会自动搜索/etc/init.d下的Snm开头的文件并执行。原创 2024-02-19 09:21:38 · 478 阅读 · 0 评论 -
RK3399ProD开发板的固件烧录实战
一手长按 TB RK3399Pro 开发板上 recovery 按键,另一手再按 reset 按键约 1 秒松开,系统将进入 Loader 模式,最后松开 recovery 按键;我下载了TB-RK3399ProD_Release_V3.1.rar,解压到Images目录中。右边显示 下载完成 说明烧录成功。断开 type-c 连接。(操作上说要导入配置,我启动后跳过)点击《执行》按钮开始烧写。原创 2024-01-26 08:56:22 · 443 阅读 · 0 评论 -
学习心得01:STM32开发板
这是我买的一个开发板,各个范例都跑了一遍,有问题的还问过客服(更新代码后解决)。嵌入式开发也不难,相关知识需要学习。对于某个具体内容,需要反复测试、修改。原创 2023-08-17 07:59:06 · 139 阅读 · 0 评论 -
RT-Thread的main函数前置后置
跳转到C 中的main 函数,而是跳转到component.c 中的$Sub$$main 函数,这。main 函数,使用$Sub$$main 可以在执行main 之前先执行$Sub$$main,在。是要执行main 函数,这个就通过调用$Super$$main 来实现。微有点区别,但是原理是一样的)自带的$Sub$$和$Super$$这两个符号来扩展了。$Sub$$main 函数中我们可以先执行一些预操作,当做完这些预操作之后最终还。$Sub$$function 和$Super$$function,原创 2023-07-16 08:40:26 · 273 阅读 · 0 评论 -
I2C 协议层
在起始信号后必须传送一个从机的地址(7 位),第8 位是数据的传送方向位(R/W),用“0”表示主机发送(写)数据(W),“1”表示主机接收数据(R)。当主机发送了一个地址后,总线上的每个器件都将头7 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,其他地址不同的器件将被忽略后面的数据信号。如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。D7~D1 位组成从机的地址。原创 2023-07-13 08:42:10 · 167 阅读 · 0 评论 -
I2C(IIC)总线常用术语
主机:启动数据传送并产生时钟信号的设备;从机:被主机寻址的器件;多主机:同时有多于一个主机尝试控制总线但不破坏传输;主模式:用I2CNDAT 支持自动字节计数的模式;位I2CRM,I2CSTT,I2CSTP控制数据的接收和发送;从模式:发送和接收操作都是由I2C 模块自动控制的;仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;同步:两个或多个器件同步时钟信号的过程;发送器:发送数据到总线的器件;接收器:从总线接收数据的器件原创 2023-07-12 10:18:45 · 106 阅读 · 0 评论 -
I2C(IIC)总线 物理层
400kbit/s,高速模式下可达3.4Mbit/s,但目前大多I2C 设备尚不支持高速模。一个I2C 通讯总线中,可连接多个I2C 通讯设备,支持多个通讯主机及多个通。②一个I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一。⑤多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪。⑦连接到相同总线的IC 数量受到总线的最大电容400pF 限制。③每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址。所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。原创 2023-07-12 10:16:36 · 207 阅读 · 0 评论 -
HEX文件和BIN文件有何区别
查了以下,看到这几个区别:原创 2023-07-10 11:30:11 · 155 阅读 · 0 评论 -
寄存器位带操作
比如说寄存器有32位,要操作每个bit是有点麻烦的,需要仔细的移位。于是有人就想了个办法,把每个bit变成一个32位的int,访问起来不就方便了?进一步的,我们将此定论为宏,方便记忆。原创 2023-07-07 08:32:10 · 61 阅读 · 0 评论 -
计算机中,enable可译为加能,disable可译为去能
disable:失能,减能,去能。enable:使能,加能。原创 2023-07-05 13:41:25 · 130 阅读 · 0 评论 -
PWM+RC 滤波的DAC 输出的数学理论
函数中:T 是单片机中计数脉冲的基本周期,也就是STM32F4 定时器的计数频率的倒数。n 是PWM 波一个周期中高电平的计数脉冲个数,也就是STM32F4的CCRx 的值。因此,如果能把式中除直流分量外的谐波过滤掉,则可以得到从PWM 波到电压输出DAC 的转换,即:PWM 波可以通过一个低通滤波器进行解调。式中的第2 项的幅度和相角与n 有关,频率为1/(NT),其实就是PWM 的输出频率。从公式中可以看出,第1 项为直流分量,第2 项为1 次谐波分量,第3 项为大于1 次的高次谐波分量。原创 2023-07-09 08:16:27 · 1097 阅读 · 0 评论 -
存储器映射
存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器。分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。原创 2023-07-05 08:55:22 · 44 阅读 · 0 评论 -
比特率与比特率的关系
遇到一个“波特率”的概念,它表示每秒钟传输了多少个码元。而码元是通信信号调制的概念,通信中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。由于很多常见的通信中一个码元都是表示两种状态,所以我们常常直接以波特率来表示比特率。有时相同,有时不同。原创 2023-07-05 10:54:03 · 185 阅读 · 0 评论 -
对于volatile关键字的正确理解
最早接触volatile这个关键字,大约是2000年从JAVA中看到的。大意是说某个变量容易改变,用到的地方多,所以要加。可能取到的不是当前值。当时是非常疑惑的:咱这个变量是一个实例,怎么就可能不是当前值。也就是说,你要正确理解volatile这个关键字的用处,必须从执行的角度。近来学习材料,终于明白了。原创 2023-07-04 08:19:33 · 103 阅读 · 0 评论