VxWorks入门级开发环境学习

2023-05-16

由于实习需要,最近在学习VxWorks,久闻该操作系统大名,一直被其深厚的内力震撼着从未敢去了解,直到最近。

操作系统Vxworks本身的优点特点等详细信息不多说了,这里讲讲几天来我学习的感受和一些入门经验。(我也是初学者,刚刚接触了一周)

 

不说操作系统内容,这里只说说开发环境:tornado、VmWare等

大家都知道,windriver的Vxworks不是开源的,不是免费的,所以源代码看不到,至少我还没找到。

tornado就是VxWorks的IDE,在该软件下可以进行系统级的仿真。

tornado在网上有很多下载链接,但是注意版本对应的目标机,有tornado for arm,tornado for pentium,等等,我们在PC机上开发的话应该选择tornado for pentium。版本一般都是tornado 2.2的。软件安装方法在网上也有大量的资料,其中要输入什么序列号还是什么ID号的时候也是在网上搜到的,不难。

 

tornado里集成了很多实用的插件工具,方便开发。

其中目前接触的最多的就两个:target server和Vxsim

target server是做什么用的呢?可以说,他就相当于下载器,是链接PC主机端和实际目标端的桥梁。在target server里可以设置目标机的IP地址和一些其他文件、操作选项,就可以将我们在tornado中编译好的可执行文件下载到目标机中了。

 

Vxsim是tornado自带的一个系统仿真软件,方便开发时因缺少目标机等而造成的无法看到程序运行结果的一个插件。

 

我们有PC机,有虚拟机,其实完全可以虚拟出一个目标机嘛,目标机上跑vxworks,不一样能实现主机-目标机结构吗!聪明!

在vxworks开发网http://www.vxdev.com/index.htm里有一篇如何安装vxworks到虚拟机的文章http://www.vxdev.com/html/44/624.htm,非常不错,还配有链接,将相关下载文件都贴了进去,力荐。解压密码就是www.vxdev.com

当一切都配置好后还是不知道哪跟哪,怎么回事,这时候就要缕一缕了:

tornado------vxsim-------target server------vmware------ftp server,这么多东东,这都哪跟哪啊?有点乱。。。

好吧,我承认我也乱过,但是仔细缕一缕,就知道都什么关系了。

首先,tornado,是集成开发环境,里面包含了我们开发vxworks时要编辑、编译的功能,这个没问题吧,跟vs是一样的。我们在tornado里建立工程,写好代码,编译,成功,就有了.out的可执行文件。到此打住,再看Vxsim。

vxsim是干什么的呢?它相对于我们说的虚拟机上跑vxworks是独立的,vxsim是一个windriver公司为了方便用户验证上面编译出来的可执行文件的是否能正确执行,执行出什么样的效果来而做的仿真软件。编译出来的可执行文件通过在工程上右击点下载,就可以启动并下载到vxsim中,打开windSh,里面敲入要执行的函数名,就可以看到代码的执行效果了。

 

