搜档网
当前位置:搜档网 › VmWare下VxWorks再获进展--USB鼠标、USB磁盘使能

VmWare下VxWorks再获进展--USB鼠标、USB磁盘使能

VmWare下VxWorks再获进展--USB鼠标、USB磁盘使能
VmWare下VxWorks再获进展--USB鼠标、USB磁盘使能

[经验心得] VmWare下VxWorks再获进展--USB鼠标、USB磁盘使能!(USB2.0

使能)

20100523更新USB2.0 U盘使能!!!

用的是Tornado2.2.1 Platform ID 2.0版本

EHCI控制器使能,需要虚拟机配置上

然后,U盘按照高速设备链接了

测试速度ing。。。

测试结果,u盘一个qq安装程序,28.6MB

使用EHCI枚举U盘,USB协议栈为2.0架构,拷贝到硬盘的速度为8秒结束

使用UHCI枚举U盘,USB协议栈为1.1架构,拷贝到硬盘的速度为28秒结束实在佩服vmware公司啊,连低速的东西都能给你模拟出来,哈哈哈哈

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

※※※

cevx论坛首发,本人原创,如需转载,请著名出处和作者

20100511更新使用教程

一直忙于VxWorks下语音聊天的开发,现补上使用教程,新鲜出炉哦

对于虚拟机玩转VxWorks,还不熟的朋友可以看置顶帖、或是查找VmWare安装VxWorks的

教程

一,开发环境:

VmWare 7.0.0或以上(5.5.x系列无法使用USB HID类鼠标设备,6.x.x系列我没怎么用)

VxWorks 5.5.1

Tornado 2.2.1

USB鼠标 2个(后面解释为何要2个)

USB磁盘 1个

二、VmWare虚拟机配置:

虚拟硬件要加上USB Controller控制器,如下图

然后,进行USB控制器的设置

如果要在VxWorks5.5下使用U盘将Enable high-speed support for USB 2.0 devices

钩子去掉,即不要选他

因为勾选后,VxWorks5.5的USB UHCI控制器的驱动对虚拟机模拟的这个控制器操作的不好主要还是风河的问题拉,不关vmware公司的事^-^

如果只是vxworks下用USB鼠标,则该项勾不勾选无所谓

下面讲述最最最最关键的一点,这个也是费了我9牛2虎之力,Google、加不断尝试才搞

定的

对于VmWare低版本(如vmware5.5.3)对鼠标的模拟是PS/2接口的

即如果你即使插入的是USB鼠标,但在虚拟机的客户操作系统下,是按照PS/2设备处理模

拟的

这个可以查看其手册中关于输入设备的描述

但是,VmWare公司是聪明的,他们在VmWare 7.0.0版本以上,加入了对USB鼠标的完全模

不过,默认情况下,是处于关闭状态的

为此,需要进行以下改动,关键的来了哦,大家屏住呼吸

进入你的虚拟机的文件夹,如下图所示,会有一个.vmx的配置文件

他是一个文本文件,编辑之,在

usb.present = "TRUE"

这句话之后,加上

usb.generic.allowHID = "TRUE"

即允许使用USB HID设备

然后保存该文件

这样在虚拟机启动后,在VmWare的右下角图标或是VM菜单中可以看到USB鼠标了如果不加这一句,你是无法在可移动设备中找到USB鼠标的

三、VxWorks组件配置:

主机USB总线配置如下图

因为VmWare模拟的USB控制器为UHCI类型

USB总线外围设备配置如下图

包含了USB块设备和USB鼠标的相关组件

四、启动你的虚拟机

启动虚拟机,bootrom加载配置了USB组件的VxWorks后,系统会提示如下信息

因为USB鼠标和U盘,都还没有连接到虚拟机内部

所以,这里的2条红线,只是代表了监控USB鼠标和U盘的任务已经初始化成功了

但设备此时还尚未在vxworks下进行枚举

下面,我们就开始USB的枚举过程

首先,插上你的U盘(建议U盘不要分区,且最后是FAT格式,而非FAT32)

然后,在虚拟机菜单->vm->Removable Devices->展开的列表中,找到你的U盘名字

例如我的是金士顿的

然后,点击connect,如下图

按理来说,你的U盘应认出来了,vxworks会提示如下信息:

(如果之前,你在USB Controller的设置中,勾选了使能支持2.0设备,那么很有可能U

盘在vxworks就不认了

但是vxworks6.7,对于这点没有要求,鉴于vxworks5.5流传较广,就不考虑6.7的用法了)

/bd就是U盘的设备名了

和硬盘/ata0a一样,用你的cd、ls、cp命令操作你的U盘吧!!!

cd "/bd"

ls就会列出你的U盘根目录下的内容了

vxworks5.5不支持中文

vxworks6.7已经能够支持中文目录列举了,需要unicode码支持,有组件,不知道可不可

以搞到vxworks5.5下呢?

呵呵

关于鼠标,如果你只接一个USB鼠标的话,

那么你通过上述连接U盘的方法去把USB鼠标连接到虚拟机中

会提示如下错误:

其中,红圈标注的为USB鼠标的名字,根据你的USB鼠标不同,会有不同。

