当前位置:首页 > 单片机 > 单片机
[导读] 昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址映射 首先要知道ssh服务使用的是

昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址映射

首先要知道ssh服务使用的是22端口,然后打开windows主机上的适配器,virtualbox安装了一张虚拟网卡,如下

虚拟地址为192.168.56.1,接下来在虚拟机的设置界面设置网络地址映射,首先还要知道虚拟机的IP地址,如下

地址为10.0.2.15,就可以去做端口转发了,位置如下

按照步骤来,设置名称随意,主机IP设置为虚拟机网卡的IP,端口可以写一个未被占用的任意端口,子系统IP为linux宿主机ip,端口为ssh服务端口,相当于说我们连接ssh的时候连接192.168.56.1的2222端口的时候,wirtualbox将数据转发到宿主机的22端口上,经过这一次中转就可以登录ssh了,接下来新建ssh连接如下

注意主机和端口号的设置,和我之前说的一样,这样就可在输入用户名密码之后连接上了,如下

共享文件夹的设置

virtualbox提供共享文件夹的功能,虽然写着自动挂载,但是通常ubuntu是不会自动挂载的,如下

这个时候就需要我们手动在系统中挂在共享文件夹了,首先你需要安装增强功能包,一般都会安装,安装了之后虚拟机用着才爽嘛

然后建立一个文件夹用于挂载共享文件夹

mkdir /mnt/linuxshare

可以建立在别的位置,但是我习惯在这里,建立之后就可以挂载了

mount -t vboxsf linuxshare /mnt/linuxshare

第一个linuxshare是你创建共享文件夹的时候自己制定的名称

第二个/mnt/linuxshare是你创建的挂载文件夹的目录

命令执行完没有错误信息挂载就成功了,然后关闭终端,重新打开终端

vim /mnt/linuxshare/text.c保存之后查看,应该在windows下的共享文件夹出现text.c文件了

有时候命令不太记得,看英文文档比较麻烦的时候我们可以选择安装中文的帮助包使用命令

sudo apt-get update 更新源

sudo apt-get install manpages-zh 安装中文manual

安装完成之后man ls应该就是中文提示了

接下来是串口的共享问题,我使用的是usb转串口的芯片ft232,这个芯片ubuntu14.02自带了驱动,不需要额外安装,但是我们要将这个物理usb转串口切换到虚拟机里面,首先要安装一个包,是wirtualbox的usb2.0增强包,名字叫做Oracle_VM_VirtualBox_Extension_Pack-4.3.26-98988.vbox-extpack,百度搜索一下在oracle的官方网站下载,下载之后安装就能启动usb2.0的支持了,接下来如下设置

按照设置添加这个usb,然后重启系统,重启完成之后应该就能看到usb转串口设备,这样查看

如果没有这个设备看看是不是自己弹出了,可以在这里弹出

串口设备安装好了之后打开设备,我们知道设备在linux上对应的都是文件,串口设备对应文件在这里

/dev/ttyUSB0

接下来是串口通讯,我们安装两个串口通讯软件,一个命令行一个图形化的,使用命令

sudo apt-get install minicom //命令行调试助手

sudo apt-get install cutecom //图形化调试助手

安装好minicom之后需要进行设置,命令为

sudo minicom -s

设置截图如下

设置完成之后保存为默认配置文件,退出界面,再次输入

minicom,自动打开串口(要是打开失败,屏幕右下角显示offline的)

然后将我手上的TQ2440开发板打到norflash启动(nor中已经有了bootloader),显示界面如下

好,到这里串口通讯完成,接下里为了摆脱windows我们还需要把usb完成

首先第一步是下载安装libusb-dev,如下

sudo apt-get install libusb-dev

安装完成之后,记得将TQ2440的USB端口导入linux,如下

到这里快成功啦,下载程序我们需要一个工具,windows有一个dnw,有人做了dnw2,源代码如下


/*dnw2linuxmainfile.Thisdependsonlibusb.**Author:Fox*License:GPL**/#include#include#include#include#include#include#defineQQ2440_SECBULK_IDVENDOR0x5345#defineQQ2440_SECBULK_IDPRODUCT0x1234structusb_dev_handle*open_port(){structusb_bus*busses,*bus;usb_init();usb_find_busses();usb_find_devices();busses=usb_get_busses();for(bus=busses;bus;bus=bus->next){structusb_device*dev;for(dev=bus->devices;dev;dev=dev->next){if(QQ2440_SECBULK_IDVENDOR==dev->descriptor.idVendor&&QQ2440_SECBULK_IDPRODUCT==dev->descriptor.idProduct){printf("Targetusbdevicefound!n");structusb_dev_handle*hdev=usb_open(dev);if(!hdev){perror("Cannotopendevice");}else{if(0!=usb_claim_interface(hdev,0)){perror("Cannotclaiminterface");usb_close(hdev);hdev=NULL;}}returnhdev;}}}printf("Targetusbdevicenotfound!n");returnNULL;}voidusage(){printf("Usage:dnw2nn");}unsignedchar*prepare_write_buf(char*filename,unsignedint*len){unsignedchar*write_buf=NULL;structstatfs;intfd=open(filename,O_RDONLY);if(-1==fd){perror("Cannotopenfile");returnNULL;}if(-1==fstat(fd,&fs)){perror("Cannotgetfilesize");gotoerror;}write_buf=(unsignedchar*)malloc(fs.st_size+10);if(NULL==write_buf){perror("mallocfailed");gotoerror;}if(fs.st_size!=read(fd,write_buf+8,fs.st_size)){perror("Readingfilefailed");gotoerror;}printf("Filename:%sn",filename);printf("Filesize:%dbytesn",fs.st_size);*((u_int32_t*)write_buf)=0x30000000;//downloadaddress*((u_int32_t*)write_buf+1)=fs.st_size+10;//downloadsize;*len=fs.st_size+10;returnwrite_buf;error:if(fd!=-1)close(fd);if(NULL!=write_buf)free(write_buf);fs.st_size=0;returnNULL;}intmain(intargc,char*argv[]){if(2!=argc){usage();return1;}structusb_dev_handle*hdev=open_port();if(!hdev){return1;}unsignedintlen=0;unsignedchar*write_buf=prepare_write_buf(argv[1],&len);if(NULL==write_buf)return1;unsignedintremain=len;unsignedinttowrite;printf("Writingdata...n");while(remain){towrite=remain>512?512:remain;if(towrite!=usb_bulk_write(hdev,0x03,write_buf+(len-remain),towrite,3000)){perror("usb_bulk_writefailed");break;}remain-=towrite;printf("r%d%t%dbytes",(len-remain)*100/len,len-remain);fflush(stdout);}if(0==remain)printf("Done!n");return0;}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