小白探访WINDOWS下的驱动(五) 第一个HELLO驱动(插曲-调试环境设置HOST&TARGET)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

※MSDN参考:

※1准备用于进行设置的计算机 (WDK 8.1)     <-HOST机器的准备

※2配置计算机用于测试和调试    <-Target机器的准备

※3使用 Visual Studio 执行内核模式调试

※4使用 Visual Studio 调试用户模式过程

※有些特殊情况如<安全启动>以及<ARM架构的目标机器>等话题,在MSDN:准备用于进行设置的计算机 (WDK 8.1) 也有说明,这里不重述。

Windows 调试  虽然是驱动的调试,但实际上进入了windows 调试的范畴了,所以如果有时间可以看一下这个专题,以建立完整的印象。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/


一. Host 和 Target 和通信媒介

1.准备两台PC

Windows 驱动调试,需要两台计算机器,运行开发工具(Visual Studio + WDK)的PC 为HOST, 运行调试的驱动的PC为TARGET.

2.建立两种类型的通信-(Configure 和 Debug)

Host&Target之间,有两种目的的连接:一种用于配置,一种用于调试。配置用的连接必须是网络,调试用的连接有5种:

1) 配置用连接(Concifiguration connection)

只能用网络连接,两台机器之间要能通过计算机名ping通。MSDN虽然没有要求两台计算机必须在一个子网(有路由支持即可),也不一定在一个工作组。但是为了避免一些意外,最好简单一点:同网段,同工作组。(我当时是不在一个子网,分别在两个VLAN里,但是域(工作组)是一样的)。

2) 调试用连接(Debugging connection)

        • 网络
        • USB 3.0
        • USB 2.0
        • 1394 (Firewire)
        • 串行

对于debug,通信连接有具体的要求或者专用的通信线(USB 3.0,USB2.0,串口), 参考MSDN: 针对调试进行设置

      • 需要两台电脑都要有1394适配器,使用1394标准线。主机只能有一个1394卡,target可以插多个1394卡。
      • MSDN原文:Using multiple 1394 controllers in the host computer is not supported.The 1394 debug driver, which runs on the host, can communicate only with the first 1394 controller enumerated in the registry.If you have a 1394 controller built into the motherboard and a separate 1394 card, either remove the card or disable (by using Device Manager) the built-in controller.

3.[Debug连接]对Windows版本要求

Case 1 : Target: Windows 8 and later

如果目标计算机运行的是 Windows 8 或更高版本,则可以使用任何类型的连接进行调试。 

例如,可以使用网络连接进行调试:在这种情况下,网络连接作为Configureation过程和Debug的通信媒介。

                                                                                   (Target: Windows 8 and later)


Case 2: Target: Windows 7 and before

如果目标计算机运行 Windows 8 之前的某个 Windows 版本,则不能使用网络连接进行调试;必须使用 USB、1394 或串行连接。但是,必须使用网络连接进行设置。

                                                                                            (Target: Windows 7 and before) 


※网络连接的注意事项

主机和目标计算机必须位于同一网络域或工作组中。不支持对虚拟机进行设置。

如果你的计算机位于工作组中,MSDN建议你使用路由器连接计算机,而非集线器或交换机。

 

二. 配置调试环境

<准备Target和Host>

1.Target PC安装目标操作系统

2.连接Target和Host

1)Connection for Configuration: 建立网络连接(保证HOST和TARGET能互相ping通)

2)Connection for Debugging  Configure  

<Target>

3.Target安装<WDK 测试目标安装程序 MSI> 

※会生成 调试用的驱动安装文件夹< c:\DriverTest>

※1 安装操作(MSDN转记):

  • 安装驱动程序测试服务以远程执行测试
  • 通过将此注册表项的值设置为 0 来禁用远程用户访问控制 (UAC)。(注解:这个键值在上一步的安装后才有。)

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy

  • 启用文件和打印机共享和网络发现
  • (仅 ARM)将 Lanmanserver 服务设置为自动启动并启动该服务。

 关于【共享】这里,需要说明一下,通过【控制面板】的【网络共享中心】->【更改高级共享设置】可以设置。但是,要理解,这一个步的目的是为了host去配置target的时候有权限对target拷贝文件以及进行操作。也就是说光这个配置还是会遇到问题的。

