qt 嵌入式linux 环境变量设置


Qt-embedded-linux移植要点

原文位置:http://19831028.blog.51cto.com/1333653/432393
1、安装qt对系统的要求
安装qt的过程在不同的平台上会有所不同,主要关嵌入式linux平台上如何安装。若需要提供对OpenSSL的支持,需要通过单独安装OpenSSL Toolkit,来获得Secure Sockets Layer (SSL)。对于不同的平台上,会有不同的要求。下面具体关注嵌入式linux的要求。如果要在qt上对QtWebKit模块的支持,必须使用uClibc 0.9.29或者更高的版本,以对pthread的支持。在内存方面的要求主要取决于体系架构以及在编译过程中使能的QT选项。下面是针不同平台上qt支持库的大小。
Architecture       
 Compiler
 QtCore
 QtGui
 QtNetwork
 QtWebKit
 
Minimal
 Normal
 Minimal
 Normal
 Minimal
 Normal
 Minimal
 Normal
 
linux-x86-g++
 GCC 4.2.4
 1.7M
 2.7M
 3.3M
 9.9M
 653K
 1.1M
 N/A
 17M
 
linux-arm-g++
 GCC 4.1.1
 1.9M
  3.2M
 4.1M
 11M
 507K
 1.0M
 N/A
 17M
 
linux-arm-g++ (thumb)
 GCC 4.1.1
 1.7M
  2.8M
 4.0M
 9.8M
 409K
 796K
 N/A
 17M
 
linux-mips-g++ (MIPS32)
 GCC 4.2.4
 2.0M
  3.2M 
 4.5M
 12M
 505K
 1003K
 N/A
 21M
 

 

2 qt-embedded-linux的安装

(1)下载源码包,解压;

       下载开源嵌入式版本的网址:http://download.qtsoftware.com/qt/source/常用官网

qt news:http://www.qtsoftware.com/about/news

qt downloads:http://www.qtsoftware.com/downloads

qt Quarterly:http://doc.trolltech.com/qq/

qt bugs:http://www.qtsoftware.com/developer/task-tracker

qt Supported Platforms:http://doc.trolltech.com/supported-platforms.html

qt Version Changes :http://www.qtsoftware.com/developer/changes

qt books: http://www.qtsoftware.com/developer/books   

(2)建立支持库

       通过./configure来设置,主要配置可以通过--help来获得帮助;之后用make命令,然后用make install 命令。将库安装到指定的路径下面。其中的设置包括指定安装的路径;未配置的话,默认的路径是/usr/local/Trolltech/QtEmbedded-4.5.0;

(3)设置环境变量

       为了能够使用Qt for Embedded Linux,  必须导出的PATH变量有qmake, moc 以及其他Qt for Embedded Linux 的工具, 以及LD_LIBRARY_PATH 必须导出。例如:    PATH=/usr/local/Trolltech/QtEmbedded-4.5.0/bin:$PATH

      export PATH

(4)建立虚拟的frambuffer。

       建立虚拟的frambuffer,需要安装X11 Platforms .

 

3 嵌入式linux版本的qt环境变量
POINTERCAL_FILE:指定文件包含的数据,用来校准触摸笔设备。同时可以参考QWSCalibratedMouseHandler and Qt for Embedded Linux Pointer Handling.

QT_ONSCREEN_PAINT:如果定义了的话,可以用来将控件显示在屏幕上。如果没有其他控件在同一个区域的话,该设备响应的区域将不会随着屏幕设备驱动的改变而改变。设置这个环境变量相当于在控件中应用程序中设置Qt::WA_PaintOnScreen。

QWS_SW_CURSOR:如果定义了的话,软件鼠标的光标将一直是可用的。(即使使用硬件加速驱动器来支持硬件光标)

QWS_DISPLAY:指定显示形式和framebuffer.例如:export QWS_DISPLAY=[:]...[:]

QWS_SIZE:指定嵌入式linux qt窗口在屏幕上的大小。export QWS_SIZE=x

QWS_MOUSE_PROTO:指定触摸设备。 export QWS_MOUSE_PROTO=[:],参数可以是MouseMan, IntelliMouse, Microsoft, VR41xx, LinuxTP, Yopy. Tslib and keys。/dev/mouse 指的是鼠标设备,  /dev/ts for touch panels。

该环境变量主要是帮助QMouseDriverFactory也就是Qt鼠标设备的枚举者来创建你想要的鼠标设备而不是系统默认的。