从错误信息中我们知道:VmWare公司,不允许在只有一个USB鼠标的系统上,使用虚拟

USB鼠标

因此我们需要准备2个USB鼠标。

好吧,再插上一个USB鼠标(一开始我也愣是没明白咋回事,google此时就帮上大忙了哈)然后重复同样的连接设备操作,随便连接哪一个USB鼠标都可以

恭喜你,VxWorks的USB协议栈成功的枚举出了USB鼠标

会提示/usbMo设备搭接上了,如下图所示:

如果没有出现,最好换个型号的USB鼠标

因为tornado2.2.1、vxworks5.5.1的USB鼠标驱动有一个不算bug的问题,

就是在进行枚举时,驱动会向USB鼠标发送idle时间设置的命令,但很多新的USB鼠标已

经不对该命令响应了

因此驱动也就枚举失败了

要么你换个鼠标,要么你更改驱动源码,然后重新生成usb库

写完了,此刻,我内流满面

虚拟机下vxworks,再次向完美迈进了艰难的一步

不要在羡慕vmware其他客户操作系统使用U盘了,我们可爱的vxworks也能如愿以偿了!!!

附件是U盘在vmware+vxworks下的枚举、操作录像

最好用kmplayer看吧

Other Movie.rar (25.47 KB)

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

我是华丽的分割线

之前虚拟机对usb鼠标都是按ps/2接口处理的

创建为/pointer/0 ,即为一个PS2设备

不过现在在VMware7版本下

Usb鼠标总算可以用了驱动枚举设备为/usbMo/0

图形下为/pipe/uglUsbMse/0

文档全力准备ing

这下usb协议栈总算可以在vmware下好好调式了

实战Linux下VMware虚拟机根目录空间扩充

实战Linux下VMware虚拟机根目录空间扩充 分类:Linux 2011-02-14 16:59 532人阅读评论(0) 收藏举报 今天上午接到通知说服务器挂了,经过检查发现原因是Linux的虚拟机根分区已经使用100%,以至于服务不能正常进行。 经过小小的研究,顺利解决问题,把服务器的空间由4G扩成12G。现将执行全过程总结如下,以供分享。 首先,介绍下大体的解决思路,要想扩充,硬件上要有准备,说白了也就是要有一块新的空间来供我们使用。对于实体机我们需要准备一块新的硬盘,而对于VMWare 虚拟机,我们只需要使用vmware自带的软件扩充下磁盘大小。 扩充磁盘,只意味着硬件条件得到满足。接下来就需要对新的磁盘空格进行合理的操作,来扩充我们需要的分区。 值得注意的是,这里我们基于LVM来操作的。如果您的环境不是LVM的,可以考虑改成LVM的,否则后文无需再读。具体执行过程将细细道来。 第一步、使用VMware工具扩容分配的硬盘空间 1、vmware 提供一个命令行工具,在Windows下为vmware-vdiskmanager.exe 位于vmware 的安装目录下,比如C:/Program Files/VMware/VMware Workstation/vmware-vdiskmanager.exe. 在Linux下有直接的vmware-vdiskmanager指令。 进行的操作:在windows 下运行CMD , 转到vmware 的安装目录,可执行vmware-vdiskmanager.exe;在Linux下,直接敲入vmware-vdiskmanager ,可执行该指令扩充使用的指令: vmware-vdiskmanager -x 16Gb myNewlinux.vmdk 说明:要扩容的系统这时不能在运行,参数"-x" 表示要扩展虚拟机硬盘空间,紧随其后的数字是要扩展到的大小,而非增加量(本例为扩展到16GB ,这是一个磁盘总量,包含了原先的磁盘容量) 。最后是指定要操作的虚拟机磁盘的具体文件,要是路径名中有空格,必须以双引号括起来。按回车键开始执行,执行完毕,退出命令提示符窗口,重启VMware ,会发现虚拟机硬盘空间已变成16GB 了。

嵌入式实时操作系统VxWorks入门