在实际当中,还要注意msdn提到的host与target要在同一个工作组或一个域里。当配置的时候,实际上host需要用到target的管理员权限(过程中会提示)。

具体的说,我遇到过,host是在域里,target是在工作组里,在配置的过程中,提示我输入用户名和密码,而在这当中,我使用了target的管理员账号和密码,却总是提示不能获取权限。当我将target加入到域里,并且使用域的管理员账号时,才得以通过认证。其中,我确认target的管理员账号是全权限的,也ping的通,甚至网络文件夹也能访问,但是都不能通过配置是的权限认证。

我想说的是,既然是目标机,就不要搞的网络环境太复杂,最好和host是同一个工作组,或者同一个域,并且使用最高权限的账号。

※2 卸载操作(MSDN转记):

若要卸载 WDK 测试目标设置,请转到“控制面板”>“程序”>“卸载程序”。作为使用控制面板的替代方法,你可以右键单击 WDK Test Target SetupPlatformLocale.msi,然后选择“卸载”

示例:右键单击 WDK Test Target Setup x64-x64_en-us.msi,然后选择“卸载”。

卸载 WDK 测试目标安装程序时会执行以下操作:

  • 卸载驱动程序测试服务

卸载 WDK 测试目标安装程序时不会更改以下设置:

  • 远程 UAC 设置
  • 文件和打印机共享设置
  • 网络发现设置
  • Lanmanserver 服务启动类型

※3 Server版本的Windows情况,还需要对调试用的驱动安装文件夹(c:\DriverTest)的属性进行<安全>属性设置(<组授权>)

※4 可以在 HOST机器(安装了WDK的PC)的 WDK 安装目录中的Remote 下找到该 MSI

C:\Program Files (x86)\Windows Kits\8.1\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi

附:remote目录下为不同平台的target准备的调试程序。

 


4.Host 配置Target

<Host>

通过Visual Studio File->Drvier->Test->Configure computer 通过网络安装远程组件,配置target  (建立远程调试用账号,安装debuger等)

---------------------------------------------------------

关于自动配置的三种选择的策略(其实是Debug通信的配置):MSDN参考:

1)如果目标计算机运行的是 Windows 8 或更高版本,并且目标计算机拥有一个支持网络调试的网络适配器,则可以选择第一个选项“设置计算机并自动配置调试程序”。你可以在此处查看支持网络调试的网络适配器列表。

2)如果目标计算机运行 Windows 8 之前的某个 Windows 版本或者你想使用其他类型的调试连接(USB、1394、串行)之一,则选择第二个选项“设置计算机并选择调试程序设置”。借助该选项,你可以选择调试连接的类型。如果选择网络调试连接,则可以选择端口号和加密密钥。

---------------------------------------------------------

因为我的目标机target是windows 7 sp1 64bit,所以debug 通信只能选择网络以外的情况,需要手动选择debug的通信方式(choose debugger settings),

所以,在这里<选择第二项>:

Provision computer and choose debugger settings.

 【选择provision的原因,以及做了些什么,参见 :What happens when you provision a computer (WDK 8.1) https://msdn.microsoft.com/en-us/library/dn265576(v=vs.85).aspx】

下面的Connection Type,是指DEBUG的连接(默认是"网络"),也就是说,在这里进行DEBUG连接的设置.

※1. 一方面,HOST 会出现安装的提示。

    从HOST提示上看,主要是自动在做以下几个步骤:

1)网络连接Target PC

2)连接Target PC上的驱动测试用automation 服务(driver test automation service)

3)获取Target PC 信息

4)拷贝驱动测试用automation 文件(driver test automation files)

5)安装驱动测试用组件(install driver test automation)

6)安装调试器(debuger x86,x64)

7)安装驱动测试框架(driver test framework)

8)配置调试器(debuger,可能会重启)

 

<TARGET>

※Target 由host控制,与上面的提示同步地,进行相对应的自动安装。可以看到:

1)自动的创立远程调试账号WDKRemoteUser并自动登陆PC.

