QNX学习——10步开发一个QNX程序(QNX官方文档翻译))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第一步
原文地址:
写在QNX Neutrino实时操作系统下运行的程序,首先你需要的是QNX软件开发平台(SDP)。
这个包括QNX Momentics Tool Suite,包含你开发运行在QNX 操作系统下程序所需要的每样东西:编译器、链接器、库和其他QNX操作系统组件,预编译给所有QNX操作系统支持的CPU架构。
在windows和linux操作系统上,tool suite是一个广泛整合的开发平台(IDE)。
你能安装QNX SDP在一个QNX Neutrino实时操作系统用于自平台开发,或者你能安装它在windows或linux系统上:
开发主机运行QNX Momentics Tool Suite;目标机运行QNX系统加上你将开发的所有程序:
如果你没有QNX软件开发平台DVD,你可以现在一个验证版本在如果你只想
验证QNX在X86架构上,你可以下载QNX SDP安装和启动CD。
DVD包含了各个平台的安装。
你有一些目标系统的选择运行QNX系统:
PC目标机:你能安装开发平台的自主机版本在一个有一个大概3.0GB分区的普通PC。
(procnto微内核只要求700KB;可添加可选择组件到上面,你能创建每个东西从小型嵌入式系统到全桌面实时系统那个只要求300MB)安装系统不损坏任何存在的分区。
你也能启动QNX直接从DVD或者CD,在你没有足够空间的情况下。
其他硬件:你能运行QNX在一个参考平台一个参考设计由CPU厂商(PPC,ARM,MIPS或者SH)。
你将需要一个QNX板级支持包BSP用于你的平台。
BSP的文档解释了如何安装操作系统到这些目标机上。
更多关于BSP的信息访问。
虚拟机:你可以安装和运行QNX实时系统在一个虚拟机上。
即使VMware是一个便利的方法来尝试系统,你应该注意虚拟机不支持硬实时。
QNX被设计为同样的方式对于所有的平台且被使用在同一方法下,对于这个快速开始向导我们将使用windows作为一个开发主机,一个x86虚拟机作为目标机。
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第二步这里我们要安装QNX软件开发平台在主机上。
启动主机系统后(windows系列)且插入QNX SDP的光碟。
如果安装没有自动开始,就运行程序qnxsdp-6.5.0-nnnnnnnnnnnn-Win32.exe(nnnnnnnnnnnn表示建立编号),这个程序一般在光盘的根目录下。
你将被安装向导引导。
关于这个更多的信息,见Installation Guide。
这个安装程序将询问你要一个license key。
如果你下载
一个验证版本的QNX SDP从官网上,你会收到一封电子邮件(包含了key)。
另外,你会找到你的key在光碟的盒子上。
安装完成后,你将找到一个图标对应QNX Momentics IDE在你的windows桌面上:
注意:qnxsdp-6.5.0最好安装到C盘,安在其他盘编译BSP会不通过,期待高手解决
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第三步接下来,设置你的QNX Neutrino RTOS目标系统:
PC目标:插入QNX Software Development Platform QNX Neutrino RTOS Host DVD或者Install and Boot CD(x86 Targets)在你的第二个机器的光驱里且从它启动。
如果你没有这个盘,你科下载一个评估版本从。
在这里,你能选择直接的从DVD或者CD启动系统(用于初始化测试)或者安装QNX Neutrino RTOS在你的硬盘上。
请悬着安装到硬盘且按照屏幕上介绍来。
更多的描述,见安装向导。
虚拟机目标:DVD安装盘包含了一个VMware映像用于VMware Workstation 7或者Player3。
如果你没有安装DVD,你可下载VMware映像于。
你也可启动一个虚拟机从一个QNX Neutrino的ISO映像:虚拟机里的到CD/DVD光驱设置页,选择Use an ISO image,浏览ISO映像,重启你的虚拟机器,且安装QNX Neutrino。
在重启后,你的硬件将自动被检测。
如果你选择了图形模式,你能作为root用
户登录而不需要密码。
注意你的机器的IP地址在屏幕的右边;你将在后面需要它。
你现在在预设置的前面,完整特性的QNX Neutrino Realtime系统包含QNX Photon microGUI窗口系统。
(当然你也可以不需要图形模式运行该系统。
)在屏幕右边,你将找到一个图标栏。
从这里,打开一个shell由打开Utilities组且按下Terminal按钮。
查看在你系统中的进程列表,输入pidin | less。
各个进程是可选的,意味着在你的设计中,你可以移除进程来节省资源——或者你能添加其他进程来增长系统的功能。
这个应用于图形,网络,或者音频;各个QNX Neutrino RTOS组件是一个单独进程你能动态的读取。
输入q来推出less命令。
在安装了系统后,你能容易的自己熟悉许多QNX功能和特性。
所有这些不需要你自己创建和配置一个启动镜像!
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第四步现在连接你的QNX Neutrino RTOS机器(你的目标机)到网络上。
你的开发机应该在同样的网络上。
如果DHCP服务可用,你的QNX Neutrino RTOS机器将自动接收一个IP地址。
你能观察你的IP或者改变它使用ifconfig 命令,如果Uilities Reference里的描述。
可选择的,你能使用来自QNX NeutrinoRTOS安装的网络配置工具。
你将找到它在右边屏幕的图标栏的Configure条目下,或者在Launch目录。
在Devices选项卡下,你能选择使用DHCP或者手动分配IP地址。
在Network 选项卡下,请输入网关和DNS的IP地址。
在你的Windows开发主机上,打开一个cmd窗口使用ping命令来检查你的Windows开发主机能否到达你的QNX Neutrino RTOS系统(目标)在网络上:
在同样的cmd窗口里,使用ipcinfig来确定你的主机IP地址。
在目标系统,使用这个IP来确定你的目标机能ping通你的主机:
注意:如果你的主机使用防火墙,你可能不能ping不通它。
在Windows XP 上你也许不得不允许Allow incoming echo request在ICMP设置里。
如果网络没有在你的目标机上工作,你也许使用了一个没有被QNX支持的网络卡。
要查看一个完整的支持硬件列表,访问。
如果你有更多问题关于硬件支持,请联系你的销售商。
Hint:完整的QNX Neutrino RTOS安装包使用自动硬件检测来开启相应的设备驱动。
使用enum-devices –n命令,你能看见何种硬件被枚举探测且何种驱动被开启在启动中。
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第五步在你的开发主机上打开QNX Momentics IDE。
第一次打开IDE,它会询问你选择一个工作空间,一个能存放你的工程和其他文件的文件夹。
IDE随后显示它的欢迎页面。
当你准备开始,点击Workbench图标:
现在创建一个QNX C工程:从File菜单选择New>QNX C Project:
在弹出来的窗口中,给你的工程命一个名字。
确保Generate default file 被选中,保留Add project to working set不被选中,点击下一步。
你现在需要选择一个CPU架构。
选择Build Variants 选项卡。
对于PC目标,选择x86。
对于其他处理器上工程,选择正确的CPU类型:PPC、SH、ARM、MIPS。
你也能选择编译和/或debug信息;我们两个都选择,确保debug和releas variants 被同时选上。
点击Finish按钮。
一个有Makefile的准备使用的工程结构被创建,包含一个小程序(“Welcome to the QNX Momentics IDE”),你将找到在一个自动生成的资源代码文件里。
现在这个IDE选择了C/C++ perspective,带有导航、编辑和其他有用的视图、区域来显示关于这个任务的信息:
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第六步你的目标系统必须能响应来自开发平台的请求(例子:比如你在windows下运行开发平台,那么你也要将安装了QNX的目标机要能使用网络连接你的开发平台,不然程序无法调试)。
要让这个成为可能,在目标机下开启程序qconn。
在一个PC运行QNX Neutrino RTOS的时候,你能使用一个终端窗口来做这些。
从IDE访问你的目标机,你必须创建一个目标工程。
打开System Information prespective:在Window菜单,选择Open Perspective > QNX System Information。
在空的Target Naviga视图中,点击右鼠标按钮且选择菜单栏中的New QNX Target。
如果你希望,你能不检查Same as hostname和提供一个名字给你的目标系统。
输入它的IP地址在相应的域。
点击Finish,然后选择你的新目标在Target Navigator。
你将看见一个在你的QNX Neutrino RTOS系统里的所有处理器列表。
这个视图(顶层的标签)提供其他信息给你。
你能找到更多有用的视图在Show View下的Window菜单里。
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第七步现在选择在工具条右边的图标回到C/C++ perspective。
在你编译之前,你也许想选择编译时显示或不显示debug信息。
为了做这个,右击工程名在Project Explorer视图里,然后选择Properties。
点击QNX C/C++ Project,选择Build Variants,然后展开x86选项。
确保debug和release variants被选择。
点击OK;IDE重建工程。
在QNX C Project创建期间,产生一个QNX-made路径结构的Makefiles。
现在创建一个binary,右击工程名,然后选择Build Project。
编译器和链接器将开始它们的工作。
你将找到编译器的输出在Console视图里的C-Build输出,包括任何错误(你不应该看见任何错误,但是我们在下面的例子中添加了一个)。
但是,如果错误发生在编译期间,你将发现Problems视图更加的有用,因为它显示编译器的输出在一个解释的和比Console视图更加可读的方式。
Editor视图也给你关于一个错误的信息如果你遗留了指针。
在组建工作后,你的binaries将被显示在Binaries文件夹。
实际上,它们位于CPU路径在“o”(object)和“o-g”(-g表明编译器带debug功能)。
IDE 自动创建相关Makefile。
QNX库libc.so,包含了许多基本功能,默认同步链接到你的binary。
如果你想添加其他库,你能做这个在Project>Properties选项下。
来自这里,点击QNX C/C++ Project,然后链接,然后选择Extra Libraries在Category下拉框:
点击Add,输入库的名字,不要带有lib前缀或者扩展名。
例子,添加数学库,libm.so,你只需输入m在文本框:
点击OK。
链接器将链接库当你组建工程时候。
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第八步运行和debug新组建的程序在你的目标机上,你需要创建一个launch configuration。
它包含影响一个程序如何开始的设置变量(例子:command-line 参数,环境变量)。
你设置一次,然后你就可以重复使用这些设置。
现在创建你自己的launch configuration:从工具条上的“bug”图标的旁边下拉菜单,选择Debug Configurations…:
一个图表窗口会打开,这里你能开始运行运行配置,改变它们,或者创建新的。
在左边,选择C/C++ QNX QConn(IP)。
这个运行配置的类型意味着对于在目标机上运行着QNX Neutrino RTOS的基于网络(交叉)开发,使用qconn程序。
现在点击New launch configuration图标:
你现在的所有提交的配置会全部用于处理开启你的可运行程序。
现在,只有Main标签需要你的输入。
但是,你也应该注意其他标签必须提供的。
如果你希望,你能改变默认配置名字在图表的顶层。
然后点击Project旁边的Browse…按钮,选择你的工程。
下一步到C/C++ Application,点击Search Project按钮选择你的binary。
编译带debug信息的binary名字包含一个_g的后缀。
我们会开启Debugger在下一步,请选择binary with the debug information。
点击OK。
确保你的目标系统在Target Options下被列表,然后点击Apply这个运行配置现在就准备好了:
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第九步你应该还在Debug运行配置图表里。
你创建一个配置来运行你的程序,你现在能在debugger里开始。
来做这个,点击Debug。
这个IDE现在选择Debug透视和通过网络传输你的程序从开发机器到你的目标QNX Neutrino RTOS系统,然后在debugger的控制下开始。
你将看见debugger 停止在你的程序的第一行。
在Debug视图,你将看见你的进程的概貌,包含调用的栈。
使用在Debug视图的主工具条的按钮,你能控制debugger。
当你运行或者debug你来自于IDE的应用,任何输入从IDE的控制台读取,且任何输出也到控制台上。
当上图的程序运行过printf()的函数调用后,你应该看见“Welcome to the QNX Momentics IDE”信息在控制台窗口。
使用Step Over按钮,你能跳到下一行代码。
在debug期间,你能观察右边变量(Variables)视图,显示了你的变量的
改变。
你能使用Step Into按钮来让debugger运行到函数的代码里去(当然,只有你有这个函数的源代码的时候才会有用)。
设置一个断点,放置鼠标指针在资源显示的左边界,按下鼠标右键选择菜单中的Toggle Breakpoint。
这个断点看起来像一个小圆圈,你也可以设置或者移除当你写你的代码的时候。
当运行中的程序遇到一个断点,在debug中会停下来,这时你能,例如,解释你的变量。
如果你点击Resume按钮,你的程序继续运行直到下一个断点。
忽略程序执行,使用Terminate按钮。
在程序结束运行后,你能使用Remove All Terminated Launches按钮来清除所有来自于Debug视图的终端运行。
注意:debug保持工程的文件打开当程序在运行的时候。
在你尝试重建你的工程之前确保debug被终止,否则组建会失败。
要独立的运行你的程序(没有debug),打开Run图标旁的下拉菜单选择Run Configurations…:
然后你能使用运行配置(在上一步中有描述)来开始你的程序。
或者创建一个新的运行配置且选择不带debug信息的二进制生成。
你也能使用系统信息透视的目标文件系统导航(Window > Show View)来手动传输你的二进制,然后双击运行它(或者右击它选择Run)。
可以将二进制保留在一个共享的网络驱动盘中,连接驱动盘在你的QNX Neutrino 目标(见QNX Neutrino RTOS 单元描述里的fs-cifs条目),从那里运行二进制。
QNX学习——10步开发一个QNX程序(QNX官方文档翻译)——第十步转换这个默认程序到你自己的QNX程序中,你能修改和扩展这些我们创建的资源代码。
尝试我们的一些演示程序从它们复制代码到你的工程中。
现在你已经开始了,你将可能想需要更多的信息,例子如何创建你自己的线程,QNX Neutrino消息传递时如何工作,何种进程同步方法是可用的,如何访问一个I/O 区域,如何组建一个QNX Neutrino资源管理器。
不要担心:所有这个如果你经历的这个快速开始向导一样简单!(译者:前提大概是给钱才提供的吧,反正我是到处找资料都没有找到好多,几万美金啊!学习这个真坑爹)IDE包含许多教程来帮助你开始。
从IDE的工具条选择Help > Welcome,然后点击教程图标:
IDE的帮助系统包含QNX文档,随着关于这个Eclipse平台的信息。
在Help 菜单,点击Help Contents:
这个QNX Software Development Platform路线图将帮助你找出你需要寻找信息的位置。
我们建议浏览Welcome to the QNX Software Development Platform、QNX Neutrino RTOS System Architecture向导、IDE用户向导和QNX Neutrino RTOS Programmer’s向导。
在自己的系统上浏览文档,只需点击屏幕右边上的图标栏上的Help按钮。
打印文档也是可用的。
你也可能对将帮助你快速创建消费级音频、视频和图像产品的中间件产品的QNX Aviage portfolio感兴趣。
IDE包含源代码例子覆盖了线程创建、互斥体的使用、消息传递和其他进程间联系方法如同一个QNX资源管理器模板。
选择Help > Welcome,然后点击Samples 图标:。