默认该环境变量时空的,其实大部分情况下空就可以了,Qt能够根据系统配置猜测出你想要的设备,并且这个大多数情况下好像都是正确的。不过如果错了我们可以通过设置该变量来纠正。

该环境变量的格式如下:

export QWS_MOUSE_PROTO="<driver>[:<driver specific options>]
         <driver>[:<driver specific options>]
         <driver>[:<driver specific options>]"

中间可以通过空格来指定多个鼠标设备,目前我也没用到过,因为一般有一个输入设备就够了,最常用的格式如下:

export QWS_MOUSE_PROTO="tslib:/dev/ts"

第一个,指明要使用tslib这个驱动,对应的设备名字是/dev/ts

QWS_KEYBOARD为输入设备指定输入设备和驱动。比如:export QWS_KEYBOARD=[:]。参数可以是SL5000, Yopy, VR41xx, TTY, USB and keys,指定的是一个标准设备。比如:/dev/tty0。

4 在嵌入式linux上运行qt程序
任何嵌入式linux应用程序可以通过构建QApplication 对象QApplication::GuiServer的格式,被构建为服务server application。或者通过-qws命令行选项的方式。本文当假设用The Virtual Framebuffer 或者嵌入式linux的VNC协议,或者正确配置的Linux framebuffer。而且没有服务进程在运行。可以使用的显示方式有:

     Using a Single Display

    单显示,运行这种显示方式,改变Linux console,而且选择一个应用来运行。它要求在安装过程中,环境变量是可用的。它要求指定的硬件设备驱动必须工作正常。比如:

    cd path/to/QtEmbedded/demos/textedit

    ./textedit -qws

    * Using Multiple Displays

    linux同时也是支持多设备显示。有两种方式可以完成。当在运行多服务程序的时候,显示屏的驱动(以及数量)必须为每一个程序进行指定。用-display命令行或者QWS_DISPLAY 来指定。比如:

    ./myfirstserverapplication -qws -display "transformed:rot90:1"

    ./mysecondserverapplication -qws -display "QVFb:2"

需要注意的是,必须指定一个显示设备,在开始客户端程序的时候。比如:./myclientapplication -display "QVFb:2"。在程序运行的时候,没有办法将一个客户端程序从一个显示移动到另一个显示。用多显示屏驱动,另一方面,应用程序可以方便的在两个不同类型的显示屏之间切换。多屏幕显示可以用-display命令行参数来指定 或者通过设置QWS_DISPLAY环境变量比如: ./myserverapplication -qws -display "Multi: QVFb:0   QVFb:1:offset=0,0 VNC:offset=640,0 :2"

    * Command Line Options

    命令行选项

5 移植qt在嵌入式linux的应用
    移植过程和移植到x11平台上的差别不大,遵守通用的移植过程。然后还包括几个方面:字体库移植,设置环境变量以及Framebuffer的支持。

   字体库的支持:是在qt的/lib/fonts目录下。由于程序运行的时候是到这个文件夹下面来调用,因此需要将字体库复制到这个目录下。

   环境变量的设置:通常情况下,与默认的环境变量不同,因此需要设置的有QWS_MOUSE_PROTO, QWS_KEYBOARD 以及 QWS_DISPLAY,用来指定鼠标、键盘以及显示设备管理。在./configure 的时候需要加入的选项是-qt-kbd- and -qt-mouse- ,这样才能使能这些设备驱动。但是还需要指定一个具体的设备,因此需要通过设置环境变量来完成。

   framebuffer的支持:没有特殊需求的情况下,要求在目标设备上使能framebuffer。Linux framebuffer在标准设置情况下是使能的。

6 嵌入式linuxqt 显示管理
当需要显示的时候,默认的动作是每一个嵌入式linux的客户端将 需要的显示的色调存放在内存中,然后服务端将相关的数据从内存在中送到显示屏上。服务端用显示屏驱动copy内存中的内容到显示屏上显示。显示屏的驱动是在服务端应用加载的时候运行的,用的是qt的插件系统。常用的方式有:可用的驱动;指定一个驱动;子驱动和多驱动。

    Available Drivers可用的驱动

