QT环境下编译CUDA

QT环境下编译CUDA
QT环境下编译CUDA

1 安装CUDA

1.1 安装cuda toolkit

双击NVIDIA_CUDA_toolkit_2.0_win32.exe安装,安装完成后在安装目录下出现6个文件夹,分别是:

Bin :工具程序和动态链接库

Doc :相关文档

Include : header头文件包

Lib :静态库

Open64 :基于open64的cuda compiler

Src :部分原始代码

安装过程中toolkit自动设定了3个环境变量:CUDA_BIN_PATH、CUDA_INC_PATH和CUDA_LIB_PATH分别对应工具程序库、头文件库和程序库,预设路径为当前安装文件夹下的bin、include 和lib三个文件夹。并将bin文件夹目录加入环境变量path中。Cuda 2.3SDK 是在C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C下面

1.2 安装CUDA SDK

SDK可以根据需要选择安装(推荐安装,因为SDK中的许多例子程序和函数库非常有用)。

1.3 安装 CUDA Display

对于没有安装NV显卡的计算机,不需要安装Display安装包,程序也可以在模拟模式下运行。

这个三个安装程序可以到该网站下载:https://www.360docs.net/doc/b05960736.html,/object/cuda_get_cn.html 2、在Visual Studio中使用cuda

CUDA的主要工具是nvcc,它会执行所需要的程序,将CUDA程序编译并执行。下面介绍了三种配置cuda nvcc的方法。这里推荐使用第三种方法。

2.1、方法一(NV自带的修改模板方法)

2.1.1、在CUDA SDK安装目录下的project目录下新建文件夹,命名为想要建立的工程名字,比如test。并在project文件夹下找到SDK自带的template文件夹,将template 文件夹下所有的文件copy到test下。

2.1.2、将copy到test文件夹下的所有文件文件名中的template改为test。

test.sln与test.vcproj是vs 8系列的工程文件,test_vc7.sln与test_vc7.vcproj是vs 7系列的工程文件,可以根据自己Visual Studio的版本选择要更改的工程文件,其它两个可以删除。在Visual Studio C++ 2005 Express中,可以将test_vc7.sln与test_vc7.vcproj删除。

2.1.3、将*.cu、*.sln和*.vcproj用记事本等文字编辑软件打开,使用查找替换功能将以上文件中所有的template改为test。

2.1.4、使用*.sln文件打开整个工程,可以任意更改代码,编译运行。

2.1.5、修改输出文件路径(可选,如不改变,可执行文件输出到上两级目录下的bin 目录中),如使用了CUDA SDK中的动态链接库,将相应的动态链接库拷贝到可执行文件的同一目录下。

总结:这种方法是NV公司为windows下使用vs编译cuda提供的标准方法(参见\SDK\doc\CUDA_SDK_release_notes_windows.txt),使用公司提供的模板更改为自己想要

建立的工程,也可以参照以上方法,在SDK Project库中的找到与自己想建立工程相近的其它工程做更改。但是费时费力,不推荐使用。

2.2、方法二(设定custom build tool执行cuda)

2.2.1、首先建立一个win32 console 模式的 empty project,并建立一个新的源文件,此处以main.cu为例。

P1.建立一个win32 project

P2.设定为empty project

P3.建立main.cu

2.2.2、在solution explorer 中main.cu上右键单击,选择property。在打开的对话

框中选择General,确定Tool的选项是Custom Build Tool。

P4.确认Tool选项

2.2.3、选择Custom Bulid Step,在Command Line中分别设定模式参数

(1)、Release 模式:"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin"

-c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT

-I"$(CUDA_INC_PATH)" -o $(ConfigurationName)\$(InputName).obj

$(InputFileName)

(2)、Debug 模式:"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin"

-c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler

/EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -o

$(ConfigurationName)\$(InputName).obj $(InputFileName)

P5.设定Command Line参数

如果计算机中没有安装NV显卡,使用模拟模式,需增加两个额外的设定。新建两个模式EmuRelease和EmuDebug。

P6.新建模式(1)

P6.新建模式(2)

对新建立的EmuRelease和EmuDebug的Command Line分别设定为:

(1)、EmuRelease 模式:"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin

"$(VCInstallDir)bin" -deviceemu -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -o

$(ConfigurationName)\$(InputName).obj $(InputFileName)

(2)、EmuDebug 模式:"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin

"$(VCInstallDir)bin" -deviceemu -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd

-I"$(CUDA_INC_PATH)" -o $(ConfigurationName)\$(InputName).obj

$(InputFileName)

3.1.4、对所有的设定模式,均在Custom Build Step的Outputs中加入

$(ConfigurationName)\$(InputName).obj。

P7.设定Outputs

2.2.5、右键单击project,选择Property,再选择Linker,对所有模式修改以下设定:

(1)、General/Enable Incremental Linking:No

(2)、General/Additional Library Directories:$(CUDA_LIB_PATH)

(3)、Input/Additional Dependencies:cudart.lib

P8.设定Linker参数(1)

P9.设定Linker参数(2)

2.2.6 设置头文件路径

Tools -> Options,弹出以下对话框

将右边的下拉框选择Include Files,点击添加按钮,将C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\inc选入到头文件搜索路径中。

2.2.7 选择链接库文件路径

同上库头文件路径选择,将右边下拉框选择Library File,选择路径C:\Program

Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\lib。

2.2.8、完成,可以编写cuda程序,并直接编译执行了(编译方式于C++相同)

总结:这种方法不需要借助模板,也不需要使用第三方的软件。但是这种操作复杂,而且仅对配置的单个project有效。如果重新建立一个project又要重新配置一遍。故不推荐使用。需要注意的是,当需要使用CUDA SDK中的动态链接库(以dll为后缀)时,将动态链接库和生成的可执行文件放在同一个路径下。

