Skip to content

10. 把应用部署到嵌入式开发环境

本章导读:

AWTK已经在多个嵌入式平台做好了移植,并提供了相应的模板工程,如:嵌入式Linux、AWorksOS、RT1052裸系统以及STM32裸系统等。AWTK适用于嵌入式领域,本文将简述如何将AWTK应用部署到嵌入式开发环境中。

10.1 把应用部署到嵌入式Linux

AWTK应用程序在Windows调试好之后,部署到嵌入式Linux平台非常方便,只需要简单的几个步骤就可以了,下面将介绍如何将自己的应用移植到嵌入式Linux平台上。

(1)下载AWTK整合包

在AWTK官网下载最新的 AWStudio后,可以在AWStudio/AWTK/SDK中可以找到 awtk 目录与 awtk-linux-fb 目录 。将这两个目录拷贝到Linux系统目录中(如:/home/user):

bash
/home/user/
      |-- awtk/
      |-- awtk-linux-fb/
      |-- user_apps/

(2)编辑 awtk_config.py 设置工具链的路径

python
TSLIB_LIB_DIR='/opt/28x/tslib/lib'       #tslib目录
TSLIB_INC_DIR='/opt/28x/tslib/include'   #tslib目录
TOOLS_PREFIX='/opt/28x/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-linux-' #交叉编译链工具目录(用户视自己情况填写)

如果不需要 tslib,不定义 TSLIB_LIB_DIR 和 TSLIB_INC_DIR 即可。如:

#TOOLS_PREFIX=''
#TSLIB_LIB_DIR=''

在OS_FLAGS中加入需要的编译参数,例如CPU支持硬浮点,则开启"-mfloat-abi=hard ",如下图所示:

(3)修改输入设备文件名

修改/home/user/awtk-linux-fb/awtk-port/main_loop_linux.c文件中的设备文件名:

c
/* framebuffer */
#ifndef FB_DEVICE_FILENAME
#define FB_DEVICE_FILENAME "/dev/fb0"
#endif /*FB_DEVICE_FILENAME*/

/* tslib */
#ifndef TS_DEVICE_FILENAME
#define TS_DEVICE_FILENAME "/dev/input/event0"
#endif /*TS_DEVICE_FILENAME*/

/* 键盘 */
#ifndef KB_DEVICE_FILENAME
#define KB_DEVICE_FILENAME "/dev/input/event1"
#endif /*KB_DEVICE_FILENAME*/

/* 鼠标 */
#ifndef MICE_DEVICE_FILENAME
#define MICE_DEVICE_FILENAME "/dev/input/mouse0"
#endif /*MICE_DEVICE_FILENAME*/

在有些平台下,如果设置#define MICE_DEVICE_FILENAME "/dev/input/mice",会出现触摸不灵的问题。通过hexdump /dev/input/mice命令发现,按下触摸屏或操作鼠标都会打印信息,即/dev/input/mice会同时接收触摸和鼠标事件。可通过"hexdump /dev/input/xx" 命令选择正确的鼠标设备文件名。

(4)编译 awtk

在进行应用程序的编译前,需要先编译 awtk,进入 awtk-linux-fb 目录后执行下面的命令对 awtk 进行编译

bash
cd /home/user/awtk-linux-fb
scons

(5)编译应用程序

将要部署的应用(如:HelloDesigner-Demo,示例程序可以在AWStudio中下载)复制到user_apps目录下。进入awtk-linux-fb目录后执行下面的命令,目标文件将输出到awtk-linux-fb/bin目录下:

bash
cd /home/user/awtk-linux-fb
scons APP=../user_apps/HelloDesigner-Demo

(6)打包应用程序

编译完成后,还需要把应用程序和资源文件打包在一起,才能下载到板子上运行,执行下面的命令,生成压缩包release.tar.gz:

bash
cd /home/user/awtk-linux-fb
./release.sh ../user_apps/HelloDesigner-Demo/res demo

(7)运行应用程序

把 release.tar.gz上传到开发板并解压,然后通过ssh或串口调助手让板子运行:

bash
./release/bin/demo

如果想具体了解更多嵌入式Linux移植方面的信息,请看awtk-linux-fb/README.md。

10.2 把应用部署到AWorksOS

AWTK应用程序在Windows调试好之后,部署到AWorksOS平台非常方便,只需屏蔽工程中自带的示例代码文件(通常名字是xxx_demo),然后往工程中添加用户自己的应用代码就可以了,下面以RT1052平台为例介绍如何将自己的应用移植到AWorksOS平台上。