嵌入式实时操作系统VxWorks入门 VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。VxWorks原先对中国区禁止销售,自解禁以来,在我们的军事、通信、工业控制等领域得到了非常广泛的应用。 VxWorks的实时性体现在能于限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。因此,实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。本文将对这个操作系统进行一个入门级的、全面的介绍。为力求展示其全貌,全文共分五章: (1)搭建VxWorks嵌入式开发环境; (2)简要介绍VxWorks的基本组成,内核的基本结构; (3)概述VxWorks板级支持包(BSP)的概念及VxWorks的启动过程; (4)介绍VxWorks设备驱动的架构及编写方法; (5)指明VxWorks应用开发的思路,任务调度及任务同步、中断与任务的同步机制。 以上各章中将贯穿着许多实例,由于本文定位于入门级教程,所以文中的实例都将十分简单。下面我们进入第一章内容的讲解。 嵌入式系统的调试调试方法一般为通过PC(宿主机)上的集成开发环境交叉编译针对特定电路板(目标机)的程序,然后将程序通过目标板的JTAG、串口或网口等途径下载到目标板上运行。因此,为了构造一个嵌入式系统的学习环境,拥有一块包含CPU、存储器及I/O 电路(构造计算机系统)的目标电路板往往是必要的。虽然许多集成开发环境附带模拟软件,但仅限于指令集的模拟,均无法模拟物理的目标机硬件平台,因而在其上只能进行应用程序的象征性模拟开发。但是,并非所有人都能拥有一块物理的电路板。在这种情况下,我们如何构造一个模拟的开发环境,其学习效果就如同拥有完全真实的电路板一样呢?本文试图解答此问题,主体内容包括四个方面: (1) 利用VMware等软件模拟真实的目标机; (2) 构建VMware虚拟PC上VxWorks BSP,建立Bootrom和OS映像; (3) 修改Tornado相关设置,连接宿主机与目标机,建立调试通道; (4) 写一个简单的应用程序并下载到目标系统运行。 图1 嵌入式系统的调试 本章工作的最终目标为: (1)VxWorks在VMware启动成功并顺利运行,的开发模型: 图4 PC作为目标机 很遗憾,这种方法实际上非常麻烦,同时开动两台PC进行调试将使你和你的室友饱受折磨,既然他如此地热切于游戏和上网。因此,我们可以借助VMware来在本机上虚拟出另一PC。 VMware的确是天才的作品!在同一PC上,利用VMware几乎可以安装所有的操作系统,而且操作系统之间的切换不需要重新启动电脑。VM的意义是Virtual Machine,即虚拟出一个逻辑的电脑,它可以提供基于Intel CPU的虚拟PC系统环境,包括CPU、内存、BIOS、硬盘和其他外围硬件设备。 下面我们讲解用VMware来建立一台虚拟PC的步骤: (1)并安装VMware; (2)使用VMware向导建立一个针对VxWorks的虚拟机;

虚拟机中如何扩展一个虚拟磁盘的大小(图解)

虚拟机中如何扩展一个虚拟磁盘的大小(图解) 2009-12-07 00:14:59| 分类:PC | 标签:|字号大中小订阅 问题的提出: 非常多的虚拟机使用者开始没有能预估到在虚拟机上安装系统后最后需要多少空间,使用了一段时间后发现虚拟机的磁盘空间不够了。怎么去解决呢? 方法一、 在虚拟机配置处增加一个硬盘。 点击Edit virtual machine settings

点击下一步,增加一块硬盘

接下来就是按照提示操作就可以了。 这个方法不是最好的。增加了一个硬盘,对虚拟机的性能并没有什么太大的影响。 方法二: 使用VMware自身带的工具进行扩展硬盘 1、首先找到VMware的安装路径,从vm的快捷方式的属性去寻找安装路径

在安装文件夹下我们可以看到这个命令:vmware-vdiskmanager.exe

这个命令必须在命令行下运行。 进入命令行状态。 C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager.exe VMware Virtual Disk Manager - build 19175.

Usage: vmware-vdiskmanager.exe OPTIONS diskName | drive-letter: Offline disk manipulation utility Options: -c : create disk; need to specify other create options 建立一个新的磁盘 -d : defragment the specified virtual disk 磁盘碎片整理 -k : shrink the specified virtual disk 压缩一个指定的磁盘 -n : rename the specified virtual disk; need to specify destination disk-name 重新命名磁盘的名称 -p : prepare the mounted virtual disk specified by the drive-letter for shrinking -q : do not log messages -r : convert the specified disk; need to specify destination disk-type 转换磁盘类型 -x : expand the disk to the specified capacity 扩展磁盘的容量 Additional options for create and convert: -a : (for use with -c only) adapter type (ide, buslogic o r lsilogic) -s : capacity of the virtual disk -t : disk type id Disk types: 0 : single growable virtual disk 1 : growable virtual disk split in 2Gb files 2 : preallocated virtual disk 3 : preallocated virtual disk split in 2Gb files The capacity can be specified in sectors, Kb, Mb or Gb. The acceptable ranges: ide adapter : [100.0Mb, 950.0Gb] scsi adapter: [100.0Mb, 950.0Gb] ex 1: vmware-vdiskmanager.exe -c -s 850Mb -a ide -t 0 myIdeDisk.vmdk ex 2: vmware-vdiskmanager.exe -d myDisk.vmdk ex 3: vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 0 destinationDisk.vm dk 示例: ex 4: vmware-vdiskmanager.exe -x 36Gb myDisk.vmdk 把myDisk.vmdk的容量扩展到36G

VxWorks网络驱动配置及分析

VxWorks网络驱动配置及分析 VxWorks支持两种形式的网络驱动,一种是BSD驱动支持通用的 BSD4.4网络,API,结构等和大多数BSD网络的驱动类似.另一种是END 网络驱动,是VxWorks独有的,根据VxWorks MUX接口编程,不过END驱动在底层也要转换成BSD的形式. VxWorks网络驱动可参见VxWorks网络驱动 1.BSD4.4网络驱动设置. 网络设备驱动的调用主要在/target/src/config/usrNetwork.c文件中,下面说明BSD4.4驱动在VxWorks系统调用. 主要调用过程如下: VxWorks系统执行的第一个任务target\config\all\usrConfig.c文件中 usrRoot()=======>>target\src\config\usrNetwork.c文件中的usrNetInit ( )通过数组表netIf[]初始化相应的BSD网卡驱动. 在usrNetwork.c中的调用过程如下: usrNetInit()函数中调用usrNetIfAttach(): #ifdef INCLUDE_BSD if (!attached) { if ( (usrNetIfAttach (pNetDev, params.unitNum, pBootString) !=OK))

