15 Star 110 Fork 26

gzbkey / LingDongGUI

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
03 porting.md 5.41 KB
一键复制 编辑 原始数据 按行查看 历史
gzbkey 提交于 2024-05-17 14:34 . 更新说明

移植

本文档以单片机为标准,说明移植过程

基于Keil的移植

安装好MDK-ARM,这里使用的版本是5.38。建议使用最新版本

移植前的准备

cmsis-5 和 cmsis-6 二选一

ℹ️ 关于github下载慢的问题
推荐使用Watt Toolkit加速

注意事项

  1. 使用cmsis-6,出现error: no member named 'IP' in 'NVIC_Type'

在keil的option选项,C/C++页面,Define项,加入宏定义IP=IPR(如有其他定义,注意使用英文逗号隔开)

如何使用源码安装pack

  1. 没有最新pack的情况下,git方式下载源码

  2. pack install配置界面中,选择manage local repositories

    packInstall

  3. 加入源码中的.pdsc文件

    localRepositories

配置keil pack

  1. 在lcd_project中加入arm-2d、perf_counter、DSP、CMSIS、ldgui keil中选择Project -> Manage -> Run-Time Environment

    keilPackSelect

  2. 选择ac6编译器,并且选择gnu11

    ac6Setting

  3. 如果使用ac5编译器,则需要选择c99和gnu支持,但是不建议使用ac5

    ac5Setting

  4. 确保keil的CMSIS版本不得低于5.7.0,查看方式,Project -> Manage -> Select Software Packs

    cmsisVersion

  5. 树目录中的Acceleration,找到arm_2d_cfg.h

    编辑器的左下角选择 Configuration Wizard,进入图形配置界面,配置Extra下的colour depth(默认为16位色,一般无需修改)

  6. ldConfig配置 (重要)

    • ldConfig.c中的ldCfgTouchGetPoint函数是触摸接口,需要根据用户实际触摸驱动进行对接

    • ldConfig.h可以使用keil的图形界面方式进行配置

    • 如果不使用打印功能,请务必将USE_LOG_LEVEL配置为LOG_LEVEL_NONE

    • 补全ldConfig.c中的函数Disp0_DrawBitmap

      configGui

  7. 测试arm-2d的demo

    将ldConfig.h中的 DISP0_CFG_DISABLE_DEFAULT_SCENE 设置为0

    main.c中加入代码

    #include "arm_2d.h"
    #include "arm_2d_disp_adapters.h"
    #include "perf_counter.h"
    
    __attribute__((used))
    void SysTick_Handler(void)
    {
    }
    
    int main(void) 
    {
        system_init();     // 包括 LCD 在内的系统初始化
    
        init_cycle_counter(false);
    
        arm_irq_safe
        {
            arm_2d_init(); // 初始化 arm-2d
        }
    
        disp_adapter0_init();
        while(1)
        {
            disp_adapter0_task();
        }
    }
  8. 运行效果

    arm2d-demo

ℹ️ 出现Undefined symbol错误,请勿勾选microLib
如果硬要勾选microLib,编译后,提示找不到__aeabi_h2f 、__aeabi_f2h,请升级编译器(安装新版本keil)
  1. 假设用户文件目录为user,则将createUiFile.py复制到user目录

    pack文件也带该脚本,在keil安装目录下,参考路径:Keil_v5\Packs\gzbkey\LingDongGUI\版本号\tools

  2. 运行createUiFile.py(自动生成),输入需要生成的页面名称。如果需要同时生成多个页面,则直接编辑pageList.txt,在运行脚本,输入回车即可自动生成

  3. 将文件导入项目中,main.c中添加页面文件的头文件

  4. 在main函数中使用宏定义LD_ADD_PAGE,设置页面列表

    #include "uiHome.h"
    #include "uiZigbee.h"
    #include "uiWifi.h"
    
    int main(void)
    {
        sysInit();
    
        LD_ADD_PAGE(uiHome);//Home页面序号为0
        LD_ADD_PAGE(uiZigbee);//Zigbee页面序号为1
        LD_ADD_PAGE(uiWifi);//Wifi页面序号为2
    
        arm_irq_safe {
            arm_2d_init();
        }
    
        disp_adapter0_init();
    
        arm_2d_scene0_init(&DISP0_ADAPTER);
    
        while(1)
        {
            disp_adapter0_task();
        }
    }

使用外部NOR

  1. ldConfig.h中USE_VIRTUAL_RESOURCE = 1
  2. ldConfig.c中__disp_adapter0_vres_read_memory添加读取nor的函数

关于程序体积

  • 请善用keil的优化等级

C
1
https://gitee.com/gzbkey/LingDongGUI.git
git@gitee.com:gzbkey/LingDongGUI.git
gzbkey
LingDongGUI
LingDongGUI
master

搜索帮助