2)自动的一些组件的安装,可能还会出现几次重启,如:

【现象1.】TARGET的 C:\Program Files(x86)Windows Kits\8.1   (在HOST使用WDK 8.1的场合下自动以8.1命名文件夹)

从程序文件夹的快捷方式看,主要安装以下程序(组件看不出来):

Debugging Tools for Windows(X64)

Help

Global Flags(X64)

WinDbg(X64)

Debugging Tools for Windows(X86)

(※文件内容与64bit的雷同)

 【现象2】C:\DriverTest  (前面<WDK 测试目标安装程序 MSI>时生成的空文件夹下)

 log

     |-  ......

msvsmon

     |-  ......

Run

     |-  ......

Setup

     |-  ......

devcon.exe

traceview.dll

wttlog.dll

wttlogcm.dll

 

※遇到问题

<问题现象>

通过查看host的安装提示,进行到配置调试器(configuration debugger settings(X64) (possible reboot),就没有再进行下去了,【完成】按钮也为灰色。

回顾前面过程的安装似乎非常顺利,也并没有出任何错,目前的提示也应该是快安装完了。似乎是网络通信的问题。

因为工作的关系,停了一天后,又继续。重新梳理一下思路和上面的文档,认为前面的安装都成功了,应该网络环境没有问题。而,WDK8.1的配置,概念上有两种通信连接,一个用于配置,一个用于DEBUG.而用于DEBUG的连接对目标机(target)的windows 版本是有要求的。即,target 如果是windows 7以及更早的版本,debug通信连接必须是网络以外的连接.

虽然,我找的TARGET是windows 7 sp1 64bit,一开始我的认识是,目前是配置阶段,暂时不考虑debug 通信的问题应该也行,所以并没有建立host(windows 8) 到target(windows 7 64bit)的通信连接,并且,在前面Visual Studio File->Drvier->Test->Configure computer步骤时,因为是第一次配置,也没有注意下面Connection Type是指的debug connection type,默认选择成了network.这样,我的通信环境就与MDSN的要求不符合了。

加上,配置过程中,是停在(configuration debugger settings(X64) (possible reboot),即配置debugger,所以很可能问题出在:

host和target之间的【debugger连接】没有。

 

※配置过程的日志文件:

当时,在盲目的改变参数尝试过程中,出现过其他错误,而出错时会提示查看某个路径下的日志文件。这样,就知道了这个过程中的日志文件是在下面这个路径下:以后有问题是,可以查看这个文件,当然网上提问时也可以提供这个日志文件了。针对上面的问题,看到日志文件中的记录显示,host一直对target重复尝试某种初始化。

C:\Users\<你的登陆账号名>\AppData\Roaming\Microsoft\DriverTest\Install

<问题的考虑>

考虑debugger的连接方式

host和target之间的debugger连接可以选择:

(1)USB 3.0 需要 HOST和TARGET都支持USB 3.0,并且要切断VBUS。目前我的PC不支持USB 3.0所以作罢。

(2)USB 2.0 需要专用的USB host-host对接线。这个线似乎没有。找找看了。

(3)1394  需要HOST和Target都要有1394接口。目前我的PC不支持。或者考虑购买1394的接口卡,费用稍高。

(4)serial 需要HOST和Target都要有串口接口。目前我的PC都没有串口,考虑使用USB转串口,但是,因为MSDN中对这个串口的握手接信号是有要求的,担心买来的USB转串口在握手信号上满足不了。

(5)serial via usb 这个需要微软提示的某个开发板,购买这个开发板不太现实(价格因素)

(6)virtual machine 这个需要将目标机装在虚拟机里。先不考虑真实开发的情况需要购买虚拟机,而且虚拟机的速度,以及开发时切换的麻烦,也考虑作罢。

综合以上,看来在debugger通信准备上,要花不少时间了。

 

尝试1

2015/1/14: MSDN要求<见上面关于9针串口的接线图>,必须是交叉线,而且要有CTS/RTS,DTR/CD+DSR两个配对握手,网上查询了一下目前市面上的USB转串口都是CTS/RTS配对的,DTR的配对就没有。但是,我考虑到可以用串口的其他接口信号短接模拟,所以,去网上买了两个比较成熟的USB转串口,Z-TEK比较新的产品,加一根DB9双母头交叉线来试一下,另外成品交叉线可能不满足要求,又买了DB9的母头两个和9芯线,作为备用。

             2015/1/16:2个USB转串口,和一根商家称交叉线的串口线到了。通过测试,发现,所谓交叉串口线只是RX,TX配对交叉,其他信号线如CTS都是一一对应的,大跌眼镜。所以这根USB交叉线作罢。需要自己制作满足上面握手的交叉线。而DB9的串口母头和9芯线也到了。


尝试2

2015/1/20鉴于时间的原因,不得已,只好屈服于用虚拟机的方式。虚拟机使用VMWARE 11,安装了windows 7 64 bit 版本(适用版本,未激活)

》》》》参考:Setting Up Kernel-Mode Debugging of a Virtual Machine in Visual Studio《《《《

(1)安装和配置虚拟机                            

1)安装虚拟机                            30分钟

2)安装WINDOWS 7  64 BIT   60分钟

