MPLAB® Harmony之学习篇(一)-- Harmony设计理念和优点
[复制链接]
本文转自Microchip麦田论坛——作者:admin
通过本文希望大家了解MPLAB® Harmony的设计理念,为后续充分掌握和应用Harmony平台开发产品打下理论基础。
本文讨论以下内容:
- Harmony是什么?
- Harmony的设计理念是什么?
- Harmony的优点
Harmony是什么?
MPLAB® Harmony是一个灵活的、抽象的、集成的PIC32微控制器软件开发平台。Harmony提供了模块化、面向对象设计、以及能基于超循环(裸跑)和基于RTOS运行的灵活性;同时它的软件架构提供了非常易用、方便配置等优点以适合各种应用的设计。当然,Harmony包含了一系列的外设库(PLIB)、驱动(Driver)、系统服务(System Service)、各种中间件(Middleware,包括图形、网络、USB等)以便客户专注于应用的开发;这种代码开发方式提供了最大的代码重用率并大大的减少产品开发上市时间。
Harmony架构
Harmony的设计理念是什么?
学习Harmony最好先要了解Harmony的设计理念。
1. 可配置性
我们把一个嵌入式应用程序进行分解,莫外乎就是“配置”、“库”、“应用”,如下图:
代码分解和重构
大家可以发现我们把一个应用分成了配置、库和应用三个部分,分别对应了系统配置代码、Harmony提供的软件库代码、你自己的应用程序;系统配置代码和Harmony提供的软件库添加都可以用MHC(MPLABHarmony 配置器)生成和导入,所以我们用户的重心就放在了应用程序上了。
可配置性在Harmony的项目里,就是system_config.h,system_init.c,system_tasks.c,system_interrupt.c几个源文件的体现,如下图:
系统配置代码示例
Harmony在设计之初就充分考虑了项目的可配置性,让同样的应用代码或者软件库可以在不同的硬件(或软件)配置上运行,同时也让MHC有了用武之地,并且代码结构非常规范、易读。
2. 模块化 Harmony平台采用了模块化的设计思想,让用户添加使用Harmony的任何一个功能就像搭积木一样;模块化设计体现在了驱动、系统服务、中间件、甚至应用上面。
2 每个模块只拥有和管理自己的资源;
例如USART驱动不会去直接管理Timer的资源和状态机处理,保证模块内部的高聚敛和模块之间的轻 耦合;
2 每个模块提供简单抽象的API给其它模块或应用;
比如USART驱动提供DRV_USART_Open(),DRV_USART_Read(),DRV_USART_Write()等;其它应用不会也 不可能直接访问USART寄存器去发送或者读取数据;
2 使用标准的模块API去使用对应模块的资源; 比如USART模块只会采用SYS_TMR_DelayMS()等API进行延时处理,不会有直接使用定时服务里的 某些变量进行操作;
如下图,模块化的设计充分避免了资源使用的冲突,每一个中间件都会用到定时器,当芯片上只有一个硬件定时器时,最好的方式就是通过模块化设计的定时器服务来消除资源冲突问题!
模块化的设计当然也给MHC提供了(能够简单勾选就能添加和减少功能模块的)坚实的基础。
利用定时器模块消除资源冲突
3. 兼容性
Harmony兼容性来源于:
- 它提供了可协同工作的各种模块部件:它们就像齿轮一样各自运行、互不干扰;
- 所有的模块部件都采用状态机形式的任务:让多任务能够同时运行、提高CPU和各种资源的利用率;
- 模块之前只通过相互提供的模块(开放给用户的)API进行轻度耦合;
Harmony模块间的协同工作示意图
4. 灵活性 Harmony的灵活性主要体现在:
- 支持超循环(裸跑)方式运行:可以是纯查询方式,也可以是中断方式;
- 支持RTOS方式运行,并提供OSAL让编程更统一,也让用户不需要过多了解底层使用了哪一个RTOS(比如uCOS,FreeRTOS等);
- 驱动的灵活选择:可以使静态驱动,也可以是动态驱动(后续学习篇会详细介绍);
5. 可移植性
Harmony提供了非常好的代码可移植性,可以很简单的向资源更多、性能更强,更大的PIC32芯片上移植,也可以往功能减少、节省成本,更小的PIC32上移植,因为:
- Harmony提供了一致性的API,PLIB层把外设寄存器的访问封装起来,用户不需要了解芯片之间的寄存器差异;
- Harmony自身的模块化、可配置性等架构也为可移植性提供了坚实的基础;
Harmony的优点:
对Harmony是什么以及Harmony的设计理念有一个基本了解后,我相信大家很容易认识到Harmony给嵌入式产品开发带来的优点:
u 极大地提高了微控制器之间的代码兼容性
代码的可配置、可剪裁,更容易的在PIC32之间选择合适的芯片给不同的产品和应用
u 极大地提高了代码之间的可协同工作性
代码的模块化,更容易的让驱动、软件库以及应用在一起协同工作
u 更快的产品开发上市时间
单一集成的的开发平台、简单快速的增减功能,让开发时间大为缩短
u Microchip公司更快、更高质量的给客户支持和反馈
工程师们更快的开发应用,以及包含第三方软件在内的一站式的支持给客户
u 提高用户使用的满意度
提前避免系统资源冲突,代码质量的极大提高
u 更容易的第三方软件集成
无缝支持第三方软件集成,包括RTOS,中间件、驱动等
点击查看本学习资料: MPLAB® Harmony之学习篇(一)-- Harmony设计理念和优点_reformat.pdf (415.08 KB)
点击查看相关视频:http://www.microchip.com.cn/community/Video/detail/item/403.html
|