857|2

441

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【兆易GD32H759I-EVAL】AWTK 移植 [复制链接]

  本帖最后由 TL-LED 于 2024-6-17 10:01 编辑

学习移植AWTK到开发板。

 

一、AWTK

 

1.1、介绍

 

    AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎,支持跨平台同步开发,一次编程,到处编译,跨平台使用。

    

1.2、官网

官网地址:https://www.zlg.cn/index/pub/awtk.html

 

1.3、AWTK资源

 

二、移植

 

2.1、下载AWTK源码

下载地址:

链接已隐藏,如需查看请登录或者注册

 

2.2、项目中添加源码

移植需要一个可以驱动LCD屏幕的项目工程,我使用之前帖子驱动LCD屏幕的工程。

 

2.2.1、复制源码文件到工程

将AWTK源码复制项目midwares文件夹下

 

2.2.2、添加文件到项目工程

添加文件到项目工程,这部分比较费时间,可以参考官网的例程,官网有移植好的项目工程源代码

链接已隐藏,如需查看请登录或者注册

例程是将源代码添加到一个文件夹下,我是分类添加,其实是一样的,根据个人的习惯。

awtk-port文件,这个文件可以到官网移植好的项目工程中复制,驱动移植主要是在这里修改。

 

2.2.3、添加头文件路径

 

3.2.4、设置

添加HAS_AWTK_CONFIG和--gnu

去掉Use MicroLIB

 

三、修改代码

 

3.1、main_loop_gd32_raw.c

这里修改LCD驱动。

//main_loop_gd32_raw.c

#include "main.h"

#include "base/g2d.h"
#include "base/idle.h"
#include "base/timer.h"
#include "main_loop/main_loop_simple.h"

#include "lcd/lcd_mem_bgr565.h"
#include "lcd/lcd_mem_bgra8888.h"

extern uint8_t *online_fb_addr;
extern uint8_t *offline_fb_addr;

uint8_t platform_disaptch_input(main_loop_t* loop) {
  int x = 0;
  int y = 0;
  static int prev_key = 0;
	//待修改
  return 0;
}

lcd_t* platform_create_lcd(wh_t w, wh_t h) {
  return lcd_mem_bgr565_create_double_fb(w, h, online_fb_addr, offline_fb_addr);
}

#include "main_loop/main_loop_raw.inc"

 

LCD驱动方式详细的介绍可以参考官网的教程

有多种驱动方式,我这里使用双Framebuffer方式

 

3.2、platform.c

这里根据硬件的存储器来修改MEM。修改1ms的delay_1ms()函数。

#include "main.h"
#include "tkc/mem.h"
#include "base/timer.h"
#include "tkc/platform.h"
#include "platforms/common/sys_tick_common.inc"

uint64_t get_time_ms64() {
  return tk_sys_tick_get_tick64();
}

void sleep_ms(uint32_t ms) {
  delay_1ms(ms);
}

#define MEM2_ADDR (uint8_t*)0XC0000000 + 5 * 1024 * 1024
#define MEM2_MAX_SIZE 8 * 1024 * 1024

ret_t platform_prepare(void) {
  tk_mem_init(MEM2_ADDR, MEM2_MAX_SIZE);
	
  return RET_OK;
}

 

3.3、gd32h7xx_it.c

增加tk_sys_tick_inc(1)函数

#include "gd32h7xx_it.h"
#include "systick.h"
#include "FreeRTOS.h"
#include "task.h"

extern void tk_sys_tick_inc(uint32_t tick_period);

/*!
    \brief      this function handles SysTick exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void SysTick_Handler(void)
{
    delay_decrement();
	tk_sys_tick_inc(1);
}

 

3.4、main.c

#include "main.h"
#include "FreeRTOS.h"

#include "base/g2d.h"
#include "tkc/mem.h"
#include "base/lcd.h"
#include "lcd/lcd_mem_bgr565.h"

#define FB_ADDR (uint8_t*)0XC0000000
uint8_t *online_fb_addr = (uint8_t *)(FB_ADDR);
uint8_t *offline_fb_addr = (uint8_t *)(FB_ADDR + (480 * 272 * 2));
static uint8_t* s_framebuffers[2];


void cache_enable(void);
extern int gui_app_start(int lcd_w, int lcd_h);

int main(void)
{
	cache_enable();
	systick_config();
	init_usart(115200);
	gd_eval_lcd_init();
	return gui_app_start(480, 272);
}

void cache_enable(void)
{
    /* enable i-cache */
    SCB_EnableICache();

    /* enable d-cache */
    SCB_EnableDCache();
}

 

