马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
一、单片机LiteOS:鸿蒙OS的核心中的核心 与Linux、Windiws和Mac OS这些单一内核的操作系统不同,HarmonyOS是一种多内核结构,就能够支持针对不同资源受限设备选用适合的OS内核,其中LiteOS是鸿蒙OS的核心之一。 随着 HarmonyOS 的不断发展壮大,它逐渐演进成了一个多内核设计的操作系统,如同一个拥有多种神奇工具的百宝箱,可以根据不同设备的硬件能力和应用场景,灵活选用最适合的内核。目前 HarmonyOS 支持三种内核: (1)Linux 内核用于高性能的复杂设备,如智慧屏、智能手表等,就像强壮的大力士,能够轻松应对复杂的任务; (2)LiteOS-A 内核(A:Advanced)用于资源相对丰富的嵌入式设备,如摄像头、支付终端等,它兼具性能与灵活性,如同一位全能选手; (3)LiteOS-M 内核(M:Micro)用于资源极其有限的微控制器(MCU)设备,如智能家居传感器、穿戴设备等,以其极致的轻量级特性,在资源有限的环境中也能游刃有余。 因此,LiteOS(特指其 A 和 M 内核)是 HarmonyOS 系统内核家族中的重要成员,专门负责为轻量级和超轻量级物联网设备提供支持,它们共同构建起了HarmonyOS 强大而灵活的内核体系,如同紧密协作的团队,为 HarmonyOS 在全场景的应用提供了有力支撑。
HUAWEI LiteOS Kernel是轻量级的实时操作系统,下图是华为IOT OS的内核: 上图中的HUAWEILiteOS基础内核(本文称为“单片机LiteOS”)是HUAWEI LiteOS Kernel的核心部分,是最精简的Huawei LiteOS操作系统代码,包括了任务管理、内存管理 、时间管理 、通信机制 、中断管理 、队列管理 、事件管理 、定时器、异常管理等操作系统基础组件,可单独运行。 HUAWEI LiteOS Kernel的优势包括:高实时性,稳定;超小内核,基础内核体积可以裁剪至不到10K;低功耗;支持动态加载、分散加载;支持功能静态裁剪。 结论:HUAWEI LiteOS基础内核也不仅限于给HarmonyOS用,也可以像FreeRTOS一样单独作为单片机的RTOS系统使用。 二、野火开发板:开启物联网开发新征程 在物联网技术迅猛发展的当下,开发板与操作系统的完美结合成为了推动创新的关键力量。野火系列开发板,凭借其小巧的身形和丰富的功能和超前的理念,在嵌入式开发领域散发着独特的魅力,深受广大开发者的喜爱。而华为 LiteOS,作为一款轻量级的物联网操作系统,以其卓越的轻量级特性、低功耗优势以及强大的互联互通能力,在物联网的舞台上崭露头角,为各种资源受限的设备注入了智慧的力量。
当野火开发板邂逅 LiteOS,一场奇妙的化学反应就此发生。华为最早2017年就将 LiteOS 移植到野火系列开发板上,就像是为一位技艺精湛的工匠配备了一套顶级的工具,不仅能够充分发挥开发板的硬件潜力,还能借助 LiteOS 的强大功能,快速搭建起稳定、高效的物联网应用。这一移植过程,不仅降低了开发的门槛,让更多的开发者能够投身于物联网的开发浪潮中,还为物联网应用的创新提供了无限的可能。 本文以LiteOS 在野火 MINI 开发板上的移植的具体例子,揭开这场技术融合盛宴的神秘面纱。 三、内核性能:小巧内核,高效运行 (1)超小内核,极致裁剪 LiteOS 的内核设计堪称精妙绝伦,其基础内核极小,具备令人惊叹的极致裁剪能力,可裁剪至不到 10KB 。这一特性在野火 MINI 开发板这种资源有限的环境中显得尤为重要。野火 MINI 开发板的 Flash 空间仅为 256KB,内存也仅有 48KB ,在如此有限的资源条件下,许多传统操作系统根本无法运行,或者运行起来也会因为资源占用过大而导致系统卡顿、不稳定。而 LiteOS 超小内核的优势就得以充分展现,它能够以极小的资源占用在开发板上稳定运行,为后续的应用开发提供了坚实的基础。 (2)全面功能,性能保障 LiteOS 内核虽小,但功能却十分全面,支持任务管理、内存管理、中断管理、异常管理和系统时钟等关键功能。在任务管理方面,它如同一位高效的指挥官,支持多任务的创建、删除、延迟、挂起和恢复等操作,并且采用了抢占式调度机制和时间片轮转调度机制。这意味着高优先级的任务能够及时得到执行,不会被低优先级任务阻塞,保证了系统的实时性;而相同优先级的任务则可以通过时间片轮转的方式公平地共享 CPU 资源,避免了某个任务长时间占用 CPU 而导致其他任务无法执行的情况。在野火 MINI 开发板上运行多个任务时,LiteOS 能够根据任务的优先级和时间片分配,有条不紊地调度各个任务,确保每个任务都能高效运行,互不干扰。 内存管理方面,LiteOS 提供了静态内存分配和多种动态内存分配算法,如bestfit_little 算法,非常适合像野火 MINI 开发板这类资源有限的芯片。静态内存分配能够在系统启动时就预先分配好固定大小的内存块,避免了内存碎片的产生,提高了内存的使用效率;而动态内存分配算法则可以根据应用程序的实际需求,在运行时动态地分配和释放内存,更加灵活方便。在开发一个需要实时处理大量数据的物联网应用时,可能需要动态分配内存来存储临时数据,LiteOS 的动态内存分配算法就能很好地满足这一需求,同时通过合理的内存管理策略,确保内存的使用不会出现泄漏或溢出等问题,从而保障系统的稳定运行。 中断管理功能则让 LiteOS 能够及时响应外部设备的中断请求,确保系统对外部事件的快速处理能力。在野火 MINI 开发板连接了多个外部设备,如传感器、通信模块等,当这些设备有数据需要传输或有事件发生时,会向开发板发送中断请求。LiteOS 的中断管理机制能够迅速捕捉到这些中断信号,并及时切换到相应的中断处理程序,快速处理设备的请求,保证数据的及时传输和系统的实时性。异常管理功能则为系统的稳定性提供了进一步的保障,当系统出现异常情况,如内存访问错误、除零错误等时,LiteOS 能够及时捕获这些异常,并采取相应的措施,如进行错误提示、恢复系统状态等,避免系统因为异常而崩溃。 系统时钟作为整个系统的时间基准,为其他功能模块提供了精确的时间参考。LiteOS 的系统时钟能够保证时间的准确性和稳定性,无论是任务的定时执行、软件定时器的实现,还是数据的时间戳记录等,都离不开系统时钟的支持。在野火 MINI 开发板上运行的物联网应用中,可能需要定时采集传感器数据并上传到云端,LiteOS 的系统时钟就能为这个定时采集任务提供精确的时间控制,确保数据采集的准确性和及时性。 四、硬件适配:精准优化,灵活拓展 (1)架构适配,充分利用芯片特性 LiteOS 在野火系列开发板上的移植版是华为的官方移植版。LiteOS在野火 MINI 开发板上的移植,针对 Cortex - M3 架构进行了深度优化,就像是为开发板量身定制了一套高效的运行机制,能够充分挖掘 STM32F103 内核的潜力。Cortex - M3 架构以其高性能、低功耗和出色的实时性而闻名,LiteOS 充分利用了这些特性,对任务调度、中断处理等关键功能进行了针对性的优化,以确保系统在野火 MINI 开发板上能够稳定、高效地运行。 在任务调度方面,LiteOS 针对 Cortex - M3 架构的特点,采用了优化的调度算法,能够快速地在不同任务之间进行切换,减少任务切换的开销,提高系统的整体运行效率。在中断处理方面,LiteOS 充分利用了 Cortex - M3 架构的中断控制器特性,实现了快速的中断响应和处理机制,能够及时处理外部设备的中断请求,保证系统的实时性。 (2)外设适配,自行探索与参考示例 对于野火 MINI 开发板上的外设,如 USART、LED 等,LiteOS 的适配情况具有一定的灵活性。在大多数情况下,开发者需要自行进行适配工作,但这也为开发者提供了深入了解硬件和操作系统的机会。开发者可以根据自己的需求和实际硬件连接情况,编写相应的驱动程序,实现对外设的控制和管理。 同时,野火官方也提供了一些外设适配的示例,这些示例就像是宝贵的参考指南,为开发者在自行适配外设时提供了重要的参考和借鉴。通过参考这些示例,开发者可以更快地掌握外设适配的方法和技巧,减少开发过程中的错误和弯路。在适配 USART 串口时,开发者可以参考野火提供的示例代码,了解如何配置串口的波特率、数据位、校验位等参数,以及如何实现串口数据的发送和接收功能。 需要注意的是,由于不同的硬件连接可能会导致外设的工作方式有所差异,因此在参考示例时,开发者需要根据自己的实际硬件连接情况进行适当的修改和调整。如果硬件连接中使用了不同的引脚来连接 USART 串口,那么开发者就需要在参考示例的基础上,修改相应的引脚配置代码,以确保串口能够正常工作。这种灵活性虽然增加了一定的开发难度,但也使得 LiteOS 能够更好地适应各种不同的硬件环境,为开发者提供了更加自由的开发空间。 五、开发调试:便捷工具,高效开发 在开发 LiteOS 应用于野火 MINI 开发板时,Keil MDK 等常见开发环境为开发者提供了极大的便利 。Keil MDK 作为一款广受欢迎的集成开发环境,拥有众多开发者熟悉的操作界面和丰富的功能,这使得开发者在进行 LiteOS 开发时能够快速上手,无需花费大量时间去学习新的开发工具。 在 Keil MDK 中,开发者可以轻松地进行代码的编写、编译和调试工作。其强大的代码编辑功能,如语法高亮、代码自动补全、代码折叠等,能够提高代码编写的效率和准确性。在编写 C 语言代码时,Keil MDK 会自动识别关键字并以不同颜色显示,方便开发者区分;当开发者输入函数名的前几个字母时,代码自动补全功能会弹出相关的函数列表,供开发者选择,大大节省了输入时间。 编译功能方面,Keil MDK 支持多种编译选项和优化设置,开发者可以根据自己的需求进行灵活配置,以生成高效的可执行代码。通过合理设置编译选项,如优化级别、代码大小优化等,可以使生成的代码在野火 MINI 开发板上运行得更加高效,同时减小代码体积,节省Flash 空间。在调试过程中,Keil MDK 提供了丰富的调试工具,如单步执行、断点调试、变量监视等,帮助开发者快速定位和解决代码中的问题。开发者可以在代码中设置断点,然后通过单步执行的方式逐行检查代码的执行过程,观察变量的值的变化,从而找出程序中的错误。 六、功能组件:丰富组件,构建基石 LiteOS 为野火 MINI 开发板带来了一套丰富且强大的 IPC(Inter - ProcessCommunication,进程间通信)机制,其中包括信号量、互斥锁、消息队列、事件、软件定时器等,这些机制就像是搭建多任务应用程序的基石,为各个任务之间的协作与通信提供了有力的支持。 信号量作为一种常用的 IPC 机制,在多任务环境中扮演着至关重要的角色。它可以用于实现任务之间的同步和资源的互斥访问。以一个简单的物联网传感器数据采集系统为例,假设有多个任务需要读取传感器的数据,而传感器在同一时间只能被一个任务访问。这时,就可以使用信号量来控制对传感器的访问。在系统初始化时,创建一个信号量,并将其初始计数值设为 1,表示传感器资源初始时是可用的。当一个任务需要读取传感器数据时,首先尝试获取信号量,如果获取成功,说明该任务获得了传感器的访问权,可以进行数据读取操作;在读取完成后,任务释放信号量,让其他任务有机会获取信号量并访问传感器。这样就确保了在同一时刻,只有一个任务能够访问传感器,避免了数据冲突和错误。 互斥锁则是一种特殊的二值性信号量,专门用于实现对共享资源的独占式处理。在野火 MINI 开发板上运行的一些应用中,可能存在多个任务需要访问共享内存区域的情况。如果没有合适的同步机制,多个任务同时对共享内存进行读写操作,很容易导致数据的不一致性和错误。互斥锁就可以解决这个问题,当一个任务需要访问共享内存时,它先申请互斥锁,如果互斥锁处于开锁状态,任务成功获取互斥锁并进入临界区,对共享内存进行操作;在操作完成后,任务释放互斥锁,使其他任务能够获取互斥锁并访问共享内存。通过这种方式,互斥锁保证了在任意时刻,只有一个任务能够访问共享资源,有效地保护了共享内存的完整性。 消息队列是一种常用于任务间通信的数据结构,它可以在任务间传递消息内容或消息的地址。在一个智能家居控制系统中,可能存在控制任务和设备状态监测任务。控制任务负责接收用户的指令,如打开灯光、调节温度等;设备状态监测任务则实时监测各个设备的状态,如灯光的亮灭、温度的变化等。这两个任务之间可以通过消息队列进行通信。当控制任务接收到用户打开灯光的指令时,它将这条消息发送到消息队列中;设备状态监测任务从消息队列中读取到这条消息后,根据消息内容控制灯光设备打开,并将灯光的状态变化信息发送回消息队列,供控制任务读取和显示。通过消息队列,不同任务之间可以方便地进行数据传递和协作,实现复杂的系统功能。 事件用于实现任务间的同步,它允许一个任务等待其他任务或中断触发的特定事件。在野火 MINI 开发板连接了多个外部设备的场景中,如按键、传感器等,当按键被按下或传感器检测到特定事件时,会触发中断并发送事件通知相关任务。假设一个任务负责处理按键操作,当按键被按下时,产生一个中断,中断服务程序发送一个事件通知处理任务;处理任务在接收到这个事件后,执行相应的按键处理逻辑,如切换设备的工作模式、显示提示信息等。通过事件机制,任务能够及时响应外部事件,提高系统的实时性和交互性。 软件定时器是一种基于软件实现的定时器,它可以在指定的时间间隔到达时触发相应的回调函数。在一些需要定时执行任务的应用中,如定时采集传感器数据、定时发送数据到云端等,软件定时器就发挥了重要作用。在一个环境监测系统中,需要每隔一定时间采集一次温湿度传感器的数据,并将数据上传到云端服务器。可以创建一个软件定时器,设置定时时间为 5 分钟,当定时器超时触发时,调用数据采集和上传的回调函数,实现定时采集和上传数据的功能。软件定时器的使用,使得开发者可以方便地实现各种定时任务,为物联网应用的开发提供了极大的便利。 七、总结展望:成果显著,未来可期 展望未来,随着物联网技术的持续蓬勃发展,单片机LiteOS 在各种Cortex-M开发板以及更多类似资源受限设备上的应用前景将更加广阔。在智能家居领域,我们可以利用 LiteOS 和Cortex-M开发板打造更加智能、便捷的家居控制系统,实现设备之间的互联互通和智能化控制;在工业自动化领域,它们能够为工业设备提供稳定、可靠的运行支持,提高生产效率和质量;在环境监测领域,能够实现对环境数据的实时采集和分析,为环境保护提供有力的数据支持。
|