![](https://img-blog.csdnimg.cn/7dee8577b29f4e92a377cc8f0cd84bab.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux嵌入式应用开发
文章平均质量分 55
该专栏主要记录与分享Linux嵌入式应用开发相关技术
吾爱吃西红柿
这个作者很懒,什么都没留下…
展开
-
【字节序】
不同计算机体系结构可能采用不同的字节序来存储多字节数据。字节序有两种主要形式:大端序(Big-endian):高位字节存储在低地址。小端序(Little-endian):低位字节存储在低地址。为了确保不同平台之间的数据一致性,需要明确数据的字节序,并在传输或存储时进行适当的转换。原创 2024-06-21 15:31:45 · 273 阅读 · 0 评论 -
【一、交叉编译环境搭建】
介绍arm交叉编译环境的搭建原创 2022-10-18 00:16:30 · 3758 阅读 · 1 评论 -
【线程创建、线程等待、线程退出、线程互斥锁】
线程的创建,等待,退出,同步原创 2022-10-06 22:00:28 · 618 阅读 · 0 评论 -
Linux设备安装wiringPi库
Linux设备安装wiringPi库。原创 2022-07-30 09:46:24 · 434 阅读 · 0 评论 -
【进程间通信】(二)消息队列
1、概念“消息队列”是在消息的传输过程中保存消息的容器,是消息的链接表,存放于内核中,一个消息队列由一个标识符(队列ID)进行表示。2、特点(1)消息队列独立于发送和接收进程, 进程终止时,消息队列极其内容不会被删除。(2)消息队列时面向记录的,其中的消息具有特定的格式和优先级。(3)消息队列可以实现消息的随机查询,不一定要按消息先进先出的原则获取,可按照消息的类型进行获取。3、核心API#include <sys/types.h>#include <sys/stat.h&原创 2022-04-24 23:30:45 · 252 阅读 · 0 评论 -
【进程间通信】(一)管道
引言 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件 进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。这使得一个程序能够在同一时间里处理许多用户的要求。因为即使只有一个用户发出要原创 2022-04-05 20:23:13 · 427 阅读 · 0 评论 -
【进程】(四)exec族函数
1、函数原型#include <unistd.h>int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg,..., char * const envp[]);int execv(const char *path, char *const argv[]);原创 2022-03-20 17:40:01 · 389 阅读 · 0 评论 -
【进程】(三)父进程等待子进程退出
1、父进程等待子进程的目的 进程创建子进程的目的就是能够让子进程去响应某个事件,并且做出相应的处理。如果父进程关心子进程对于事件的处理情况,那么父进程则可收集子进程的退出状态来判断。2、父进程等待子进程的方式 当调用vfork函数来创建子进程时,父进程将会等待子进程执行完毕退出后,才会执行。然而调用fork函数来创建子进程后,父进程和子进程谁先执行是原创 2022-03-18 00:05:43 · 2655 阅读 · 0 评论 -
【进程】(二)进程退出
1、进程正常退出与异常退出的方式1.1 进程的5种正常退出方式正常退出方式备注Main函数调用return返回属于隐式退出方式,例如return 0; 等价于exit(0);进程调用exit或者_exit函数,位于标准C库(stdlib.h),exit清洗缓冲,_exit不清洗缓冲进程调用_Exit函数,位于unistd.h进程的最后一个线程调用pthread_exit进程的最后一个线程返回1.2进程的3种异常退出方式异常退出方式原创 2022-03-17 23:12:10 · 713 阅读 · 0 评论 -
【进程】(一)进程创建fork()与vfork()
一、例程说明1、调用fork创建进程,以及创建进程的过程,fork的返回值变化2、验证父进程和子进程所占用的存储空间是否共享二、例程代码#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <errno.h>int g =0;int main(int argc, char*argv[]){ pid_t ret_pid; //定义pid返回值原创 2022-03-17 10:35:34 · 794 阅读 · 0 评论 -
安装用于arm平台的交叉编译器
一.下载工具包(下载后先不解压)链接:https://pan.baidu.com/s/1UEXpkJyYimzgfXTwO5lVzQ提取码:3ksi二.在unbuntu虚拟机内解压工具包将下载好的压缩包放入ubuntu虚拟机和windows之间的共享文件夹内(若不知建立共享文件夹点击链接:)...原创 2020-09-22 23:23:10 · 1403 阅读 · 0 评论 -
windows映射Ubuntu网络驱动器无法修改和创建文件夹,没有写权限问题
1. sudo chown -hR UserName:root share_filename/说明:UserName用户名,share_filename共享文件夹名称 2. chmod -R go+rwx share_filename/说明:share_filename共享文件夹名称原创 2021-08-11 16:42:15 · 1723 阅读 · 0 评论 -
Linux下C语言调用paly播放音频文件
一.安装sox播放器sox播放器支持流行的多种类型的音频文件sudo apt-get install soxsudo apt-get install sox libsox-fmt-all二.在终端执行play命令play test.mp3该命令可以在linux终端上直接执行播放,注意指定音频文件的路径。三.用C语言执行该命令用stdlib.h头文件下的system函数:int system(const char *command);如播放当前文件下的Tiantan.flac和Pin原创 2020-11-13 18:02:50 · 1999 阅读 · 0 评论 -
在上层平台(如unbuntu)上编写并且编译树莓派的驱动模块程序
一.下载wiringPi库,并且载入unbuntu系统wiringPi库里有交叉编译器arm-linux-gnueabihf-gcc 安装交叉编译器,通过该交叉编译器可以在x86-64平台上编译arm平台上的可执行程序二.下载linux-rpi-4.14.y并且载入ubuntu系统linux-rpi-4.14.y里可以编译我们所需要的驱动。我们将写好的驱动程序**(编写树莓派引脚驱动代码)放入到该linux-rpi-4.14.y的对应驱动模块内例如把字符驱动程序test.c放入字符驱动路径linux-原创 2020-11-04 09:39:26 · 303 阅读 · 0 评论 -
为什么使用scp无法从树莓派拷贝到unbuntu等虚拟机
首先二者都必须在同一个局域网内,其次ubuntu不能够是NAT模式来连接网络,应选择桥接模式ubuntu设置好桥接模式之后,并且树莓派也连接到同一个局域网之后,测试双方之间是否可以ping通,如果可以ping通就可以进行双方连接操作了。...原创 2020-10-25 17:42:44 · 438 阅读 · 0 评论 -
Ubuntu,centos等虚拟机安装中文输入法
安装输入法(谷歌),执行一条命令即可sudo apt-get install fcitx-googlepinyin如果要卸载则sudo apt-get remove fcitx-googlepinyin最后设置添加输入法即可依次打开设置(桌面右上角)->添加(不同版本添加位置可能不同)->Chinese->(Chinese(intellligent pinyin))...原创 2020-10-15 23:32:08 · 793 阅读 · 1 评论 -
sudo: make: command not found,关于安装从其他平台传到ubuntu的文件问题
问题所在是没有make安装工具,在已安装国内源的条件下执行以下命令安装如果未更换国内源请更换国内源sudo apt-get install make原创 2020-10-15 22:52:25 · 1948 阅读 · 0 评论 -
ubuntu更换国内源的简便方法
首先打开桌面右下角的菜单找到software & update下拉菜单点击others,选择源(这里是已经选择好的阿里源)找到China选择合适的源,最后保存即可,需要输入密码时则输入密码保存退出时则会显示更新提示,更新即可...原创 2020-10-15 22:49:49 · 1461 阅读 · 2 评论 -
Linux库引入静态库和动态库,两者区别
一.静态库(本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。)什么是静态库静态库是在程序执行(编译)之前被加载到目标程序当中去的库。静态库的优点和缺点(1)优点:运行速度:在程序运行之前就被加载到了目标程序当中,运行速度快;简便性:在发布程序时无需提供静态库,因为已经存在于目标程序当中了(2)缺点:内存的占用:链接时需要完整地拷贝到可执行文件当中去,当被多次使用就会产生多份冗余拷贝,占用内存大。运营麻烦:更新,部署,发布麻烦。二.动态库什么是动态库动态原创 2020-10-07 11:21:53 · 395 阅读 · 0 评论 -
树莓派——嵌入式智能家居项目,语音远程控制红外设备
文章目录前言一、硬件和软件的准备硬件准备软件准备二、实现原理图三.代码前言需要注意的是,此项目的语音远程控制,要求服务端和客户端连入的网络必须是在同一个局域网,例如我们连入的是某个wifi热点,那么服务端和客户端必须连入同一个热点提示:以下是本篇文章正文内容,下面案例可供参考一、硬件和软件的准备硬件准备YS-LDV7语音模块(接收用户指令)模块使用手册链接:https://pan.baidu.com/s/1RxtzXfWsjEHqNS2Dg1RQPw提取码:3ksi复制这段内容后..原创 2020-10-04 23:49:37 · 1613 阅读 · 2 评论 -
自定义一个可以接收空格的字符串的函数
在linux系统下使用C语言开发时,在特定场景之下需要用到字符串输入语句,并且有时会输入空格。使用通常使用的字符串输入函数则会出现一些问题。(1)使用scanf不能接收空格(2)使用gets又会出现警告 ,又内存溢出的风险,(3)使用fgets时,亲测,虽然可以接收带有空格的字符串命令,但是其内容却带有换行符,无法正确识别原来的字符串命令void mygets(char get_str[128])//形参传入一个字符型的数组,或者一个字符串变量{ int i; .原创 2020-09-29 09:14:46 · 1643 阅读 · 0 评论 -
如何添加树莓派开机自启动程序
执行命令下行命令,可以进入开机自启动文件sudo vi /etc/profile在该文件内容的尾部添加所要执行的程序命令,并在其末尾加上空格和&,保存退出格式:执行指令+空格+&sudo reboot重启即可执行下行命令 即可查询到程序的运行情况ps -aux|grep 程序名...原创 2020-09-25 23:03:43 · 437 阅读 · 0 评论 -
如何在unbuntu虚拟机和主机(windows)之间建立共享文件夹
一.打开Vmware station启动ubuntu虚拟机,点击“虚拟机”->“设置”二.点击“选项”->“共享文件夹”->”总是启用“->“添加”三。点击下一步,输入共享文件夹保存路径和名称,再点击下一步即可四.根据自己需求勾选,这里勾选“启用此共享”,点击完成即可五.如何在ubuntu内查看共享文件夹之前创建的unbuntu和主机(windows)之间的共享文件夹默认处于 /mnt/hgfs目录下如果在unbuntu虚拟机找不到该文件夹,则进行如下操作(1)s原创 2020-09-22 22:21:53 · 2275 阅读 · 1 评论 -
如何在Linux系统中添加或者删除环境变量
一.在进行添加或者删除环境变量等修改操作之前,先要学会查询环境变量echo $PATH 该指令可以查看已有的环境变量,每个路径以 :隔开如:/path1:/path2:/path3:二.添加PATH环境变量(路径)尾部直接插入法输入export PATH=$PATH:写入需要添加的路径 最后回车即可覆盖法Step1:输入echo $PATH命令查看到的已有环境变量,如:Step2:输入export PATH=复制所有已有的环境变量: 在冒号(:)后面插入所需要的路径即可,如:三原创 2020-09-22 20:31:53 · 3470 阅读 · 0 评论