return (ERROR); attached = TRUE; } #endif /*INCLUDE_BSD*/ usrNetIfAttach ()函数中调用数组表usrNetIfTbl for (pNif = usrNetIfTbl; pNif->ifName != 0; pNif++) { if (strcmp (buf, pNif->ifName) == 0) break; } 网络BSD驱动数组表usrNetIfTbl在文件 /target/src/config/usrNetwork.c中的定义初始化: ... LOCAL NETIF netIf [] = /* 网络接口,定义网卡驱动 */ { /* 下面是定义包含的各种网络驱动 */ #ifdef INCLUDE_DC /* 从DEC 芯片启动,即系统有NVRAM存在,现在已过时*/ { "dc", dcattach, (char*)IO_ADRS_DC, INT_VEC_DC, INT_LVL_DC, DC_POOL_ADRS, DC_POOL_SIZE, DC_DATA_WIDTH, DC_RAM_PCI_ADRS, DC_MODE }, #endif /* INCLUDE_DC */ #ifdef INCLUDE_FEI /* 如果定义了INCLUDE_FEI,初始化Intel 网卡 */ { "fei", feiattach, (char*)FEI_POOL_ADRS, 0, 0, 0, 0}, #endif /* INCLUDE_FEI */ #ifdef INCLUDE_EX /* Excelan 网卡 */ { "ex", exattach, (char*)IO_ADRS_EX, INT_VEC_EX, INT_LVL_EX, IO_AM_EX_MASTER, IO_AM_EX }, #endif /* INCLUDE_EX */ #ifdef INCLUDE_ENP /* CMC 网卡 */ { "enp", enpattach, (char*)IO_ADRS_ENP, INT_VEC_ENP, INT_LVL_ENP, IO_AM_ENP }, #endif /* INCLUDE_ENP */

(图解)为虚拟机重新调整磁盘容量(Resize VMDK)

(图解)为虚拟机重新调整磁盘容量(Resize VMDK) 1、关闭虚拟机后右击虚拟机选择“Edit Settings”(4.x版本的ESXi/ESX可以不用关机调整); 2、在“Hardware”页标签选择要更改容量的虚拟磁盘VMDK,输入想要调整的容量大小,如下图(只能增加不能减少): 3、完成这里的添加只是第一步,还需要进入到虚拟机的系统里面去调整,具体而言,针对Windows 操作系统非系统盘可以用Diskpart工具来调整容量;同时,也可以利用GParted之类的东距来调整容量; Windows DISKPART调整磁盘容量 1、点击开始运行输入diskmgmt.msc; 2、系统显示如下图所示,调整后的空白空间显示在里面: 3、然后进入到命令行界面输入DISKPART命令来调整: diskpart->list volume->select Volume 0->extand->exit

4、再次输入diskmgmt.msc进入到磁盘管理界面可以看到如下状况,说明已经完成调整了: 利用GParted工具调整 首先下载GParted Live CD,然后: 1、点击“Options”页标签然后选择“Boot Options”; 2、点击“Force BIOS Setup”强行下一次启动BIOS设定界面; 3、点击OK完成配置: 4、将下载到的Gparted Live CD连接到虚拟机后设定为BIOS光盘启动:

5、然后启动系统到如下界面: 6、选择需要扩展空间的磁盘和分区,然后右击分区选择“Resize/Move”,如下图: 7、设置需要调整的空间大小或者直接拉动下图中绿色边框到最右边: 8、然后,点击“Apply”后完成调整重启系统将挂载的这个GParted Live CD移除掉:

虚拟机扩大磁盘(图文详解)

虚拟机磁盘扩大与LVM 扩大硬盘的方法有二: 1 新增一个虚拟硬盘 2 扩大原有硬盘 第一:新增硬盘并将其格式化为lvm格式 第二:扩大硬盘并利用分区工具,将扩大的部分添加到原有的分区中,再将该分区转为lvm 格式 第三:建立lvm卷组,并最终将文件系统挂载上去。 ********************************************** vmware-vdiskmanager.exe 创建一个新的磁盘: vmware-vdiskmanager.exe //看看选项,也可以增大原来的磁盘 vmware-vdiskmanager.exe -c -s 10Gb -a ide -t 0 Seconddisk.vmdk在 vmware-->setting-->选择硬盘-->add-->....即可将新增一个磁盘。如果没有以上这步,虚拟机下是识别不到用vdiskmanager创建的新的虚拟磁盘。这比较容易理解。 或者使用vmware utility菜单中的expand命令,增加虚拟机的最大磁盘空间。 新增一个磁盘,比较简单。进入虚拟机后。/sbin/fdisk -l会发现有一个磁盘没有挂载任何的文件系统。如/dev/hda

