
linux嵌入式
文章平均质量分 75
嵌入式编程,arm架构
Blueeyedboy521
Java架构师,微服务,前端Vue,人工智能,C/C++嵌入式编程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux下libcurl库编译和使用
libcurl库编译方法libcurl库的编译使用libcurl库的编译与使用libcurl 发送 post 请求,请求体为 json 格式libcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TF原创 2023-01-16 19:35:19 · 1184 阅读 · 0 评论 -
深入学习IO多路复用select/poll/epoll实现原理
Linux 服务器处理网络请求有三种机制,select、poll、epoll,本文打算深入学习下其实现原理。结论本文其他的内容主要是得出了下面几个结论:服务器要接收客户端的数据,要建立 socket 内核结构,主要包含两个重要的数据结构,(进程)等待队列,和(数据)接收队列,socket在进程中作为一个文件,可以用文件描述符 fd 来表示,为了方便理解,本文中, socket 内核对象 ≈ fd 文件描述符 ≈ TCP连接;原创 2023-01-10 08:00:00 · 1091 阅读 · 0 评论 -
ArduinoUNO实战-第二十二章-红外遥控实验
当按下遥控器按键时,遥控器发出红外载波信号,红外接收器接收到信号,程序对载波信号进行解码,通过数据码的不同来判断按下的是哪个键。为了使其在无线传输过程中免受其他信号的干扰,通常都将信号调制在特定的载波频率上(38K红外载波信号),通过红外发射二极管发射出去,而红外接收端则要将信号进行解调处理,还原成二进制脉冲码进行处理。在日常生活中我们会接触到各式各样的遥控器,电视机、空调、机顶盒等都有专用的遥控器,很多智能手机也在软硬件上对红外遥控做了支持,可以集中遥控绝大部分家用电器。我们演示右侧遥控器效果。原创 2022-11-06 17:29:20 · 6381 阅读 · 0 评论 -
ArduinoUNO实战-第二十一章-通过调整电位器来改变9克舵机的角度
标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。舵机内部有一个基准电路,产生周期为20ms、宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。舵机一般都外接三根线,分别用棕、红、橙三种颜色进行区分,由于品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线。由于Arduino的驱动能力有限,当需要控制多个舵机时,需要外接电源以及使用专用的舵机控制板。原创 2022-11-06 19:45:00 · 3068 阅读 · 4 评论 -
ArduinoUNO实战-第二十章-利用8*8点阵实现心跳动画
代码是按照每一列设置高低电平来控制,高电平1点亮,低电平0熄灭。本案例可以参考数码管实验,实际上是控制8*8没一点阵的高低电平。mind+中的delay和代码中 delay函数不一样。该点阵为共阳点阵,行控制LED阳极。利用8*8点阵实现心跳动画。原创 2022-10-27 08:00:00 · 1794 阅读 · 0 评论 -
ArduinoUNO实战-第十八章-三基色LED实现七彩色渐变
引脚最长的为共阳的正极,剩下3个分别为红色、绿色、蓝色。驱动一颗RGB三基色LED产生七色光的变化。颜色值是从0~255。原创 2022-10-26 18:30:00 · 2404 阅读 · 0 评论 -
ArduinoUNO实战-第十七章-火焰传感器
光电二极管的电导率将根据其检测到的红外辐射而变化。接下来,我们将连接内置板载 LED 的引脚 13 初始化为输出。火焰传感器模块只有很少的组件,其中包括一个 IR 光电二极管、一个 LM393 比较器 IC 和一些免费的无源组件。将模块的 VCC 和 GND 连接到 Arduino 的 5V 和 GND 引脚。然后将 D0 引脚连接到 Arduino 的数字引脚 2。我们将监控该引脚的状态以检测火灾。当此引脚被火焰传感器拉低或拉高时,我们将改变状态 LED 的状态,并将警告消息打印到串行监视器。原创 2022-10-24 19:00:00 · 13088 阅读 · 1 评论 -
ArduinoUNO实战-第十九章-利用74HC595芯片实现流水灯效果
串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。74HC595是常用的串转并芯片,支持芯片级联实现少量IO口控制多个IO口输出功能。,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平(5V)即可。,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。, 输出使能控制脚,它是低电才使能输出,所以接GND。原创 2022-10-24 08:00:00 · 1860 阅读 · 0 评论 -
ArduinoUNO实战-第十三章-步进电机驱动实验
BJ1对应A,BJ2对应B,BJ3对应C,BJ4对应D。使用28BYJ-48步进电机旋转。当给BJ1高电平1时,A输出0。当给BJ2低电平0时,B输出1。A/B/C/D是相位。原创 2022-10-21 08:00:00 · 2139 阅读 · 0 评论 -
ArduinoUNO实战-第十二章-累加器实验
然后定义全局变量KEY_UP = 1,标记按键是否松开,初始化是松开的,当按键按下时立马标记按下KEY_UP = 0,不在while等待,而是直接返回1,因为此时KEY_UP =0 ,所以不再进入判断,也不执行while,意味着ScanKey不再阻塞,程序继续执行,数码管就会显示正常。由于2号引脚被占用,所以使用RX->0作为按键的上拉输入,由于RX和TX是串口调试用的,所以可能会对串口调试有影响。只有松开按键才能正常显示。运行改代码发现可以正常累加,但是发现有文体,当按键按下不松开时,代码会一直在。原创 2022-10-19 22:51:48 · 1406 阅读 · 0 评论 -
ArduinoUNO实战-第十一章-4位共阴数码管实验
但是我们初始化高电平,此时所有数码管点亮,这是我们再根据数字1对应的码值,把不需要点亮的数码管也赋予高电平时则熄灭,把需要点亮的SEG_B和SEG_C设置低电平,反而显示了1,所以我们后面设置数字时。原理其实是COM1-4分别控制4位数字位,但是同一时刻只能显示一个数字位的数字,但是如果数字位切换速度够快,再加上有余晖的原因,我们会看起来好像4位数字是同时点亮的,其实是一位一位的切换。官方代码中显示的时候一开始是低电平,显示第几位时,第几为COM设置为低电平,然后给对应的数字高电平,则显示数字。原创 2022-10-19 22:51:21 · 4949 阅读 · 0 评论 -
Windows下给瑞芯微ROC-3588-PC烧录Ubuntu20.04.4
ROC-RK3588S-PCS采用 Rockchip RK3588新一代旗舰级八核64位处理器,最大可配32GB大内存;支持8K视频编解码;支持千兆网、;支持多种操作系统;可适用于ARM PC、边缘计算、云服务器、智能NVR等领域,开发板默认是Android12系统。本文介绍了如何将主机上的固件,通过Type-C 数据线烧录到 ROC-RK3588S-PC 开发板的存储器中。升级时,需要根据主机操作系统和固件类型来选择合适的升级方式。原创 2022-10-17 18:30:00 · 7227 阅读 · 9 评论 -
ArduinoUNO实战-第十六章-滚珠开关实验可以实现电动车防盗报警设备
地址:https://detail.tmall.com/item.htm?当有震动时,触发attachInterrupt函数,调用buzzerDi,修改flag=1,loop中给高电平让蜂鸣器响一秒钟。滚动开关,当有震动发生的时候,滚珠开关的两个引脚会瞬间接通,arduino通过中断方式获取到该信号,进行蜂鸣器报警。参数:intertupt:中断号,一般arduino有中断0(数字2口)和中断1(数字3口)外部中断函数,只有arduino指定的外部中断口有效。当有震动滚珠开光连通后,触发蜂鸣器报警。原创 2022-10-17 08:00:00 · 1265 阅读 · 0 评论 -
ArduinoUNO实战-第十五章-液晶LCD1602实验
它的字符码是00000000-00000111这8个地址,表的下面还有8个字节,但因为这个CGRAM的字符码规定0-2位为地址,3位无效,4-7全为零(表上的高位)。1602液晶屏一行显示16个,对应于00-0F/40-4F,而DDRAM可以储存80个,如果需要显示10-27/50-67的内容就需要用到左移右移来实现。总结:DDRAM是用来使液晶屏显示的,CGROM是液晶屏可以显示的内容(在CGROM 表中查看),CGRAM是用来扩展液晶屏可以显示的内容。屏幕上的一个点和DDRAM中的一个位对应。原创 2022-10-17 08:00:00 · 8317 阅读 · 0 评论 -
ArduinoUNO实战-第十四章-LM35温度传感器和DS18B20温度传感器
LM35使用非常普遍,他使用内部补偿机制,输出可以从0°C开始。根据产品使用手册,得知LM35传感器的输出电压与设置温度呈线性关系,0°C时输出为0V,每升高1°C,输出电压增加10mV。DS18B20是很常用且易用的温度传感器元件,在元器件的应用上也只需要一个DS18B20元件,只利用一个接口就可以,难点在于算法上的将读取的模拟值转换为实际的温度。两个库均在GitHub上,可以在release标签页中下载最新项目文件。1.假设AD读取出来的值为val,那么该AD值对应的电压为:val。原创 2022-10-15 17:57:10 · 6251 阅读 · 0 评论 -
ArduinoUNO实战-第十章-1位共阴数码管实验
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴极数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一个字段的阳极为低电平时,相应字段就不亮。原创 2022-10-12 08:43:02 · 2378 阅读 · 0 评论 -
ArduinoUNO实战-第九章-光敏电阻或亮度传感器
注:A0口是10位模数转换接口,AD转换后的满值为1023,而一般情况下Catduino主板设定的参考电压为VCC(这里是5V),5V即是1023,由于光敏电阻和10K欧电阻串联接到5V和GND之间,根据电阻分压原理,(1023-AD0)/AD0=R/10K。其中AD0即从A0口上读到的AD转换后的数值,R是待测光敏电阻阻值,所以光照越强,R越小,AD0读取到的值越大,AD0读取到的数据是0~1023。天黑请开灯,当室内光线充足时候LED关闭,当室内光线变暗时候点亮LED。原创 2022-10-07 11:55:43 · 6817 阅读 · 5 评论 -
ArduinoUNO实战-第八章-无源蜂鸣器
无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它,所以上述的循环就是为了模拟方波,而方波是有高有低的频率。无源蜂鸣器和实际的音响的信号是一样的,是靠频率驱动的,学会无源蜂鸣器可以直接把音响信号接到自己家的音箱上。用电位器调节无源蜂鸣器发出不同的声音。原创 2022-10-05 08:00:00 · 4111 阅读 · 0 评论 -
ArduinoUNO实战-第七章-PWM调光
通过电位器控制LED的亮度。脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等但宽度不一致的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。原创 2022-10-04 16:23:14 · 3225 阅读 · 0 评论 -
ArduinoUNO实战-第六章-电位器实验
电位器是具有三个引出端、阻值可按某种变化规律调节的电阻元件。电位器通常由电阻体和可移动的电刷组成。当电刷沿电阻体移动时,在输出端即获得与位移量成一定关系的电阻值或电压。电位器的作用——调节电压(含直流电压与信号电压)和电流的大小。原创 2022-09-30 08:30:00 · 3233 阅读 · 0 评论 -
ArduinoUNO实战-第五章-有源蜂鸣器实验
没按下一次按键,蜂鸣器嘀一声。如果想让有源蜂鸣器声音大一点,可以撕开蜂鸣器上的贴纸。原创 2022-09-29 23:01:14 · 2206 阅读 · 0 评论 -
ArduinoUNO实战-第四章-按键控制led
我们将通过面包板接入一个按键,当按下时led灯亮,再次按下时熄灭。原创 2022-09-24 17:45:36 · 5232 阅读 · 0 评论 -
ArduinoUNO实战-第二章-HelloWorld
是自带换行Serial.print(“Hello World!设置发送的信息内容为HelloWorld,然后设置延时1000毫秒之后再次发送,如此循环。此时如果是UNO标准版,可以看到RX的LED等会闪烁。点击右上角的放大镜,即可查看串口监听。尖括号是程序模块自动加的。原创 2022-09-24 17:01:40 · 703 阅读 · 0 评论 -
ArduinoUNO实战-第一章-LED闪烁实验
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。原创 2022-09-20 22:26:30 · 2458 阅读 · 0 评论 -
嵌入式linux开发中定位bug的方法
在Linux下,一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。实际中,我们的程序可以运行于前台,也可以运行于后台。实际中,我们的程序可以运行于前台,也可以运行于后台。前、后台运行程序,生成core文件的方法有些不同。原创 2022-08-22 19:11:55 · 578 阅读 · 0 评论 -
地平线智能计算盒参考方案常见问题
智能计算盒参考方案常见问题视频播放问题1.拉取码流出错rtsp.json文件里面的url地址问题,注意检查url的用户名密码以及ip。设备支持的连接数目达到最大限制,不再支持继续接入。比如,某些设备rtsp的tcp方式最大支持一路,当前已使用tcp接入了一路,此时可修改rtsp.json对应通道的连接方式,将tcp修改为0,则会通过udp进行连接2、播放无画面查看display.json文件里面vo的enable使能标志是否使能,若没有使能,则修改排查是否网络无视频流过来原创 2022-05-09 14:52:44 · 453 阅读 · 0 评论 -
linux下自动对时功能gettime.sh
#!/bin/shcd /userdatamount -o remount,rw /#echo "nameserver 114.114.114.114" > /etc/resolv.conf#rm -rf beijingwget -q http://time.tianqi.com/beijingchmod 777 beijingyearStr=`cat ./beijing | grep nyear | grep -v day`yearS=${yearStr#*=}year=${ye原创 2022-04-13 23:09:34 · 479 阅读 · 0 评论 -
交缠编译osip2和exosip2
用的是地平线交叉编译工具链一、说明# 在此目录下操作/usr/local/exosip2/# 最终效果root@sony-HP-Notebook:/usr/local/exosip2# lsexosip2_horizon libexosip2-5.1.2 libexosip2-5.1.2.tar.gz libosip2-5.1.2 libosip2-5.1.2.tar.gz osip2_horizon由于exosip2依赖osip2,所以先编译osip2二、交叉编译osip2下原创 2022-03-30 18:36:02 · 1437 阅读 · 0 评论 -
地平线Horizon XJ3设置开机启动项
XJ3添加启动项0728版本之后的init进程改为了android的init进程,与sysvinit的init添加启动有一些区别android init的启动项都放到了/init.rc当中,init.rc详细的语法规则我们只做简单介绍,详细规则可参考https://www.jianshu.com/p/cb73a88b0ee在/etc/init.d中增加启动脚本例如start_horizon.sh,切记开头**#!/bin/sh**#!/bin/shlogFile='/userdata/start原创 2022-03-29 14:55:19 · 3677 阅读 · 0 评论 -
CMake通过外部传参执行不同逻辑的方案比如瑞芯微(1126)地平线(horizon)
假设我们有场景同一套代码需要引入sqlite分别编译成rv1126和horizion方案一、SET指令给参数默认值CMakeLists.txt中定义if (BUILD_PLATFORM STREQUAL rv1126) message("this is rv1126 platform") link_directories(${CMAKE_SOURCE_DIR}/lib)else() message("this is horizon platform") link_di原创 2022-03-24 10:44:52 · 431 阅读 · 0 评论 -
交叉编译sqlite3数据库移植到嵌入式rv1126或者地平线
一、下载首先到http://www.sqlite.org/download.html下载linux版本的源码:sqlite-autoconf-3380100.tar.gz。二、解压tar -xvzf sqlite-autoconf-3380100.tar.gz进入解压后的目录:cd sqlite-autoconf-3380100三、交叉编译说明:CC赋值为嵌入式开发环境所使用的交叉编译工具,–host指定软件运行环境为arm-linux, --prefix指定源码交叉编译后生成文件的路径。原创 2022-03-24 10:11:46 · 1084 阅读 · 0 评论