3)配置虚拟机串口                    10分钟       

VMWARE->[VM]->硬件->追加->串口  得到 \\.\pipe\com_1虚拟串口

4)windows 启动配置   

c:\>bcdedit /debug on

c:\>bcdedit /dbgsettings serial debugport:1 baudrate:115200

※where n is the number of a COM port on the virtual machine

5)增加虚拟机共享文件夹         10分钟      

step1:  VMWARE->[WM]->设置->选项->共享文件夹    

step2:  虚拟机windows 7 映射网盘(我的电脑->映射网盘->vmwarehost->前面选定的共享文件夹)

6)确认: 通过计算机名能ping通  

(遇到ping不同的场合,可以尝试修改target的hosts文件,如:c:\windows\system32\driver\etc\hosts)


7)确认: target是和host在一个工作组或者同一个域

(为了后面host方便的获取target的管理员权限)


(2)开始target配置准备

1)以管理员身份登录

2)从host 的C:\Program Files (x86)\Windows Kits\8.1\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi 拷贝文件到target

3)安装                                         2分钟

4)确认C:\DriverTest目录是否建立

5)确认

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy 是否为0

6) 启用文件和打印共享和网络发现(wdk 8和wdk8.1,目前是8.1)

具体来说,就是【控制面板】->【网络共享中心】->更改高级共享设置

(3)开始host visual studio 【Driver】的配置

【Driver】-【Test】->【configure computers】整个过程到下面这一个步需要 20分钟

【配置阶段】configuration debugger settings(X64) (possible reboot)。。。

                       ※我没有用虚拟机以前,始终过不去的这一步,现在只需要10秒左右。。。。。。。。。fint........

(4)最终,如MSDN所说,很快完成了配置。

5.其他(仅仅了解即可)

※1 目标计算机正在运行 N 或 KN 版本的 Windows的情况下,目标机还需要安装媒体功能包(The Media Feature Pack),具体参见下面:

Windows 7 KN: Windows 7 KN is meant for Korean market, and includes the same functionality as Windows 7 K, except that it does not include Windows Media Player and related technologies such as Windows Movie Maker, links to download Windows Live Messenger, or links to a Media Player Center Web Site and a Messenger Center Web site.

 

 6.关于BCDedit命令

在配置TARGET的说明中经常遇到一个命令bcdedit.这个命令是干嘛的?在MSDN中搜索一下很快能找到下面的连接,并能下载到参考文档:

http://msdn.microsoft.com/zh-cn/library/dn653986(v=vs.85).aspx  (BCDEdit Commands for Boot Environment)

On Microsoft Windows Vista and later versions, the boot configuration data (BCD) store, contains the boot configuration parameters and controls the computer's boot environment. BCDEdit is a command-line tool that can be used to add, delete, edit, and modify data in a BCD store. The paper is a reference for BCDEdit commands, data types, and well-known identifiers.