P10.完成

2.3、方法三(使用CUDA_VS_Wizard执行cuda)

2.3.1、解压CUDA_VS_Wizard并安装。

2.3.2、将CUDA SDK安装目录下的bin\win32文件夹下的四个文件夹(Debug, EmuDebug, Release, EmuRelease)的路径全部加入环境变量中的path变量中。第一节中讲到

2.3.3、使用vc直接建立工程。在工程选项里选择CUDAWinApp。

2.4.4、如果是在模拟模式下运行,需要在解决方案中右键属性,在Configuration Properities 中将Configuration 设置为Emu模式。

P14.模拟模式设置(1)

P15.模拟模式设置(2)

2.3.5、完成。

总结:这种方法虽然使用了第三方的工具,但只需要配置一次即可,而且配置简单,以后每次建立cuda程序都可以直接生成。如果是建立预定义头文件的工程,则建立的cuda 程序,会自带一个sample.cu,可以选择在sample.cu的基础上更改或删除sample.cu重新建立.cu文件。如果是建立空工程则没有。建立方法.cu文件的方法是建立.cpp文件或.txt 文件改名为.cu文件即可。推荐使用。

3、语法高亮设置。

3.1、找到CUDA SDK安装目录下doc\syntax_highlighting\自带的文件usertypt.dat,将其copy到Microsoft Visual Studio 安装目录的\Common7\IDE下。

3.2、在Visual Studio做以下设置:在Tools-> Options ->Text Editor-> File Extension中添加cu。

P16.设置高亮

3.3、重新启动Visual Studio,完成高亮设置。

(1)语法高亮:

将NVIDIA CUDA SDK\doc\syntax_highlighting\visual_studio_8里面的usertype.dat文件cop y到Microsoft Visual Studio 8\Common7\IDE目录下面。

(2)设置VC2008环境

进入Tools|Options|Projects and Solutions|VC++Directories 添加(visualAssist里面也可以同样设置VAssistx->Projects->c/c++Directories->PlatForm:Custom->Stable include files/source files里面加入)

Include files: cuda\sdk\common\inc(目录可能不一样,第一节的目录)

Library files:cuda\sdk\common\lib

Source files:cuda\sdk\common\src

进入VC++ Project Settings:C/C++ File extensions:添加*.cu,在Text editor-File extension:添加cu 对应editor到Microsoft VC++ editor。

(3)Assist关联.cu文件

关闭已经打开的Visual studio,之后进入注册表编辑:HKEY_CURRENT_USER\Software\Wh ole Tomato\Visual Assist X\VANet9\找到右边的ExtSource项,将其值添加.cu;.cuh;之后关闭。(4)在VS的Tools|Options|Projects and solutions|VC++ project setting里面的rules file s earch path里面添加CUDA SDK安装目录的common目录的CUDA.rules文件所在路径C:\P rogramData\NVIDIA Corporation\NVIDIA CUDA SDK\common\。

(5)新建项目->项目名上右键->选择custom build rules…->然后勾选新添加进去的Rule files,

如CUDA Build Rule 2.3.0。在工程中添加.cu文件,右键点击cu文件->选择Properties->Con figuration Properties->General->Tool的下拉列表中选择上一步勾选的Build Rule的名称,例如“CUDA Build Rule v2.2.0”->确定。

a)将C:\Documents and Settings\All Users\Application Data\NVIDIA

Corporation\NVIDIA GPU Computing

SDK\C\doc\syntax_highlighting\visual_studio_8中的usertype.dat

拷贝到C:\Program Files\Microsoft Visual Studio 8\Common7\IDE

b)打开VS2005,选择工具-选项-文本编辑器-文件扩展名,在扩展名编辑

框中填入cu,在编辑器下拉菜单中选择Microsoft Visual C++,单击添

加,然后点击确定。

c)打开注册表,在HKEY_LOCAL_MACHINE\SOFTWARE

\Microsoft\VisualStudio\9.0\Languages\File Extensions\.cpp下面

添加子键 .cu 然后copy .cpp的键值到.cu。这样才能表示cu也是VS

下的VC的工程文件。

d)打开VS,运行下VA(建立一个CPP工程,折腾到VA能用为止),关掉

IDE,否则注册表不会添加对应信息。

e)HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet8

在ExtSource键添加键值.cu

f)打开Visual Assist属性,在projects 的C/C++ Directories custom

下面添加CUDA的头文件目录,这样才能在Visual Assist 生成规则的

时候找到CUDA自身的特殊定义才能生成Visual Assist的关键字,如

__global__.

添加的目录有C:\CUDA\include,C:\Documents and Settings\All

Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\common\inc

Source file中添加C:\Documents and Settings\All

Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\common\src

从https://www.360docs.net/doc/b05960736.html,/object/cuda_get_cn.html 下载CUDA Toolkit和CUDA SDK,注意相应的系统版本。然后安装Tookit和SDK(我没有改默认路径,直接装在C盘了)。同时推荐装个CUDA的Wizzard,参考OpenHero的https://www.360docs.net/doc/b05960736.html,/OpenHero/archive/2008/04/18/23 05856.aspx

QT安装

QT4.6.3 + VS2008安装配置全过程

一、下载两个安装EXE,qt-win-opensource-4.6.3-vs2008.exe和qt-vs-addin-1.1.5.exe

二、系统中已经安装了VS2008及SP1补丁包;

三、然后安装两个EXE文件,最好先安装qt-win-opensource-4.6.3-vs2008.exe;

四、配置QT:控制面板->系统->高级->环境变量,在“系统变量”这个组合框中,找到“Path”变量,在"Path "的最后面添加"d:\work\Qt463\bin\",(假设你的安装目录是“d:\work\Qt463\”以下的命令都是依照这个安装目录进行操作)