/sbin/fdisk /dev/hda来对这个磁盘进行分区,并选择lvm类型的文件系统。如下 # /sbin/fdisk /dev/hda The number of cylinders for this disk is set to 22192. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e 此处选8e是设置磁盘格式为lvm, 在command下可输入l查看 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 将该盘设为lvm格式,是为了让几个lvm物理卷构成一个卷组,并最终都挂载到/目录下。因为我的/空间满了 这里又是扩大硬盘容量,又是新增硬盘,主要是为了实验。图方便的话,直接用其中一种方式皆可。 但是,从vmware setting 上扩大磁盘后,在linux下只会显示硬盘大小改变了,可并没有扩充文件系统啊。 可以利用:resize2fs和parted分区工具。 参考:resize2fs https://www.sodocs.net/doc/f410892854.html,/u/6303/showart_407254.html parted https://www.sodocs.net/doc/f410892854.html,/index.php/linux/34-linuxbase/1190-command.html

VxWorks实时操作系统SIGNAL机制的应用

[摘要] 介绍VXWORKS实时操作系统的信号机制以及各种处理方法,特别是利用该机制实现异常情况的恢复和处理。 1.概述 信号可用来在同一任务内部或不同任务之间实现异步通信,从而改变对多个任务的控制流程。所有任务或中断服务程序均能向指定的任务发送信号,该信号的接收任务将立刻挂起当前的执行线程,而激活任务指定的信号处理程序。信号处理程序是由用户定义的,它关联与特定的信号,而且任务接收到该指定信号时的所有必要处理都在该程序中实现。信号的这种机制使得它特别适合于用来实现差错和异常处理。 2.信号屏蔽 在信号处理时,可通过信号屏蔽来选择需要进行处理的信号,接收到被屏蔽的信号,即使指定了相应的处理程序,也不作任何处理。 为了实现对信号的屏蔽,需要定义数据类型为sigset_t的变量,同时必须包含头文件“signal.h”。 下面介绍实现这一功能的函数: int sigemptyset ( sigset_t *pSet ) 该函数初始化信号集,使得该信号集不包含任何信号; int sigfillset ( sigset_t *pSet ) 该函数初始化信号集,使得该信号集包含所有信号; int sigaddset ( sigset_t *pSet , int signo ) 该函数向信号集中增加新的信号; int sigdelset ( sigset_t *pSet , int signo ) 该函数删除信号集中的信号; int sigismember ( sigset_t *pSet , int signo ) 该函数用来判断信号集是否包含某信号; int sigprocmask ( int how, const sigset_t *pSet, sigset_t *pOset ) 该函数用来设置信号屏蔽;这里,pSet为新的信号集,pOset为当前的 信号集,而how则指示处理方式,其取值与处理方式对应关系如下: SIG_BLOCK 结果信号集为当前信号集和指定信号集二者的并集,通过这种方式,可向当前信号集增添指定的元素; SIG_UNBLOCK 结果信号集为指定信号集的补集和当前信号集二者的交集;通过这种方式,可从当前信号集删除指定的元素;

vxWorks下设备驱动模板

基于vxBus的设备驱动模板 vxWorks6.x 设备驱动采用了新型的vxBus构架,该构架和原来的设备驱动有很大不同,初上手会有很多不方便。下面提供的模板有助于快速形成一个vxBus 设备驱动 设备驱动在3个地方体现: 头文件,代码文件,hwconfig.c,根据下面模板,把所有DEVICE换成自己的设备,并做相应操作即可,免去很多重复代码的苦恼,开发者仅需要关注功能即可。 这个模板处理了中断,但没有提供处理基本IO的方法,模板不是用来学习的,怎样完整地写一个vxbus的驱动,还是需要学习的。 头文件 #ifndef DEVICE_h #define DEVICE_h #define DEVICE_CARD_NAME "设备名" #define DEVICE_CARD_DESC "设备描述" #define DEVICE_CARD_VXBNAME "设备vxBus名" #define DEVICE_CARD_INT_PIN [中断管脚] 页脚内容1

#define DEVICE_CARD_INT_CORE_PIN [核中断管脚] #define DEVICE_CARD_INT_CORE_NUM [中断处理核] #define DEVICE_INT_DESC {DEVICE_INT_PIN,DEVICE_CARD_VXBNAME,0,0} #define DEVICE_XBAR_DESC {DEVICE_INT_PIN,DEVICE_INT_CORE_PIN} #define DEVICE_ROUTE_DESC {DEVICE_INT_PIN,DEVICE_INT_CORE_NUM} #define DEVICE_UNIT0_DEVICE_ID 0 /*假如有多个同型号设备begin*/ #define DEVICE_UNIT1_DEVICE_ID 1 ..... /*假如有多个同型号设备end*/ /*其他设备宏*/ #endif/*DEVICE_h*/ 页脚内容2

Linux中VMware虚拟机增加磁盘空间的扩容操作

