搭建Tiny4412的Qt交叉开发调试环境

发布者:心愿成真最新更新时间:2024-07-11 来源: elecfans关键字:Tiny4412  Qt 手机看文章 扫描二维码
随时随地手机看文章

前言

最近在学习Tiny4412下的Qt编程。第一步,首先得搭建好交叉开发调试环境。几经折腾之后,总算基本完成。兹整理一下期间的笔记,发到博客上,作为总结。也希望我入过的坑,其他人避免再入 。

另外提一点(也是事后查网才了解到的),目前业界流行Yocto/OpenEmbedded框架,很多厂商使用这个框架来构建分发开发板的BSP(包括kernel,rootfs,toolchain、gdb、库以及qt的库等),用户可以直接基于该BSP来搭建Qt交叉开发环境,从而免去自己搭建环境时所遇到的诸如依赖库缺失、toolchain版本不匹配等问题,节约了不必要的时间成本。相关案例非常多,“参考资料2~5”里列了几个例子(都未经验证,仅供参考)。

不过,Tiny4412好像还没有提供yocto的BSP,所以目前还没法体验,但Yocto估计是大趋势,有空要学习一下。

回到顶部(go to top)

一、实验环境

1.1 虚拟机环境

a) Vmware版本:Vmware Workstation 12.5.7

b) Ubuntu版本:Ubuntu 16.04.4 LTS(我用的是百问网JZ2440资料光盘_20180516中的版本,地址是:http://wiki.100ask.org/Download,然后找到:002_JZ2440资料光盘_20180516(免费) )

c) 内核版本:4.13.0

d) gcc版本:5.4.0

e) toolchain版本:

arm-linux-gcc 4.3.2

1.2 开发板环境

1.2.1 硬件

开发板:友善之臂tiny4412,底板:Tiny4412/Super4412SDK 1611,核心板:Tiny4412 版本号1412

1.2.2 软件

a) 内核版本(tiny4412光盘自带): linux-3.5-20170221

b) 根文件系统(tiny4412光盘自带): rootfs_qtopia_qt4-20160514

回到顶部(go to top)

二、具体过程

2.1 编译、安装qte-4.8.5

注:tiny4412的光盘里有已经编译好的target-qte-4.8.5-to-hostpc.tgz,但由于我的Ubuntu版本和友善在编译target-qte-4.8.5-to-hostpc.tgz时所使用的Ubuntu版本不一样,所以解压后,无法直接在qt-creator中使用(在点击build按钮后会报:The Qt version is invalid. Could not determine the path to the binaries of the Qt installation, maybe the qmake path is wrong?),只能从头开始编译。

把arm-qte-4.8.5-20131207.tar.gz 拷贝到开发机里,然后在mobaXterm串口终端执行以下命令:

tar xzvf arm-qte-4.8.5-20131207.tar.gz

cd arm-qte-4.8.5

./build.sh

注:第一次执行./build.sh时,报错:tslib functionality test failed。但重新执行./build.sh后,却又没再报这个错。原因不明,待查。

2.2 下载、编译、安装gdb-7.10,然后编译安装gdbserver

为什么选择这个版本?因为以前学韦东山嵌入式Linux培训三期摄像头监控项目时,曾经用gdb-7.10成功搭建过远程调试开发板的环境(其实那时选择7.10版本也是有点凭感觉Smile)。