五、接下来,开始-> 程序-> Microsoft Visual Studio 2008 -> Visual Studio Tools ->Visual Studio 2008 命令提示

六、在命令行中键入:d: 回车

cd /D d:\work\Qt463 回车

configure (注意:如果机器中存在多个编译器,你想要指定一个编译器,需要把configure 替换成configure -platform win32-msvc)

nmake 回车

七、编译成功之后,打开VS2008,工具-> 选项-> 项目和解决方案 -> VC++目录中,

A.在“包含文件”中加入以下目录:

d:\work\Qt463\include

d:\work\Qt463\include\Qt

d:\work\Qt463\include\QtCore

d:\work\Qt463\include\QtGui

d:\work\Qt463\include\QtHelp

d:\work\Qt463\include\QtNetwork

d:\work\Qt463\include\QtOpenGL

d:\work\Qt463\include\QtScript

d:\work\Qt463\include\QtSql

d:\work\Qt463\include\QtSvg

d:\work\Qt463\include\QtTest

d:\work\Qt463\include\QtUiTools

d:\work\Qt463\include\QtWebKit

d:\work\Qt463\include\QtXml

d:\work\Qt463\include\QtXmlPatterns

d:\work\Qt463\src

B.在“库文件”中加入以下目录:

D:\work\Qt463\lib

八、好了,VS2008和QT的安装配置已经全部完成,你可以放心开发QT程序了。

如何在windows环境下使用visual studio 2008开发qt

管理提醒: 本帖被xtfllbl 从General Qt Programming 移动到本区(2010-07-07)

虽然qt提供LGPL版本,并且自带qt creater作为IDE,但是因为种种原因(比如没有emacs绑定),需要利用visual studio作为开发和编译环境。具体怎么做呢?

首先需要下载一些工具。这些工具都是免费的:

visual studio express 2008:https://www.360docs.net/doc/b05960736.html,/express/downloads/

qt的sdk,我们下载LGPL的版本: https://www.360docs.net/doc/b05960736.html,/downloads

qt的visual开发插件: https://www.360docs.net/doc/b05960736.html,/downloads/visual-studio-add-in

下载完毕后,依次安装:

visual studio express 2008

qt的sdk

qt的visual开发插件

安装过程没有什么可以说的,完全按照默认来就可以了。

安装完毕后,还不能用,因为我们需要用visual studio做qt开发,qt sdk是默认用mingw的g++编译的。visual studio编译的时候会提示没有库文件: qtmain.lib。

我们需要把qt重新用visual studio编译一遍。方法如下:

开启visual studio 的命令行:

开始——所有程序——visual studio 2008——visual studio tools——命令提示

进到qt目录里面:

cd c:\qt\2009.04\qt\

运行:

configure -platform win32-msvc2008

nmake

编译完成后(可能需要两个小时的时间),开启visual studio,就可以新建qt project并成功编译了。ps:其实我自己编译到webkit出现问题了。。不过还是将就用了。。

引用:

https://www.360docs.net/doc/b05960736.html,/4.6/install-win.html

https://www.360docs.net/doc/b05960736.html,/2010/01/30/how-to-setup-qt-4-5-visual-studio-integration/

最后新建一个QT项目,

1 右键项目,选择自定义生成规则,选择CUDA和CUDA2.3。。。。。。,如果没有这两个,则看下前面CUDA在vs中的安装。主要是看下怎样添加生成规则,在工具-》选项-》项目和解决方案-》vc++项目设置-》规则文件搜索路径,中添加C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Compu ting SDK\C\common路径可能不同。

2 右键项目,属性,连接器,输入,附加依赖项中添加(qtmaind.lib QtCored4.lib QtGuid4.lib)c udart.lib cutil32.lib 如果是cu文件,则需要将右键项目,属性,连接器,系统改为控制台(/SUBSY STEM:CONSOLE)

3右键项目,属性,常规,附加库目录中加入($(QTDIR)\lib);$(CUDA_LIB_PATH);$(NVSDKCUDA_

ROOT)\common\lib

Linux_Qt_4环境配置

Linux下Qt 4.8.0 环境配置 Step1:在诺基亚官QT网下载文件包 https://www.360docs.net/doc/b05960736.html,/qt/source/qt-everywhere-opensource-src-4.8.0.tar.gz Step2:打开取得root权限,将安装包解压到/usr/local 下 [CentOS@localhost ~]$ su root [root@localhost CentOS]# tar zxf /tmp/qt-everywhere-opensource-src-4.8.0.tar.gz -C /usr/local (不加-C的话在解压时会出现Not found in archive 的错误) Step3:安装Qt的一些依赖软件包 A.gcc C++ 编译器 B.Xlib库,在软件添加中找到libX11-dev,libXext-dev,libXtst-dev这三个包并安装 C.Make包,可以在终端中用yum命令安装 Step4:用root权限执行Qt中的配置文件configure [CentOS@localhost ~]$ cd $QTDIR (QTDIR是在.bash_profile定义好的环境变量) [CentOS@localhost qt-everywhere-opensource-src-4.8.0]$ su root [root@localhost qt-everywhere-opensource-src-4.8.0]# ./configure 出现以下提示 Which edition of Qt do you want to use ? Type 'c' if you want to use the Commercial Edition. Type 'o' if you want to use the Open Source Edition. 输入”o”开始安装编译环境 Step5:配置结束后中遇到如下提示 [root@localhost qt-everywhere-opensource-src-4.8.0]# gmake 开始Qt安装编译,大概需要2个小时左右

qt-wince安装

