0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行

ZLG致远电子 2023-12-07 12:08 次阅读

AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植到其它平台。

搭建Linux平台交叉编译环境

在上一篇文章我们介绍了使用AWTK开发简单的应用并在PC上模拟运行,本篇文章就来介绍一下怎么让应用程序运行在嵌入式Linux平台上。

1. 准备交叉编译环境

交叉编译通常在PC的Ubuntu上进行,准备对应板子的交叉编译工具链、AWTK SDK(awtk与awtk-linux-fb)、应用工程(应用需提前在AWTK Designer上打包资源)。SDK版本需要配套,否则会出现编译不通过或运行异常问题,具体根据AWTK应用程序所依赖的SDK版本选择,获取SDK有三种方式:

  1. AWStudio安装目录下的Installer文件夹自带的SDK;推荐
  2. 板子供应商提供的SDK,可能与应用依赖版本不兼容,需找供应商更新SDK;
  3. Github上最新版的SDK,要求应用使用最新版awtk开发,但最新版SDK未经测试,可能存在BUG。

第一种和第三种方式需要自行配置awtk_config.py,配置方法见下面小节;第二种供应商一般会配置好,或者有专门的配置教程可以参考。

将工具链、SDK和应用拷贝到Ubuntu以下路径,SDK与应用需放在同一级目录:

工具链:/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/
SDK与应用:
/home/user/
|-- awtk/
|-- awtk-linux-fb/
|--awtk-hello-demo/

2.配置交叉编译工具链路径

将交叉编译工具解压到Ubuntu环境内,接着打开awtk-linux-fb目录的awtk_config.py,找到TOOLS_PREFIX参数配置工具链的路径。配置tslib则需修改TSLIB_LIB_DIR与TSLIB_INC_DIR参数。# awtk_config.py
TSLIB_LIB_DIR='/opt/tslib/lib'
TSLIB_INC_DIR='/opt/tslib/include'
TOOLS_PREFIX='/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-'

配置设备可以到awtk-linux-fb/awtk-port/main_loop_linux.c修改,下图分别对应着Framebuffer、触摸屏、键盘和鼠标等设备配置。

我们可以通过"hexdump /dev/input/xx" 命令识别正确的触摸或鼠标设备文件名。

394e3a26-94b6-11ee-9788-92fbcf53809c.png

图1配置设备名称

编译打包并运行应用程序

1. 编译awtk

在Ubuntu打开awtk-linux-fb目录并输入scons命令编译awtk。

2. 编译应用程序

同样在awtk-linux-fb目录输入命令scons APP=../awtk-hello-demo,“APP=”后面为应用程序相对路径。

提示“scons: done building targets.”代表编译成功,若编译失败考虑SDK版本不配套或awtk_config.py中工具链路径设置不正确等情况。

3. 发布并运行应用程序

在提示编译成功之后,还需要执行下面命令生成realease文件夹。

./release.sh ../awtk-hello-demo/res demo

将release文件夹通过scp或其它工具将其拷贝到板子上,并在板子上运行命令:./release/bin/demo若提示can't load library 'xxx.so',需添加动态库查找路径,在板子控制台输入export LD_LIBRARY_PATH=so所在文件夹的路径,再运行应用即可。

新版AWTK SDK配置与编译方式

若使用Github最新版的SDK,可以使用另外一种配置与编译方式,这种方式可以避免了在一堆配置里面寻找配置项的麻烦。

1. 配置交叉编译工具链路径

在awtk-linux-fb目录创建名为awtk_config_define.py的文件,将TOOLS_PREFIX等参数及对应的路径写入该文件中。awtk_config_define.py还可以由脚本生成并支持修改其它参数,具体可以看最新版awtk-linux-fb的README文档。

2. 编译awtk

在Ubuntu打开awtk-linux-fb目录并输入scons命令编译awtk。

3. 编译与发布应用

去到应用程序目录下,使用scons LINUX_FB=true命令编译应用。接着输入python ./scripts/release.py生成release文件夹。

将release文件夹通过scp或其它工具将其拷贝到板子上,并在板子上运行命令:

./release/bin/demo

链接错误解决思路

若在编译过程中遇到‘undefined symbol’错误提示,需检查awtk_config.py脚本OS_LIBS是否添加链接库,OS_CPPPATHOS_LIBPATH是否包含头文件与库文件搜索路径。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304781
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209318
  • awtk
    +关注

    关注

    0

    文章

    44

    浏览量

    226
