[资料分享]
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
个人觉得说的很详细,而且非常的让人明白,首先,我拿我自身来说,我大学的时候学写程序的时候,只知道一条路写到的,跟本没有任何模块化的思想,然后出了问题,你懂的。Harmony的可配置性和模块化让我深感共鸣,把自己的程序分成几个部分,源文件,各种库,以及自己的应用程序分开,一眼望去,首先人一看就懂,找粗也更方便。虽然我现在已经不像大学刚学时候一样一条路走到底,但是这个详细的介绍也让我感觉受益匪浅,也可以考虑下用Harmony去开发我的项目试下,反正这么多教程害怕不会吗?重点是不会有人问。
个人感觉 MPLAB® Harmony 非常像STM32的配置软件STM32CubeMX,
都是在软件里配置好,包括IO配置,时钟配置,然后就是自动添加底层的库,
不错,当然这样用了肯定没有自己写代码效率高,因为经过了层层包装
看完这篇文章之后得出一个结论:MPLAB® Harmony是一个集成开发环境。但是Harmony又不是一个传统的开发环境,他将很多配置、规范、功能都都加入到了开发环境里面,而不是让程序员自己遵循这些规范和要求,这样做使得所有程序员都有一个统一的编程“语法”,我觉得这么做的方法可以用一个例子来形容,就是从逻辑程序开发进阶到操作系统程序开发,使得标准统一、规范。虽然我没有使用过MPLAB® Harmony平台,但是看了介绍之后感觉很多处理器的开发平台都应该像这个方向发展,让嵌入式程序开发得到统一和规范。赞一个
单片机开发底层驱动、配置等操作集成到Harmony里面,而且提供了一致性的API,越来越屏蔽底层细节的开发,简化了开发人员的开发时间和精力,降低了开发人员的入门门槛。但是个人而言,在应用Harmony,不要只贪图方便快捷,也要了解其实现方式,这样才有利于自身的提高和设计出更高效的应用程序。
感觉很像MSP、BSP之类的东西,把系统中不同层次功能的操作单独封装,逻辑上变的很清晰,模块化、可移植、灵活性、兼容性这些特点对于用户来说就是缩短开发时间,单片机系统越来越复杂,好用的开发工具能让工程师多活几年
,节约时间和脑细胞才是王道
本帖最后由 飞鸿浩劫 于 2016-12-1 14:02 编辑
看完本贴,MPLAB® Harmony作为一个PIC32微控制器软件开发平台,确实具有非常好的优点,很受启发。可以让代码的移植性更强,各个代码模块相对独立,这样就大大提升了效率。另外提供了很多的支持,可以让工程师更快的上手。最后,它还集成了支持很多第三方的应用和驱动,大大方便了工程师。
看了一下MPLAB Harmony,感觉比起以前直接操作寄存器来说,方便很多,如果时钟的配置,管脚的配置等都是使用图形界面进行配置,很像ST的stm32cube软件,同时应用层也有API函数,这样可以很快地完成功能,加快产品进入市场的速度,估计这也是今后的软件的一个发展方向,不用像以前一样,调试一个功能调不通就一个一个寄存器去查询,看看是不是哪个位没有配置正确。
看了Harmony开发环境的设计理念,基本上可以归纳为以下几个方面
1. 交互式配置
2.代码模块化,用户只需要关心应用程序即可
3.包含有丰富的库文件,供用户使用
这种方法应该是未来的趋势,使得单片机开发变得更加简单。但个人希望能够开发调试接口,做成一个通用的开发环境,这样可以不仅仅支持pic,还可以支持很多别的芯片。这样应该更好。
https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
Harmony平台采用了模块化的设计思想,让用户添加使用Harmony的任何一个功能就像搭积木一样;模块化设计体现在了驱动、系统服务、中间件、甚至应用上面。这种模块化的思想是代码易于复用,避免了大量时间用于重复开发,是一种非常好的开发思想
本篇关于介绍Harmony构造和理念,内容丰富,耳目一新。相信给初学者印象肯定深刻的有以下几点: 有丰富的封装好的各种外设库,高级和低级PIC代码无障碍移植,模块化设计。这些应用大大节省了开发者阅读资料和写驱动代码的时间,现在做一个产品主要就是抢时间,谁获得时间优势谁就获得先机获得效益,这个开发平台相当好!!!
看了MPLAB® Harmony开发平台的介绍,对于其模块化的设计思想尤其感兴趣,这样做减轻了设计者的负担,用很简单的方法就能增加和扩展用户工功,缩短开发时间,加快产品布局
MPLAB® Harmony开发平台为PIC嵌入式控制的软件设计提供了大量的组件,包括外设库与驱动,系统调用,中间件等,简化了系统的设计,模块化的设计理念让开发者能够将更多的精力用于自己所承担的那一部分,具有较高的兼容性加快产品的研发。 本帖最后由 54chenjq 于 2016-12-1 22:52 编辑
这几年一直在做电源,基本是纯硬件的工作,前段时间刚刚对软件设计产生浓厚兴趣,正在复习C语音学习嵌入式的软件编程。这次看到Harmony软件开发平台,感觉功能超级棒,这种开发方式提供了最大的代码重用率并大大的减少产品开发上市时间,对于刚入门的人来说也很受益。
PIC32微控制器没有使用过,模块化是一种趋势,这样可以提高开发效率,缩短产品研发周期,提高市场竞争力,有机会尝试接触下PIC32微控制器,并了解下这款软件
MPLAB®Hamony是一款集成的开发工具,经过测试安装,里面的代码配置器应该是Microchip所提供的一款方便的工具,确实对于快速使用和上手起到了很好的作用,而且使用方便,能提高编程效率。学习使用这款应该是上手快,效率高的。MPLAB代码配置器可以与现有的MPLAB X集成开发环境(IDE)无缝集成,通过简单的图形来表示所选PIC MCU及其片上外设,使设计人员可以快速地将硬件外设构建到功能模块中,而无需深入设置寄存器或标志。该工具还可以通过图形和表格格式显示封装引脚,用户只需单击鼠标即可完成引脚和I/O配置。