Qt-WinCE全解 声明:花费了三天时间,周转各大网站,终于在今天将自己的第一个Qt程序在“小I(SAMSUNG i718+)”上跑了起来! 一、Qt嵌入式环境的搭建 a) 首先,下载Qt的嵌入式开发包qt-embedded-wince-opensource-src-4.4.0.zip b) 然后,下载VS2005。 c) 最后,下载一个嵌入式开发的SDK,如Windows Mobile 5.0 Pocket PC SDK,可以在微软的官方网站上下载到! d) 还有一个是同步的软件Microsoft ActiveSync4.5中文简体版。 ------------------------------------------安----装---------------------------------- e) 首先安装VS2005,很简单,按照向导来,在自定义安装中务必选择“智能设备开发”。 f) 关于Microsoft ActiveSync4.5的安装更是“straightforward”。在此不再多说! g) 然后,安装Windows Mobile或是其它版本的SDK,可以用自定义的SDK!简单 h) 比较麻烦的就是qt-embedded-wince的安装。参照下面的步骤:①、解压,将解压后的文件夹放到一个不含空格的路径中,如我的:f:\penguinx\qt_wince,qt_wince即为此文件夹。然后设置环境变量:右键“我的电脑”->“属性”->点“高级”标签->“环境变量”选项->在"PATH"中添加路径“f:\penguinx\qt_wince \ bin”。OK!②编译前戏。首先,配置编译选项,进行VS2005的命令行中,进入解压的文件夹,然后执行如下:configure -platform win32-msvc2005 -xplatform wince50standard-armv4i-msvc2005可以根据自己的板子及手机配置来选择其它的嵌入式的xplatfrom。这个过程可能需要十几分钟。执行完后,再次在VS2005中设置临时的环境变量,编译时要用到:如下: set INCLUDE=D:\Program Files\Microsoft Visual Studio 8\VC\ce\include;D:\Program Files\Windows CE Tools\wce500\Windows Mo bile 5.0 Pocket PC SDK\Include\Armv4i set LIB=D:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I set PATH=D:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH% 在此我期望能根据自己的软件安装情况将上面的目录“拿来主义”一下。设置完后,执行nmake,过两、三个钟头后,你就可以Enjoy your journey. 最后,执行nmake,安装完毕!我的Qt-WinCE安装在f:\penguinx\qt_wince

UBOOT命令详解

常用U-boot命令详解(z) 2010-09-30 15:05:52| 分类:学习心得体会|字号订阅 U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的 U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。 [u-boot@MINI2440]# version U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# v U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# base Base Address: 0x00000000 [u-boot@MINI2440]# ba Base Address: 0x00000000 由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧! (1)获取帮助 命令:help 或? 功能:查看当前U-boot版本中支持的所有命令。 [u-boot@MINI2440]#help ?- alias for'help' askenv - get environment variables from stdin base - print or set address offset bdinfo - print Board Info structure bmp - manipulate BMP image data boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootelf - Boot from an ELF image in memory bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol

实验一、Qt实验环境搭建和使用

实验一、Qt实验环境的搭建和使用 一、实验目的 1、熟悉Qt的安装步骤 2、熟悉Qt程序的基本结构 二、实验内容 1、搭建虚拟机+Linux实验环境 2、安装Qt4.8 步骤: (1)解压代码 tar zxvf qt-everywhere-opensource-src-4.8.2.tar.gz (2)执行./config生成makefile ./config 下面出现对话框选择open source edition.这是自由版。输入yes接受协议。 (3)编译QT 执行make命令,需要2个小时。 (4)安装QT 运行make install命令。需要几分钟时间,默认安装到/usr/local/Trolltech/Qt-4.8.2. 运行/usr/local/Trolltech/Qt-4.5.3/bin/designer ,若能启动QT,说明QT已经安装好了。 (5)设置环境变量 更改用户环境变量 gedit /home/envi/.bashrc 添加: export QTDIR=/usr/local/Trolltech/Qt-4.8.2 export PA TH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PA TH=$QTDIR/lib:$LD_LIBRARY_PA TH 更改包括root用户的环境变量 sudo gedit /etc/profile 添加: export QTDIR=/usr/local/Trolltech/Qt-4.8.2 export PA TH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PA TH=$QTDIR/lib:$LD_LIBRARY_PA TH (6)测试环境变量 重启测试环境变量: qmake -v 显示版本信息:

UBoot移植详解

u-boot 移植步骤详解 1 U-Boot简介 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux 系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT 改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。 选择U-Boot的理由: ①开放源码; ②支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS; ③支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; ④较高的可靠性和稳定性; ④较高的可靠性和稳定性; ⑤高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等; ⑥丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等; ⑦较为丰富的开发调试文档与强大的网络技术支持; 2 U-Boot主要目录结构 - board 目标板相关文件,主要包含SDRAM、FLASH驱动; - common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;

QT开发经验