命令参考文档: BCDedit_reff.docx (http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/BCDedit_reff.docx

简单的理解,bcdedit就是一个控制台命令,用于修改设置操作系统的启动参数的。理解到这里,应该在驱动开发方面就够了。

 

三.样板项目的部署

前面看似都成功了,应该后面可以按部就班地,新建项目->写代码->部署->调试了。真的吗?           

在复杂而且耗时的驱动调试环境配置完成后,可以通过Write a UMDF driver based on a template 的步骤新建并配置一个umdf框架下的hello驱动项目,看一下调试环境。

在前面的环境建立后,接下来的步骤主要是:

1.联机下载umdf的样板代码

【操作步骤】:

step1:<Online搜索解决方案>

visual studio -> File->new->project->online->template  在右上角输入关键字 ”User Mode Driver, WRL (UMDF)"进行搜索 .

step2:<命名解决方案>

搜索结果 User Mode Driver, WRL (UMDF) 出来后,以任意名字作为项目名:UmdfDriver。

注意:项目名因为将是默认驱动的名字,所以项目名的字数必须小于32个半角字符。这以限制可以参考 wdfglobals.h头文件。

step3:<生成解决方案>

选择【确定】 

 

【操作的结果】:

自动生成解决方案umdfdriver.sln。包含两个项目:

1)<驱动项目>   [solution name].vcxproj

说明:这个项目用于编写驱动代码 , 这里项目名为:umdfdriver.vcxproj

2)<驱动包项目> [solution name] package.vcxproj

说明:这个项目用于形成驱动安装包,这里项目名为:umdfdriver package.vcxproj

2.编译解决方案

【操作步骤】

step1:<配置编译的目标平台>

在【解决方案资源管理器Solution Explorer】中,右键点击解决方案umdfdriver.sln的【Configuration Manager配置管理器】

选择平台,如window 7 + X64.并确定。

注意1:既然是编译形成运行代码,就必须先配置运行的目标平台

注意2:对解决方案的配置对其下两个项目(umdfdriver.vcxproj和umdfdriver package.vcxproj)都有效的。

 

step2:<编译解决方案>

vistual studio -> build solution

【操作结果】

解决方案文件夹下可以看到驱动安装包的文件

x64\Win8.1Debug\UmdfDriver

  • UmdfDriver.dll -- the user-mode driver file
  • UmdfDriver.inf -- an information file that Windows uses when you install the driver
  • UmdfDriver.cat  -- a catalog file that contains a test signature for the package

3.配置驱动包项目

※以Debug为目的的部署&安装(Deploy and installing the driver)

注意1:作为开发驱动的讨论,这里的”部署和安装“是指为了debug而将驱动【部署】并【安装】到调试机,即,我们前面配置的target机器。

注意2:以debug为目的,除了前面通过host对target机器的配置准备以外,还需要对【驱动包driver package】进行配置。

【操作步骤】

step1:<打开驱动包属性页>

在【解决方案资源管理器Solution Explorer】中,右键点击【驱动包driver package】,这里是umdfdriver package.vcxproj,选择【属性】

step2:<配置驱动包的部署Deployment参数>

在驱动包属性页面driver package property中,选择Configuration Properties > Driver Install > Deployment

1)"Enable deployment" <=打钩 

2)”Remove previous driver versions before deployment“ <=打钩

3)"Target Computer Name" <=target 机器的名字(前面配置好的target)

4)"Driver Installation Options" ->"Hardware ID & Driver Update" <= Root\【解决方案名,即驱动名】  ,这里是 Root\UmdfDriver

注解:这个名称要和驱动的INF中的[Standard.NT$ARCH$]下的值对照一致(默认肯定是一致的,都是自动生成)。

文件:UmdfDriver > Driver Files>UmdfDriver.inf.

内容:[Standard.NT$ARCH$]%DeviceName%=MyDevice_Install,Root\UmdfDriver

step3:<开始部署和安装>

visual studio > Debug > Start Debugging, 或者按 F5 on the keyboard.

【操作结果】

            在这里又,又,又有了问题。。。。。。。。。。

在执行了Visual Studio->DEBUG(后者F5)以后,随着Visual Studio编译等等的提示,target机器也随着有一些命令行模式的屏幕闪动,似乎在顺利的进行。但是,很快visual studio就提示出现了错误。如下:

 