广州致远电子有限公司官网下载最新的M1052核心板(RT1052)光盘资料,里面包含自带移植好的AWTK Eclipse工程和AWTK Keil工程。

在使用Designer制作UI界面时,默认使用全字库,可能会导致嵌入式开发环境编译时空间不足。用户应根据应用的实际需求,在Designer中对字库进行裁剪,重新打包后再部署到嵌入式开发环境中。

10.2.1 使用Eclipse构建应用

找到AWorksOS SDK开发包下的aw_m1052_disk-2.0.0或aw_easyarmrt1052_disk-2.0.1目录,按下面步骤使用Eclipse把自己的应用添加到AWTK工程中,具体操作如下:

1. 打开工程

(1)打开Eclipse(如双击"eclipse_neon_2016q3_x86/startup_eclipse_neon.bat),然后选择工程存放目录,如:"E:/mytools/eclipse/awtk_demo",详见下图:

(2)选择菜单File → Import后,详见下图:

(3)选择"aw_m1052_disk-2.0.0/examples/application/app_awtk_demo/prj/m1052_awtk"工程所在目录,详见下图:

(4)如果最后显示下图,则表示开发环境已经搭建好了。

2. 把应用加入工程

(1)屏蔽demos示例

由于m1052_awtk工程已经自带demos应用示例,但本工程同时只能运行一个AWTK应用。如果想运行自己的应用程序,需要将demos屏蔽掉,按下图所示操作:

  • 选择Eclipse工程里的demos文件夹,弹出右键菜单
  • 选择Resource ConfigurationsExclude from Build...
  • 点击"Select All"选中所有配置

(2)把应用加入工程

例如,需要编译HelloDesigner-Demo,将HelloDesigner-Demo文件夹复制到:aw_m1052_disk-2.0.0-test/examples/application/app_awtk_demo/src/user_apps目录下,然后刷新工程(右键 m1052_awtk → Refresh),最终如下图所示。

(3)编译工程

右键"m1052_awtk"后,按下图所示操作,编译工程。

(4)下载并调试工程

板子连接好仿真器并上电后,按下图所示操作,调试工程。

10.2.2 使用Keil构建应用

找到AWorksOS SDK开发包下的aw_m1052_disk-2.0.0或aw_easyarmrt1052_disk-2.0.1目录,按下面步骤使用Keil把自己的应用添加到AWTK工程中,具体操作如下:

(1)用Keil打开easy_arm_rt1052.uvprojx工程,目录如下:

bash
examples/application/app_awtk_demo/prj/easy_arm_rt1052_awtk_mdk

(2)屏蔽awtk-demo示例

在easy_arm_rt1052工程中,默认提供了一个awtk-demo示例。如果需要将自己的应用添加到该工程,先屏蔽awtk-demo文件夹,可按下图所示操作。

(3)把应用加入工程

例如,将HelloDesigner-Demo中的源代码(通常在src目录下),添加到这个Keil工程中,可按下图所示操作。

(4)编译工程

添加好应用后,就可以编译工程了,可按下图所示操作。

10.2.3 如何升级AWTK

板卡原厂提供的Eclipse或Keil工程一般内置了指定版本的AWTK,为避免硬件不兼容的问题,我们不建议用户自行升级这个AWTK,你可以咨询板卡原厂提供最新的完整的SDK包。若用户仍然想自行升级,需要自己把AWTK代码移植到目标平台上并编译,详细请参考《AWTK移植及裁剪指南》。

10.3 把应用部署到其他平台

AWTK已经被移植到多个平台,并提供了对应的Keil的工程,例如:

  • 用于RT1052裸系统的awtk-easyarm-rt1052-raw工程
  • 用于STM32裸系统的awtk-stm32f429igtx-raw、awtk-stm32f767igtx-raw等工程

以上这些工程都可以在AWTK的官网或者GitHub找到。如果想把自己的应用添加到这些Keil工程上编译运行,方法都大同小异,即先屏蔽工程中自带的示例代码文件(通常名字是xxx_demo),然后往工程中添加用户自己的应用代码及资源文件。应用代码和资源文件通常是指AWTK Designer工程中src文件夹下的所有代码,其中二进制资源文件会以头文件的形式包含进来。

AWTK Designer默认使用全字库,可能会导致嵌入式开发环境编译时报告空间不足的错误。用户应根据应用的实际需求,对字库进行裁剪,重新打包后再部署到嵌入式开发环境中。