作者小头像 Lv.1
39 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
39
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2022/06/27 09:45:28 最后回复 Alexwu 2022/12/13 17:45:37 版块 IoT物联网
13943 724 3
发布时间 2022/06/27 09:45:28 最后回复 Alexwu 2022/12/13 17:45:37 版块 IoT物联网
13943 724 3
他的回复:
梅科尔工作室-第3章学习笔记第3章内核开发3.1任务管理任务状态就绪(Ready) :该任务在就绪列表中,只等待CPU。运行(Running) :该任务正在执行。阻塞(Blocked) :该任务不在就绪列表中。包含任务被挂起、任务被延时、任务正在等待信号量、读写队列或者等待读写事件等。退出态(Dead) :该任务运行结束,等待系统回收资源。任务ID:在任务创建时通过参数返回给用户,作为任务的一个非常重要的标识。任务优先级:优先级表示任务执行的优先顺序。任务入口函数:每个新任务得到调度后将执行的函数。任务控制块TCB:每一个任务都含有一个任务控制块(TCB)。TCB包含了任务上下文栈指针(stack pointer) 、任务状态、任务优先级、任务ID、 任务名、任务栈大小等信息。TCB可以反映出每个任务运行情况。任务栈:每一个任务都拥有一个独立的栈空间,我们称为任务栈。任务上下文:任务在运行过程中使用到的- -些资源,如寄存器等,我们称为任务上下文。LiteOS在任务挂起的时候会将本任务的任务上下文信息,保存在自己的任务栈里面,以便任务恢复后,从栈空间中恢复挂起时的上下文信息,从而继续执行被挂起时被打断的代码。任务切换:任务切换包含获取就绪列表中最高优先级任务、切出任务上下文保存、切入任务上下文恢复等动作。任务的调度机制就绪态- +运行态: 运行态- +阻塞态: 阻塞态-→就绪态(阻塞态--运行态)就绪态-→阻塞态: 运行态-→就绪态:运行态-退出态阻塞态+退出态:实现任务管理cmsis_ os2的API任务接口创建任务: os ThreadNew(os' ThreadFunc_ _t func,void * argument,const osThreadAttr_ _t * attr)删除某个任务: osThreadTerminate(osThreadld_ t thread id);任务挂起: osThreadSuspend(os Threadld. _t thread_ id)任务恢复: osThreadResume (os' Threadld_ _t thread id)实现任务的创建创建任务接口详解:osThreadNew(osThreadFunc_ t func, void * argument, const osThreadAttr_ t * attr)3.2 软件定时器软件定时器静态裁剪:能通过宏关闭软件定时器功能。软件定时器创建。软件定时器启动。软件定时器停止。软件定时器删除。软件定时器剩余Tick数获取。软件定时器运作机制软件定时器使用了系统的一-个队列和一个任务资源,软件定时器的触发遵循队列规则,先进先出。定时时间短的定时器总是比定时时间长的靠近队列头,满足优先被触发的准则。软件定时器以Tick为基本计时单位,当用户创建并启动一个软件定时器时, Huawei LiteOS会根据当前系统Tick时间及用户设置的定时间隔确定该定时器的到期Tick时间,并将该定时器控制结构挂入计时全局链表。当Tick中断到来时,在Tick中断处理函数中扫描软件定时器的计时全局链表,看是否有定时器超时,若有则将超时的定时器记录下来。Tick中断处理函数结束后,软件定时器任务(优先级为最高)被唤醒,在该任务中调用之前记录下来的定时器的超时回调函数。实现软件定时器创建cmsis_ os2的API软件定时器接口创建定时器: osTimerNew (osTimerFunc _t func, osTimerType. _t type, void *argument, const osTimerAttr. _t *attr);启动定时器: osTimerStart (os Timerld. t timer. id, uint32 _t ticks);停止定时器:osTimerStop (osTimerld_ t timer id);删除定时器: osTimerDelete (osTimerld_ t timer id);3.3信号量信号量1、信号量(Semaphore) 是-种实现任务间通信的机制,实现任务之间同步或临界资源的互斥访问。常用于协助一组相互竞争的任务来访问临界资源。2、在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。3、通常一个信号量的计数值用于对应有效的资源数,表示剩下的可被占用的互斥资源数。其值的含义分两种情况: 1) 0,表示没有积累下来的Post信号量操作,且有可能有在此信号量上阻塞的任务。2)正值,表示有-个或多个Post信号量操作。4、以同步为目的的信号量和以互斥为目的的信号量在使用有如下不同:1)用作互斥时,信号量创建后记数是满的,在需要使用临界资源时,先取信号量,使其变空,这样其他任务需要使用临界资源时就会因为无法取到信号量而阻塞,从而保证了临界资源的安全。2)用作同步时,信号量在创建后被置为空,任务1取信号量而阻塞,任务2在某种条件发生后,释放信号量,于是任务1得以进入READY或RUNNING态,从而达到了两个任务间的同步。信号量运作机制运作原理1、信号量初始化,为配置的N个信号量申请内存(N值可以由用户自行配置,受内存限制) , 并把所有的信号量初始化成未使用,并加入到未使用链表中供系统使用。2、信号量创建,从未使用的信号量链表中获取一个信号量资源,并设定初值。3、信号量申请,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时,将该任务挂到信号量等待任务队列的队尾。4、信号量释放,若没有任务等待该信号量,则直接将计数器加1返回。否则唤醒该信号量等待任务队列上的第一个任务。5、信号量删除,将正在使用的信号量置为未使用信号量,并挂回到未使用链表。6、信号量允许多个任务在同- -时刻访问同-资源,但会限制同一时刻访问此资源的最大任务数目。访问同一资源的任务数达到该资源的最大数量时,会阻塞其他试图获取该资源的任务,直到有任务释放该信号量。实现信号量功能cmsis_ os2的API信号量接口创建互斥锁: osSemaphoreNew (uint32_ t max count, uint32_ t initial count, const osSemaphoreAttr. _t *attr);获取互斥锁:osSemaphoreAcquire (osSemaphoreld t semaphore id, uint32_ t timeout);释放互斥锁: osSemaphoreRelease (osSemaphoreld. t semaphore id);删除互斥锁: osMutexDelete (osMutexld t mutex id);3.4事件管理事件基本概念事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。事件运作机制实现事件功能cmsis_ os2的API事件接口创建事件标记对象:osEventFlagsNew (const osEventFlagsAttr _t *attr);设置事件标记: osEventFlagsSet (osEventFlagsld. t ef_ id, uint32_ t flags);等待事件标记触发: osEventFlagsWait (osEventFlagsld. t ef id, uint32 t flags, uint32 t options, uint32 _t timeout);删除事件标记对象: osEventFlagsDelete (osEventFlagsld. t ef id);3.5互斥锁3.6消息队列 
发布时间 2022/06/27 09:45:28 最后回复 Alexwu 2022/12/13 17:45:37 版块 IoT物联网
13943 724 3
他的回复:
梅科尔工作室-第1章学习笔记鸿蒙设备开发实战   第1章 开发环境搭建       BearPi-HM Nano开发板介绍           BearPi-HM Nano开发板功能介绍           BearPi-HM Nano原理图解读           BearPi-HM Nano开发板E53接口使用     开发环境搭建     开发环境搭建(复杂)-编译环境搭建     开发环境搭建(复杂)源码获取          OpenHarmony源码获取               镜像站点 https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz                HPM网站组件式 https://hpm.harmonyos.com/#/cn/home                用包管理器命令行               代码仓库 源码链接: https://gitee.com/bearpi/bearpi-hm_nano OpenHarmony          开源网站                源码开源仓库 https://gitee.com/openharmony                 设备开发学习网站 https://device.harmonyos.com OpenHarmony                 HPM网站 https://hpm.harmonyos.com       开发环境搭建(复杂)            映射工程源码                   OpenHarmony源码只支持在Linux系统中进行编译 可以将Linux环境下的工程目录映射到W indows环境下,使用VS Code打开,并在Windows环境 下进行烧录和调试           导入工程源码                   在Windows 上 映射网络驱动器 选择未使用的驱动器,并设置OpenHarmony源码所在的路径,格式为"\Linux IP地址\共享文件夹名称”