嵌入式linux的qt提供的驱动有Linux framebuffer, the virtual framebuffer, transformed screens, VNC servers and multi screens.通过运行./configure 选项来列出可用的驱动。默认的配置是不加速的Linux framebuffer driver (/dev/fb0) 被打开。其他的设备驱动也可以使能或者禁止,通过以下命令行。例如:./configure -qt-gfx-transformed

    Specifying a Driver指定一个驱动

   通过设置环境变量QWS_DISPLAY来指定一个设备。比如:格式如下的: export QWS_DISPLAY="[:]... [:]"  可以用的参数有:LinuxFb, QVFb, VNC, Transformed, Multi and keys identifying custom drivers。参数的被用来分辨用相同驱动的屏幕,而且使能多显示。如下的表格用来指定驱动。环境变量的QWS_DISPLAY也可以通过-display来设置。比如: myApplication -display "[:]...  [:]"

    Subdrivers and Multiple Drivers子驱动和多驱动

    VNC, Transformed 和Multi screen drivers取决于子驱动。通用的语法是: export QWS_DISPLAY="[:][:]...[ :]"至于子驱动,在每个子驱动之间加上空间是很重要的,在显示设备前加上用来分开各个驱动和显示设备。注意的是多屏幕驱动可以拥有多个子设备驱动,比如: export QWS_DISPLAY="Multi: QVFb:0 QVFb:offset=640,0:1 :2"注意的是:VNC screen driver在没有指定屏幕驱动的情况下,默认的是虚拟屏幕驱动。在这种情况下,VNC driver有一些额外的参数来指定大小的位宽,参数有:    * size=  * depth=   * mmHeight=

* mmWidth= 。例如:export QWS_DISPLAY="VNC:size=720x480:depth=32"。例如运行VNC屏幕驱动在Linux framebuffer driver的情况下,则:export QWS_DISPLAY="VNC:LinuxFb"

7 输入设备键盘和鼠标的设置与管理
       当运行一个Qt for Embedded Linux应用程序的时候,不管是作为一个服务还是连接到另一个服务,当它开始运行的时候,鼠标驱动被服务的应用加载,用qt的plugin system。 在配置qt的时候通过选项来选择支持的鼠标以及键盘设备,同时测试可用的设备。通过 ./configure -help 查看可用的设备,配置时候默认的是PC的鼠标驱动。如果是自己添加一个设备,比如触摸屏,则需要创建一个QWSCalibratedMouseHandler subclass来完成校验功能。若提供的pc的鼠标被使能,Qt for Embedded Linux将会自动探测所支持的一种鼠标设备,这个设备是在/dev/psaux 或者 /dev/ttyS的一种。如果多种类型的都检测到的话,则多种同时支持。需要注意的是,Qt for Embedded Linux 不支持自动检测触摸屏设备,因此需要指定使用的是哪一种。要设置环境变量QWS_MOUSE_PROTO ,例如:export QWS_MOUSE_PROTO=[:],其中的参数可以是MouseMan, IntelliMouse, Microsoft, VR41xx, LinuxTP, Yopy, Tslib and keys,driver specific options是一个标准设备,比如:dev/mouse,触摸屏的是/dev/ts。多鼠标可以用下列方式来指定。

 export QWS_MOUSE_PROTO="[:]

         [:]

         [:]"

需要注意的是:Vr41xx 驱动有两个可选的参数:press=来定义单击的时间(默认值是750);filter= 指定的是滤波长度。用于虑掉噪声。比如:

        export QWS_MOUSE_PROTO="Vr41xx:press=500:/dev/misc/ts"

对于The Tslib Mouse Driver是一个继承QWSCalibratedMouseHandler的类,在产生鼠标事件的时候,提供校验和滤波的功能,用于使用同一的触摸屏的库。为了使用鼠标,必须编译的选项是-qt-mouse-tslib。此外,tslib的头文件和库也要在build的环境变量中指出来。tslib 的源码可以在http://tslib.berlios.de. 下载。通过-L 和-I 来指定库和头文件的位置。比如: ./configure  -L -I 。 为了保证能够使用鼠标,tslib必须正确的安装在目标机上。包括提供一个ts.conf 配置文件和设置必要的环境变量。ts.conf包括两行:内容是: module_raw input

      module linear在make Qt for Embedded Linux 时候特别指定tslib 鼠句柄,设置环境变量QWS_MOUSE_PROTO 。可能出现问题的地方是设备文件和文件权限两个方面。为了保证能够正确的使用设备文件,第一步,先测试一下设备文件是否有输出。比如:如果指定的鼠标设备驱动是:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,然后检查设备的输出,通过在控制台上敲: cat /dev/input/mouse0 | hexdump,移动鼠标后,如果可以在控制台上看见输出,表示能够正确的使用设备,否则要重新连接设备。对于设备的读写权限,一般要求对设备至少有读权限。比如:QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0,那么应该将该设备的权限设置为chmod a+rw /dev/input/mouse0。如果设备文件符号连接到另一个文件的话,必须改变相关文件的属性。


