OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10247|回复: 7

PersimmonUI实战帖 | 带你进入绚丽多彩的柿饼M(一)

[复制链接]

55

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2018-8-7
在线时间
55 小时
发表于 2018-9-7 14:23:08 | 显示全部楼层 |阅读模式
这是一份系列连载,总计分为5个部分,并可通过 i.MX RT1052 *火开发板来体验RT-Thread的柿饼UI及柿饼M。

初识柿饼M

大家对PersimmonUI可能有一定耳闻,不过PersimmonUI并未开放出代码出来。原因有多种,商业上的,使用复杂度上面的。没有一个简单易用的东西就大范围地推荐给用户,这是对用户的不负责任!

说明:

在柿饼学习营结束后,我们将针对i.MX RT开发板提供固件、设计工具、模拟器下载。如果你需要商用可联系我们。

PersimmonUI是以C++编写的,是RT-Thread上一款现代化图形UI库。使用C++是因为GUI上的一系列控件以C++面向对象的方式来描述会更合理。Widget -> 部件,所以也就是一个个对象:

柿饼M1.png

例如一个button,一个label,一个image。每个对象有他们自己的属性,方法等。

当然C++也会带来一些问题,例如原来C中可以任意使用函数指针,但在C++中却并不能随意单独使用类的方法(而需要在类的实例化对象环境中使用其成员方法)。所以这种也诞生了Qt方式的signal/slot模式。因为Qt的起始年代非常久远(Qt诞生于1995年),那个时候一些C++标准并不那么完备,所以QT signal/slot机制是以独立的,额外的moc编译器方式,生成新的C++代码来辅助完成。而PersimmonUI则使用了现代化一些的C++机制,也完成了类似signal/slot机制。

那么PersimmonUI signal/slot机制就是极限了吗?所以也就引出了本系列文章的主角,PersimM。

PersimM本意指的是PersimmonUI Module,即PersimmonUI的模块,甚至有的时候指的是运行PersimmonUI的硬件模块。因为它最初一个定义就是:基于Persim M硬件模块,用户可以非常方便、易用地进行自己的定制开发。

以下是一份PersimmonUI 和 PersimM的对比列表

柿饼M2.png

从上面对比表格,可以非常清晰的发现,PersimM和传统模式已经有一些不一样,主要体现在:

  • 有UI设计工具,用于界面设计;
  • 编程方式不再是传统的C/C++模式,而是可以简单上手的JavaScript模式,美工+前端模式;
  • 整体是一体化的东西,例如OTA、WDT等这些功能都默认内置。

在 i.MX RT1052开发板上搭建PersimM环境

在i.MX RT1052开发板上运行PersimM,首先需要一份PersimM的固件。因为整体是一体化的,这份固件分成了两部分:

  • bootloader
  • firmware

bootloader会用于后续的firmware固件升级,而firmware是后续真正需要执行,并展示UI的固件。OTA的过程实际上也是如此,先本地有保存需要更新的固件;然后重启,重新启动时,bootloader才会去把要更新的固件更新/展开到flash上,覆盖要运行的固件。

硬件环境搭建

下面我们以*火的i.MXRT1052开发板为例,说明如何搭建好PersimM的硬件环境。在连接好板子与屏幕后,还需要连接3个接口: USB转串口、USB-OTG1和仿真器。

柿饼M3.png
为了确保硬件已连接上PC,打开设备管理器,查看是否有对应串口和RTT Win USBRTT Win USB在Win10环境下是免驱的,但在Win7环境下要安装RT-Thread提供的指定驱动包。
柿饼M4.png

当硬件环境搭建完毕后,接下来我们就可以开始烧写bootloader和firmware了

烧写bootloader

请使用bootloader的工程,用Keil MDK打开,然后直接点击烧写按钮(不是编译然后再烧写),bootloader固件就会被烧写到开发板flash中。

  • 选择正确的烧写算法:点击菜单栏->Flash->Configure Flash Tools...,在弹出框中点击Debug->Setting,在后续弹出框中的Flash Download栏中,选择Erase full chip,并选择指定算法文件。


柿饼M5.png
2开始烧写工程,点击菜单栏->Flash->Download。
3在Build Output栏中确认工程是否烧写完毕。
柿饼漏补6.png
bootloader烧写完毕后,可以通过putty或者其他串口助手打开USB串口(Connection Type设为Serial,Speed设为115200),串口会输出如下信息:
柿饼M6.png
烧写firmware

当开发板中已经烧写了bootloader就可以按照OTA升级固件的模式来升级固件,过程如下:

  • 重启开发板,在串口终端中会显示出bootloader的启动信息,并有倒计时的计数,在倒计时计数跳到0之前,在串口中随意输入一个按键,bootloader会停下来等待命令。


