Vmware上的使用管道接收串口输出

vmware 串口调试  在系统内核开发中,经常会用到串口调试,利用VMware的Virtual Machine更是为调试系统内核如虎添翼。那么怎么搭建串口调试环境呢?因为最近工作涉及到这方面,利用强大的google搜索和自己一点摸索也算是有点收获,总结出来和大家分享。 Virtual Machine 主要有三种串口调试技术,可以在serial port的配置界面找到:1. Use physical se 阅读详情
Vmware上支持串口,可以使用物理串口、文件、管道三种方式。如果想查看调试串口信息,使用管道自然是十分方便的。我写了一个接收管道数据的程序,这样可以看到调试串口打印的信息,管道名称是[url=file:////.//pipe/PipeWinCEDebugMsg]//.//pipe/PipeWinCEDebugMsg[/url],代码如下:
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
HANDLE CltHandle;
TCHAR pipenamestr[50];
CHAR cBuffer[1025];
DWORD dwRealSize;
HANDLE hFileLog = CreateFile(TEXT("pipe.log"), FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, NULL, NULL);
CHAR cStartMsg[] =   "*****************************Start*******************************/r/n/r/n/r/n";
CHAR cEndMsg[] = "/r/n******************************End********************************/r/n/r/n/r/n";
wsprintf(pipenamestr, TEXT("////.//pipe//PipeWinCEDebugMsg"));
printf("Client Started!/r/n");
while(1)
{
  if (WaitNamedPipe(pipenamestr, NMPWAIT_WAIT_FOREVER) == FALSE)
  {
   printf("Wait Pipe Error, please Check Server Config!/r/n");
   Sleep(1000);
   continue;
  }
  CltHandle = CreateFile(pipenamestr,
   GENERIC_READ | GENERIC_WRITE,
   FILE_SHARE_READ | FILE_SHARE_WRITE,
   NULL,
   OPEN_EXISTING,
   FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_WRITE_THROUGH,
   NULL);
  
  if (CltHandle == INVALID_HANDLE_VALUE)
  {
   printf("Connect to Server Error!/r/n");
   Sleep(1000);
   continue;
  }
  else
  {
   printf("Pipe Connect Successfully!/r/n");
  }

  WriteFile(hFileLog, cStartMsg, sizeof(cStartMsg), &dwRealSize, NULL);
  while(ReadFile(CltHandle, cBuffer, 1024, &dwRealSize, NULL))
  {
   cBuffer[dwRealSize] = '/0';
   printf("%s", cBuffer);
   WriteFile(hFileLog, cBuffer, dwRealSize, &dwRealSize, NULL);
  }
  WriteFile(hFileLog, cEndMsg, sizeof(cEndMsg), &dwRealSize, NULL);
  CloseHandle(CltHandle);
}

CloseHandle(hFileLog);
return 0;
}
VMware虚拟串口的设置与使用 VMware虚拟串口的设置与使用测试环境VMware的串口为虚拟机添加串口开机测试 测试环境 宿主机:Windows10 虚拟机:Ubuntu18.04 VMware:VMware15.5.2 VMware的串口 一个虚拟机最多可以添加四个虚拟串口,有如下几个方法配置虚拟串口: 连接一个虚拟串口到宿主机的物理串口。 连接一个虚拟串口到宿主机上的一个文件。 在两个虚拟机之间建立一个直接的连接,或者将虚拟机的串口与宿主机的应用程序连接。 1.如果你要使用宿主机的物理串口设备,选择Use physical ser 阅读详情

相关推荐

Ubuntu Linux与Vmware虚拟机通过串口通信的配置

一 配置Vmware虚拟机 点击:Settings-->Hardware->Add, 选中"Serial Port":

Remy的学习记录 6525

VMWARE 虚拟机串口管道配置