QT/Embedded 编译及移植  

http://blog.163.com/tzx_648852/blog/static/61753614200942005046593/

#tar –xvf qt-embedded-linux-opensource-src-4.4.3.tar.bz2  //解压qte源代码

      #cd qt-embedded-linux-opensource-src-4.4.3  

     #./configure –prefix /opt/qtearm  -release  xplatform  qws/linux-arm-g++ -embedded arm  -plugin-sql-mysql

     #make

     #make install

经过几个小时的编译后,在/opt/qtearm/lib/opt/qteatm/plugins下生成可以再arm下运行的库文件。接着就是将库文件移植到目标机上。方法有两种,第一种是通过网络传输,将库文件传入目标板。第二种方法是将QT所需要的库文件集成到根文件系统中,通过烧录的方法烧进去。本人选择了第二种方法,因为QT的库文件是比较的大,传送起来耗时太长。另外,此方法更加容易备份文件系统。

         #cd /home/tangzhix/rootfs270  

#mkdir opt/qtearm         //移植QT所需要的库,将在宿主机编译成功的/opt/qte移植到目标板上的/opt/qte

         #cd opt/qtearm

         #mkdir lib plugins

        #cd lib

        #cp –dpR /opt/qtearm/lib/libQtCore*  ./       //移植QtCore

        #cp –dpR /opt/qtearm/lib/libQtGui*  ./         //移植QtGui

        #cp –dpR /opt/qtearm/lib/libQtNetwork*  ./    //移植QtNetwork

         #cp –dpR /opt/qtearm/lib/libQtSql*  ./          //移植QtSql

         #mkdir  fonts                                //移植字体库文件

         #cd fonts

         #cp  /opt/qtearm/lib/fonts/cursor.pfa  ./

         #cp  /opt/qtearm/lib/fonts/couri.pfa  ./

         #cp  /opt/qtearm/lib/fonts/courbi.pfa  ./

         #cp  /opt/qtearm/lib/fonts/courb.pfa  ./

         #cp  /opt/qtearm/lib/fonts/cour.pfa    ./

         # cd ../../plugins                              //移植数据库插件

         #mkdir sqldrivers

         #cp  /opt/qtearm/plugins/sqldrivers/libsqlmysql.so  sqldrivers/


Qt/Embedded移植详解  

2010-04-10 07:50:35|  分类: linux|举报|字号 订阅

1楼

开发平台:ubuntu 7.04

目标平台:S3c2410

开发工具:arm 交叉工具链版本3.4.5   

qt4版本:qt-embedded-linux-opensource-src-4.4.3.tar.gz(可到trolltech的ftp下载)

源码版本:linux-2.6.8



一.     到内核查看是否支持LCD驱动、framebuffer

cd   /source/kernel/linux-2.6.8

make menuconfig



在界面中找到Graphics support

进入查看Support for framebuffer devices 和 S3C2410 LCD framebuffer support两个选项是否被选中,选中代表内核已支持。否则选中两个选项,然后保存退出, make zImage

将新生成的内核镜像烧写到开发板上。



二.     将QtEmbeded 源码包解压后,把configsh文件考到解压后的目录中,可以根据实际情况修改configsh文件中第一行制定的安装目录

./configsh

