本次测评严格按照开箱-->上电-->跑Demo-->SDK二开进行。
一句话结论:板子性能强悍,开发环境友好,开发资料完整。
一、开箱:
首先感谢面包板举行本次活动,也感谢ArtInChip技术人员的大力支持,谢谢。
参加活动后经过漫长等待终于拿到了这块名为:D13x KunLun Pi V1.0的开发板,正反面靓照如下图所示,整体颜值8分,美中不足的是本次开发板没有搭配WiFi模块、喇叭、摄像头等外设,导致可玩性略有打折:
板子主要参数和典型应用领域如下:
- 开发板主控为 D133CBS (8M PSRAM),可 Pin to Pin 兼容 D133CCS(16M PSRAM)
- 片上 1MB SRAM,片上 8MB PSRAM(视主控型号决定)
- NOR FLASH 16MB,可兼容 NAND FLASH
- RTC 实时时钟
- 1 x USB2.0 Device 烧录,支持 OTG
- 1 x UART0 串口打印,1 x JTAG 单步调试
- 1 x TF-Card 接口
- 标配 4.3 寸 RGB 显示屏,支持通过排针扩展 LVDS、MIPI、I8080、QSPI 屏等接口
- 配电容式触摸屏,支持电阻式触摸屏
- 1 x 喇叭;1 x DVP 摄像头接口
- 1 x RS485;1 x UART TTL,可兼容 RS232
- 1 x SDIO WIFI
- 5V 单电源供电(Type-C 接口)
- 应用于工业 HMI、 网关、串口屏等泛工业和智慧家居领域。
二、上电:
板子支持USB Type-C数据线供电,连到充电头或电脑上就可以直接上电了,上电后的界面如下图所示,屏幕显示清晰,触摸反应流畅:
三、跑Demo:
跑demo之前先找资料,ArtIn Chip官网提供了完整的资料库,链接:AIC 文档中心快速入门 (artinchip.com),首先参考文档搭建开发环境,本开发板的开发环境主要用到了以下软件和技术:
- Scons自动化构建工具
- GCC编译工具链
- Python运行环境
好在ArtIn Chip为我们准备了打包好的环境,在windonws环境下直接
git clone https://gitee.com/artinchip/luban-lite.git
下来就可以直接开搞了,由于luban-lite是 ArtInChip 基于 RT-Thread 系统深度优化的 RTOS SDK,所以本次测评也用它了。
环境准备好后,就可以可按照教程一步一步往下进行了,下面是几张编译、烧录的截图,供初学者参考:
选择13进行编译,编译完成后如下所示:
之后用AiBurn进行烧录:
烧录完成后板子会自动重启并显示如下界面,官方SDK携带挺多demo,但经测试很多都不能用,只有这个功能最完整:
四、SDK二开:
咱也不能一直跑厂家的demo,这样就失去了DIY的意义了,还是得搞点自己的东西,接下来进入重头戏,SDK二开,这里提供一个简单的二开流程,抛砖引玉:
二开的话还需要其它几个工具:
- Eclipse IDE,方便修改编辑代码
- SequareLine Studio,LVGL的官方推荐开发环境,功能强大且对个人开发者免费。
本次二开是在第三节demo的基础上加入一个子页面,上面的demo跑起来后可以发现第二页和第三页的的图标点了之后都没反应,这是因为厂家没有提供对应的实现代码,我们刚好可以以此为基础实现自己的页面,下面详细说明步骤:
- 先后执行scons --target=eclipse和scons --target=eclipse_sdk此操作用于生成eclipse工程,方便添加修改代码,导入eclipse之后如下图所示:
NULL表示没有相应回调函数,故相应页面无法显示
- 下载安装SequareLine Studio用来编辑界面,安装完成后新建一个工程,设置好屏幕参数,本次示例只显示一个Label:
- 然后使用SequareLine的Export功能将界面导出来代码,目录结构如下:
由于不需要那么复杂的功能,可以删掉ui_helpers等文件,用来精减代码,精减之后代码包含两个文件,内容如下:
<头文件>
#ifndef _SHOW_DATA_UI_H
#define _SHOW_DATA_UI_H
#ifdef __cplusplus
extern "C" {
#endif
#include "lvgl/lvgl.h"
#include "aic_ui.h"
// SCREEN: ui_datashow
lv_obj_t* ui_datashow_screen_init(void);
//extern lv_obj_t * ui_datashow;
//extern lv_obj_t * ui_lbData;
//extern lv_obj_t * ui_Label2;
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif
<源文件>
#include "ui_datashow.h"
static void print_ui_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);
if (code == LV_EVENT_SCREEN_UNLOAD_START) {;};
}
lv_obj_t* ui_datashow_screen_init(void)
{
lv_obj_t * ui_datashow = lv_obj_create(NULL);
lv_obj_clear_flag(ui_datashow, LV_OBJ_FLAG_SCROLLABLE); /// Flags
lv_obj_t * ui_lbData = lv_label_create(ui_datashow);
lv_obj_set_width(ui_lbData, LV_SIZE_CONTENT); /// 1
lv_obj_set_height(ui_lbData, LV_SIZE_CONTENT); /// 1
lv_obj_set_x(ui_lbData, -64);
lv_obj_set_y(ui_lbData, -22);
lv_obj_set_align(ui_lbData, LV_ALIGN_CENTER);
lv_label_set_text(ui_lbData, "D13x KunLun Pi Testing by Troy ......");
lv_obj_add_event_cb(ui_datashow, print_ui_cb, LV_EVENT_ALL, NULL);
return ui_datashow;
}
将这两个文件添加到工程中,并在navigator_ui.c中添加相应实现后编译工程并烧录,结果如下所示,至此简单的二开完成,各位伙伴可根据自己的需求进行更复杂的开发:
至此本次简单测评已经完成,接下来需要根据需要开发具体项目应用,如果想进一步学习,建议从以下资料入手:
- RT-Thread文档及源码
- 平头哥E907开发文档
- LVGL文档