
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
kprobe是linux kernel提供的一种动态调试机制,可以在不修改内核源码,不中断系统运行的情况下,插入探针(probe)到内核函数或指令处,以便在该位置执行时获取运行信息,调试或收集性能数据。
FreeRTOS可以选择性收集关于每个任务所用处理时间量的信息,然后用以表格形式显示此信息。如图每个任务会显示:该任务执行占用的总abs 时间 和 所占所有任务总处理时间的百分比。注意:vTaskGetRunTimeStats()执行期间会禁用中断,它不是作为正常的应用程序运行时的工具,而是作为调试辅助工具。
事件主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。事件组是由一组事件位组成,事件组中的事件位通过位编号来引用(每个bit都是用于指示特定事件是否发生的事件位)。注意。
每次创建任务,队列,互斥锁,软件定时器,信号量或事件组时,RTOS内核都需要RAM, RAM可以从RTOS堆自动动态分配(或者指定静态分配)。当RTOS内核需要RAM时,可以调用堆分配释放标准函数 pvPortMalloc() 及 vPortFree()进行分配和释放。FreeRTOS 将内存分配 API 保留在其可移植层,可移植层在实现核心 RTOS 功能的源文件之外, 在可移植层选择适用于该系
软件定时器可以设置定时周期,在周期到期时执行定时器的回调函数,以实现让函数在未来的设定时间执行的特性。软件定时器功能很容易实现,但很难高效地实现。如下code所示,可以很容易实现最简单的定时器,但如果系统里有很多定时器,要在每个tick中断里高效管理他们就很难。FreeRTOS的软件定时器是通过tick ISR 通知定时器服务任务执行而实现的(如下所示),因而软件定时器回调函数在定时器服务任务的上
直达任务通知最大的优势是仅占用5个字节的RAM,与信号量相比RAM占用空间更小,因而执行速度更快。向任务发送“直达任务通知”会将目标任务通知设为“挂起”状态,而调用xTaskNotifyWait() 读取通知值会将该通知的状态清除为“非挂起”(注意:发送任务是将目标任务通知设为挂起状态,即,发送方不能再次发送通知,而不是指目标任务被设置为挂起状态,目标任务挂起状态是在take或wait时设置为挂起
中断服务函数是一种需要特别注意的上下文环境,在这个上下文环境中不能使用任何会挂起或阻塞操作,另外,ISR尽可能保持精简短小,快进快出,一般只标记事件的发生,然后通知任务,让对应任务去执行相关处理。每个任务在自己的上下文中执行,不会碰巧依赖于系统内的其他任务或RTOS调度器本身。在设计的时候对任务的运行时间,逻辑,状态等了如指掌,才能设计出好的系统。每个任务都分配有自己的堆栈。中有可能会导致:从而进
FreeRTOS 队列。
调用taskENTER_CRITICAL() 会全局禁用中断(禁止上下文切换),保持在运行状态,直到退出临界区。该方法适用于极短code段的保护,优先级高,响应快,但要注意保持时间尽可能短,否则会影响实时性(调用时,会关闭中断,因而会影响系统响应时间)可用于中断服务程序(ISR)的 taskENTER_CRITICAL() 版本,但需要注意保存进入临界区时的中断掩码状态。互斥锁具有优先级继承机制,
实时操作系统(RTOS)是一种体积小巧,确定性强(时序可预测的执行模式)的计算机操作系统,通常用于需要在严格时间限制内对外部事件做出反应的嵌入式系统,且RTOS比通用操作系统体积更小,重量更轻,因此非常适用于内存,计算和功率受限的设备。