(configsh脚本内容如下:

#!/bin/sh

./configure -prefix /home/linux/qt4_port/qt/build\
-release -shared \
-fast \
-pch \
-no-qt3support \
-qt-sql-sqlite \
-no-libtiff   -no-libmng \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-openssl \
-nomake examples -nomake demos -nomake tools \
-optimized-qmake \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm \
-no-xinerama -no-xshape \
-no-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb \
-qt-kbd-usb \
-confirm-license \
-no-armfpa





make && make install

这个时候在指定的安装目录会出现如下目录:bin include lib mkspecs plugins translations



三.     将开发机下的linux-2.6.8文件系统用nfs挂载到开发板上(开发板上/var目录下为可写),

mount –t nfs –o nolock 192.168.1.100:/source/rootfs   /var/mnt

然后将上一步生成的lib库文件考到挂载的根文件系统的/home/qt/build/lib目录下

cp /home/linux/qt4_port/qt/build/lib/libQt*   /source/rootfs/home/qt/build/lib



四.          拷贝显示中文的文泉驿字体到根文件系统的相应目录下:

cp /home/linux/qt4_port/qt/build/lib/fonts/wenquanyi_160_75.qpf \

/source/rootfs/home/qt/build/fonts



五. 用qt编一个helloworld 程序进行测试。使用qmake、make对程序进行编译。

注意:一定要用qtembed安装目录下bin/下面的qmake

/home/linux/qt4_port/qt/build/bin/qmake   –project

/home/linux/qt4_port/qt/build/bin/qmake

make



六.将上一步生成的可执行文件helloworld考到挂载的根文件系统下

在开发板上设置环境变量

export QTDIR=/var/mnt /home/qt/build

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QTDIR/bin:$PATH

export QT_QWS_FONTDIR=/var/mnt /home/qt/build/fonts



最后运行helloworld程序

./helloworld   -qws



就可以看到界面了。

武汉华嵌地址:洪山区吴家湾东方怡景大厦A座6层   

报名咨询电话:027-87780211                 www.embedhq.org   


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一阶段在PC机上学习熟悉Linux. 一.Red Hat Linux 9下的常用操作… ………………… 二.Minicom的使用….… 三.NFS的使用… … 四.应用程序编程实验…… 五.模块编程实验…… 六.简单的字符设备驱动实验…… 第二阶段在开发板上学习研究Linux. 一.MIZI Linux SDK for S3C2410开发环境及工具使用. 1.构造软件开发环境. 2.编译嵌入式Linux生成image…… 3.将嵌入式Linux的image下载到目标板… … 4. 嵌入式平台测试…… 一嵌入式Iinox取动开发 ……………… …… ……… 1.模块编程实验 …… 2. 点亮目标板的LED… … ……… 3.按键中断实验…… …… 4.定时器驱动及PWM输出 5.点亮目标板LCD.…… 6.安装触摸板. 三.构建完整的嵌入式Linux系统…………………… 1.桌面系统的启动…… 2.下载可读写的文件系统Yaffs… … 3.Yaffs文件系统移植…… 4.Yaffs作为根文件系统启动… 5.完整的嵌入式Linux系统…… 四.嵌入式WEB服务器…… 1. Boa移植… … 2.WEB应用开发……… 五.NFS的配置. 1.主机的NFS服务器配置… 2.目标机的NFS客户端配置……… 3.出现的问题…… 第三阶段在项目中应用Linux.… 一.进程间隔定时器…… 1.概念. 2.数据结构…… 3.操作函数 4.测试程序 二,虚拟地址 三.以太网控制器——CS8900A硬件调试, 1.调试步骤 2.出现过的问题 四.WiFi无线网络 1.在RedHat9上安装TL-WN210无线网卡驱动。 2.无线网络配置 3.RedHat9上使用WL-110无线网卡 4.无线网卡控制器PD6710硬件测试, 5.Linux下驱动程序及装载. 五,CPLD扩展外部设备 1.扩展I/0 2.扩展串口16C554. 六,PWM驱动蜂鸣器 1.驱动源码 2.驱动测试程序 3.出现过的问题 七.485网络驱动 1.硬件测试 2.Linux驱动程序 3.驱动测试程序 4.出现的问题 八.红外学习与发射 1.硬件测试程序 2.Linux驱动程序 3.驱动测试程序, 4.出现的问题 5.总结 九,网络编程, 1.常用函数 2.服务器程序 3.测试用客户程序 4.利用I0复用替代多进程的并发服务器…… 5.用无线网络测试上述程序 十.系统时间的实现. 十一。关于进程的体会 1.进程间不共享变量 2.进程通信——信号的使用 3.防止僵死进程。 第四阶段用户图形界面设计 一,QT应用编程 二. Qt/Embedded和QTOPIA.
目录 第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 1.1.2 Linux作为嵌入式操作系统的优势 2 1.1.3 Linux发行版本 3 1.1.4 如何学习Linux 4 1.2 Linux安装 5 1.2.1 基础概念 5 1.2.2 硬件需求 7 1.2.3 安装准备 7 1.2.4 安装过程 8 1.3 Linux文件及文件系统 11 1.3.1 文件类型及文件属性 11 1.3.2 文件系统类型介绍 13 1.3.3 Linux目录结构 14 1.4 实验内容——安装Linux操作系统 17 本章小结 17 思考与练习 18 第2章 Linux基础命令 19 2.1 Linux常用操作命令 19 2.1.1 用户系统相关命令 20 2.1.2 文件目录相关命令 27 2.1.3 压缩打包相关命令 38 2.1.4 比较合并文件相关命令 40 2.1.5 网络相关命令 45 2.2 Linux启动过程详解 50 2.2.1 概述 51 2.2.2 内核引导阶段 51 2.2.3 init阶段 52 2.3 Linux系统服务 54 2.3.1 独立运行的服务 55 2.3.2 xinetd设定的服务 56 2.3.3 设定服务命令常用方法 56 2.4 实验内容 57 2.4.1 在Linux下解压常见软件 57 2.4.2 定制Linux系统服务 58 本章小结 60 思考与练习 60 第3章 Linux下的C编程基础 61 3.1 Linux下C语言编程概述 61 3.1.1 C语言简单回顾 61 3.1.2 Linux下C语言编程环境概述 62 3.2 进入Vi 63 3.2.1 Vi的模式 63 3.2.2 Vi的基本流程 63 3.2.3 Vi的各模式功能键 65 3.3 初探Emacs 66 3.3.1 Emacs的基本操作 67 3.3.2 Emacs的编译概述 70 3.4 Gcc编译器 71 3.4.1 Gcc编译流程解析 71 3.4.2 Gcc编译选项分析 74 3.5 Gdb调试器 77 3.5.1 Gdb使用流程 78 3.5.2 Gdb基本命令 81 3.6 Make工程管理器 86 3.6.1 Makefile基本结构 86 3.6.2 Makefile变量 87 3.6.3 Makefile规则 90 3.6.4 Make管理器的使用 91 3.7 使用autotools 92 3.7.1 autotools使用流程 92 3.7.2 使用autotools所生成的Makefile 96 3.8 实验内容 98 3.8.1 Vi使用练习 98 3.8.2 用Gdb调试有问题的程序 99 3.8.3 编写包含多文件的Makefile 101 3.8.4 使用autotools生成包含多文件的Makefile 103 本章小结 105 思考与练习 105 第4章 嵌入式系统基础 106 4.1 嵌入式系统概述 106 4.1.1 嵌入式系统简介 106 4.1.2 嵌入式系统发展历史 107 4.1.3 嵌入式系统的特点 108 4.1.4 嵌入式系统的体系结构 108 4.1.5 几种主流嵌入式操作系统分析 109 4.2 ARM处理器硬件开发平台 111 4.2.1 ARM处理器简介 111 4.2.2 ARM体系结构简介 113 4.2.3 ARM9体系结构 113 4.2.4 S3C2410处理器详解 116 4.3 嵌入式软件开发流程 121 4.3.1 嵌入式系统开发概述 121 4.3.2 嵌入式软件开发概述 122 4.4 实验内容——使用JTAG烧写NAND Flash 128 本章小结 131 思考与练习 132 第5章 嵌入式Linux开发环境的搭建 133 5.1 嵌入式开发环境的搭建 133 5.1.1 嵌入式交叉编译环境的搭建 133 5.1.2 超级终端和Minicom配置及使用 135 5.1.3 下载映像到开发板 142 5.1.4 编译嵌入式Linux内核 145 5.1.5 Linux内核目录结构 149 5.1.6 制作文件系统 149 5.2 U-Boot移植 153 5.2.1 Bootloader介绍 153 5.2.2 U-Boot概述 155 5.2.3 U-Boot源码导读 156 5.2.4 U-Boot移植主要步骤 163 5.2.5 U-Boot常见命令 164 5.3 实验内容——移植Linux内核 164 本章小结 165 思考与练习 165 第6章 文件I/O编程 166 6.1 Linux系统调用及用户编程接口(API) 166 6.1.1 系统调用 166 6.1.2 用户编程接口(API) 167 6.1.3 系统命令 167 6.2 Linux中文件及文件描述符概述 168 6.3 不带缓存的文件I/O操作 168 6.3.1 open和close 168 6.3.2 read、write和lseek 170 6.3.3 fcntl 173 6.3.4 select 178 6.4 嵌入式Linux串口应用开发 183 6.4.1 串口概述 183 6.4.2 串口设置详解 184 6.4.3 串口使用详解 191 6.5 标准I/O开发 194 6.5.1 打开和关闭文件 194 6.5.2 文件读写 197 6.5.3 输入输出 198 6.6 实验内容 201 6.6.1 文件读写及上锁 201 6.6.2 多路复用式串口读写 204 本章小结 207 思考与练习 207 第7章 进程控制开发 208 7.1 Linux下进程概述 208 7.1.1 进程相关基本概念 208 7.1.2 Linux下的进程结构 210 7.1.3 Linux下进程的模式和类型 210 7.1.4 Linux下的进程管理 211 7.2 Linux进程控制编程 212 7.3 Linux守护进程 224 7.3.1 守护进程概述 224 7.3.2 编写守护进程 224 7.3.3 守护进程的出错处理 229 7.4 实验内容 232 7.4.1 编写多进程程序 232 7.4.2 编写守护进程 235 本章小结 238 思考与练习 239 第8章 进程间通信 240 8.1 Linux下进程间通信概述 240 8.2 管道通信 241 8.2.1 管道概述 241 8.2.2 管道创建与关闭 242 8.2.3 管道读写 244 8.2.4 标准流管道 246 8.2.5 FIFO 249 8.3 信号通信 253 8.3.1 信号概述 253 8.3.2 信号发送与捕捉 255 8.3.3 信号的处理 258 8.4 共享内存 264 8.4.1 共享内存概述 264 8.4.2 共享内存实现 265 8.5 消息队列 267 8.5.1 消息队列概述 267 8.5.2 消息队列实现 268 8.6 实验内容 272 8.6.1 管道通信实验 272 8.6.2 共享内存实验 275 本章小结 277 思考与练习 278 第9章 多线程编程 279 9.1 Linux下线程概述 279 9.1.1 线程概述 279 9.1.2 线程分类 280 9.1.3 Linux线程技术的发展 280 9.2 Linux线程实现 281 9.2.1 线程基本操作 281 9.2.2 线程访问控制 288 9.3 实验内容——“生产者消费者”实验 298 本章小结 302 思考与练习 303 第10章 嵌入式Linux网络编程 304 10.1 TCP/IP协议概述 304 10.1.1 OSI参考模型及TCP/IP参考模型 304 10.1.2 TCP/IP协议族 305 10.1.3 TCP和UDP 306 10.2 网络基础编程 308 10.2.1 socket概述 308 10.2.2 地址及顺序处理 309 10.2.3 socket基础编程 314 10.3 网络高级编程 322 10.4 ping源码分析 326 10.4.1 ping简介 326 10.4.2 ping源码分析 327 10.5 实验内容——NTP协议实现 345 本章小结 352 思考与练习 352 第11章 嵌入式Linux设备驱动开发 353 11.1 设备驱动概述 353 11.1.1 设备驱动简介及驱动模块 353 11.1.2 设备文件分类 354 11.1.3 设备号 355 11.1.4 驱动层次结构 355 11.1.5 设备驱动程序与外界的接口 355 11.1.6 设备驱动程序的特点 356 11.2 字符设备驱动编写 356 11.3 LCD驱动编写实例 363 11.3.1 LCD工作原理 363 11.3.2 LCD驱动实例 365 11.4 块设备驱动编写 374 11.4.1 块设备驱动程序描述符 374 11.4.2 块设备驱动编写流程 375 11.5 中断编程 381 11.6 键盘驱动实现 382 11.6.1 键盘工作原理 382 11.6.2 键盘驱动综述 383 11.6.3 键盘驱动流程 384 11.7 实验内容——skull驱动 394 本章小结 398 思考与练习 399 第12章 Qt图形编程 400 12.1 嵌入式GUI简介 400 12.1.1 Qt/Embedded 401 12.1.2 MiniGUI 401 12.1.3 Microwindows、Tiny X等 402 12.2 Qt/Embedded开发入门 402 12.2.1 Qt/Embedded介绍 402 12.2.2 Qt/Embedded信号和插槽机制 405 12.2.3 搭建Qt/Embedded开发环境 409 12.2.4 Qt/Embedded窗口部件 410 12.2.5 Qt/Embedded图形界面编程 414 12.2.6 Qt/Embedded对话框设计 416 12.3 实验内容——使用Qt编写“Hello,World”程序 420 本章小结 428

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值