收藏 人收藏

    评论

    相关推荐

    AWTK的特点

    能支持Linux、MacOS、iOS、Android操作系统,还能支持Windows操作系统、WEB以及各种小程序,可以说是一个全能的嵌入式GUI引擎。AWTK的跨
    发表于 11-04 07:57

    嵌入式Linux应用程序开发标准教程

    嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Lin
    发表于 09-29 17:02 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>应用程序</b>开发标准教程

    基于嵌入式Linux应用程序开发详解

    基于嵌入式Linux应用程序开发详解
    发表于 10-25 14:17 12次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>应用程序</b>开发详解

    嵌入式Linux应用程序例程

    嵌入式Linux应用程序例程(arm嵌入式开发步骤)-嵌入式Linux
    发表于 07-30 13:23 16次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>应用程序</b>例程

    嵌入式linux编译 ko,嵌入式linux:编译linux驱动模块

    嵌入式系统应用中,嵌入式linux是非常重要的一个方面,而linux驱动编译又是嵌入式
    发表于 11-01 16:31 9次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>编译</b> ko,<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>:<b class='flag-5'>编译</b><b class='flag-5'>linux</b>驱动模块

    嵌入式linux一个简单的hello程序编译运行示例

    嵌入式linux一个简单的hello程序编译运行示例由于嵌入式的cpu速度比较慢,所以
    发表于 11-01 16:56 9次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>一个简单的hello<b class='flag-5'>程序</b><b class='flag-5'>编译</b>及<b class='flag-5'>运行</b>示例

    《从实践中学嵌入式Linux应用程序开发》pdf完整版资源分享

    《从实践中学嵌入式Linux应用程序开发》内容简介: 《从实践中学嵌入式linux应用程序开发》
    发表于 11-01 17:07 0次下载
    《从实践中学<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>应用程序</b>开发》pdf完整版资源分享

    嵌入式Linux应用程序开发-(1)第一个嵌入式QT应用程序

    开发环境,请参考以下帖子: 嵌入式Linux开发环境搭建-(5)安装和配置Qt Creator开发工具目标:了解 Qt Creator 如何构建和编译工程,如何把应用程序...
    发表于 11-01 17:21 16次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>应用程序</b>开发-(1)第一个<b class='flag-5'>嵌入式</b>QT<b class='flag-5'>应用程序</b>

    如何用AWTK和AWPLC快速开发嵌入式应用程序

    AWPLC 是 ZLG 自主研发的 PLC 系统(兼容 IEC61131-3),本文用一个简单的温度控制系统,来演示如何用 AWTK 和 AWPLC 快速开发嵌入式应用程序
    的头像 发表于 09-26 11:46 1394次阅读

    【产品应用】用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (3)- 定时器

    AWPLC是ZLG自主研发的PLC系统(兼容IEC61131-3),本文用一个用定时器实现的走马灯程序,来演示如何用AWTK和AWPLC快速开发嵌入式应用程序。背景
    的头像 发表于 11-02 10:02 738次阅读
    【产品应用】用 <b class='flag-5'>AWTK</b> 和 AWPLC 快速开发<b class='flag-5'>嵌入式</b><b class='flag-5'>应用程序</b> (3)- 定时器

    0开始创建AWTK应用程序】开发及调试环境搭建

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何0开始创建AWTK
    的头像 发表于 11-11 10:00 663次阅读
    【<b class='flag-5'>从</b><b class='flag-5'>0</b><b class='flag-5'>开始创建</b><b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】开发及调试环境搭建

    0开始创建AWTK应用程序创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何0开始创建AWTK
    的头像 发表于 12-01 08:24 493次阅读
    【<b class='flag-5'>从</b><b class='flag-5'>0</b><b class='flag-5'>开始创建</b><b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】<b class='flag-5'>创建</b><b class='flag-5'>应用程序</b>并在模拟器<b class='flag-5'>运行</b>

    AWTK开源智能串口屏方案】HMI端程序移植编译运行

    本篇文章介绍一下AWTK开源智能串口屏方案的串口屏端(即HMI端)的编译运行步骤,并介绍如何将HMI端移植到Linux或STM32平台或RT
    的头像 发表于 01-18 08:24 912次阅读
    【<b class='flag-5'>AWTK</b>开源智能串口屏方案】HMI端<b class='flag-5'>程序</b>移植<b class='flag-5'>编译</b>及<b class='flag-5'>运行</b>

    AWTK开源智能串口屏方案】MCU SDK使用与编译运行

    本篇文章将介绍AWTK-HMI中的MCU端开发方法,包括MCUSDK常用API的说明、使用流程及如何编译Linux和STM32平台。引言:AWTK
    的头像 发表于 02-19 12:11 1195次阅读
    【<b class='flag-5'>AWTK</b>开源智能串口屏方案】MCU SDK使用与<b class='flag-5'>编译</b><b class='flag-5'>运行</b>

    0开始创建AWTK应用程序编译应用到RTOS平台

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何0开始创建AWTK
    的头像 发表于 03-21 08:23 606次阅读
    【<b class='flag-5'>从</b><b class='flag-5'>0</b><b class='flag-5'>开始创建</b><b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】<b class='flag-5'>编译</b><b class='flag-5'>应用到</b>RTOS<b class='flag-5'>平台</b>