QT学习笔记 1.QT不支持中文路径(文件夹和名称)! 2.QT的编译结果窗口不能正常显示汉字(显示的汉字为乱码) 3.如果程序中使用了PNP以外格式的图片如gif文件,在发布程序时要将 plugins目录下的imageformats文件夹下的对应的Qgif4.dll同时发布。4.在将某一项目的所有文件拷贝至别的文件夹后,系统编译生成的文件夹不会 自动改变,需要再手工改: 5.切换对话框语言: 6.QT单编译某一文件,在文件名上击右键: 7.QT在初始打开项目、点击编译后等,暂时没反应,是正常的,需要等一会: 如下图,读入新的项目,过一会,左下角的绿色图标才会显现(开始是灰色)8.Shadow build选项作用是新建文件夹存放编译结果文件,否则就放在源文件 夹下: 9.【依赖关系】用来设置此项目还依赖于其他的项目(如依赖于另外一个项目 生成的lib库或dll),这样,编译时,会统一自动维持最新编译版本 10.QT的联机帮助的index方式,可以输入关键字,检索条目。但必须打开sidebar 才能显示输入检索关键字的界面: 11.QT编译执行时,显示下列信息: 一种原因是找不到某一DLL。究竟缺少哪一个,可以在开发环境外,直接执行exe文件,会显示: 12.QT Creator执行ReBuild命令,或者是编译时,偶尔会出现并没有重新编译 的现象,例如:将项目中某些文件删除掉(在。Pro中删除,然后保存。),再执行ReBuild,然后运行,发现还是删除前的执行程序,并没有ReBuild。 可能是太过智能,认为没啥变化。 后来发现,在编译设置中,disable了clean steps!恢复clean steps后,开发环境将先做清除,这样就可以正确判断变化了: 13.QT有这样的现象:编译执行run的结果如下: 而执行debug时,弹出对话框,与run不一样,显示了一个错误对话框:14.为了运行时不拷贝需要的dll到当前文件夹(省事),可以设置运行环境变量 PATH。QT编译运行的环境设置见下图,其中PATH会不会自动与Windows系统的设置同步不知道: Windows系统的设置

QT问题集锦-从学习Qt遇到地各种问题

第一篇初级问题 1 用Qt4.8.5打不开冯工柏菲软件 问题描述:运行环境为Qt4.8.5 + QtCreator3.0.0+VS2010专业版 + Debuging Tools for Windows(x86),用Creator无法打开项目文件,截图如下: 弹出错误:Cannot read E:/PROJECT/Zhou-0410/testToolbar.pro: Unexpected UTF-8 BOM 原因分析:未知 解决方法: 1 安装VS2010SP1,未解决 2 安装VS-Add,未解决 3 使用Creator2.6解决 2 编译失败,系统找不到指定路径 问题描述:见下图

原因分析: 1)可能:添加VS编译器环境变量,在PATH中添加VS 中NMAKE路径 2)确定:Creator或编译器无法识别&符号,即路径原文件名为R&T中含有非法字符,无法准确识别路径 3)默认的环境变量已经有了NMAKE路径 解决方法:把路径中非法字符删除即可 3 编译出现乱码,Parse Error 原因分析:未知,应该是非法字符导致。 4 无法解析的外部符号 原因分析:声明的函数,未实现,或在未实现它的情况下调用了它 解决方法:实现后再调用 5 中文乱码 问题描述:见图

解决方法:转换成utf8格式 6 控件背景图片添加 问题描述:按照相对路径添加背景图片不显示解决方法: 1)相对路径起始点为构建目录,如图

2)添加资源文件,把背景图片放到资源文件中,再通过控件属性,指定资源文件中的背景图片即可。 7 昨天能启动运行成功,今天说异常结束,运行不了 原因分析:可能是昨天在windows、system32里面添加了qtcore.dll等文件导致 解决方法:删除之后就可以运行了,但具体删除哪个,待定 8 通过控件,查找操作函数? 9 修改控件名称时,弹出外部链接错误 解决方法:修改名称后,通常有以下步骤 1)在头文件中删除对应槽; 2)修改槽动作名称或重新生成槽动作,把之前代码拷贝到新槽动作中。 10 Qt数据类型转换 1)int 转 QString int a=10;

如何用FFmpeg编写一个简单播放器详细步骤介绍

如何用FFmpeg编写一个简单播放器详细步骤介绍(转载) FFmpeg, 播放器, 编写 FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG 几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。 唯一的问题是它的文档基本上是没有的。有一个单独的指导讲了它的基本原理另外还有一个使用doxygen生成的文档。这就是为什么当我决定研究 FFMPEG来弄清楚音视频应用程序是如何工作的过程中,我决定把这个过程用文档的形式记录并且发布出来作为初学指导的原因。 在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。 在写播放器的过程中,我们将使用SDL来输出音频和视频。SDL是一个优秀的跨平台的多媒体库,被用在MPEG播放、模拟器和很多视频游戏中。你将需要下载并安装SDL开发库到你的系统中,以便于编译这个指导中的程序。 这篇指导适用于具有相当编程背景的人。至少至少应该懂得C并且有队列和互斥量等概念。你应当了解基本的多媒体中的像波形一类的概念,但是你不必知道的太多,因为我将在这篇指导中介绍很多这样的概念。 更新:我修正了在指导7和8中的一些代码错误,也添加-lavutil参数。欢迎给我发邮件到dranger@https://www.360docs.net/doc/b05960736.html,,讨论关于程序问题、疑问、注释、思路、特性等任何的问题 指导1:制作屏幕录像 源代码:tutorial01.c

Qt5.5.1编译说明

