基于S3C2440的QT移植与编程实现(4)
第三章 Qt应用程序开发实例
3.1 软硬件平台 3.1.1 硬件平台
三星公司推出的16、32为RISC微处理器S3C2440A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。
S3C2440A采用了ARM920t的内核,0.13um的CMOS标准宏单元和存储器单元。其低功耗,简单,优雅,且全静态设计特别适合于成本和功率敏感型的应用。它采用了新的总线架构Advanced Micro controller Bus .
·1.2V内核供电,1.8V/2.5V/3.3V存储器供电,具备16KB的I-Cache和16KB DCache/MMU微处理器
·外部存储控制器(SDRAM)控制和片选逻辑 ·LCD控制器提供1通道LCD专用DMA ·4通道DMA并有外部请求引脚 ·3通道UART ·2通道SPI
·1通道IIS-BUS接口
·1通道IIS-BUS音频编解码器接口 ·AC’97解码器接口
·兼容SD主接口协议1.0版和MMC卡协议2.11兼容版 ·2端口USB主机、1端口USB设备
·4通道PWM定时器和1通道内部定时器/看门狗定时器 ·8通道10比特ADC和触摸屏接门 ·具有日历功能的RTC ·相机接口
·130个通用I/O口和24通道外部中断源 ·具有普通,慢速,空闲和掉电模式 ·具有PLL片上时钟发生器
15
3.1.2 软件平台
嵌入式软件开发不同于一般的软件开发,绝大多数的Linux软件开发都是以本机方式进行的,即本机开发、调试,本机运行的方式。这种方式通常不适合嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机中运行开发工具盒调试工具。
通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译的开发和调试环境建立在宿主机上,对应的开发板叫做目标板。
开发时使用宿主机上的交叉编译、汇编及链接工具形成可执行的二进制代码,然后把可执行文件下载到目标板上运行。 1.Bootloader引导程序移植
Bootloader引导程序是嵌入式开发很重要的组成部分,它是嵌入式系统上电后执行的第一个程序,并由它最终将操作系统启动起来并将控制权交给操作系统。Bootloader引导程序最基本的功能有对硬件系统的初始化、内核启动参数设置和启动内核。
Bootloader的主要功能有: (1)初始化CPU运行的时钟频率。
(2)初始化Flash和内存的数据宽度、读/写访问周期和刷新周期。 (3)初始化中断系统。
(4)初始化系统中各种运行模式下的寄存器和堆栈。 (5)初始化系统各种内片外设备和I/O端口。 (6)加载和引导操作系统,为用户提供一个命令接。 2.根文件系统
根文件系统是Linux系统引导启动时默认使用的文件系统。
文件系统是Linux操作系统的核心组成部分之一,用于文件盒目录的组织,其中包括了Linux程序、函数库、用户文件盒设备文件等,同时作为存储数据读写结果的区域。在嵌入式系统中,硬件初始化和内核启动完成之后将执行挂载文件系统的操作。
16
3.2 Qt开发流程
嵌入式硬件平台的确定 PC上搭建Qt/Embedded开发环境 交叉编译Qt/Embedded库并进行目标版的移植 PC上进行QTE应用程序的开发 交叉编译应用程序 在目标平台上进行调试 程序运行是否正常 发布应用程序
过程中我们采取了宿主机和目标板的开发模式。宿主机是一台运行Linux 的PC 机,目标板即hybus开发板。先在宿主机上调试通过后,再移植到目标板上。
Qt/Embedded直接写入帧缓冲,在宿主机上则是通过qvfb(vitural
17
framebuffer)来模拟帧缓冲。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序,允许我们在桌面及其上开发Qt嵌入式程序,而不需要在命令台和X11之间来回切换。qvfb使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb)模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。这样我们在每次调试应用时不需要总是刷新嵌入式设备的FLASH存储空间,从而加速了应用的编译、连接和运行周期。 应用程序的移植
将编译好的可执行文件下载到目标板上,目前有四种方式: (1) 通过网络传送文件到开发板 (2) 复制到介质(如U盘) (3) 通过串口传送文件到开发板 (4) 通过NFS(网络文件系统)直接运行
3.3 应用程序实现
针对目标板编译应用程序与编译可在宿主机上执行的应用程序类似,只需将编译参数作一定的修改,就可让程序在开发板上运行。安装Qt/Embedded时,配置参数-xplatform linux-arm-g++表示在ARM平台上进行交叉编译。 (1) 设置环境变量
在根文件系统中已经加入了Qt的安装包和Qt程序需要链接的库文件,环境变量的设置命令如下: Export QTDIR=/opt/qt/ (2) 使鼠标、键盘工作
鼠标设备接口这一基类QWSMouseHandler 的实现位于/src/kernel/qmouse文件中;键盘的驱动程序位于/src/kernel/qkeyboard-qws.cpp中,键盘类设备接口的基类为QWSMouseHandler.为了鼠标、键盘正常工作,使用如下的命令配置:
Export QWS-KEYBOARD=USB:/dev/input/event1 Export QWS-MOUSE-PORT =USB:/dev/input/mouse0 (3) 程序执行结果分析
分别右击三个按钮,点击 go to slot,在 mainwindow 中产生三个槽函数: void MainWindow::on_start_clicked()
18
void MainWindow::on_stop_clicked() void MainWindow::on_clear_clicked()
根据设计任务,每秒在 Text Edit 中显示自己设置的一组数,所以需要用到定时器。
在 mainwindow.h 中添加:
在 private:中加入成员 QTimer m_timer; 定义一个定时器。 根据要求,当点击启动按钮时,开始计数并显示在 void MainWindow::on_start_clicked() 中添加
void MainWindow::on_start_clicked() {
on_Start_b_clicked(); }
进入 on_Start_b_clicked()中, 继续添加代码:
void MainWindow::on_Start_b_clicked()
//这是我定义的一个按钮当按下这个按钮时执行下面的操作 {
//如果定时器没启动 if (!m_timer.isActive()) {
m_timer.start(1000); //开启定时器 1s
this->connect(&m_timer,SIGNAL(timeout()),this,SLOT(timeOut())); //计时到达,进入 timeOut(), } }
timeOut()内容:
void MainWindow::timeOut() {
ui->view->setText(tr(\
19
…… 此处隐藏:1315字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