在根据提示,我到target机器c:\drivertest\run\下面,看到也自动生成了驱动文件,哪里有问题呢?

带着这个问题,查询MSDN,发现关于WDK 8.1还是很有问题的。

如,有一个用户提问到,在一切似乎正常的情况下,也在和我类似的步骤停止了。他的target环境是windows 7 , 64bit,调试通信使用1394接口。根据他的提问,微软的MSFT的叫MAX的工程师,进行了回答,如:

<MSFT的回答>:”我会在你的环境下看一看是否能重现你的问题“

。。。。。。

<MSFT的回答》:”我重现了你的问题,看来,我们要在WDK 8.1以后的版本上去修复这个问题了。就目前而言,你需要确认你的host上的xxxxx配置文件,与你target上的通信配置相同(通过BCDEDIT命令),目前,由于这个BUG,如果配置文件中的某个参数为空的话,是会有问题的。”等等。

根据上面的对话,我发现,微软的WDK 8.1相当的有问题。。。。。很轻易的重现了用户提出的BUG,而且这个BUG的前提条件非常的单纯。难道没有测试过吗?我不相信。可是。。。。

关于MSDN记载的问题的对话,提出问题的用户在得到上面的回答后,很礼貌的感谢,但是后面的话就有意思了:

<用户>:我目前正忙于将我们的驱动由WDK8.0到WDK8.1移植,目前我现在去进行windows 8和windows 8.1的移植。windows 7的问题先不管了,毕竟,目前的windows7的驱动应该也不会有太大问题吧。

<MSFT的回答>:(又整理并重申了要去确认host配置文件和target的配置环境是否一致)。

到这里,提出问题的用户没有继续回帖了。看来,该用户应该确认了自己host的配置文件,应该是和target的将配置一样的。也就是说,按这个思路问题解决不了问题,可是该用户已经失去信心了。。。。。

 

说了上面这么多,我的意思是,我一开始选择WDK8.1就是改变了我以前对开发环境从不追求最新的习惯,想着这次,既然是技术兴趣学习,就应该跟上潮流。。。可是,看来WDK 8.1似乎发布太匆忙了,导致用户仅仅在环境配置上就非常的消耗时间,而且有问题也只能等待下一个版本。有点不归路的感觉。。。。到目前为止,为了环境配置,我耗费了太多的时间。特别是target的配置,每进行一次配置,大概40分钟,还不算虚拟机的下载,windows的反复安装,安装以后的自动更新的等待时间,碰壁后查资料,确认等等。这样,我估计应该消耗在环境配置的时间有100小时,按每天上班8小时的话,有2周半了。

消耗时间的项目:

(1)Visual Studio的下载     8小时

(2)WDK 8.1的下载           8小时

(3)虚拟机的下载               1小时

(4)target  的操作系统的下载(windows 7)    8小时

(5)target上WDK Test Target Setup x64-x64_en-us.msi的安装    每次0.5小时(包括确认等)  

(6)host/target调试环境 com方式 Provision成功为止的等待    0.5小时/回  (每次都要provision)

(7)com下,Provision出错时的等待     1小时/回     (因为不知道是否出错,只能等)

(8)虚拟机的安装   2小时(运气好的话,因为没有强大的机器)

(9)新装系统的自动更新   0.5小时(平均)

(10)host/target虚拟机方式Provision成功为止的等待           0.5小时/回  (每次都要provision)

(11)虚拟机下,Provision出错的等待     1小时/回     (因为不知道是否出错,只能等)

(12)阅读理解MSDN     估计12小时

 

(1)+(2)+(3)+(4)+ {(5)+(6)+(7)+(8)+(9)+(10)+(11)} X10+(12)  = 25+6x10+12 = 97小时 

作为成果,我目前的状态是,调试环境步骤都走熟悉了,但是最后这hello驱动还有调试成功。

windows 下的驱动开发我这是初次接触,感觉上如果要做windows 7以前的驱动开发,还是WDK 8.0以前好一些吧,毕竟早一点可能比较稳定和成熟。

 

 

到此,为了驱动开发的环境配置,已经全部了解了。<完>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值