Linux中VMware虚拟机增加磁盘空间的扩容操作 用VMwareware虚拟机安装的RedHatEnterpriseLinux系统剩余空间不足,造成软件无法正常安装。如果重新装一遍系统就需要重新配置好开发环境和软件的安装配置。通过上网搜集的资料,结合自己的实践,总结了如下扩大硬盘空间的详细步骤,希望对大家有帮助。 (1)打开VMware,选择Edit Virtual mache settings,Utilities下拉框中找到Expand如下图 (2)将磁盘空间扩大到50G,点击Expand即可,随后进入一个较长的Expand过程,完成后这是新的空间已经增加,但linux环境下还不可见。(3)启动VMware环境下的Linux操作系统,添加新分区,需要root账号身份。 3.1【fdisk -l】最大分区为/dev/sda3,说明新创建的分区将会是sda4 3.2输入【fdisk /dev/sda】 3.2.1命令行提示下输入【m】 3.2.2输入命令【n】添加新分区。 3.2.3输入命令【p】创建主分区。 3.2.4输入【回车】,选择默认大小,这样不浪费空间 3.2.5输入【回车】,选择默认的start cylinder。 3.2.6输入【w】,保持修改 3.3输入【reboot】重启linux,必须reboot,否则/dev/sda4无法格式化。 3.4这时在/dev/目录下,才能看到了新的分区比如/dev/sda4 3.5【mkfs.ext2 /dev/sda4】格式化 3.6在根目录下创建disk4目录

3.7【mount /dev/sda4 /disk4/】将分区mount到/disk4/上 3.8在vim修改/etc/fstab文件,加入【/dev/sda4 /disk4ext2defaults00】一行,并保存,实现开机自动mount。 至此,新增加的磁盘空间容量,即可在disk4上体现,并且重新开机自动mount该分区,追加磁盘空间的工作完毕。 如果当前磁盘无容可阔,可以用增加磁盘的方法,在VMware主界面,选择 【VMware】下拉菜单,选择【Settings】,用【Add】方式增加一块磁盘,后面的操作类似,不再重复。

实时操作系统包括硬实时和软实时的区别

一.什么是真正的实时操作系统 做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platformteam封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新手入门,欢迎大家拍砖,争取写个连载,本文先总结一下实时的概念,什么是真正的实时操作系统 1. 首先说一下实时的定义及要求: 参见Donal Gillies 在Realtime Computing FAQ 中提出定义:实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。 一个实时操作系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满足时间要求。请注意,必须要满足确定性,而不是要求速度足够快!例如,如果使用足够强大的CPU,Windows 在CPU空闲时可以提供非常短的典型中断响应,但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务会长时间无响应,甚至直接挂死。这是一个基本的问题:并不是Windows不够快或效率不够高,而是因为它不能提供确定性,所以,Windows不是一个实时操作系统。 根据实际应用,可以选择采用硬实时操作系统或软实时操作系统,硬实时当然比软实时好,但是,如果你的公司正在准备开发一款商用软件,那请你注意了,业界公认比较好的VxWorks(WindRiver 开发),会花光你本来就很少的银子,而软实时的操作系统,如某些实时Linux,一般是开源免费

VxWorks5.5 RTL81X9网卡驱动

VxWorks Torando2.2 RTL81X9网卡驱动添加过程 Step 1. 下载RTL81X9驱动源代码。 Step 2. 复制一个BSP包,并且修改名称,例如,我复制了一个PC486的BSP包,改名为i486bsp,如图所示: Step 3. 修改复制的BSP里面的Makefile文件,修改文件内容的如下: TARGET_DIR = i486bsp MACH_EXTRA =rtl81x9.o ;添加rtl81x9.o到系统中 Step 4. 复制RTL81X9的驱动代码rtl81x9.h、 rtl81x9.c、sysRtl81x9End.c文件到你的bsp包中。Step 5. 修改BSP包中的Config.h文件。在文件如下部分添加黄色标记的内容 #define INCLUDE_PCI /* Network driver options */ #define INCLUDE_END /* Enhanced Network Driver Support */ #undef INCLUDE_DEC21X40_END /* (END) DEC 21x4x PCI interface */

#undef INCLUDE_EL_3C90X_END /* (END) 3Com Fast EtherLink XL PCI */ #undef INCLUDE_ELT_3C509_END /* (END) 3Com EtherLink III interface */ #undef INCLUDE_ENE_END /* (END) Eagle/Novell NE2000 interface */ #undef INCLUDE_FEI_END /* (END) Intel 8255[7/8/9] PCI interface */ #undef INCLUDE_GEI8254X_END /* (END) Intel 82543/82544 PCI interface */ #undef INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */ #undef INCLUDE_ULTRA_END /* (END) SMC Elite16 Ultra interface */ #define INCLUDE_RTL_81X9_END Step 6. 修改ConfigNet.h文件,在文件如下部分添加黄色标记的部分添加: /* Intel 82543/82544 PCI (gei) driver defines */ #ifdef INCLUDE_GEI8254X_END #define GEI8254X_LOAD_FUNC sysGei8254xEndLoad #define GEI8254X_BUFF_LOAN TRUE #define GEI8254X_LOAD_STR "" IMPORT END_OBJ * GEI8254X_LOAD_FUNC (char *, void *); #endif /* INCLUDE_GEI8254X_END */ #ifdef INCLUDE_RTL_81X9_END #define RTL_81X9_LOAD_FUNC sysRtl81x9EndLoad #define RTL_81X9_LOAD_LOAN TRUE #define RTL_81X9_LOAD_STRING "" IMPORT END_OBJ * RTL_81X9_LOAD_FUNC (char *, void *); #endif /* INCLUDE_RTL_81X9_END */ END_TBL_ENTRY endDevTbl [] = { #ifdef INCLUDE_EL_3C90X_END {0, EL_3C90X_LOAD_FUNC, EL_3C90X_LOAD_STR, EL_3C90X_BUFF_LOAN, NULL, FALSE}, #endif /* INCLUDE_EL_3C90X_END */ #ifdef INCLUDE_LN_97X_END {0, LN_97X_LOAD_FUNC, LN_97X_LOAD_STR, LN_97X_BUFF_LOAN, NULL, FALSE}, #endif /* INCLUDE_LN_97X_END */