2.2.1 下载、编译、安装gdb-7.10(下载地址:http://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.gz)

把gdb-7.10.tar.gz下载到开发机里(假设下载到/home/book/Downloads/),然后在mobaXterm串口终端执行以下命令:

tar xzvf gdb-7.10.tar.gz

cd /home/book/Downloads/gdb-7.10

mkdir build && cd build

../configure --target=arm-linux --prefix=/usr/local/arm-gdb-7.10 --with-python

注:可能还要加:--with-expat --includedir=/home/book/Downloads/expat-2.2.9/bin/include --libdir=/home/book/Downloads/expat-2.2.9/bin/lib,详见下文注释

make

make install

export PATH=$PATH:/usr/local/arm-gdb-7.10

(可以把这句话添加到/etc/environment或者~./bashrc,以保存对$PATH环境变量的修改)

注1:在对gdb-7.10进行configure时,要加入 --with-python选项(可能还要先下载安装python2.7-dev),否则在qt-creator里启动调试时,可能会报错:

        image

注2:如果configure加入--with-python选项后,报:

         checking for python2.7... no

         configure: error: python is missing or unusable

         解决办法是:先下载安装python2.7-dev:apt-get install python2.7-dev,安装完成后,可以执行 dpkg -l | grep python2.7-dev来验证是否安装成功        

注3:编译安装完gdb-7.10后,如果在qt-creator里启动调试时,在Application Output里报错:warning: Can not parse XML target description; XML support 
         was disabled at compile time,则要先下载、编译、安装expat(http://sourceforge.net/projects/expat/):

         ./configure --prefix=$PWD/bin

          mkdir bin

          make && make install

          然后重新编译、安装gdb-7.10(在configure时,还要加入以下选项:--with-expat --includedir=/home/book/Downloads/expat-2.2.9/bin/include   
          --libdir=/home/book/Downloads/expat-2.2.9/bin/lib –v)

注4:如果接下来执行make时报错:

         checking for libexpat... (cached) no

         configure: error: expat is missing or unusable

         解决办法是:删除gdb-7.10整个文件夹,然后重新解压gdb-7.10.tar.gz,编译、安装。

         原因是:

         为了加快速度,configure会把上次的检查结果作为一个cache变量(名字是ac_cv_libexpat)缓存到gdb/configure.cache中,而本次configure时,会先从

         这个文件中查该cache变量,如果找不到,才会真正去检查libexpat这个库是否存在。所以,应该清除这个cache文件,强制configure去执行真正的检查。

2.2.2 编译、安装gdbserver

在mobaXterm串口终端执行以下命令:

cd /home/book/Downloads/gdb-7.10/gdb/gdbserver

mkdir build && cd build

../configure --target=arm-linux  -host=arm-linux

make CC=arm-linux-gcc

完成之后,会在build目录下生成gdbserver可执行文件。把它拷贝到开发板的/usr/bin里(可以用ftp或者nfs,过程略):

2.3 把根文件系统拷贝解压到开发机上

把Tiny4412随机光盘中的rootfs_qtopia_qt4-20160514.tgz拷到开发机上(假设拷贝到/home/book/Downloads/friendly_arm/tiny4412/linux_rootfs/),然后执行:

tar xzvf rootfs_qtopia_qt4-20160514.tgz

2.4 下载、安装Qt-5.9.0(下载地址:https://download.qt.io/archive/qt/5.9/5.9.0/qt-opensource-linux-x64-5.9.0.run)

为什么选择这个版本?因为网上有很多成功案例,用这个版本搭建了交叉调试平台,有经验可借鉴。

把qt-opensource-linux-x64-5.9.0.run下载到开发机里,然后在mobaXterm串口终端执行以下命令:

chmod +x qt-opensource-linux-x64-5.9.0.run

./qt-opensource-linux-x64-5.9.0.run

然后按照安装向导的提示,一步步做即可(注:在“选择组件”这一步,把Qt5.9.0下面的所有组件都选上,保险起见)

2.5 打开qt-creator,进入Tools==>Options进行配置

2.5.1 添加device

image

image

image

image

image

image

image

image

image

2.5.2 添加Qt version

image

2.5.3 添加compiler

image

2.5.4 添加debugger

image

2.5.5 添加kit

image

2.5.6 添加环境变量,以支持触摸屏操作

方法1)修改开发板上的/etc/profile,(仿照/bin/setqt4env的内容)添加以下环境变量:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

export QWS_DISPLAY=:1

export QWS_KEYBOARD=TTY:/dev/tty1

export QWS_MOUSE_PROTO='Tslib MouseMan:/dev/input/mice'

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts-mt.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

export TSLIB_TSDEVICE=/dev/touchscreen-1wire

方法2)在开发机的qt-creator里,进入project==>Build&Run==>tiny4412==>Run==>Base environment for this run configuration,添加上述环境变量:

image

2.5.7 修改开发板上的/usr/local/etc/sshd_config,以解决debug时报:“SFTP initialization failed: Server could not start SFTP subsystem”的问题

Subsystem sftp /usr/libexec/sftp-server

改为:

Subsystem sftp /usr/local/libexec/sftp-server

2.6 qt-creator新建一个widget测试程序test,然后做一些配置

2.6.1 修改“test.pro”文件,加入以下两行:

target.path = /opt   #为程序指定在开发板上的安装路径

INSTALLS += target

image

2.6.2 进入Project==>Build&Run==>Tiny4412==>Run Settings

image

至此,Tiny4412的Qt开发调试环境总算搭建完成,效果图如下:

1)启动调试:

image

2)停止调试:

image

回到顶部(go to top)

三、参考资料

1)《Tiny4412用户手册》

2)QtCreator+Arm开发和联机调试

3)imx6开发环境搭建之yocto全记录(L4.1.15_2.0.0)

4)QTCreator + gdbserver 实现远程调试

5)在 NXP iMX8 上进行 Qt5移植和开发


关键字:Tiny4412  Qt 引用地址:搭建Tiny4412的Qt交叉开发调试环境

上一篇:ALSA声卡_从零编写之添加录音功能(基于优龙FS2410开发板,UDA1341声卡)
下一篇:韦东山嵌入式Linux_3期之USB摄像头监控_手机App增加录像功能(一)

推荐阅读最新更新时间:2024-11-12 23:39

通过QT制作图形界面并调用百度AI进行图像识别(一)
硬件平台:iTOP-4412开发板 项目名称:图像识别项目 本文我们来学习利用QT构建一个图形界面并用QT调用百度AI的接口 一.添加arm编译套件 打开QT creator 点击Tools- Options 点击Build&run,并选择Compilers,如下图所示: 点击add,选择gcc- c,并在Compiler path 中选择2014.05编译器的gcc,名字起名为arm-linux-gcc,设置完成后点击apply 点击add,选择gcc- c,并在Compiler path 中选择2014.05编译器的g++,名字起名为arm-linux-g++,设置完成和后点击apply,如
[单片机]
通过<font color='red'>QT</font>制作图形界面并调用百度AI进行图像识别(一)
Tiny4412MMU内存管理
  MMU是Memory Management Unit的缩写,中文名是内存管理单元,MMU是由ARM芯片中的cp15协处理器管理,它的作用是负责虚拟内存到物理内存的映射   要将虚拟内存映射为物理内存,就要需要构建一张映射表,那么如何来构建这张映射表将至关重要,目前,32位操作系统提供的虚拟存为4G,每个地址占16位4个字节,如果虚拟内存与物理内存要实现一一对应,那么这个张表的一条记录就要占用8个字节,整张表的大小就为32G,这肯定是不可取的;于是我们就采用另一种方法,我们将一个地址的前12为即2的12次方4k做为基地址,后20位作为偏移量,现在我们只需要将虚拟地址的前12位与物理地址的前12一一对应;这样每条记录8字节,整
