全志USB驱动与Windows内核隔离冲突问题
前言
笔者最近在做全志平台相关的开发,编译好准备烧录到目标板的时候,发现在开发者社区下载的USB驱动总是打不上。
在开发者论坛发现也有不少人遇到这个问题,期间试过重装驱动、重启电脑,但是似乎没有一个有效的解决方法,于是打算自己尝试解决。
问题现象
目标板进入下载模式后,插入USB并安装好官方USB驱动之后,显示无法加载驱动(系统版本:Windows 11 专业版 23H2):
Windows无法加载这个硬件的设备驱动程序。驱动程序可能已经损坏或者不见了。(代码39)
进入系统安全模式
按照以往的经验,一般Windows系统出现问题都可以使用安全模式来进行调试(如何进入安全模式网上都有详细教程)。
于是在安全模式测试下这个USB驱动,结果惊奇发现在安全模式中可以正常驱动。
由于安全模式下系统会禁用某些驱动和功能,让我不禁认为“是不是全志的USB驱动和系统原有的驱动冲突”?
于是正常启动系统之后,尝试禁用掉安全模式中没启动的驱动,但结果还是无法加载驱动。
但好在这一轮测试下来,说明全志USB驱动是可以在Windows11下运行,只是某些原因导致无法加载。
巨硬的相关描述
根据驱动的报错信息,尝试在巨硬的支持文档中找找有没有相关的描述。结果还真找到一篇相关的文章:无法在此设备上加载驱动程序
之所以收到此消息,是因为 Windows 安全 中的“内存完整性”设置正在阻止驱动程序加载到设备上。 如果希望能够使用此驱动程序,可以尝试以下几个选项:
- 查看更新的兼容驱动程序是否通过 Windows 更新或驱动程序制造商提供。
- 如果不起作用,可以尝试在 Windows 安全 中关闭“内存完整性”设置。
文章中提到,可以通过关闭“内存完整性”来尝试修复驱动问题。
在Windows安全中心关闭“内存完整性”,并重启系统之后,可以成功加载全志USB驱动了!
解决方法
看来这个问题的根本原因,是全志的USB驱动和Windows的内核隔离功能有冲突。
- 目前的解决办法是参照巨硬的文档,关闭内核隔离功能(关闭了Windows的内存保护功能)。
- 根本的解决办法,是全志的USB驱动修复内存相关问题,使其符合Windows内存保护机制。