VMware虚拟机硬盘扩容

VMware虚拟机的硬盘容量的扩展 操作虚拟机GUEST是Turbolinux系统。 1、 先增加磁盘容量 在实体机下通过VMware工具有2种方法: 1.1、工具vmware-vdiskmanager.exe 进入DOS命令行,找到vmware-vdiskmanager.exe所在目录。 >CD D:\Program Files\VMware\VMware Workstation >vmware-vdiskmanager.exe -x 30GB "H:\Virtual Machines\Turbolinux\Turbolinux.vmdk" 出现提示,只需等待完成即可: Grow: 100% done. Disk expansion completed successfully. 备注: 1、文件名应该用双引号括起,特别是含有空格的。 2、MB,GB一定不要忘记B。 3、需要强调的一点是,调整硬盘大小之后的效果,相当于增加 了原来物理硬盘的柱面数目。因此,文件系统并不会自动增长。需要重新调整文件系统的大小。 1.2、设置Edit virtual machine settings 打开VMware,Edit virtual machine settings,选择add就可以加硬盘了。 2、 再调整文件系统 进入虚拟机Turbolinux,打开终端。 [root@localhost ~]fdisk –l [root@localhost ~]fdisk /dev/hda N P 3

W 增加分区3(hda3) 保存, [root@localhost ~]reboot 然后把一个闲置的/dev/hda3分区挂上,并给VolGroup00/LogVol00扩容,正好原来/VolGroup00/LogVol00就放在一个lvm的lv上 先把磁盘/dev/sdc加入到卷组MyLVM中 // 创建物理卷 [root@localhost ~]pvcreate /dev/hda3 // 对现有的VolGroup00 做扩展 // 扩展卷组 [root@localhost ~]vgextend VolGroup00 /dev/hda3 // 直接扩展/dev/VolGroup00/LogVol00 分区,不用umount,也不需要重启 #扩展逻辑卷 [root@localhost ~]lvextend -l +100%FREE /dev/VolGroup00/LogVol00 #resize 逻辑卷 [root@localhost ~]lvresize -l +100%FREE /dev/VolGroup00/LogVol00 resize ext3文件系统 [root@localhost ~]resize2fs /dev/VolGroup00/LogVol00

小硕vxworks网络驱动开发笔记

目录 第1章操作系统基本概念 (3) 1.1实时操作系统和分时操作系统的区别 (3) 1.2嵌入式操作系统VxWorks简介 (4) 1.3 VxWorks的特点 (5) 1.3.1可靠性 (5) 1.3.2实时性 (5) 1.3.3 可裁减性 (5) 1.3.4对一个实时核的要求 (6) 1.4 VxWorks的整体构架 (7) 第2章 vxWorks驱动开发预备 (7) 2.1 VxWorks映像 (8) 2.2 BSP主要文件目录的组成及作用: (11) 2.3系统启动顺序 (13) 2.4 Vxworks驱动概要 (17) 第3章 vxWorks 网络驱动开发 (21) 3.1驱动类别 (21) 3.2 Vxworks 下网络驱动开发 (24) 3.3 VxWorks网络驱动配置及分析 (58) 第4章 VxWorks系统中常见问题 (64) 前言

在通信,电子领域,目前主流的嵌入式操作系统为linux 和vxworks。Linux 多用于消费电子产品,像大家熟悉的andriod,原始系统就是linux,也就是说andriod也是一种linux系统。还有大家熟悉的MP3,也是使用linux操作系统的。Linux因为价格便宜(开源的,不需要付licence),稳定性好占据了一定的市场份额。 Vxworks是风河系统1983开发的一款嵌入式实时操作系统,多用于通信,导航,航天等领域。因为这些领域对实时性要求非常高,比如现在LTE 系统就是使用vxworks系统,因为是采用TDD模式,而这种模式,显然对实时性要求非常高。也就注定了vxwroks 在这些领域的特有优势。 选择linux还是vxworks看自己的专业方向,还有自己的兴趣所有。每个领域只要研究透彻,都是很有前途的。 既然两者都是主流的嵌入式操作系统,其还是有很多相似性。小编也初步接触过linux,发现具备一定的linux基础对日后深入学习vxworks很有好处,很多思想都是相似的。 另外,本人系小硕,目前的研究领域是vxworks驱动开发,主攻网络驱动开发。在平常的日常学习中,结合各位网友提供的资料(自己在百度上收集的),还有workbench 提供的document(自己翻译,特别是针对网络驱动部分),希望对广大嵌入式驱动开发者有所帮助。 声明: 此文档并不适合于vxworks初学者,因为这里,小编省去了很多vxworks 下的基本知识,包括核中常用的进程,信号量等等支持。也没有提及集成开发环境tornado/vworkbench. 这里的探索重点是vxwroks底层的东西,包括启动过程,BSP开发等。 附录: Vxworks的应用领域 嵌入式Vxworks系统的主要应用领域主要有以下几方面: 1.数据网络:如:以太网交换机、路由器、远程接入服务器等 2.远程通讯:如:电信用的专用分组交换机和自动呼叫分配器,蜂窝系统等 3.医疗设备:如:放射理疗设备 4.消费电子:如:个人数字助理等 5.交通运输:如:导航系统、高速火车控制系统等 6.工业:如:机器人 7.航空航天:如:卫星跟踪系统 8.

