logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Linux I2C设备驱动】

I2C(Inter-Integrated Circuit),集成电路总线,它由飞利浦(现为NXP)公司在20世纪80年代开发,是一种广泛用于嵌入式系统的通信协议,用于在同一块电路板上的集成电路之间进行通信。是一种物理通信架构,用于连接多个设备,实现设备之间的数据传输。是一套规则,定义了I2C总线上数据通信的过程,包括如何启动通信、传输数据、应答信号、结束通信等。I2C总线与I2C协议在STM32控

#linux#驱动开发
【系统移植】

U-Boot 全称,是一款开源的、跨平台的嵌入式系统引导加载程序(Bootloader),也是嵌入式领域应用最广泛的 Bootloader 之一,你在 STM32MP1 上接触到的 U-Boot 就是其针对该异构多核平台的移植版本,它是嵌入式系统上电启动后,介于硬件裸机和操作系统内核之间的核心程序。简单来说,嵌入式设备(如 STM32MP1、嵌入式开发板、工业控制器等)没有 PC 的 BIOS/U

#linux#驱动开发
【FreeRTOS互斥量】

在多任务系统中,如果任务开始访问某个资源,但在完成访问之前被切换出运行状态,那么就有可能发生错误。如果任务使资源处于不一致的状态,那么其他任务或中断对同一资源的访问可能会导致数据损坏或其他类似问题。访问外设为例两个任务尝试向液晶显示器(LCD)写入内容。任务A执行,开始将字符串“Hello world”写入到LCD。任务A在输出字符串的开头部分“Hello w”后,被任务B抢占了。任务B在进入阻塞

【FreeRTOS事件组】

事件组是FreeRTOS的另一个特性,允许将事件传达给任务。事件组的这些独特属性使得事件组在同步多个任务、向多个任务广播事件、允许任务在阻塞状态下等待一组事件中的某个事件发生,以及允许任务在阻塞状态下等待多个操作完成等场景非常有用。事件组还提供了降低应用程序使用RAM的机会,因为通常可以将多个二进制信号量替换为一个事件组。

【FreeRTOS任务通知】

当使用通信对象时,事件和数据不会直接发送给接收任务或接收的中断服务程序(ISR),而是发送给通信对象。同样,任务和ISR从通信对象接收事件和数据,而不是直接从发送事件或数据的任务或ISR接收。下图描述了使用通信对象的方式。“任务通知”允许任务与其他任务进行交互,并与中断服务程序(ISR)进行同步,而无需单独的通信对象。通过使用任务通知,任务或ISR 可以直接将事件发送给接收任务。任务通知功能是可选

【FreeRTOS空闲钩子函数、优先级函数、删除函数及调度器算法】

当任务处于阻塞状态时,任务无法运行,因此调度器无法选择这些任务。必须始终至少有一个任务可以进入运行状态(即使在FreeRTOS的特殊低功耗功能时也是如此,在这种情况下,执行FreeRTOS的微控制器将被置于低功耗模式)。为了确保这种情况,当调用vTaskStartScheduler() 时,调度器会自动创建一个空闲任务。空闲任务除了在一个循环中等待之外几乎不执行其他任何操作。空闲任务具有尽可能低的

【FreeRTOS信号量】

区分任务的优先级和中断的优先级是非常重要的,原因如下:任务是与FreeRTOS运行所在的硬件无关的软件功能。任务的优先级,软件算法(即调度器)决定哪个任务将被处于运行状态。尽管中断服务程序是,但中断具备硬件特性,由哪个中断服务程序将运行以及何时运行。只有在没有ISR运行时,任务才会运行,运行FreeRTOS的所有架构都具备处理中断的能力,但与中断进入和中断优先级分配相关的细节,会因架构而有所不同。

【FreeRTOS队列】

队列是 FreeRTOS 提供的一种异步通信缓冲区,可以理解为一个 “线程安全的消息管道”,设置队列的目的是为了实现任务间的安全通信、资源管理、任务调度与协调、中断处理与任务交互,以及提高系统的可靠性和可维护性。任务 / 中断可以向队列发送(写入)数据;任务可以从队列接收(读取)数据;队列内置互斥保护,多个任务同时访问也不会出现数据错乱。

【FreeRTOS定时器】

软件定时器用于在未来的某个设定时间,进行调度函数的执行,或者按照固定的频率周期性执行。将软件定时器执行的函数称为软件定时器的回调函数。软件定时器由FreeRTOS内核实现并受其控制。它软件定时器的回调函数是通过C函数来实现的。唯一特别的地方是回调函数的原型必须返回void,并且仅将软件定时器的句柄作为唯一的参数。软件定时器回调函数的原型如下所示。们不需要硬件支持,也与硬件定时器或硬件计数器无关。示

【FreeRTOS推迟中断】

到目前为止,所演示的延迟中断处理示例都要求编程人员为使用延迟处理技术的每个中断创建一个任务。此外,还可以使用 xTimerPendFunctionCallFromISR()(守护任务最初被称为定时器服务任务,因为它最初仅用于执行软件定时器回调函数。因此,xTimerPendFunctionCall() 在 timers.c 文件中实现,并且按照在函数名前面添加函数所在文件名的命名约定,该函数名以“

    共 16 条
  • 1
  • 2
  • 请选择