- 博客(56)
- 收藏
- 关注
原创 1.Linux——进程间的五种通信方式(管道、消息队列、共享存储、信号、信号量)
进程间通信(IPC,InterProcess Communication)是指在不同的进程之间传播或交换信息。
2023-04-02 19:21:21 2044 4
原创 9.FreeRTOS之中断管理
操作系统中,中断同样是具有优先级的,并且也可以设置它的优先级,但是他的优先级并不是从 0-15。是 取决于 configMAX_SYSCALL_INTERRUPT_PRIORITY。触发中断,在中断服务函数里向队列里发送数据,任务则阻塞接收队列数据。在中断中必需使用中断相关的函数;创建一个队列及一个任务,按下按键。任何中断的优先级都大于任务!中断服务函数运行时间越短越好。
2024-11-01 13:56:09 92
原创 8.FreeRTOS之软件定时器
如果定时器服务任务的优先级设置的高的话,定时器命令队列中的命令和定时器回调函数就会及时的得到处理。软件定时器有一个定时器服务任务和定时器命令队列,这两个东西肯定是要配置的,相关的配置也是放到文件FreeRTOSConfig.h。开启任务调度器的时候,会创建一个用于管理软件定时器的任务,这个任务就叫做软件定时器服务任务。软件定时器也可以实现定时功能,达到定时时间后可调用回调函数,可以在回调函数里处理信息。该功能将使软件定时器的重新开启定时,复位后的软件定时器以复位时的时刻作为开启时刻重新。
2024-11-01 13:55:32 75
原创 7.FreeRTOS之延时函数
一直不停的调用获取系统时间的函数,直到指定的时间流逝然后退出,故其占用了全部CPU。系统调用其它处于就绪状态的优先级最高的任务来执行。作用是让任务阻塞,任务阻塞后,
2024-11-01 13:54:54 71
原创 6.FreeRTOS之任务通知
任务通知是通过更新任务通知值来发送数据的,任务结构体中只有一个任务通知值,只能保持一个数据。在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件标志组,可以替代长度为。如果被通知任务还没取走上一个通知,又接收了一个通知,则这次通知值未能更新并返回。如果被通知任务还没取走上一个通知,又接收了一个通知,则这次通知值未能更新并返回。等待通知的任务可以被阻塞, 但是发送消息的任务,任何情况下都不会被阻塞等待。发送消息给任务,如果有通知未读, 不覆盖通知值。:接收通知的任务句柄, 并让其自身的任务通知值加。
2024-11-01 13:54:14 108
原创 5.FreeRTOS之事件组
等待的事件标志位值:等待事件标志位成功,返回等待到的事件标志位 其他值:等待事件标志位失败,返回事件组中的事件标志位。是一组事件标志位的集合, 可以简单的理解事件标志组,就是一个整数。位用作存储事件标志 ,所以说一个事件组最多可以存储。:指定要在事件组中设置的一个或多个位的按位值。:指定要在事件组中清除的一个或多个位的按位值。位用作存储事件标志组的控制信息,低 24。:指定事件组中要等待的一个或多个事件。设置之后事件组中的事件标志位值。清零之前事件组中事件标志位的值。:对应的事件标志组句柄。
2024-11-01 13:53:35 70
原创 4.FreeRTOS之互斥量
优先级继承:当一个互斥信号量正在被一个低优先级的任务持有时, 如果此时有个高优先级的任务也尝试获取这个互斥信号量,那么这个高优先级的任务就会被阻塞。在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步, 而互斥型信号量用于资源保护。互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现 象。优先级继承并不能完全的消除优先级翻转的问题,它只是尽可能的降低优先级翻转带来的影响。释放信号量的过程中,中等优先级任务M。,从而延迟了信号量的释放时间,导致。
2024-11-01 13:52:47 84
原创 3.FreeRTOS之信号量
信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用,然后我们的量还可以用来表示资源的数量,当我们的量只有0。的时候,它就可以被称作二值信号量,只有两个状态,当我们的那个量没有限制的时候,它就可以被称作为计数型信号量。),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并发调用。的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候确定的。计数型信号量的释放和获取与二值信号量完全相同!成功,返回对应计数型信号量的句柄;成功,返回对应二值信号量的句柄;
2024-11-01 13:51:58 85
原创 2.FreeRTOS之队列
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息。采用实际值传递,即将数据拷贝到队列中进行传递,也可以传递指针,在传递较大的数据的时候采用指针传递。如果队列创建成功,则返回所创建队列的句柄。在这种情况下,就可以使用队列。当任务向一个队列发送消息时,可以指定一个阻塞时间,假设此时当队列已满无法入队。)处理,但树獭处理速度很慢,在处理数据的过程中,狐狸(任务2。)的数据存储缓冲机制,即先入队的数据会先从队列中被读取。创建队列时,需要指定队列长度及队列项目大小。
2024-11-01 13:51:16 110
原创 Linux底层驱动编译原理 、编译过程和装载(树莓派(香橙派))
1.写完把它放到驱动设备目录中,如:pin4引脚驱动,我把它放到内核源码的~/SYSTEM/linux-rpi-4.14.y/drivers/char,因为这是个字符设备。6.我们仿照已经写好的代码,在注释后的第一行加上:obj-m += 你要生成的驱动, 注意设备名要带后缀。一个驱动由设备名和和设备号组成的结构体,设备号又分为主设备号和次设备号,例如:pin5 8 3。14.自己写一个驱动的调用代码,简单的验证一下,驱动的调用就跟操作普通文件一样。9.在目标平台上,加载驱动。
2023-07-09 21:22:21 915
原创 树莓派(香橙派)交叉编译
1. 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,2. 在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。是在树莓派上面运行,不是在ubuntu linux上面运行。(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。因为链接的库的格式不对,是宿主机的平台,出现以下错误。
2023-07-08 22:37:32 1046
原创 3、mqtt客户端演示(MQTT通信协议(mosquitto)发布订阅 C语言实现)
MQTT通信协议(mosquitto)发布订阅 C语言实现
2023-05-27 12:26:35 1491
原创 2.Linux——信号
在信号处理函数被调用时,操作系统会建立新的信号阻塞字,包括正在被递送的信号。sigqueue 函数不但可以发送额外的数据,还可以让信号进行排队(操作系统必须实现了 POSIX.1的实时扩展),对于设置了阻塞的信号,使用 sigqueue 发送多个同一信号,在解除阻塞时,接受者会接收到发送的信号队列中的信号,而不是直接收到一次。那么,kill 函数发送的信号是无法携带数据的,我们现在还无法验证发送收的部分,那么,我们先来看看发送信号的高级用法后,我们再来看看如何通过信号来携带数据吧。
2023-04-03 21:21:41 683
原创 fopen、fread、fwrite、 fseek 、fclose (了解)fgetc 、fputc、 feof与之前open、close、write、read有何区别
fopen、fread、fwrite、 fseek 、fclose
2023-03-25 13:01:49 162
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人