VMware中的Linux增加硬盘容量

案例1 vmware中centos的磁盘大小20G->30G 现象:fdisk -l可以看到增大后的磁盘总量,但是需要增加分区并格式化然后挂载才能使用. 一、vmware中的设置 先关闭虚拟机 vm->settings->hard disk->utilities->expand->输入大小(增加后的大小) 二、启动虚拟机,进入命令行 1、fdisk /dev/sda进入命令行Command (m for help): 2 、输入p 列出分区表 3 、输入n 增加分区 4、选择p,即primary partition,回车后会自动分配分区号,一般默认情况在已有分区号上加1,已有3则为4。 5 、输入w 保存退出,fdisk -l 查看新的分区布局 6 、重启 7、格式化为ext3格式mkfs.ext3 /dev/sda4 8、挂载到某个目录 mkdir /cm mount /dev/sda4 /cm df -h //查看分区挂载及使用情况 9、设置开机自动加载此分区 vi /etc/fstab 分区表文件 末尾添加 /dev/sda4 /cm ext3 defaults 0 0 ps :如果修改出错,会造成无法进入桌面环境,只能进到字符界面原因是出错后启动根目录(/)的以只读的挂载模式,编辑后就算强制保存了也不会生效。解决方法: 执行修改挂载的读写权限mount -o remount, rw / 重新修改/etc/fstab 重新启动计算机即可。

案例2 用VMwareware虚拟机安装的Red Hat Enterprise Linux系统剩余空间不足,造成软件无法正常安装。如果重新装一遍系统就需要重新配置好开发环境和软件的安装配置。通过上网搜集的资料,结合自己的实践,总结了如下扩大硬盘空间的详细步骤,希望对大家有帮助。 (1)打开VMware,选择Edit Virtual mache settings,Utilities下拉框中找到Expand如下图 (2)将磁盘空间扩大到50G,点击Expand即可,随后进入一个较长的Expand过程,完成后这是新的空间已经增加,但linux环境下还不可见。

VxWorks网络加载

在网络初始化时加载END和subEND,并在其中初始化IP协议栈,在TMS初始化时绑定IP到SubEND,单播路由协议初始化在TMS初始化中,根据MIB配置确定初始化哪个单播路由协议,RIP初始化可以在网络初始化时,OSPF初始化在TMS 初始化中根据TMSMIB配置确定,END的IP地址在网络初始化时设置,SwEND的IP地址在网管配置时设置。 一、在configAll.H中定义了所有定置系统配置的宏 《INCLUDED SOFTWARE FACILITIES》:定义了基本组件; 《EXCLUDED FACILITIES》:定义了扩充组件,缺省不包括; 《KERNEL SOFTWARE CONFIGURATION》:内核运行的基本参数定义,包括文件个数、任务个数等等; 《"GENERIC" BOARD CONFIGURATION》:板通用属性定义;《"MISCELLANEOUS" CONSTANTS》:共享的信号量以及相关对象个数定义;《INCLUDED NETWORK FACILITIES》:包括的网络协议组件定义;《EXCLUDED NETWORK FACILITIES》:未包括的网络协议组件定义; 二、在bootConfig.C中的流程 usrInit()的流程,该例程被rom—start()中的boot代码调用。 调用intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS)设置中断向量; 调用excVecInit ()设置异常向量; 调用sysHwInit ()初始化硬件; 调用usrKernelInit ()配置VXWORK内核; 调用kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE,启动usrRoot();usrRoot()有多个,一个在bootConfig。C中,一个在usrConfig。C中。 三、bootConfig.C中的usrRoot()流程(是BOOTROM用的) 调用 memInit (pMemPoolStart, memPoolSize);/* XXX select between memPartLibInit */初始化内存; 调用 sysClkConnect ((FUNCPTR) usrClock, 0);/* connect clock interrupt routine */ sysClkRateSet (60); /* set system clock rate */ sysClkEnable (); /* start it */ 初始化系统时钟; 调用 iosInit (NUM_DRIVERS, NUM_FILES, "/null");初始化文件系统; 根据配置的串口和控制台口个数,初始化串口; 调用 wdbConfig(); /* configure and initialize the WDB agent */初始化WDB; 调用 pipeDrv (); /* install pipe driver */ excInit (); /* init exception handling */ excHookAdd ((FUNCPTR) bootExcHandler); /* install exc handler */ logInit (consoleFd, 5); /* initialize logging */ 初始化相关功能模块; 调用 hashLibInit (); /* hashLib used by dosFS */初始化DOS文件系统;根据配置选择

相关主题