柿饼M7.png
2.此时在PC上,我们打开 配置工具,然后在固件更新中,选择具体要升级的固件,点击升级。它就会把固件推送到开发板上,自动重启,然后完成bootloader更新固件的工作。
柿饼M8.png
3.升级的过程可以在串口终端上看到更新固件的进度。
柿饼M9.png
4.因为这个固件主要是针对屏的,所以当固件烧写完毕后,还需要配置下屏参数。配置参数时,需要设备运行firmware,不能停留在bootloader。打开配置工具,修改LCD参数,配置请与下表保持一致。配置完成后,点击更新数据。     
柿饼M10.png
烧写firmware完毕后,屏幕上就会显示出RT-Thread的logo,之后我们就可以开始使用Persimmon UI了。
柿饼M11.png
上位机设计器介绍

从PersimM开始,我们有了一份专用于UI界面设计的设计工具。在PersimmonUI文件夹下,双击执行PersimmonUI.exe可执行文件,点击菜单文件->新建->新建工程,会询问你的工程名称,路径以及分辨率大小等信息,例如按照下述填写的:

柿饼M12.png

例如这里的分辨率,*火开发板上的是800x480,我们选择800x480。创建出工程后,它会迅速询问是否创建一个页面(page1),默认选择确认,将会展现第一个设计页面。

当第一个设计页面创建后,整个PersimmonUI工具显示具体如下:

柿饼M13.png

设计器各区域说明:

  • 工具箱:内含基本控件,可通过鼠标操作,在page中新增对应的基本控件。
  • 资源库:可添加字体和图片资源。
  • 布局工具栏:辅助设定page中所有控件的布局。
  • UI设计区域:显示并设定UI的整体布局。
  • 工程管理器:通过树状结构图显示当前工程内所含所有文件
  • 控件属性栏:显示或设定控件的基本属性。

在这第一个设计页面上,我们简单的拖动一些控件,例如最简单的:”Hello World” 以及 “OK” 按钮:

柿饼M14.png

其中,选中Button,在布局工具栏中点击了水平居中和垂直居中,它自动对齐到屏幕中心。选中Label,可以在属性栏—“文本对齐”中选择MiddleCenter以中间对齐的方式,同时在布局工具栏中选择水平居中。

上位机设计器下载

当我们制作完工程后,可以通过下述方法把这个界面下载到板子上运行,看看效果如何。

柿饼M15.png
  • 查看设备连接状态,确保通过下图中设备连接状态栏中显示设备已连接,
  • 点击菜单 “下载—>下载”,把工程下载至设备中。可以通过输出栏,查看下载状态。
  • 重启设备:按下设备上的重启按钮。

当设备重启后,设备未更新界面,请确认配置启动时的资源目标路径与PersimmonUI下载路径是否一致。下载路径可以在PersimmonUI的输出栏中查看。
当资源目标路径与PersimmonUI下载路径不一致时,请修正配置工具中资源配置的设定或PersimmonUI中下载->下载选项的设定,使配置启动时的资源目标路径与PersimmonUI下载路径保持一致。

柿饼M16.png
实际效果 柿饼M17.png

本期分享就到这里了





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

55

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2018-8-7
在线时间
55 小时
 楼主| 发表于 2018-9-7 14:26:48 | 显示全部楼层
有问题的小伙伴可以进群交流:
论坛交流群917.jpg


回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-10-7
在线时间
6 小时
发表于 2019-1-11 17:39:19 | 显示全部楼层
事件代码是用js编写的,怎么调用用C写的函数??
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-5-23
在线时间
6 小时
发表于 2019-4-13 10:49:29 | 显示全部楼层
GUI柿饼 支持的硬件有哪些?基本应将要求是什么?STM32F1/F4能使用吗?
回复 支持 反对

使用道具 举报

55

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2018-8-7
在线时间
55 小时
 楼主| 发表于 2019-5-24 17:32:45 | 显示全部楼层
wxluan 发表于 2019-1-11 17:39
事件代码是用js编写的,怎么调用用C写的函数??

不用管  我们有一个图形化的设计器  把图片素材上传上去用js写一些动效布局,ok以后直接一键下载到板子就可以
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-6-2
在线时间
4 小时
发表于 2019-6-8 12:04:32 | 显示全部楼层
撒大噶
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-11
在线时间
16 小时
发表于 2020-2-17 16:58:47 | 显示全部楼层
请问哪里可以下载bootloader和firmware啊?
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2019-11-7
在线时间
6 小时
发表于 2020-2-21 15:06:02 | 显示全部楼层
Fillmore 发表于 2019-5-24 17:32
不用管  我们有一个图形化的设计器  把图片素材上传上去用js写一些动效布局,ok以后直接一键下载到板子就 ...

persimmpn.png

我在使用Persimmon UI Builder测试时,点击“运行”跳出窗口,提示“simulator.exe已停止工作”是咋回事,系统提示故障模块在atioglxx.dll,系统为win7家庭版 x64,CPU为AMD A10,还望帮忙解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-10 22:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表