第一次编译已经成功-webkit可用,SSL可用-开荒之旅,历尽艰辛. 第二次编译已经成功-webkit可用,SSL可用-旧事重提,高歌猛进. 建议参考第二次编译说明. 本机使用Qt官方的安装器,已经安装了msvc2010,msvc2013,msvc2013_64和Qt5.5.1源码. 本文在WIN7 x64下用MSVC2010x64动态编译Qt5.5.1源码.没有编译dbus,sql驱动只编译了sqllite.因为dbus是linux下的,驱动是第三方库,没有安装,就无法编译. 源码根目录README有很多有用信息,Qt官方网页也有很多有用信息. ●前置工具: 1.ActivePerl5.8 or later 2.Python2.7 or later 3.Ruby没找到要求,我用的2.2.4 4.DirectX SDK不然编译失败,提示和ANGLE有关,大意是要DX SDK才能把把opengl映射到A NGLE,就算使用-opengl desktop也编译失败,不清楚为什么.DirectX SDK会自己设置一个环境变量DXSDK_DIR.Qt源码自带angle源码,不用去下载,也不用单独编译. 5.C++ compiler supporting the C++98 standard 前四个工具安装后,会自动配置环境变量,也必须有,否则就得在cmd中再配置.ActivePerl在p ath中必须位于msysgit的perl之前(如果有) 关于Windows SDK 7.1和Visual Studio 2010和Visual Studio 2010 SP1,官方是这么说的: if you use this SDK with Visual Studio 2010, installing the SDK requires installing the foll owing packages in this order. 注意有if,如果没安装SDK 7.1,不用鸟这部分内容. ●第三方库: 1.ICU-采用动态编译,X64 Debug和Release都编译了,并且分开存贮. 2.SSL-采用动态编译,X64 Debug和Release都编译了,并且分开存贮. 第三方库的编译,一定要按要求走到最后一步,编译出来最终是什么目录结构(即安装后),就是什么目录结构,别改. 第三方库的编译,使用Debug版本和Release版本都可以,关键是lib和dll要对应.比如xd.lib 要和xd.dll相对应;x.lib要和x.dll.当然有的库编译出来的D/R名字一样,对于debug版本,它没有在名字后面加后缀d. 第三方库的编译,没有必要编译两个配置,一个Release配置就够了,Qt官方就是这么干的,并且官方用的动态编译. ●注意事项: [注意]在第一次编译中,编译了ICU和SSL的X64的D和R两个版本(动态编译,所有测试用例

qt在windows_安装配置

Installing Qt/Windows 本人在windows下使用Qt所以下面介绍一下在windwos安装Qt的情况。 qt在windows安装,很简单,我们按照下面的步骤: 第一步:准备安装软件 请大家准备好软件qt-win-opensource-4.0.1-mingw.exe 和devcpp-4.9.9.2_setup.exe 如果大家没有软件,可以到官方网站下载,或者去https://www.360docs.net/doc/b05960736.html,下载. 第二步:安装软件 大家先安装devcpp-4.9.9.2_setup.exe,详细过程就不讲了,windows软件大同小异 接下来安装qt-win-opensource-4.0.1-mingw.exe,安装过程也差不多,大家在安装过程中 到了MinGW时,要注意在find MinGW (previously installed MinGW)是选择你安装的devcpp 的目录 比如:c:Dev-Cpp 其它的就不用管了,一直用‘next’就可以了 第三步:编译应用程序 1. 在这时就安装好了软件,接下来,我们来编译运行一个程序。 在记事本中我输入源代码 //////////////////////////////////////////////////// #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.resize(100, 30); hello.show(); return app.exec(); } //////////////////////////////////////////////////// 我们保存文件为:helloworld.cpp 2. 接下来我从开始菜单进入Qt 4.0.1 command Prompt 在dos下进入文件的目录。 运用qmake工具编译文件。 a. 在进入要编译的文件目录,输入qmake -project 这个命令主要是生成工程文件 b. 接下来我们输入qmake,编译工程文件 c. 接下来我没输入make 最后我们编译,这时如果没有错误,可执行文件就生成了。 第四步:运行程序 找到生成的release或者debug目录下的可执行文件,运行就可以了。

QT编译与配置(静态库与静态运行时库)

QT编译与配置(静态库与静态运行时库) Qt是一个跨平台的应用程序程序框架,可以运行于Windows、Linux、Mac、S60等平台,自从其开源的授权协议由GPL变为LGPL后就变得流行起来。LGPL协议允许使用者开发私有程序而不开源,前提是Qt库必须以动态链接的方式加入程序。 打开Qt的下载页面,可以看到SDK和Library的下载链接。 SDK提供了完整的开发环境,而Library仅仅包含代码和编译出的库。这里的库都是动态链接的Release和Debug版库(相应的Configure参数为-debug-and-release -shared)。而如果需要静态库,就要自己编译了,如果不想自己编译,qtcn论坛上有不少已编译的静态库可以直接下载,地址 https://www.360docs.net/doc/b05960736.html,/bbs/read.php?tid=11800。 如果要自行编译,那么备好一份代码就够了,ftp://https://www.360docs.net/doc/b05960736.html,/qt/source/下有Qt的各个版本的代码下载 下面介绍一下Windows下的静态库编译过程 编译代码有基本的两步,configure和make,不过在这之前还要设置好编译环境。如果是VS,只要执行“Visual Studio 200X命令提示”就行了,如果是Mingw,需要把mingw下的bin目录加入到环境变量中。 这里推荐的configure命令是 configure [-release|-debug|-debug-and-release] -static -no-qt3support -no-webkit -platform [win32-g++|win32-msvc2008|...]

Qt开发环境下载和安装

Qt开发环境下载和安装 (2015.01.18 by Winland) Qt是跨平台的图形开发库,目前由Digia全资子公司Qt Company 独立运营,官方网址:http://www.qt.io/ 也可以访问Qt项目域名:https://www.360docs.net/doc/b05960736.html,/ Qt本身支持众多操作系统。从通用操作系统Linux、Windows,到手机系统Android、iOS、WinPhone,嵌入式系统支持QNX、VxWorks,应用非常广泛。 基于Qt的软件非常多,其中最知名的要数Linux桌面系统KDE(涵盖无数以K打头的应用软件)。国内WPS for Linux版本、360 for Linux也是使用Qt库开发的界面。只要有C++基础,Qt是很容易学的,而且开发跨平台的程序也容易。目前主流使用的Qt库有Qt4和Qt5两个大版本,下面介绍其在Windows系统里的下载和安装。 一、Qt4开发环境下载安装 首先进入下载页面http://www.qt.io/download/ 有四个使用方式,开源社区版、移动版、专业版、企业版,后面几个要钱的,这里选择第一个GPL/LGPL的下载就行了。 进入开源版页面: http://www.qt.io/download-open-source/

上面大按钮Download Now是下载在线安装版,其实只是一个下载工具,并不是真正的Qt 开发库。可以自己下载离线安装包,注意页面的“View All Downloads”,点开之后就能看 到离线包。目前看到的全是Qt5.4.0版本的,那Qt4的在哪呢? 把上面页面拖到最下面: 旧版本包就是最后一个链接:http://download.qt.io/archive/

UBoot源码分析1

?UBoot源码解析(一)

主要内容 ?分析UBoot是如何引导Linux内核 ?UBoot源码的一阶段解析

BootLoader概念?Boot Loader 就是在操作系统内核运行之前运行 的一段小程序。通过这段小程序,我们可以初始 化硬件设备、建立内存空间的映射图,从而将系 统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境 ?通常,Boot Loader 是严重地依赖于硬件而实现 的,特别是在嵌入式世界。因此,在嵌入式世界 里建立一个通用的Boot Loader 几乎是不可能的。 尽管如此,我们仍然可以对Boot Loader 归纳出 一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。

UBoot来源?U-Boot 是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM 的源码创建了 PPCBoot 工程项目,此后不断 添加处理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移 植到 ARM 平台上,创建了 ARMBoot 工程项目。最终, 以 PPCBoot 工程和 ARMBoot 工程为基础,创建了 U- Boot 工程。 ?而今,U-Boot 作为一个主流、通用的 BootLoader,成功地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流体系结构上的百种开发板,成为功能最多、 灵活性最强,并且开发最积极的开源 BootLoader。目前。 U-Boot 仍然由 DENX 的 Wolfgang Denk 维护

linux编译ffmpeg支持x264,x265

linux 编译ffmpeg 支持x264, x265 1. 前言 本教程涉及的ffmpeg, x264, x2652. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plain copy sudo apt-get --purge remove ffmpeg mplayer x264 x265 2.2 安装依赖库 [plain] view plain copy sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev 注: 服务器版本可忽略 libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码 (1) ffmpeg [plain] view plain copy git clone git://https://www.360docs.net/doc/b05960736.html,/ffmpeg.git ffmpeg

(2) x264[plain] view plain copy <pre name="code" class="plain"><pre name="code" class="plain">git clone git://https://www.360docs.net/doc/b05960736.html,/x264.git (3) x265[plain] view plain copy hg clone https://https://www.360docs.net/doc/b05960736.html,/multicoreware/x265 (4) yasm yasm 是x86平台的一个汇编优化器, 能够加快ffmpeg x264的编译 [plain] view plain copy wget https://www.360docs.net/doc/b05960736.html,/projects/yasm/releases/yasm-1.3.0.ta r.gz tar xzvf yasm-1.3.0.tar.gz 3. 编译 3.1 配置编译输出目录 [plain] view plain copy export FFMPEG_PATH="YOUR_PATH" export PATH="$FFMPEG_PATH/bin:$PATH" 例如我输出目录为$HOME/ffmpeg_2.6.3/build_out 那么: [plain] view plain copy export

qt安装中的问题总结

问题1. 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found 执行strings /usr/lib/libstdc++.so.6 | grep GLIBC 返回结果没有GLIBCXX_3.4.9 GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBC_2.0 GLIBC_2.3 GLIBC_2.4 GLIBC_2.3.4 GLIBC_2.1 GLIBC_2.1.3 GLIBC_2.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH 执行ls -l /usr/lib/libstdc++.so.6 发现/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8,其实这里需要使用libstdc++.so.6.0.10 从网上下载这个文件,然后拔/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8软链接删除,重新做 ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6 问题2. 一个关于在Linux下安装QT的问题,运行./configure总是报错 下载的版本是qt-x11-free-3.3.5,我按照网上的安装步骤一步步进行,先是解压,然后设置环境变量,是在/etc下的profile中设置的QTDIR等等,设置好之后,重新启动计算机,然后运行./configure就报错了,错误如下: g++ -c -o project.o -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -I/usr/local/qt/include/qmake -I/usr/local/qt/include -I/usr/local/qt/include -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/usr/local/qt/mkspecs/linux-g++ -DHAVE_QCONFIG_CPP project.cppgmake: g++: Command not found gmake: *** [project.o] Error 127 qmake failed to build. Aborting.

视频解码中用到的ffmpeg交叉编译技巧

视频解码中用到的ffmpeg交叉编译技巧 一、简介 FFmpeg是一个集录制,转换,音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。 由于ffmpeg是基于linux开发的,源代码和windows下最常见的visual studio提供的c/c++编译器不兼容,因此不能直接使用msvc++编译,想要使用ffmpeg,需要在windows下配置一个类似Linux 的编译环境,并将ffmpeg编译为二进制库以后,再利用其进行进一步开发。 目前,windows下可直接使用的最新版本是由ffmpeg工程组,于2008年4月份发布的ffmpeg full sdk v3.2。该sdk尽可能的集成了更多的编解码器。 在应用中,使用该开发包存在2个缺陷,第一,该sdk编译基于ffmpeg r12790,编解码效率上,当前已经有了较大的提升;第二,该开发包包含了很多不需要的编解码器,需要尽可能减少开发包的体积及关联的库的个数。基于以上需求,需要自己编译出windows下可用动态库及静态库。 使用到的库文件有4个,libavcodec,libavformat,libavutil,libswscale,其中库 libavcodec,libavformat用于对媒体文件进行处理,如编解码;libavutil是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能,libswscale主要用于图像格式转换及缩放。因效率的需要,我们选择了 ffmpeg-mt版本,同时通过配置编译尽量减少相关文件的体积。 网上类似编译过程说明较多,但实际编译过程中碰到一些问题,这些问题的解决花费了不少时间,本文档对这一过程进行记录,以便后续维护及学习。 二、编译环境搭建 windows下ffmpeg编译环境有多种可选择方案。这里我们使用MinGW+MSYS。 1.下载mingw+msys并安装 https://www.360docs.net/doc/b05960736.html,/projects/mingw/ mingw,默认安装,在choose components时选择g++ compiler及MinGW Make Msys,默认安装, Do you wish to continue with the post install【yn】,y! Do you have mingw installed?【yn】,y Where is your mingw installation? C:/mingw

uboot环境变量总结

Common目录下面与环境变量有关的文件有以下几个:env_common.c,env_dataflash.c,env_eeprom.c,env_flash.c,env_nand.c,env_nowhere.c,env_nvram.c,environment.c。 env_common.c中包含的是default_environment[]的定义; env_dataflash.c,env_eeprom.c,env_flash.c,env_nand.c, env_nvram.c 中包含的是相应存储器与环境变量有关的函数:env_init(void),saveenv(void),env_relocate_spec (void),env_relocate_spec (void),use_default()。至于env_nowhere.c,因为我们没有定义CFG_ENV_IS_NOWHERE,所以这个文件实际上没有用。 environment.c这个文件时是我真正理解环境变量的一个关键。在这个文件里定义了一个完整的环境变量的结构体,即包含了这两个ENV_CRC(用于CRC校验),Flags(标志有没有环境变量的备份,根据CFG_REDUNDAND_ENVIRONMENT这个宏定义判断)。定义这个环境变量结构体的时候还有一个非常重要的关键字: __PPCENV__,而__PPCENV__在该.c文件中好像说是gnu c编译器的属性,如下: # define __PPCENV__ __attribute__ ((section(".text"))) 意思是把这个环境变量表作为代码段,所以在编译完UBOOT后,UBOOT的代码段就会有环境变量表。当然,这要在我们定义了ENV_IS_EMBEDDED之后才行,具体而言,环境变量表会在以下几个地方出现(以nand flash为例): 1、UBOOT中的代码段(定义了ENV_IS_EMBEDDED), 2、UBOOT中的默认环 境变量, 3、紧接UBOOT(0x0 ~ 0x1ffff)后面:0x20000 ~ 0x3ffff 之间,包括备份的环境变量,我们读取,保存也是对这个区域(即参数区)进行的。3、SDRAM中的UBOOT中,包括代码段部分和默认部分,4、SDRAM中的melloc分配的内存空间中。 Environment.c代码如下: env_t environment __PPCENV__ = { ENV_CRC, /* CRC Sum */ #ifdef CFG_REDUNDAND_ENVIRONMENT 1, /* Flags: valid */ #endif { #if defined(CONFIG_BOOTARGS) "bootargs=" CONFIG_BOOTARGS "\0" #endif #if defined(CONFIG_BOOTCOMMAND) "bootcmd=" CONFIG_BOOTCOMMAND "\0" #endif #if defined(CONFIG_RAMBOOTCOMMAND) "ramboot=" CONFIG_RAMBOOTCOMMAND "\0"

linphone分析

目录 1 LINP HONE 的编译3 1.1 LINPHONE 在ARM 上的编译环境说明3 1.2 LINPHONE 依赖的库3 1.3 LINPHONE 编译脚本3 1.4 编译过程中的问题4 2 LINP HONE 代码分析4 2.1 LINPHONE 的初始化分析4 2.1.1 LINPHONEC 的初始化5 2.1.2 LINPHONE_CORE 的初始化5 2.1.3 ORTP 的初始化5 2.1.4 MEDIASTREAM2 的初始化6 2.1.5 EXOSIP 的初始化6 2.2 LINPHONE 的通话过程分析6 2.2.1 LINPHONE 的命令处理分析7 2.2.2 LINPHONE 的呼叫过程分析7 2.2.3 LINPHONE 的通话过程分析8 2.2.4 LINPHONE 的响应过程分析8 2.3 LINPHONE 中创建以及应用自定义过滤器9 2.3.1 过滤器的基本功能9 2.3.2 过滤器的通用接口10 2.3.3 自定义过滤器10 Linphone 的编译与代码分析 1 Linphone 的编译 1.1 Linphone 在arm 上的编译环境说明 Linphone 在arm 上编译的时候,时常会碰到一些问题,有时候想办法解决了相关的问题,但编译出来的Linphone 在板子上的运行仍然不稳定,或者不能通话。 如果条件允许的话,当碰到这些问题之后,可以换其它的工具链进行编译。我最初编译Linphone 的时候采用的是xscale270 板子自带的工具链,GCC3.4.3 以及uclibc。经过很痛苦 的一番折腾之后,所以的代码最终都编译通过,但是编译出来的linphonec 在板子上运行在通话开始之后总是崩溃。通过GDB 调试,发现是多线程的问题引起的,于是编译了一个线程结构相当的程序,但是测试没有发现问题。 最后,我改用GCC4.0.0 以及Glibc-2.3.5 基本上没有碰到什么问题,直接编译通过,并 且在板子上正常运行。 1.2 Linphone 依赖的库 除了上面所提到的Gcc,Glibc 以及系统的基本库外我主要编译了下面的程序包。 序号库名称说明 1 ReadLine 一个终端显示库,Linphone 会用到它时里面的事件循环机制来读取会话事件。 2 ffmpeg 音视频编解码库 3 Speex 专为通话过程设计的音频编码库 4 libtheora 视频压缩编码库 5 libfaac mpeg4 的音频编码器 6 libfaad2 AAC 音频解码器

相关文档
最新文档