[单片机]
Tiny4412MMU内存管理
Tiny4412中断控制器(GIC)之SGI软中断
//对于多核可以参考三星官方提供的linux源码,uboot中只是用了单核。 //下面代码只是用一个cpu核,采用SGI中断方式自己发自己收。 #include regs.h void enable_mmu(unsigned long ttb); void init_ttb(unsigned long *ttb_base); void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa); void memset(char *buf, char ch, int size); void memcpy(char *dst, char *src, int s
[单片机]
基于QT的能耗管理系统终端设计
引言 目前,我国对国家机关企事业单位大型公共建筑的用电情况采取多表制管理。不同的大功率电器接入电表不同。由于表类繁多,如空调、动力等,以及其他一些用途功能用电,不同电表之间的传输协议的不同,使得系统在能耗的管理上难度加大。大型公共建筑在电能节省和管理方面的需求日益增强,通过计划性的用电和节电可以更加合理地用电并且能够节约成本。此外,在智能家居系统的飞速发展中,能耗也成了一个重要的问题,在人们追求简洁方便的生活同时,降低能耗也成为了一个急待解决的问题。 针对这种情况,本文设计了针对大型建筑和智能家居的能耗管理系统,主要是对多个电能表进行数据采集和管理。设计了一套完整、安全、可靠的采集系统,能够实现对能耗数据进行统一的采集、处
[单片机]
基于<font color='red'>QT</font>的能耗管理系统终端设计
基于嵌入式Linux与QT的汽车虚拟仪表设计
  摘 要:为了简化汽车内部控制系统,降低汽车制造成本,提高人车交互界面的友好度,设计并实现了一种新型的汽车虚拟仪表。采用以ARM 处理器S3C6410为核心的硬件平台和以嵌入式Linux系统为核心的软件平台,并在此基础上采用开放源代码的图形界面库QT开发仪表终端应用程序。经试验验证,虚拟仪表系统具有成本较低、界面友好、反应灵敏等特点,并在跨平台性、可扩展性等方面得到了显着改善。   0 引 言   仪表作为汽车整个系统中十分重要的部分,是提高汽车综合性能的重要方面之一。随着计算机软硬件技术、总线技术、电子技术等的快速发展,控制系统臃肿、接线布线复杂、占用空间大的传统电磁机械仪表渐渐被淘汰,虚拟仪表正以传统机械仪表无法比拟的速度迅
[单片机]
基于嵌入式Linux与<font color='red'>QT</font>的汽车虚拟仪表设计
tiny4412 时钟测试
前面分析了 4412 时钟体系,本文来简单测试一下,参考韦东山老师的 Linux 应用完全开发手册4412 (上) 第一实验: 三星公司的BL1会将ARMCLK初始化为400MHz,我们关闭APLL,让 ARMCLK 工作在 24MHz,查看LED闪烁是否缓慢 start.S .text .globl _start _start: ldr sp, =0x02027800 // 调用C函数之前必须设置栈,栈用于保存运行环境,给局部变量分配空间 // 参考ROM手册P14, 我们把栈指向BL2上方1K处(1K已经够用), // 即:0x02020000 (iRAM基地址) + 5K(iROM代码用)
[单片机]
<font color='red'>tiny4412</font> 时钟测试
TINY4412 裸机程序之点灯
电路 根据电路图,有4个LED灯,引脚分别是GPM4_0~ GPM4_3。且当IO引脚为高电平时,LED灯灭,当IO引脚为低电平时LED亮。 启动流程 Exynos4412属于12年出的SOC芯片,属于比较新的芯片,armv7架构。相较于前些年的arm9芯片,在启动上的功能更多一些,当然启动校验也更复杂一些。 BL0(brom)是在芯片内部的代码,在芯片出厂时已经固化。BL0进行简单的初始化之后,会根据配置检测对应介质上的代码,如果校验成功就能跳到代码执行(BL1)。 如果直接使用官方提供的BL1,那么就可以省去制作校验和的步骤。但是BL2就要遵循官方的规定,需要小于14KB。 这里我们直接使用官方的BL1,将裸
[单片机]
<font color='red'>TINY4412</font> 裸机程序之点灯
TQ210开发板安装QT交叉编译环境安装总结
  系统环境:Ubuntu 12.04 64bit   开发平台:TQ 210开发板   一、总体流程:   二、Ubuntu12.04下安装tslib 1.4 出现各种问题汇总:   出现./autogen.sh: 4: ./autogen.sh: autoreconf: not found的错误解决   我看教程说的是直接执行命令 ./autogen.sh就可以了,后来我执行出错: ./autogen.sh: 4: ./autogen.sh: autoreconf: not found   上网查了查说是我的版本没有安装automake工具。解决方法如下   sudo apt-get install autoconfautom
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved