在虚拟机上运行vxWorks

2023-05-16

Vxworks是一个嵌入式系统,主要运行在arm、ppc、mips等嵌入式处理器上,它同样可以运行在X86处理器上。风河公司开发的tornado开发环境就

包括了pentium版本,并且发布了相应的bsp。因此我们可在vmware虚拟机上运行vxworks,利用虚拟机的功能,我们不需要额外的计算机硬件就可

以开始我们的实验。

 

系统引导

计算机系统上电后,首先需要执行引导程序,然后加载操作系统。嵌入式系统中一般是将引导程序(称之为bootrom)固化在ROM芯片(也称为

bootrom,指的是物理硬件)中。系统上电后执行ROM中的引导程序,将操作系统由flash(或硬盘)加载到内存。对于PC而言,系统上电后运行BIOS

程序,之后将软盘或则硬盘上的引导扇区载入内存执行引导过程,引导程序再将操作系统加载到内存中启动。vmware的虚拟硬盘开始时没有安装

引导程序,因此无法从硬盘引导。因此我们需要制作一个引导软盘来引导系统加载vxworks。我们的第一个实验就是编译引导程序镜像,制作引导

盘。

 

制作引导盘

首先要在你的PC上Tornado 2.2 for pcPentium开发环境。另外需要安装pcPentium的BSP包,这个软件包可以到风河公司的网站免费下载。

制作引导盘当然还需要一张软盘,但是目前的PC基本都不使用软盘软驱了(如果你的古董机还有软驱的话,那么恭喜你,你只需要一张软盘就搞定了)。

好在vmware可以直接使用软盘镜像并且可以直接创建软盘镜像,因此我们在vmware中安装一个虚拟的windowsxp系统,以便在虚拟的windowsXP系统中

将软盘镜像格式化,并制作启动软盘。当然也可以使用虚拟软驱RamDiskNT在主机上使用软盘镜像。

Ok,准备工作做好了,我们开始编译bootrom。你可以通过tornado集成开发环境的菜单命令build boot rom。

 

  弹出build boot rom对话框,我们选择pcpentium BSP、编译bootrom、工具使用gnu

 

 

 

编译完成后可以在$WIND_BASE/target/config/pcPentium目录下找到编译出来的bootrom文件。

我们也可以使用命令行方式编译bootrom,进入cmd命令行界面,进入

$WIND_BASE/target/config/pcPentium目录,目录中有一个Makefile文件,我们就是使用这个makefile文件来编译bootrom。实际集成开发环境也是使用它

来编译的。编译之前我们需要设置一下所需的环境变量:

set WIND_BASE=D:/Tornado2.2

set WIND_HOST_TYPE=x86-win32

实际上tornado已经提供了一个批处理文件用于设置相关的环境变量,这个文件就是

$WIND_BASE/host/x86-win32/bin/torVars.bat,我们也可以直接运行这个批处理

../../../host/x86-win32/bin/torVars.bat

然后执行命令

make bootrom

就可以在$WIND_BASE/target/config/pcPentium目录下生成bootrom文件

把上面的命令写成一个批处理makeBootRom.bat,方便使用,内容如下:

D:/tornado2.2/host/x86-win32/bin/torVars.bat

cd %WIND_BASE%/target/ config/pcPentium

make bootrom

 

好了,编译成功。下一步使用如下命令创建引导盘:

mkboot a: bootrom

mkboot.exe是tornado提供的制作启动盘的工具,a盘是软盘的盘符,bootrom就是我们的引导镜像文件。

 

将制作好的引导盘载入虚拟机中:

 

 

 

 

 

 

 

虚拟机上电后自动从软盘启动,出现如下界面。

 

 

是的,你没看错,系统确实已经成功启动,只不过vxworks系统默认是不接受任何输入输出的。因此我们看不到它运行的任何东西,也无法操作它。

这样一个界面让人很无语,这跟一个人变成了瞎子瘸子没什么分别。下一步,我们将console组件加入到bootrom中。

打开$WIND_BASE/target/config/pcPentium/config.h文件,找到

#undef INCLUDE_PC_CONSOLE                /* PC keyboard and VGA console */

将它改为:

#define INCLUDE_PC_CONSOLE                /* PC keyboard and VGA console */

那么结合上下文:

#ifdef INCLUDE_PC_CONSOLE

#   define PC_CONSOLE           (0)      /* console number */

#   define N_VIRTUAL_CONSOLES   (2)      /* shell / application */

#endif /* INCLUDE_PC_CONSOLE */

很明了,定义这个宏之后console就打开了。重新编译bootrom并制作启动软盘。在虚拟机中运行,会看到如下界面:

 

 

输入p命令,查看系统的启动参数,其意义如下:

boot device:fd=0,0 ——启动设备为软驱,0,0表示第一个软驱,3.5寸盘

unit number:0 ——设备单元号,一般为0

processor:0 ——处理器编号,一般为0

host name:host ——主机名,访问主机时用到,比如从主机复制文件:cp “host:src”, “./dest”

file name:/fd0/vxWorks.st ——vxworks镜像文件(包括了完整的路径)

inet on Ethernet (e):90.0.0.50 ——本地网卡ip地址

host inet(h):90.0.0.3 ——主机ip地址

user (u):target ——用户名,用来访问ftp服务器,一般都是主机

flags (f):0 ——标识,十六进制数,它的意义下面再讲

 

 

 

 

BOOT_LINE

 

 

bootrom支持从本地磁盘上加载vxworks系统镜像文件,也支持从网络加载vxworks系统镜像文件。在系统开发阶段需要频繁的编译

和加载系统镜像,通常我们使用网络加载的方式,这样在主机上修改完代码,编译之后就可以通过网络加载到目标机上运行。而

在系统开发后期,或者系统发布正式运行时,则设置为从本地磁盘加载,此时我们可以将系统镜像文件发在本地磁盘上,开机即

可自动加载运行。从上面的参数可以看出,系统默认从软驱加载。可以通过c命令修改这些参数,具体的修改步骤就不说了。也可

以通过配置文件中的默认bootline来修改这些默认的参数。

打开$WIND_BASE/target/config/pcPentium/config.h文件,找到cpu==pcPentium选项下:

#define DEFAULT_BOOT_LINE /

         "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"

这就是默认的bootline,bootline的格式如下:

bootDev(unitNum,procNum) hostname:bootFile e=ead b=bad h=had g=gad u=username pw=password f=flags tn=targetName s=startupScript o=other

具体含义:

bootDev / 设备名,软盘:fd; 硬盘:ATA;网络要根据网卡的类型来做:NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网

卡为EEX,Intel82559网卡为fei ,3C905B PCI网卡为elPci。

unitNum / 设备单元号,一般指为0

procnum / cpu的处理器号,一般为0

flags / 标识,十六进制数,意义如下:

0x01: 关闭对处理器0的系统控制

0x02: 将局部symbols和全局symbols装入目标机symbols表

0x04: 禁止自动启动(即由用户输入boot line)

0x08: 快速boot(不计数等待用户输入)

0x40: 使用BOOTP or DHCP client

0x80: 使用TFTP获取image,否则使用RSH或FTP,用FTP时pw不为空

0x100: 使目标机登记为一个代理ARP client

ead / 目标机ip地址,此值如为空,网络接口不被帮定

bad / 背板接口

had / 主机ip地址

gad / 网关地址,如果主机和目标机不在一个局网里,需要

bootFile: / 存放vxworks image的路径

usr: / 使用FTP或RSH时的用户名

passwd: / ftp password

other: / 从网络启动时此值可为空,当从软盘或硬盘启动时,如果此值为你的网络设备,boot会为你绑定网络设备

hostname: / 主机名,任意

targetName:/目标机名

startupScript: / 脚本名,在boot以后的target shell里执行

 

因为我们要做很多实验,还是把它配置成网络加载方便一点。修改为:

#define DEFAULT_BOOT_LINE /

         "lnPci (0,0)host:d://ftp//vxWorks h=192.168.1.1 e=192.168.1.2 u=target"

这里详细讲解一下设备名称,对于不同的设备,其命名格式不同,对于块设备的命名规则我们可以在bootconfig.c

文件的bootLoad函数中找到对应的格式化字符串,比如软驱的格式是fd=x,x,可以找到如下语句:

             sscanf (params.bootDev, "%*2s%*c%d%*c%d", &drive, &type);

其中"%*2s%*c%d%*c%d"就是对应的格式,星号表示此数据忽略。再例如ATA硬盘其格式字符创为"%*3s%*c%d%*c%d";

对于网卡,则需要使用驱动程序中定义的名称,vxworks一般使用END驱动(Enhanced Network Driver),在驱动程序

提供的xxxEndLoad函数会返回一个设备名。比如AMD的PCNET-PCI网卡,驱动程序文件为ln97xEnd.c,其中ln97xEndLoad

函数中会返回LN_97X_DEV_NAME

    if (initString [0] == NULL)

        {

        bcopy ((char *)LN_97X_DEV_NAME, initString, LN_97X_DEV_NAME_LEN);

         DRV_LOG (DRV_DEBUG_LOAD, "Returning string.../n", 1, 2, 3, 4, 5, 6);

        return ((END_OBJ *)OK);

        }

LN_97X_DEV_NAME的定义在头文件ln97xEnd.h中:

#define LN_97X_DEV_NAME          "lnPci"      /* name of the device */

  

修改网卡驱动程序

 

Vmware自带的虚拟网卡是AMD的PCnet-PCI, vxworks自带的驱动程序(头文件为target/h/drv/end/ln97xEnd.h)据测试在vmware中无法工作。

大家可以试一下,在config.h文件中定义INCLUDE_LN_97X_END编译宏,执行make bootrom命令生成一个bootrom进行测试,你将得到下面的

错误提示:

 

因此需要从AMD官方网站下载最新驱动。解压后得到一个tar目录,将这个目录覆盖$WIND_BASE/tar目录,然后运行

$(WIND_BASE)/host/x86-win32/bin/ torVars.bat

进入$(WIND_BASE)/target/src/drv/end目录,运行:

make CPU=PENTIUM tool=gnu ln97xend.o

重新定位到$(WIND_BASE)/target/lib/pentium/PENTIUM/common目录,并将上一步生成的文件ln97xend.o复制到此目录下。

备份此目录下的文件libdrv.a;运行命令

arpentium -d libdrv.a ln97xEnd.o,删除libdrv.a中原有的ln97xEnd模块,然后再运行命令:

arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o

将我们刚刚创建的新模块添加进去。这里的-r选项是表示替换,-a选项表示文件放在指定文件(iOlicomEnd.o)之后。

 

然后我们需要修改配置文件,使bootrom中包含我们的网卡驱动程序,确保

#define INCLUDE_END /* Enhanced Network Driver Support */

#define INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */

而其它的网卡驱动宏都是#undef的。

 

修改sysLn97xEnd.c

打开C:/tornado2.2/target/config/pcPentium目录下的sysLn97xEnd.c文件,先定位到 “memory-mapped IO

base”这段文字,然后将其前面的参数由pciRsrc[endUnit].bar[1]修改为NONE,保存即可,

pciRsrc[endUnit].bar[1],     /* memory-mapped IO base */

NONE, /* memory-mapped IO base */

编译bootrom并制作引导盘启动虚拟机,可以看到错误没了,如下图:

 

 

编译vxWorks

 

为了测试一下网卡驱动功能正常,我们可以编译一个vxworks镜像文件,然后通过ftp加载到虚拟机中运行。

编译vxworks文件很简单,只需要在target/config/pcPentium目录下执行命令

make vxWorks

将生成一个vxWorks文件,把这个文件放到ftp目录下。并且打开ftp服务器(这里使用tornado自带的wftpd32.exe),

添加一个新用户user=target, password=target。使用引导盘启动虚拟机。引导程序将自动加载这个镜像并运行:

可以看到,Attaching network interface lo0… done。并且vxworks已经正常运行。

 

加入SHELL组件

  

上面看到的这个界面与我们平时在实验室看到的不一样:没有大大的vxworks的logo。原因是vxworks默认不包含shell组件,需要修改config.h文件:

#define INCLUDE_SHELL

重新执行makevxwoks命令,生成文件加载到虚拟机中,就会出现如下界面,不过此时的shell还不能识别命令,因为制作的镜像中没有符号表,

因此无法解析命令。这样的shell简直就是废材。

 

 

 使用符号表文件

 

要shell识别命令,需要提供符号表文件。上面的makefile vxWorks命令在生成vxWorks文件的同时还生成了一个符号表文件vxWorks.sym,这个文件

可用于主机上的WDB进行调试。首先要配置目标机,在tornado中选择tools/target serves/config菜单命令:

 

弹出如下对话框,可以新建一个目标机配置,在Core File and Symbols选项中指定vxWorks.sym文件,另外需要指定后台(目标机为后台,主机为前台)通信方式为wdbrpc并设置IP地址: 

 

                     

 

 

 

设置完成,单击OK。或者直接单击Launch启动,此时在windows的任务栏会出现target-server的小图标,双击它可以查看详细信息:

 

 

 

 

 

 

连接成功后,在主界面上的下拉列表中选择配置的target-server,并单击->i图标启动shell,这时候就可以执行输入的命令了。如下图:

 

 

 

 

虽然使用tornado集成环境进行调试有直观的优势,并且支持源码级调试,一切看起来都很美。但是,目标机与主机之间的通信通常比较耗时,有时候由于

种种原因还可能出现目标机连接不上的问题。在实际使用时,用得比较多的还是直接在目标机的控制台中输入命令进行调试。这要求把符号表和代码一起

下载到目标机上,这里又有两种方式:一种是符号表文件放在主机上,系统启动时从主机同步符号表;另一种是直接将符号表编译到vxWorks镜像文件中。

 

 

从主机同步符号表

 

这种方式需要修改配置文件,在config.h中添加

#define INCLUDE_SYM_TBL_SYNC

当然最好还是加上那些show函数,否则只能打断点却不能查看任务状态等重要信息,就像瞎子走路,只能迈动两腿,却不知身在何方,是很郁闷的。添加如下选项:

#define INCLUDE_SHOW_ROUTINES

编译之后,将vxWorks文件和vxWorks.sym文件都放到ftp目录下。启动虚拟机,我们看到它自动将符号表同步了。然后我们就可以直接在控制台输入命令进行操作。

 

 

 

 

编译vxWorks.st

 

 

最为直接的一种方式就是将符号表编译到vxWork文件中,这样不需要连接主机就可以在控制台上进行操作了。编译方式也很简单:

make vxWorks.st

这样就搞定了。虽然直接将符号表嵌入到vxWorks文件中,镜像文件的体积会增大,但是现在的硬件这么便宜。有的嵌入式系统甚至配置了2G内存。

因此这个问题越来越容易解决了。

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

在虚拟机上运行vxWorks 的相关文章

  • 51单片机定时器中断按键消抖(无延时)

    单片机入门学习记录 xff08 二 xff09 在机械按键的触点闭合和断开时 xff0c 都会产生抖动 xff0c 为了保证系统能正确识别按键的开关 xff0c 就必须对按键的抖动进行处理 按键的抖动对于人类来说是感觉不到的 xff0c 但
  • Ubuntu常用命令

    目录 更新仓库命令查看软件依赖包安装软件定时查看某个命令查找文件查找文件中的内容 grep 将命令行中输出内容保存文档scp通过ssh连接复制文件修改环境变量删除指定路径下包含某个关键字的文件与文件夹压缩解压查看运行信息远程桌面连接Wind
  • C#: WMI 获取远程 Windows 主机信息

    起步文档 xff1a WMI 基本介绍 WMI调用基本步骤 一个简单的远程访问例子 xff1a xff08 参考自MSDN How To Connect to a Remote Computer xff09 span class hljs
  • 端到端是什么意思?

    不久前 xff0c 燕姐 表扬了我 原话是 xff1a 像你这样端到端负责的人现在越来越少了 哈哈 xff0c 听到这话 xff0c 还是有点高兴的 xff0c 今天我来闲扯一下端到端 客户需要一个求立方差的系统 假设是fun系统 xff1
  • 电磁波和声波对比实验

    如图 xff0c 电话拨通 xff0c 能听到两个手机的声音 不断对右边的罩子进行抽气 xff0c 右边手机的声音越来越小 抽成真空的时候 xff0c 右边手机的声音消失 xff0c 但左边手机仍然如初 此时 xff0c 右边手机发送的信号
  • eclipse用MVC模式编写简单的JSP登录界面(一)

    刚开始接触JSP xff0c 打算写写博客记录记录 xff0c 大佬可以不用看了 1 JSP 在编写登录界面之前需要安装服务器 xff08 这里使用的是Tomcat xff09 并且安装IDE以及进行相关的部署 这里就不进行赘述了 xff0
  • seata

    Seata 1 seata概述 1 1 Seata简介 Seata 是一款开源的分布式事务解决方案 xff0c 致力于提供高性能和简单易用的分布式事务服务 Seata 将为用户提供了 AT TCC SAGA 和 XA 事务模式 xff0c
  • git clone出现fatal: HTTP request failed --git版本问题

    当git版本低于2 0版本时 xff0c 在push或clone代码时容易出现 fatal HTTP request failed 的问题 当前 xff0c git的最新版本是2 33 1 但是 xff0c 当我按官网提示 xff0c 用
  • 层次狄利克雷过程HDP(Hierarchical Dirichlet Processes)

    HDP本质是一个聚类算法 xff0c 自动决定聚类的个数 HDP HMM也是一个聚类算法 xff0c 自动决定HMM的隐状态的个数 xff0c 以每个隐状态作为一个聚类 LDA是主题模型 xff0c 可以被用作聚类算法 HDP也是个主题模型
  • vscode离线安装插件方法

    在实际工作中 xff0c 由于大多开发环境为内网开发 xff0c 无法连接外网 xff0c 需要进行离线安装相应插件 xff0c 此文用于记录vscode离线安装插件方法 1 方法一 xff1a 到vscode官网 https market
  • AD--------简单规则的设定

    这学期打了好多块板子 xff0c 都是在大佬的帮助下弄得 xff0c 嘿嘿嘿 xff0c 以后得多多练习 AD的规则设定 xff0c 反正对于英文不好的我来说还是比较难得 xff0c 但是现在画的板子规则设定都比较简单 rules 最小间距
  • linux系统编程中的信号量--模拟生产者与消费者

    FileName producer and customer c description This app demonstrates how to use the semaphore solve the problem about the
  • MySQL数据库索引相关知识

    目录 定义重点 存储原理B TreeB 43 TreeMyISAMInnoDB主键使用自增整形主键联合索引 原则那些情况应当创建索引不适合见索引 定义 索引时帮助MySQL高效获取数据的数据结构 简单说 xff1a 排好序的快速查找数据结构
  • 解决Mac M1环境下使用Goland debug失败的问题

    问题描述 xff1a 在m1环境下 xff0c 使用GoLand工具 xff0c 项目可以正常Run xff0c 但无法Debug运行 error could not launch process can not run under Ros
  • 解决“java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list,references column”

    在一次跑项目的时候 xff0c 报了这个错 分析原因 xff1a 百度发现是Mysql5 7及以上版本默认将 sql mode 的 ONLY FULL GROUP BY 模式设置为打开状态 解决办法 xff1a 1 将数据库换回5 6及以下
  • Lottie动画使用及原理分析

    1 Lottie是什么 xff1f Lottie是Airbnb开源的一个动画渲染库 xff0c 支持多平台 xff0c 包括iOS Android React Native以及Flutter xff08 https github com a
  • Windows Vista 下载

    Windows Vista 下载 简介 xff1a 2005年7月22日 xff0c 微软宣布 Windows Vista 为这款新操作系统的名字 微软于2006 年11月2日完成GA版本 xff0c 向OEM和企业用户发布 2007年1月
  • ubuntu 安装VS 转

    以下文字转 在ubuntu 安装VS 人生不过一闭一睁的博客 CSDN博客 ubuntu安装vs2017 able of Contents 一 前言 二 安装过程 1 下载VS Code 2 安装过程 3 下载C 43 43 模块 4 汉化
  • SQL2000 好书 《SQL Server 2000数据库管理与开发技术大全》----求是科技 人民邮电出版社

    SQL2000 好书 SQL Server 2000数据库管理与开发技术大全 求是科技 人民邮电出版社
  • 小米 pro 笔记本拆机-加固态

    前言 小米 pro 笔记本 256G 的固态 xff0c 有点不够用 xff0c 因此想加装固态 网上一打听 xff0c 拆机加固态售后要 100 元人民币 这哪行呀 不能这么便宜小米了 xff0c 100块我都不给你 xff01 准备工作

随机推荐

  • android四大组件之Activity - (2)onNewIntent()的作用

    要说onNewIntent 就不得不提到Activity的四种启动模式 分别是 1 standard 标准模式 也是系统默认的模式 每次都会新建Activity放置任务栈中 2 singleTop 模式 这个模式能够确保每次使用的Activ
  • 解决谷歌无法加载扩展程序

    方法一 1 先将下载的文件 crx格式修改为 zip 2 然后解压zip格式文件 3 选择加载解压过的zip文件 即可 方法二 1 在Google Chrome浏览器的桌面快捷方式上鼠标右键 xff0c 选择属性 R xff0c 进入如下界
  • 好玩的CMD几个命令

    1 msg命令 如果是在局域网中使用msg命令可以达到恶作剧的效果 msg server 192 168 1 26 东东是个人物 xff01 server 这里输入要发送人的IP地址 后面是输出的文字 2 Nslookup 检查网站的ip地
  • MySQL数据库使用相关语句

    目录 MySQL数据库的安装位置创建命令建库查看插入 编码格式配置文件修改数据库外网权限索引 MySQL数据库的安装位置 etc my cnf mysql配置文件 usr bin 客户端程序和脚本 usr sbin mysqld 服务器 v
  • C++筛法求素数

    假定题目为输出n以内的所有素数 一般方法 最容易理解的一个方法 xff0c 从0遍历到根号n判断n是否能被整除 使用时只需要记住判断到根号n就可以了 但是时间复杂度是o xff08 n sqrt xff08 n xff09 xff09 xf
  • 七 对话框

    1 模态与非模态对话框 模态对话框创建 CTestDlg dlg dlg DoModal 非模态对话框的创建 CTestDlg pDlg 61 new CTestDlg pDlg gt Create IDD DIALOG1 this pDl
  • 如何保证缓存与数据库的一致性

    关系型数据库系统给我们带来许多惊艳的特性 xff0c 例如 xff1a ACID 但为了维护这些特性 xff0c 数据库的性能在高负载下也会下降 为了提高性能 xff0c 通常会在项目的应用层 xff08 处理业务逻辑 xff09 和存储层
  • linux自定义图标主题目录及启动路径

    启动图标 就是按windows键出现一大堆应用的快捷方式 xff08 xxxx desktop xff09 目录 xff1a usr share applications 图标文件目录 xff1a usr share icons
  • Centos7 yum升级内核

    1 查看当前内核版本 uname r 3 10 0 1160 25 1 el7 x86 64 uname a Linux localhost localdomain 3 10 0 1160 25 1 el7 x86 64 1 SMP Wed
  • Ubuntu上安装Git

    1 安装git span class token function apt get span span class token function install span span class token function git span
  • AE或PR2020版本驱动程序或显卡不兼容问题解决

    AE或PR2020版本驱动程序或显卡不兼容问题解决 建议系统提前备份 xff0c 防止后期出错 驱动程序不兼容 xff1a AE为例 1 点击修复 gt 跳转到浏览器界面 gt 建议驱动程序版本 xff08 27 20 100 8476 或
  • Qt调用js和js交互, QWebengine调用js

    QWebengine 调用js有两种方式 通过QWebChannel调用 写一个类然后继承QObject用于和js进行通信交互 ifndef TINTERACT OBJECT H define TINTERACT OBJECT H incl
  • LinuxMint KDE任务栏消失恢复

    桌面右击 gt 添加面板 gt 添加默认面板 就恢复了
  • 神奇的输入法——小狼毫——个性化设置

    电脑硬盘坏了 xff0c 重新换了硬盘 xff0c 自然就要把软件重新安装一遍 个人喜欢用 五笔输入法 xff0c 之前一直用的 极点五笔 xff0c 但是它一直没有更新 偶然间搜索到了 小狼毫 xff0c 用户评价都不错 xff0c 果断
  • MySQL explain字段总结

    目录 作用表组成id xff08 表的读取顺序 xff09 select type xff08 数据读取操作的操作类型 xff09 字段 type字段 possible key xff08 那些索引可以使用 xff09 key xff08
  • 查找 替换 细节

    查找内容 可以快速搜索每一处指定单词或词组 1 单击 编辑 菜单中的 查找 命令 2 在 查找内容 框内键入要查找的文字 3 选择其他所需选项 若要一次选中指定单词或词组的所有实例 xff0c 请选中 突出显示所有在该范围找到的项目 复选框
  • Anaconda和pip异常

    一 Anaconda异常 1 No module named unicodedata 正常使用时出现这个问题 xff0c 与其想着怎么解决 xff0c 不如直接重装python环境或者试试卸载并重新安装pip 卸载并重新安装pip请参考博客
  • Linux下批量替换tab到空格的转换

    将所有文件中的tab批量替换为空格 find type f exec sed i orig 39 s t g 39 43 其中 34 t 34 后面跟的是空格的数量 xff0c 我这里是4个空格 原链接 xff1a https stacko
  • fegin调用的时候数据格式转换为linkedhashmap

    在spring cloud项目开发中 xff0c 使用fegin进行远程调用 1 接口服务方返回类型为Map String Object 类型 2 接口调用方返回值类型也是Map String Object 3 通过fegin调用之后返回的
  • 在虚拟机上运行vxWorks

    Vxworks是一个嵌入式系统 xff0c 主要运行在arm ppc mips等嵌入式处理器上 xff0c 它同样可以运行在X86处理器上 风河公司开发的tornado开发环境就 包括了pentium版本 xff0c 并且发布了相应的bsp