问题描述 vmware 创建的虚拟机需要通过串口操作,直接在虚拟机界面中操作很不友好,故而需要一种新的操作方式,就使用了 vmware 提供的串口管道功能。 操作方法 在虚拟机设置界面,点击添加串口设备,在弹出的子页面中选择使用管道,管道名有固定的格式,下面是一个示例: \\.\pipe\com_1 \.\pipe\ 实际固定格式,后面的 com_1 是自定义的名字,输入好管道名后选择一端做服务端,另外一端输出到应用程序。 启动虚拟机的时候 VMWARE 会创建这个管道并监听,我们只需要通过终端工具链接到

龙瑜的博客 5870

VMware+GDB调试Linux内核启动:从串口管道到KGDB实战

内核调试是深入理解操作系统核心机制和解决系统级问题的关键技术。其原理在于通过调试器(如GDB)与被调试内核建立通信,实时监控和控制系统执行流,从而实现对内存、寄存器、函数调用栈的精细观察与控制。这项技术的核心价值在于能够定位传统日志无法捕获的底层问题,例如系统启动早期的硬件初始化故障、驱动加载异常或内核崩溃。在虚拟化环境中,通过模拟串口设备并重定向到命名管道,可以构建稳定的调试通道,使得调试器能够附着到虚拟机内核,实现从BIOS/UEFI到init进程的全流程跟踪。本文聚焦于**KGDB**与**串口调试*

weixin_34319374的博客 328

Virtual Machine串口调试:用命名管道在宿主机与虚拟机间建立起通信连接

Virtual Machine串口调试 转自:http://www.360doc.com/content/15/0518/10/12129652_471385326.shtml 本文内容简介: (1)在Virtual Machine上建立虚拟串口,用命名管道的方式创建实现在宿主机与虚拟机间打通通信通道; (2)用PuTTY调试串口通信,可调试

Thorpe Tao的专栏 7001

VMware虚拟串口配置实战:从基础设置到跨设备通信

本文详细介绍了VMware虚拟串口的配置方法,包括物理串口直连、文件输出模式和命名管道通信三种典型方式,并提供了跨平台通信实战案例和高级调试技巧。通过具体配置步骤和常见问题排查,帮助用户高效实现虚拟机与主机或虚拟机间的串口通信,提升开发效率。

weixin_33728268的博客 443

【速通版!语义通信基础与前沿学习计划】

🧠语义通信基础与前沿学习计划

dally2的博客 1415

WinCE中的Debug Zone调试

在WinCE的开发环境中支持Debug Zones功能,通常也被称为调试域,通过它可以控制打印信息。当某个调试域被打开以后,在这个域中的打印信息就会被打印出来,如果某个调试域被关闭了,那么这个域中的打印信息就会被关闭。调试域是基于模块的,也就是说一个模块,可能是在一个驱动或者一个应用中都可以定义一个调试域,用来调试该模块。一个调试域最多可以包括16个域,一般在每一个模块中都会有一个全局变量dpCu...

emowuyi 189

赴美参加学术会议办理流程

有幸能在研究生阶段获得学校资助出国参加学术会议,首先要感谢学校的支持,以及学院和实验室的各位老师~ 接下来说下参会整个准备过程: 本人在接到论文录用通知后,就开始办理相关手续。因为会议地点是美国夏威夷,而且录用通知时间与会议召开时间只隔两个月左右,所以接下来两个月时间要办好学校出国申请手续,赴美签证,因为专业原因,据说签证不好办,所以时间比较紧。学校出国申请和签证相关材料是并行进行的,赴美花费...

xingxin_xu的博客 3196

VMware虚拟串口的设置和使用

环境:宿主机:Windows7   VMware7.1虚拟机:Fedora12VMware的串口:一个虚拟机最多可以添加四个虚拟串口,有如下几个方法配置虚拟串口:连接一个虚拟串口到宿主机的物理串口。连接一个虚拟串口到宿主机上的一个文件。在两个虚拟机之间建立一个直接的连接,或者将虚拟机的串口与宿主机的应用程序连接。为虚拟机添加串口首先要保证虚拟机处于关机(power off)状态,选择菜单中的VM -> Settings... ,在Hardware标签页中点击Add按钮,在Add Hardware Wizar

Bob's Blog 3万+

从设计到实战:手把手教你用SolidWorks完成一个简易离心泵叶轮的水力设计全流程

本文详细介绍了使用SolidWorks进行简易离心泵叶轮水力设计的全流程,涵盖参数计算、水力设计和三维建模等关键步骤。通过实际案例演示,帮助机械设计工程师和学生掌握从理论到实践的转化技巧,特别适合低比转速离心泵叶轮的设计需求。

weixin_30621711的博客 236

Zemax显微镜设计:从物镜到目镜的完整光学系统优化

本文详细介绍了使用Zemax进行显微镜光学系统设计的完整流程,从物镜到目镜的优化技巧。通过实战案例和关键参数设置,帮助读者掌握数值孔径、视场角等核心概念,实现高分辨率显微镜设计。文章特别强调了系统级优化和公差分析的重要性,为科研和工业检测提供可靠的光学解决方案。

weixin_42549451的博客 440

Linux虚拟机开发串口助手,Ubuntu Linux与Vmware虚拟机通过串口通信的配置

一 配置Vmware虚拟机点击:Settings-->Hardware->Add, 选中"Serial Port": 点击"Next": 选中"Output to socket",点击"Next": 在"Socket (named pipe)"下面的框中填入管道文件名, 如:/tmp/vhost, 点击"Finish": 点击"Save".注: 如果创建的串口名称是"Serial Po...

weixin_42561040的博客 367

Xshell 连接 kali 虚拟机教程

启动ssh服务,启动后重新查看ssh服务状态,如下图active(running)正常。至此便可以直接使用Xshell登录kali系统了。至此虚拟机已经可以上网。-查看ssh服务状态。

qq_40726937的博客 2219

如何开启VMware串口

如何开启VMware串口 先前在玩GEC2410时,有个想法,就是在linux下进行调试,由于目标板上电或复位时会发送信息给PC机的串口,这已在windows下实现过,于是想在linux下看看效果,可是当时我在linux下设好串口后,发现一点反应都没有,当时以为是自己没有安装交叉编译环境,于是昨天晚上把嵌入式 linux下的交叉编译环境装好后,心想这下应该可以拉,没想到我上电目标板,linu

wjs1033的专栏 1524

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1931

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道

在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。

邓邓子的博客 6146

串口编程之三:VMware虚拟机下的串口调试

Windows为宿主机,VMware虚拟机中安装了 Linux,也可以在 Linux 下编写程序对串口发送消息。原理同样是利用虚拟串口软件VSPM 将COM3与COM4连接后通过串口调试器捕获。下面会附上Linux下串口程序的C代码示例。 VSPM的使用和下载参照《串口编程之一:虚拟串口VSPM解决串口编程问题》http://blog.youkuaiyun.com/zh405123507/article...

编程语言小筑 1204

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Windows下VMWare虚拟机串口设置

VMWare可以使用命名管道在两个虚拟机之间模拟串口, 这在同一主机上的两台虚拟机之间需要通过串口进行通信时非常方便, 使用kgdb调试linux内核就是其典型的应用. 具体操作: --> "Edit virtual machine settings" --> "Add..."硬件设备--> 选择"Serial Port" --> 点击 "Next" 并选择 "Out

bingo_boy的专栏 2166

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux创建串口并登录

本文介绍了通过命名管道实现宿主机与虚拟机串口通信的方法。首先解释了命名管道的概念及其在不同操作系统中的实现差异,然后详细说明了在VMware中为虚拟机配置命名管道串口的步骤,包括管道路径设置和参数匹配。接着指导如何在Xshell中创建串口会话并手动输入管道路径进行连接。测试时可通过SSH执行命令验证输出是否成功传输到串口终端。最后讲解了两种重定向控制台输出到串口的方法:使用exec命令直接重定向或结合tee命令实现终端和串口同步输出。文章还提供了恢复默认输出的解决方案,并演示了如何手动重定向内核消息到串口设

weixin_51019352的博客 1714

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 改变窗体的隶属关系
下一篇: 透明窗口
Matrix_Designer
博客等级 码龄16年 58粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值