再来说说这个target server,它可是在开发中最重要的工具了,在第一步里我们编译生成了可执行文件,比如a.out,我们想下载这个程序到目标机上去,怎么办呢?通过网络下载,target server就是干这个网络连接的!在tornado的tools菜单栏里打开target server项,有个配置,在配置里要添加目标机的ip地址的。(目标机的ip地址是什么,就看上面给的连接文章了http://www.vxdev.com/html/44/624.htm)。还有里面重要的一项是target server properties里选择back end 的时候,available back配置成wdbrpc。具体都是什么意思,我也懒得解释,在网上一堆资料,查吧!再就是核心文件符号表,这个很重要,要将target server properties里选择core file and symbols的时候,将编译生成的vxworks核心文件添加进去(该核心文件的生成办法就是将http://www.vxdev.com/html/44/624.htm中提到的vmWarevxworksBSP包在工程中编译,就会在相应的工程目录中有一个名为vxworks的文件,它就是核心文件)。之后点击launch就可以启动与目标机的连接了!连接好之后做什么?等会,不急,我说了一条再说一条。后文会说的。配置好了的target server 就是一个目标机了。

 

再来说说这个vmware,本来我们做vxworks就是想把这个系统跑在嵌入式板子上的,但是如果我们没有板子,或者没有板子对应的BSP,又着急学着开发这个系统,所以就用了这个vmware先跑着再说。这可是个好东西,把我们在嵌入式板子上要做的大部分功能都囊括了。怎么配置这个虚拟机,还是这篇文章:http://www.vxdev.com/html/44/624.htm。

 

最后说说这个ftp server。这个FTP就是用来下载VxWorks映象的,为了便于观察引导程序是否从FTP上下载了VxWorks映像,要打开FTP Server的日志功能,也就是说我们的虚拟机上跑的vxworks,实际上是PC端提供的一个VxWorks映像文件,该映像文件通过ftp server下载到虚拟机中,虚拟机里跑的只是个启动引导,真正的内核是PC端提供的映像文件。所以,我们不启动tornado只启动ftp server和虚拟机就可以让vxworks系统在虚拟机上运行起来,只是这时的vxworks系统中只运行了系统任务,还没有应用程序任务。

应用程序任务怎么才能在虚拟机上的vxworks中跑起来呢?这就是target server的事了。

 

好了,捋清了各个部分的关系,我们就可以用一个小例子来看看他们之间是怎么协调工作的了。

首先,我们打开tornado,新建一个工程,编译链要选择pentiumGNU,添加代码,代码功能呢很简单,就是两个任务,一个是根任务A,它的功能就是建立另一个任务B。任务B呢是又根任务A建立的,它的功能就是打印输出一行字:hello,virtual Vxworks!

 

/*-----------------------------------------------------
				VxWorks应用程序学习例程
文件名	           :02multiTasks.c
说明		:VxWorks应用程序之多任务编程
代码来源	           :嵌入式实时操作系统VxWorks及其开发环境Tornado
日期		:2011-08-27	
备注		:本例程只是个简单的用例,用以测试在虚拟机上安装了VxWorks,
		 通过Tornado中的target Server工具进行主机与目标机之间的调试通信
------------------------------------------------------*/
#include "vxWorks.h"
#include "stdio.h"

#define TSKPRIO 90			/*任务优先级*/
#define TSKSTACKSIZE 2000	/*任务堆栈大小*/
void pInfo(void);

/*===================================================
【任务】函数名	:void tRoot(void)
功能		:根任务,用于创建子任务
参数		:无
通信量		:无
日期		:2011-08-27  
====================================================*/
void tRoot(void)
{
	int tskId;
	printf("\n\n\t\t\ttRoot task is RUNNING!\n\n");
	tskId=taskSpawn("tskPInfo",TSKPRIO,0x100,TSKSTACKSIZE,pInfo,0,0,0,0,0,0,0,0,0,0);
	printf("tskPInfo task has been created completed!\n");
}

/*===================================================
【任务】函数名	:void pInfo(void)
功能		:打印一句话,测试任务创建成功
参数		:无
通信量		:无
日期		:2011-08-27  
====================================================*/
void pInfo(void)
{
	printf("Hello,Virtual Pentuim,my tskID is %d\n",taskIdSelf());
}

代码编写好后编译,编译成功了之后呢,就该把程序下载到虚拟机里了,这时候就要我们进行如下操作了:

1、打开ftp server:(开始-->所有程序-->tornado2.2--->ftp server)

2、打开虚拟机,启动vxworks

3、打开tornado 的tools--->target server-->configure target server,配置好后点击launch,在windows的任务栏最右下角看到一个红色的靶盘图标,双击打开就能看到连接状态是否成功。

4、在tornado的launch toolbar中有个下拉箭头的选择格式为“IP@计算机名”的目标机,例如我的目标机为192.168.202.88@PC-200911032001。这样就相当于选择了目标机地址。

5、之后点击->i 图标,即launch shell,打开命令行终端。

6、之后按shift+F6,选择要下载的编译好的可执行文件“工程名.out”,确定,就可以下载到目标机(即虚拟机)中去了。

7、在shell终端中输入我们代码中的根任务函数名tRoot,回车,就可以看到在shell里运行的根任务结果,但是子任务的运行结果呢?别急,子任务运行结果在虚拟机里呢!看看吧!至于为什么会是这样,我也不知道,正在寻找答案。。。

 

在WindSh里面:

-> tRoot


   tRoot task is RUNNING!

tskPInfo task has been created completed!
value = 42 = 0x2a = '*'
->

在虚拟机上的vxworks里面:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VxWorks入门级开发环境学习 的相关文章

随机推荐

  • 使用火币提现WAXP会出现需要填写地址标签 的解决办法

  • Mac OS系统上用命令行方式启动VNC Server

    Mac OS X 上打开VNC Server服务 xff08 不带vnc密码 xff09 xff1a sudo System Library CoreServices RemoteManagement ARDAgent app Conten
  • 在Ubuntu中出现权限不够和找不到文件的解决方法

    在Ubuntu中出现权限不够和找不到文件的解决方法 权限不够 xff1a 在运行文件夹中的文件时 xff0c 可能会出现因权限不够而运行不了的情况 这时 xff0c 可以使用 1 sudo passwd 来更新密码 2 更新密码后 xff0
  • 搞定pygtk在WINDOWS下运行时提示字体错误的问题

    搞定pygtk在WINDOWS下运行时提示字体错误的问题 错误提示 Noname1 py 12 PangoWarning couldn 39 t load font 34 瀹嬩綋 9 34 falling back to 34 San s
  • ubuntu18.04脚本开机自启动 root用户和非root用户

    前言 xff1a Ubutnu18 04 xff0c 在新版本全部统一使用systemctl来管理服务 xff0c 包括开机自启动服务 打开rc local service文件 sudo vim span class token opera
  • Android使用logback日志框架

    logback android使用 基本介绍 Logback 继承自 log4j Logback 的架构非常的通用 xff0c 适用不同的使用场景 Logback 被分成三个不同的模块 xff1a logback core xff0c lo
  • ubuntu使用Xubuntu,XFCE,更轻量级的桌面环境

    系统默认的gnome太卡了 xff0c 运行几天可能出现gnome shell占用cpu等资源超高 xff0c 系统无法继续 改用 XFCE 安装命令 sudo apt get install xubuntu desktop sudo ap
  • IntelliJ IDEA版本:Ultimate、Community、EAP版本的区别

    Community xff1a 社区版 xff0c 免费 xff0c 但是功能有限制 xff0c Android Studio就是基于这个版本定制的 http idea intellij com intellij community Ult
  • Dell Inspiron 3443 BIOS升级问题解决

    问题解决方法可直接拖到文末 xff01 xff01 今天太难了 早上单位一位领导将笔记本拿来 xff0c 说是用起来很卡 xff0c 想让帮忙重装一下系统 欣然答应 查看型号 xff0c DELL Inspiron 14 3443 xff0
  • 任务栏可以点,电脑桌面却不显示内容的解决方法

    今天同事遇到了一个奇怪的问题 xff1a 台式电脑电源被踢掉了 xff0c 重新插电重启电脑后 xff0c 发现桌面上的东西都不见了 xff0c 只剩下边的任务栏空荡荡 而且只有点击win键 xff0c 能向上弹出菜单界面 xff0c 其他
  • 一条简单命令校验MD5

    最近在重新制作工具U盘 xff0c 要下载很多文件 xff0c 有些较大文件需要校验MD5码 网上搜索MD5码校验工具 xff0c 感觉弹出来的下载站多数不靠谱得很 因为是在Windows平台 xff0c 觉得还是用自带的工具CertUti
  • Broadcom 802.11n网络适配器,网络连接没有有效的ip配置问题解决

    昨天帮同事解决了一个无线网络的问题 xff1a 可以连接公司的无线热点 xff0c 但无法上网 xff1b 但是连接自己家里的网络后可以正常上网 问题的奇怪之处在于 xff0c 检查了网络设置 xff0c 并没有发现什么配置错误 IP也是自
  • 关于电脑出厂时间查询工具的构思

    在做一个单位的计算机盘点 管理的时候 xff0c 很容易遇见需要知道电脑的采购时间 xff0c 或者出厂时间 这个信息能够帮助管理人员决定电脑是否该按定期报废制度进行报废或更换 目前为止 xff0c 作者接触过的各类电脑 xff0c 没有看
  • Outlook频繁崩溃解决方法

    这几天新换了笔记本 xff0c IT部门帮忙进行了配置 xff0c 拿到手上却屡屡发现邮件系统这出问题那出问题 xff0c 好生烦躁 经过几天的修修补补 xff0c 今天总算完全OK了 xff0c 又恢复到正常的轨道上来了 由于被折磨得够呛
  • Manifest文件详解

    一 关于AndroidManifest xml AndroidManifest xml 是每个android程序中必须的文件 它位于整个项目的根目录 xff0c 描述了package中暴露的组件 xff08 activities servi
  • Android蓝牙完全学习手册

    1 前言 市面上关于Android的技术书籍很多 xff0c 几乎每本书也都会涉及到蓝牙开发 xff0c 但均是上层应用级别的 xff0c 而且篇幅也普遍短小 对于手机行业的开发者 xff0c 要进行蓝牙模块的维护 xff0c 就必须从An
  • 【高级】深入理解Word里的字号、行距、段距、间距、样式

    昨天领导交给我一份文档 xff0c 让我帮忙修改一下 改完后最后一页只有单独的一行 xff0c 打印出来不够美观 因此 xff0c 我缩小了行距 xff0c 把默认的单倍行距改为了固定值28磅 结果是 xff0c 整个文档的确少了一页 xf
  • 笔记本插上耳机后仍在外放Realtek Audio Console不支持此机器

    大年初七 xff0c 开工第一天 下午办公室新来的同事请教的如题问题 他用的华硕笔记本 xff0c 飞行堡垒FX86FE 插上华为耳机 xff0c 耳机始终播放不出来声音 显示已经检测到耳机插入了耳机孔 xff0c 点击弹窗会显示 Real
  • git Filename too long

    全局 git config global core longpaths true 当前仓库 git config core longpaths true 转载于 https www cnblogs com EasonJim p 108038
  • VxWorks入门级开发环境学习

    由于实习需要 xff0c 最近在学习VxWorks xff0c 久闻该操作系统大名 xff0c 一直被其深厚的内力震撼着从未敢去了解 xff0c 直到最近 操作系统Vxworks本身的优点特点等详细信息不多说了 xff0c 这里讲讲几天来我