10 2023 档案

摘要:如下为唤醒进程的API,执行内容如下: 给待唤醒进程选择一个合适的CPU 将待唤醒进程放入选定CPU的运行队列,每个CPU都有一个运行队列 判断当前进程是否应该被待唤醒进程抢占,如果应该,置位当前进程的 TIF_NEED_RESCHED 标志 int wake_up_process(struct t 阅读全文
posted @ 2023-10-21 21:38 流水灯 阅读(811) 评论(0) 推荐(0) 编辑
摘要:preempt_disable() local_irq_disable()/local_irq_save(flags) spin_lock() spin_lock_irq()/spin_lock_irqsave(lock, flags) spin_lock()会调用preempt_disable() 阅读全文
posted @ 2023-10-19 23:35 流水灯 阅读(1040) 评论(0) 推荐(0) 编辑
摘要:关调度器 void vTaskSuspendAll( void ) { /* A critical section is not required as the variable is of type BaseType_t. Please read Richard Barry's reply in 阅读全文
posted @ 2023-10-19 23:01 流水灯 阅读(199) 评论(0) 推荐(0) 编辑
摘要:互斥锁相比于二值信号量,有以下特点: 1、通过优先级继承,防止优先级反转 2、只有互斥锁持有的线程可以释放互斥锁 3、FreeRTOS 提供支持递归版本的互斥锁 创建互斥锁 互斥锁使用的描述符是队列的描述符,不单独定义互斥锁描述符。 初始化时,指定队列的长度 pxNewQueue->uxLength 阅读全文
posted @ 2023-10-19 22:37 流水灯 阅读(827) 评论(0) 推荐(0) 编辑
摘要:信号量使用说明 (1)定义信号量 struct semaphore sem; (2)初始化信号量 void sema_init(struct semaphore *sem, int val); 该函数初始化信号量,并设置信号量sem的值为val。 (3)获得信号量 extern void down( 阅读全文
posted @ 2023-10-18 23:33 流水灯 阅读(508) 评论(0) 推荐(0) 编辑
摘要:通信速度和距离 can通讯的最高速率为1 Mbps,而485通讯的最高速率为10 Mbps。can通讯在低速时可以达到10 km的距离,而485通讯的距离通常不超过1200 m。因此,can通讯适合于实时性要求高、距离较远的场合,而485通讯适合于速率要求高、距离较近的场合。 网络拓扑结构 can通 阅读全文
posted @ 2023-10-16 21:42 流水灯 阅读(413) 评论(0) 推荐(0) 编辑
摘要:一、字符设备 字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。 比如我们最常见的点灯、按键、串口、IIC、SPI,LCD等等都是字符设备,这些设备的驱动就叫做字符设备驱动。 二、块设备 系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备 阅读全文
posted @ 2023-10-16 21:40 流水灯 阅读(964) 评论(0) 推荐(0) 编辑
摘要:实时操作系统的定义 实时操作系统是保证在一定时间限制内完成特定功能的操作系统(执行时间的确定性是实时操作系统最根本的,其代价往往就是吞吐量低)。 实时操作系统有硬实时和软实时之分,软实时仅仅要求事件的响应是实时的,并不要求任务必须在多长的时间内完成。硬实时不但要考虑响应速度(即从一个事件发生到系统对 阅读全文
posted @ 2023-10-16 21:24 流水灯 阅读(2040) 评论(0) 推荐(0) 编辑
摘要:简介 高速CAN(经典CAN):ISO11898 低速CAN:ISO11519 CAN FD:兼容经典CAN 使用场景 多主机场景,每个设备都可以主动发送数据 物理层 CAN收发器的功能是将CAN控制器的TTL信号转换成CAN总线的差分信号 和单片机连接的接收引脚的信号表示总线当前的信号,主要两个目 阅读全文
posted @ 2023-10-15 23:44 流水灯 阅读(419) 评论(0) 推荐(0) 编辑
摘要:使用场景 单主多从,只有一个主机控制通信,其他节点只能被动接收或应答 物理层规定 485 有两个线,A线和B线。空闲状态:AB线悬浮在2.3V的样子;工作时,AB线在2.3v上做逻辑01(-2v,+2v)跳变。 485标准规定: 对于发送端,逻辑1以AB两线间的电压差为 正(2~6)V 表示;逻辑0 阅读全文
posted @ 2023-10-15 20:21 流水灯 阅读(351) 评论(0) 推荐(0) 编辑
摘要:电池(电芯)分类 正极材料 三元锂电池 优点:能量密度高、低温性能好(放电性能衰减) 缺点:化学性能活跃、耐高温性差(容易着火)、成本较高、充放电次数1000~2000 磷酸铁锂电池 优点:化学性能稳定、耐高温性好、成本较低、充放电次数3000 缺点:能量密度低、低温性能差 放电电流 动力电池 放电 阅读全文
posted @ 2023-10-14 23:50 流水灯 阅读(139) 评论(0) 推荐(0) 编辑
摘要:STM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。ARM MDK中提供了如下两个接口来禁用和开启总中断:__disable_irq(); // 关闭总中断__enable_irq(); // 开启总中断 但测试发现这样一个问题,在关 阅读全文
posted @ 2023-10-10 20:28 流水灯 阅读(1104) 评论(0) 推荐(0) 编辑
摘要:临界区 FreeRTOS: 非中断的临界区,根据优先级关中断,不会把所有中断都关了;使用了一个变量记录进临界区的次数,保证嵌套不出问题 void vPortEnterCritical( void ) // 进入临界区 { portDISABLE_INTERRUPTS(); uxCriticalNes 阅读全文
posted @ 2023-10-10 17:14 流水灯 阅读(2234) 评论(0) 推荐(0) 编辑
摘要:明确问题 首先,让我们明确一下问题。 对于这个问题,稍微准确一点的问法是:为什么在 Linux 的中断里,不能 sleep? 但是这个问法仍然不准确。 中断 (interrupt) 和中断服务程序 (interrupt service routine, ISR,或者是 interrupt handl 阅读全文
posted @ 2023-10-06 16:56 流水灯 阅读(390) 评论(0) 推荐(0) 编辑
摘要:request_threaded_irq() 阅读全文
posted @ 2023-10-05 16:11 流水灯 阅读(21) 评论(0) 推荐(0) 编辑
摘要:wait_var_event 等待 condition 为1,否则阻塞 阅读全文
posted @ 2023-10-05 13:50 流水灯 阅读(26) 评论(0) 推荐(0) 编辑
摘要:ARM芯片有硬件中断号,比如0~15是SGI中断 linux内核规定了软件中断号及软件中断号的功能;不直接使用ARM芯片的硬件中断号是因为linux内核是适配多架构操作系统,比如有些芯片硬件中断号20是GPIO中断,有些芯片是25;linux统一规定了某个中断号对应GPIO中断。这样就存在硬件中断号 阅读全文
posted @ 2023-10-05 00:27 流水灯 阅读(102) 评论(0) 推荐(0) 编辑
摘要:构成cpu的主要部件包括运算器、控制器、寄存器三个部件。 完整的CPU构架: ALU只负责计算,它的数可以从寄存器来,也可以从片外存储器来;数从哪儿来,做什么运算,是由指令解析产生的,逻辑控制单元来控制;逻辑控制单元的指令是在PC指针寄存器的指引下,从程序的地址空间拿进来逐条解析;在这些过程中如果P 阅读全文
posted @ 2023-10-04 15:39 流水灯 阅读(123) 评论(0) 推荐(0) 编辑
摘要:FreeRTOS一共提供了5种申请内存的方案 heap1 只申请不释放,内存利用率最高。申请出来的内存块,没有内存块头记录这个内存的大小,所以也无法释放,也正是没有内存块头,内存利用率高 使用场景:不需要频繁申请内存 heap2 能申请能释放,不能合并内存块。每个内存块都有一个内存块头,有一个链表管 阅读全文
posted @ 2023-10-04 14:09 流水灯 阅读(176) 评论(0) 推荐(0) 编辑
摘要:简介 有一个定时器任务,任务内读队列。启动定时器,会向队列发送消息,定时器任务读到消息后把定时器回调函数等信息作为一个链表项插入链表。当链表有链表项,算出还剩多长时间执行定时器回调函数,这个时间作为定时器任务阻塞时间。所以定时器任务重新运行要么是时间到准备运行定时器回调函数,要么是队列接收到消息。 阅读全文
posted @ 2023-10-03 21:27 流水灯 阅读(316) 评论(0) 推荐(0) 编辑
摘要:简介 任务通知核心包含是一个32位的无符号整数和一个8位的通知状态,这两个在任务控制块中,通知任务就是一个任务或者中断改写另外一个任务中的32位的无符号整数,改写这个整数的方式可以有所不同 可以让这个整数加1,模拟信号量 设置该整数的指定的某些位,模拟事件组 直接选择覆盖或者不覆盖写入,模拟消息队列 阅读全文
posted @ 2023-10-03 17:29 流水灯 阅读(155) 评论(0) 推荐(0) 编辑
摘要:简介 信号量,队列。它们都具有一下特性: 它们允许在阻塞态下等待单个事件的发送。 它们在事件发送时可以取消阻塞的单个任务。 事件组是FreeRTOS提供另一种事件传递的方法,它与队列和信号量的不同点: 时间组允许任务在阻塞态下等待一个或多个事件。 事件发生时,事件组将取消阻塞等待同一事件或事件组合的 阅读全文
posted @ 2023-10-03 14:56 流水灯 阅读(543) 评论(0) 推荐(0) 编辑
摘要:队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(固定长度消息传递)。 队列的优点: 不同任务之间的读写队列操作是互斥的(通过关中断实现) 读写队列有阻塞唤醒机制,阻塞的任务不抢占CPU资源(比如读队列,发现队列空,阻塞当前任务,除非其他任务有写队列,否则当前任务不再占用CPU资源) 队列 阅读全文
posted @ 2023-10-02 16:55 流水灯 阅读(151) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示