3.5、main.h

#ifndef __MAIN_H__
#define __MAIN_H__

#include "gd32h7xx.h"
#include "gd32h759i_eval.h"
#include "systick.h"
#include <stdio.h>
#include "stdlib.h"

#include "FreeRTOS.h"
#include "task.h"
#include "fun_task.h"


#include "led/led.h"
#include "usart/usart.h"
#include "gd32h759i_lcd_eval.h"

typedef signed char         i8;
typedef signed short        i16;
typedef signed int          i32;
typedef unsigned char       u8;
typedef unsigned short      u16;
typedef unsigned int        u32;
typedef unsigned long long  u64;

#endif 

 

四、创建测试界面

 

4.1、下载AWTK Designer软件

需要官网注册领取激活码,后面安装软件使用时需要使用,这部分参考官网教程。

 

4.2、创建GUI项目工程

 

4.3、在项目添加组件

放置一些测组件

 

4.4、打包文件

点击上界面的打包选项,生成项目文件

将这些文件复制到项目工程文件下面,并添加到项目

添加前需要修改生成文件中的main.c->win_main.c,项目中有main.c这里要重新命名。

 

五、测试

 

编译项目后,下载程序到开发板,运行如下:

 

 

最新回复

看到这么多的文件移植,挺辛苦的吧,这个看起来跟LVGL也差不多吧?  详情 回复 发表于 2024-6-20 07:31
点赞 关注
 
 

回复
举报

6992

帖子

11

TA的资源

版主

沙发
 
看到这么多的文件移植,挺辛苦的吧,这个看起来跟LVGL也差不多吧?

点评

应该差不多,没有深入测试,网上应用的资料不是很多,多是官网给出的例程。  详情 回复 发表于 2024-6-24 09:33
 
 
 

回复

441

帖子

3

TA的资源

纯净的硅(高级)

板凳
 
lugl4313820 发表于 2024-6-20 07:31 看到这么多的文件移植,挺辛苦的吧,这个看起来跟LVGL也差不多吧?

应该差不多,没有深入测试,网上应用的资料不是很多,多是官网给出的例程。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
决对好的绿色抓图软件,非常好用,

软件介绍:可抓全图,任一区域,软件输出多种格式,软件为中文版,大小为640K,

LM3S8962远程升级学习心得

这几天看了下LM3S8963远程升级的程序,觉得还是蛮有意思的,和大家分享一下。 首先,让我们看一个最基本的概念: 地址:0xE000 ...

冒死也要向大家推荐的两本书

59641 :congratulate: 59642 本帖最后由 37°男人 于 2011-2-8 14:22 编辑 ]

迅为i.MX6ULL终结者移植ssh服务安装测试

文章目录 1 基本文件的安装 2 生成 Key 文件,并安装 3 修改目标板密钥文件 4 测试 1 基本文件的安装 在文件系统busybox上 ...

蜜袋鼯 第⑨贴 基于RSL10的蜜袋鼯数据监测子系统-设计与实现

本帖最后由 justd0 于 2021-7-19 00:17 编辑 前言 先来回顾下,本项目的整体架构图如下。前面几个帖子,介绍了下运 ...

2021电赛D题基于互联网的摄像测量系统(D题)——双目视频测量系统

本帖最后由 bqgup 于 2021-11-5 19:39 编辑 一、电赛D题 571548 571549571550 二、双目视频系统物体运动轨迹 5 ...

工作之余还是要加强身体锻炼

刚刚进入社会,没有了约束自己的人,熬夜、吃吃喝喝,再加上不锻炼身体,体制越来越差,跑两步就喘得不行。 这跟以前上学的时 ...

使用Verilog给证件照换背景颜色

本帖最后由 1nnocent 于 2022-9-25 11:45 编辑 之前做图像缩放仿真验证时需要读取图片数据进行处理,vivado读取的是raw文件 ...

FPGA实现 MIPI DSI 4线720P

液晶屏概述 显示屏LCD MIPI DSI4 lane,支持分辨率720*1280,60HZ彩色显示。用于对接国产GOWIN的NR-9C的开发板和LATTICE ...

【STM32H7S78-DK】STM32H7S78启动流程详解(Keil版)

开发环境: IDE:MKD 5.38a STM32CubeMX: V6.12.0 开发板:STM32H7S78-DK开发板 MCU:STM32H7S7L8H6H 对 ...

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表