![](https://img-blog.csdnimg.cn/c674c7f5070a41c0b231cfa452430243.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
从FreeRTOS到Linux
文章平均质量分 88
有关嵌入式的Linux知识
嵌入式小白—小黑
嵌入式小白一名,将在CSDN上分享自己的学习经历,面试经历和工作经历。
展开
-
【window】Windows11:该文件没有与之关联的应用来执行该操作
两步解决win11中“该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置"页面中创建关联。”问题,并且取消图标小箭头原创 2024-01-22 15:55:04 · 6804 阅读 · 54 评论 -
【FreeRTOS】信号量——简介、常用API函数、注意事项、项目实现
`SemaphoreHandle_t xSemaphoreCreateBinary( void );`- 作用:用于创建一个二值信号量,用于实现对共享资源的互斥访问。- 参数:无参数。- 返回值:返回一个 `SemaphoreHandle_t` 类型的句柄,表示创建的二值信号量。原创 2023-12-08 17:32:49 · 2283 阅读 · 50 评论 -
【FreeRTOS】消息队列——简介、常用API函数、注意事项、项目实现
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息。原创 2023-12-05 17:31:09 · 1772 阅读 · 46 评论 -
【FreeRTOS】FreeRTOS移植stm32详细步骤介绍
我在查找FreeRTOS移植的相关教程特别少,所以想非常详细的介绍FreeRTOS移植stm32详细步骤,包括源码的下载,源码介绍,系统移植,代码验证等,每一步都有对应的介绍和解释,希望可以帮助到你们。原创 2023-10-02 11:57:55 · 11223 阅读 · 98 评论 -
【Linux操作系统】基于消息队列的银行管理系统<客户端>代码详细分析
这是一个基于信息队列的银行管理系统客户端的项目代码详细讲解,主要介绍了开户、存款、取款等等任务在客户端的运行,代码比较简单,但是每一段代码都进行了详细的讲解.原创 2023-09-16 08:00:00 · 427 阅读 · 21 评论 -
【FreeRTOS】互斥量的使用与逐步实现
在FreeRTOS中,互斥量是一种用于保护共享资源的同步机制。它通过二进制信号量的方式,确保在任意时刻只有一个任务可以获取互斥量并访问共享资源,其他任务将被阻塞。使用互斥量的基本步骤包括创建互斥量、获取互斥量、访问共享资源和释放互斥量。互斥量在FreeRTOS中起到了重要的作用,保护共享资源的访问,提供了一种有效的同步机制,确保任务之间的协作和数据的一致性。原创 2023-09-02 08:00:00 · 2762 阅读 · 39 评论 -
【FreeRTOS】信号量的相关函数使用及示例解释
FreeRTOS中的信号量是一种用于任务间同步的机制。它可以用来实现任务之间的互斥访问共享资源或者等待某个事件发生。原创 2023-08-31 08:40:52 · 3199 阅读 · 35 评论 -
【FreeRTOS】常用函数总结
FreeRTOS系统常用的函数总结原创 2023-08-30 08:00:00 · 3822 阅读 · 8 评论 -
【Linux操作系统】信号量实现生生产者消费者模型
生产者消费者问题是一个经典的多线程编程问题,涉及到两种类型的线程:生产者和消费者。生产者线程生成数据并将其放入共享缓冲区,而消费者线程从共享缓冲区中取出数据并进行处理。生产者和消费者之间需要进行同步,以确保生产者不会在缓冲区已满时继续生产数据,消费者不会在缓冲区为空时继续消费数据。原创 2023-09-01 14:44:27 · 3161 阅读 · 25 评论 -
【Linux操作系统】Linux系统编程中条件变量实现生产者消费者模型
在Linux系统编程中,条件变量是一种用于线程间同步的机制,常用于实现生产者消费者模型。生产者消费者模型是一种常见的并发编程模型,用于解决多线程环境下的数据共享和同步问题。在该模型中,生产者负责生产数据,消费者负责消费数据,而条件变量则用于在生产者和消费者之间进行同步。原创 2023-08-29 08:00:00 · 3858 阅读 · 8 评论 -
【Linux操作系统】Linux系统编程中的读写锁
读写锁(Read-Write Lock)是一种特殊的锁机制,用于在多线程环境下对共享资源进行读写操作。与互斥锁不同,读写锁允许多个线程同时读取共享资源,但只允许一个线程进行写操作。读写锁可以提高并发性能,适用于读操作比写操作频繁的场景。在Linux系统编程中,读写锁的相关函数也是通过pthread库提供的。函数初始化了一个读写锁,然后创建了两个读线程和一个写线程。函数获取写锁,然后进行相应的读写操作。函数获取读锁,写线程通过。在上述代码中,我们使用。原创 2023-08-28 08:00:00 · 4557 阅读 · 6 评论 -
【Linux操作系统】Linux系统编程中的互斥锁
通过本文,我们了解了Linux系统编程中互斥锁的原理和相关函数。互斥锁是一种用于保护共享资源的同步机制,可以避免多个线程同时对资源进行修改而导致的数据竞争和不一致性。我们可以使用pthread库提供的函数来实现互斥锁的操作,如等。原创 2023-08-27 08:00:00 · 4786 阅读 · 5 评论 -
【Linux操作系统】Linux系统编程中线程操作,pthread_exit、pthread_join、pthread_cancel、pthread_detach......
在Linux系统编程中,线程是一种轻量级的执行单元,与进程共享同一地址空间,可以并发地执行任务。线程操作是多线程编程中常用的一些函数,包括和等。本文将详细介绍这些函数的用法和特点。本文介绍了Linux系统编程中的线程操作函数,包括和。这些函数提供了对线程的控制和管理,能够实现线程的退出、等待、取消和分离等功能。熟练掌握这些函数的用法,对于多线程编程非常重要。原创 2023-08-20 17:51:57 · 6184 阅读 · 9 评论 -
【Linux操作系统】线程的基本知识和创建--循环创建多个子线程
本篇文章主要介绍了线程的概念和作用,线程三级映射的实现,创建线程的方法(讲解pthread_self和pthread_create函数),循环创建多个子线程为例子,同时分析线程之间的全局变量的共享问题,希望可以帮助你。原创 2023-08-26 08:00:00 · 5166 阅读 · 2 评论 -
【Linux操作系统】守护进程的创建和逐步实现代码分析
本篇博客回答了如何在C语言中创建守护进程的问题。使用fork()函数创建子进程,父进程退出,子进程继续执行。使用setsid()函数创建新的会话并成为会话的首进程。关闭不再需要的文件描述符,包括标准输入、标准输出和标准错误输出。修改工作目录为根目录。重设文件权限掩码。编写守护进程的主要逻辑,并使用while循环持续执行。需要注意的是,创建守护进程时需要仔细处理信号处理函数、文件描述符、工作目录和文件权限等方面的问题,确保守护进程能够正常运行,并且不会对系统造成不必要的影响。原创 2023-08-25 08:00:00 · 5164 阅读 · 37 评论 -
【Linux操作系统】Linux中的信号回收:管理子进程的关键步骤
在Linux中,我们可以通过捕获SIGCHLD信号来实现对子进程的回收。当一个子进程终止时,内核会向其父进程发送SIGCHLD信号。父进程可以通过注册信号处理函数,并在处理函数中调用wait()或waitpid()函数来回收已终止的子进程。原创 2023-08-24 08:00:00 · 5112 阅读 · 4 评论 -
【Linux操作系统】Linux系统编程中信号捕捉的实现
在Linux系统中,信号是一种用于进程间通信和控制的机制。当某个事件发生时,内核会向进程发送一个信号,进程可以选择捕获并处理这个信号,或者使用默认的处理方式。信号可以由多种事件触发,例如用户按下Ctrl+C键、进程发生错误、子进程退出等。每个信号都有一个唯一的编号,以及一个预定义的默认行为。信号是Linux系统中用于进程间通信和控制的机制。我们可以通过捕获信号并注册处理函数来实现对信号的处理。在处理信号时,我们可以选择忽略、捕获或执行默认操作。原创 2023-08-23 08:00:00 · 5971 阅读 · 31 评论 -
【Linux操作系统】深入探索Linux系统编程中的信号集操作函数
在Linux系统编程中,信号集操作函数是非常重要的工具,它们允许我们对信号进行管理和控制。本篇博客将详细介绍Linux系统编程中的信号集操作函数,包括信号集的创建、添加和删除信号,以及对信号集进行操作的常用函数。通过深入了解这些函数,我们将能够更好地理解和应用Linux系统编程中的信号处理机制。原创 2023-08-22 08:00:00 · 5817 阅读 · 8 评论 -
【Linux操作系统】学习Linux系统编程信号部分前你必须要知道这些
本文着重讲解Linux系统编程中的信号处理基础知识,包括信号的概念、信号的机制、信号相关的事件和状态、信号集、信号的编号、信号的4要素和常规的信号等,这些都是学习信号部分必须要掌握的内容。原创 2023-08-21 08:00:00 · 5943 阅读 · 7 评论 -
【Linux操作系统】Linux系统编程中的共享存储映射(mmap)
共享存储映射是一种将文件或设备映射到进程的虚拟地址空间的技术。通过共享存储映射,多个进程可以访问同一个物理内存区域,从而实现数据的共享和通信。 共享存储映射的主要优势包括: 共享存储映射的原理是将一个文件或设备映射到进程的虚拟地址空间中的一段连续的内存区域。这个内存区域被称为共享内存段。多个进程可以通过访问共享内存段来实现数据的共享和通信。 共享存储映射的过程包括以下几个步骤: mmap函数的原型如下:参数说明:返回值:参数的正确设置:mmap函数的参数包括起始地址、映射长度、访问权限、映射方式等。需要根原创 2023-08-20 08:00:00 · 6827 阅读 · 6 评论 -
【Linux操作系统】详解Linux系统编程中的管道进程通信
fifo函数:在C标准库中没有名为fifo的函数。命名管道(FIFO):命名管道是一种特殊的文件,可以在文件系统中创建,并且可以被不同的进程打开和读写。使用mkfifo函数可以创建命名管道。兄弟进程间通信:兄弟进程是指由同一个父进程创建的多个子进程。兄弟进程间通信可以使用命名管道实现,其中一个进程向命名管道写入数据,另一个进程从命名管道读取数据。非血缘关系进程间通信:非血缘关系的进程是指没有共同的父进程的进程。原创 2023-08-19 08:00:00 · 7201 阅读 · 7 评论 -
【Linux操作系统】深入探索Linux进程:创建、共享与管理
fork()函数:用于创建子进程,返回值不同表示在不同的进程中执行。exec()函数族:用于在当前进程中加载和执行新程序,可以实现程序的动态切换和功能扩展。execl():接受可变参数的形式,参数以字符串形式传递。execle():接受可变参数的形式,同时传递环境变量。execvp():接受参数数组的形式,参数以字符串数组形式传递。wait()和waitpid()函数:用于等待子进程结束并获取子进程的退出状态。wait():等待任意子进程结束。waitpid():可以指定等待的子进程。原创 2023-08-18 08:00:00 · 7500 阅读 · 51 评论 -
【Linux操作系统】Linux系统编程实现递归遍历目录,详细讲解opendir、readdir、closedir、snprintf、strcmp等函数的使用
opendir函数用于打开一个目录,并返回一个指向DIR类型的指针,该指针用于后续的目录操作。path:要打开的目录的路径。返回值:如果成功打开目录,则返回一个指向DIR类型的指针;如果失败,则返回NULL。readdir函数用于读取目录中的文件,并返回一个指向dirent结构体的指针。dir:一个指向已打开目录的指针。返回值:如果成功读取到下一个文件,则返回指向dirent结构体的指针;如果到达目录末尾或发生错误,则返回NULL。dirent// 文件的inode号。原创 2023-08-17 08:00:00 · 8015 阅读 · 19 评论 -
【Linux操作系统】举例解释Linux系统编程中文件io常用的函数
文件IO操作是Linux系统编程中的重要部分。通过open()close()read()write()等函数,我们可以对文件进行打开、读取和写入操作。通过lseek()函数,我们可以在文件中进行定位。而通过stat()fcntl()dup()等函数,我们可以获取文件的状态信息,对文件描述符进行控制操作,复制文件描述符等。除了上述的函数,还有许多其他的函数可以用于文件IO操作,如mkdir()用于创建目录,rmdir()用于删除目录,unlink()用于删除文件,rename()用于重命名文件等。原创 2023-08-16 08:00:00 · 9203 阅读 · 40 评论 -
【Linux操作系统】编译过程中遇到的问题-为什么加-c?执行文件提示无法执行二进制文件?main函数参数argc和*argv[]的作用和理解?
在使用GCC编译器进行程序开发时,我们经常会遇到一些编译过程中的问题,本篇博客将详细介绍这些问题,并给出相应的代码和解释,帮助读者更好地理解GCC编译过程中的"-c"选项和main函数的参数argc和*argv[]以及报错“无法执行二进制文件,可执行文件格式错误”。原创 2023-08-15 08:00:00 · 10327 阅读 · 12 评论 -
【Linux操作系统】深入理解Linux系统编程中的传入参数、传出参数和传入传出参数
传入参数用于将数据传递给函数进行计算或操作,传出参数用于将函数的计算结果或操作结果返回给调用者,而传入传出参数则既用于传递数据给函数,又用于接收函数的计算结果或操作结果。原创 2023-08-14 08:00:00 · 9011 阅读 · 6 评论 -
【Linux操作系统】深入理解系统调用中的read和write函数
文件描述符可以被看作是操作系统为了管理打开的文件或设备而分配的一个标识符。它是一个整数值,用于标识一个特定的文件或设备。想象一下,你在操作系统中打开了一个文件或设备,比如一个文本文件或一个串口设备。操作系统会为这个文件或设备分配一个文件描述符,并将其返回给你。这个文件描述符就像是一个门牌号,用于标记这个文件或设备。当你想对这个文件或设备进行读取写入或关闭等操作时,你只需要告诉操作系统使用这个文件描述符,操作系统就会知道你要操作的是哪个文件或设备。文件描述符的具体值是一个非负整数,通常从0开始递增。原创 2023-08-13 08:00:00 · 12092 阅读 · 27 评论 -
【Linux操作系统】深入理解Linux系统编程中的open函数
通过以上示例,我们可以看到open函数的灵活性和强大功能。它可以用于打开已存在的文件、创建新文件,以及以不同的方式(只读、只写、读写)打开文件。同时,我们还可以通过flags参数和mode参数来控制文件的属性和权限。原创 2023-08-12 08:00:00 · 10636 阅读 · 7 评论 -
【Linux操作系统】makefile入门:一个规则-两个函数-三个变量
综上所述,makefile中的一个规则,两个函数和三个自动变量是我们在Linux开发中经常使用的重要工具。通过灵活运用这些工具,我们可以更高效地构建和管理项目,提高开发效率。原创 2023-08-07 16:32:31 · 10873 阅读 · 35 评论 -
【Linux操作系统】深入了解系统编程gdb调试工具
本文详细介绍了Linux中gdb调试工具的使用方法,并通过实例演示了其调试功能。通过使用gdb,开发者可以更好地定位和解决程序中的bug,提高开发效率。原创 2023-08-09 08:15:00 · 10023 阅读 · 5 评论 -
【Linux操作系统】GCC编译与静态库、动态库制作详解
本文详细介绍了GCC编译过程以及如何制作静态库和动态库。通过预处理、编译、汇编和链接四个阶段,我们可以将源代码转换成可执行文件或者库文件。静态库将多个目标文件打包成一个文件,程序在编译时会将静态库的代码复制到可执行文件中;而动态库是在程序运行时被加载的库文件,它可以被多个程序共享使用,减少了内存的占用。原创 2023-08-08 08:30:00 · 11643 阅读 · 13 评论 -
【Linux操作系统】Vim:提升你的编辑效率
Vim是一款功能强大的文本编辑器,它具有高度可定制性和灵活性,可以帮助程序员和文本编辑者提高编辑效率。本文将介绍Vim的基本使用方法、常用功能和一些实用技巧。原创 2023-08-06 08:30:00 · 13158 阅读 · 13 评论 -
【Shell编程】Linux Shell编程入门:输入输出、变量、条件判断、函数和运算
可以使用符号来定义变量,并为其赋值。变量名和赋值之间不能有空格。Shell编程是一种在Unix/Linux系统下进行脚本编程的方式。在Shell脚本中,可以使用变量来存储数据,使用条件语句进行逻辑判断,使用循环语句进行重复操作,使用运算符进行数值和逻辑运算,使用函数封装可重用的代码。通过合理使用这些特性,可以实现各种复杂的计算和逻辑操作。Shell脚本可以用于自动化任务、系统管理、数据处理等各种场景。它具有简单易学、灵活高效的特点,是Unix/Linux系统下非常重要的工具之一。原创 2023-08-05 08:30:00 · 12292 阅读 · 12 评论 -
【Linux操作系统】进程管理详解:从基本操作到动态监控网络状态(ps、top、kill、killall、pstree、htop、systemctl、netstat、ss)
本文详细介绍了Linux进程管理的各个方面,包括显示系统执行的进程、终止进程、查看进程树、服务管理、动态监控进程和监控网络状态等。通过举例和提供必要的代码和指令,帮助读者深入理解Linux进程管理的原理和实践。原创 2023-08-02 20:14:55 · 14296 阅读 · 15 评论 -
【Linux操作系统】网络配置详解:从原理到实践(详细通俗讲明DNS)
本文详细介绍了Linux网络配置的原理和实践,包括网络配置原理、查看网络IP和网关、测试网络连通性、网络环境配置、设置主机名和hosts映射以及主机名解析过程分析等内容。原创 2023-08-04 08:00:00 · 13104 阅读 · 29 评论 -
【Linux操作系统】深入理解Linux磁盘分区和挂载
Linux磁盘分区和挂载是系统管理中非常重要的一部分,它们可以帮助我们更好地管理存储空间和文件系统。本文将详细介绍Linux磁盘分区和挂载的概念、原理以及实践操作,并提供相应的例子、代码和指令,帮助读者全面了解和掌握这两个关键概念。原创 2023-08-03 14:00:00 · 12919 阅读 · 31 评论 -
【Linux操作系统】深入解析Linux定时任务调度机制-cron&at指令
在Linux操作系统中,定时任务调度是一项重要的功能,它可以让用户在指定的时间或周期性地执行特定的任务。这种机制使得用户能够自动化地执行一些重复性工作,提高工作效率。本文将详细介绍Linux定时任务调度的原理、常用指令和代码示例,帮助读者深入理解和应用该功能。原创 2023-08-02 08:00:00 · 12384 阅读 · 36 评论 -
【Linux操作系统】Ubuntu和center两个Linux发行版本中指令的区别
如果你在创建用户时指定了其他路径,那么新用户的家目录就会被创建在你指定的路径下而不是。家目录被删除或移动:如果你在创建用户后手动删除或移动了该用户的家目录,那么你在。命令仍然找不到新用户的家目录,那么可能是其他问题导致了家目录的丢失。在Ubuntu上新建用户时,默认情况下,新用户的家目录会被创建在。家目录被创建在了其他位置:在创建用户时,你可以通过指定。命令来查看系统日志,而在CentOS中,可以使用。目录下找不到新创建的用户的家目录,你可以尝试使用。命令来创建新用户,而在CentOS中,可以使用。原创 2023-08-01 14:15:44 · 12229 阅读 · 12 评论 -
【FreeRTOS】初识FreeRTOS入门,对FreeRTOS简介、任务调度、内存管理、通信机制以及IO操作,控制两个led不同频率闪烁
FreeRTOS是一个开源的实时操作系统,专门设计用于嵌入式系统。它提供了一套任务调度、内存管理、中断处理和通信机制,使开发者能够更方便地开发实时应用程序。开源免费:FreeRTOS遵循GNU通用公共许可证(GPL)的开源协议,可以免费使用和修改。简单轻量:FreeRTOS的内核非常小巧,适用于资源有限的嵌入式系统。可移植性:FreeRTOS提供了可移植的API接口,可以在不同的处理器和开发环境中使用。可裁剪性:FreeRTOS的内核和组件可以根据需求进行裁剪,以减少内存占用和代码大小。原创 2023-07-31 17:05:04 · 11729 阅读 · 53 评论 -
【Linux操作系统】Linux中的进程和线程的概念、区别和实现的细节
在Linux中,进程和线程是操作系统中两个重要的执行单位。它们是对程序运行时的抽象概念,用于管理和调度计算机资源。原创 2023-07-30 08:15:35 · 11388 阅读 · 18 评论