ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Keil5安装.pack失败怎么办?六大根因排查与完整解决流程

Keil5安装.pack失败怎么办?六大根因排查与完整解决流程 正调着调着代码换了个新板子下载了个.pack文件双击Keil窗口闪了一下没有任何反应。再双击一次直接弹出一个红叉“Could not install the pack file”然后整个包管理器卡住不动。这场景我相信搞过STM32、GD32、NXP开发的人多少都碰到过尤其你急着想在工程里选一个新款芯片时一个.pack文件安装失败能让你硬生生卡掉半天。keil5安装.pack文件失败这个问题报错信息五花八门但回头复盘真正的原因其实就那么几类版本兼容、路径问题、下载残留、系统权限、Keil自身的缓存抽风。这篇文章就顺着这些方向一个一个拆开讲从底层机制说到排查路径再给你一套能稳定装上pack的完整操作流程。不管你是刚装好Keil的新手还是已经写了几年嵌入式的老手只要遇到过pack装不进去的情况这篇应该能帮你省下不少时间。1. 为什么“双击.pack”这条路第一步就容易跪很多人拿到.pack文件的第一反应是双击它就像双击一个安装包一样。这个直觉本身没有错但pack文件其实并不是一个常规意义上的安装程序。理解它到底是个什么东西、Keil安装它时做了什么才能真正明白为什么失败的姿势会这么千奇百怪。1.1 .pack文件到底是什么不只是压缩包.pack文件的全称是CMSIS-Pack是芯片厂商发布的一种标准化封包内部结构可以简单理解成一个压缩包但里面装的不是普通文档而是一整套开发支持文件。以STM32系列为例一个完整的.pack里至少包含这几个部分PDSC文件Package DescriptionXML格式的设备描述文件相当于整个包的“清单”记录了芯片型号、内核类型、外设寄存器定义、Flash算法文件路径、内存地址映射等关键信息。Flash算法文件.FLM烧录器下载程序到芯片Flash时依赖的算法没有它下载时会报“No Flash Algorithm”之类的错误。SVD调试描述文件描述芯片内存和外设寄存器的文件用于调试器查看外设寄存器。头文件、启动文件、链接脚本工程模板化和初始化代码的基础。Keil拿到.pack之后并不是简单地把这些文件复制到某个目录就算完事。完整过程是先解压到临时目录然后读取PDSC文件里的描述内容校验文件完整性再把相关文件释放到ARM/PACK目录下最后更新Keil的设备数据库Device Database。设备数据库一更新你新建工程时才能在Device下拉菜单里找到这个芯片型号。任何一个环节出问题整个安装就会在中途失败而且经常不给你明确的失败原因提示。1.2 离线安装和在线安装走的其实是两条路Keil装pack有两种基本路径一种是通过Pack Installer在线搜索、下载、安装另一种是手动下载离线.pack文件再从Keil内部导入。两条路最终的落点都是那个设备数据库但失败表现完全不同。在线安装时如果网络不稳定或者服务器响应慢Pack Installer会卡在下载阶段或者下载了一半留下一个临时文件下次检测到这个残缺文件就报校验错误表现是“Download of Pack failed”或者一直在转圈。离线.pack文件安装则更依赖本地环境UAC权限、杀毒软件、路径格式、keil版本兼容性这些因素都会影响成功率。很多人失败的原因是绕过了Keil的导入机制直接双击.pack文件。Windows系统会根据扩展名去找关联程序如果.pack文件的关联不是Keil而是某个压缩软件、文本编辑器甚至杀毒软件双击的后果就不是安装而是被解压成一堆不知道往哪放的文件。即使文件关联正确双击安装也经常没有权限提示系统以普通权限偷偷调用Keil的导入进程写到Program Files目录下时直接被拒绝。所以第一条建议先放在这拿到.pack文件以后不要随手双击最好关掉杀软、以管理员身份打开Keil再从Pack Installer里导入。这是成功率最高的路径后面我会详细讲操作步骤。1.3 “失败”的常见浅层原因UAC、文件关联、杀软拦截把失败原因分层来看最浅的一层往往藏在系统层面。第一是UAC提权问题。Keil如果装在了C盘Program Files目录下pack文件要写入的程序目录本身就受系统保护。普通权限下写入动作会被Windows拦截Keil又不一定给了友好的提示最后的观感就是导入失败或者导入没反应。第二是文件关联。接上面说的pack文件后缀被第三方软件接管是高频事故。压缩软件、Notepad、甚至某些截图工具都会抢关联。你双击.pack系统认为你要解压它结果打开方式一变Keil就再也接不到这个安装请求了。第三是杀毒软件拦截。很多安全软件会对解压出来的FLM文件、DLL文件敏感一边解压一边查杀解压到一半文件被隔离Keil只能报告文件损坏或安装异常。这类问题排查起来特别隐蔽因为你看到的报错全是Keil的实际上动手的是杀软。这三类浅层原因很多情况下通过一个简单动作就能识别换一种安装方式。如果你双击失败改成从Keil内部导入仍然失败才说明问题不在表层如果双击失败但从Keil内部导入一次成功那就是文件关联或权限拦截在搞鬼不用再折腾Keil。2. 对号入座六种高频失败现场的根因定位pack安装失败很少是单一原因但绝大多数情况下你都能从现象里倒推出问题所在。我把这几年遇到过的、以及在社区里看别人排查过的案例整理成了下面这六类先对号入座再按对应方向处理。2.1 高版本PACK撞上老旧MDK最容易被忽略这是新手最容易踩的一个坑。芯片厂商的pack会持续更新而新版本pack的PDSC文件格式往往建立在较新的Keil MDK-Core版本之上。你手里的Keil是5.23去官网下了个最新的STM32F1 pack装了三次都失败最后发现Pack Installer里明确写着“This pack requires MDK-Core version 5.37 or later”。Keil的pack安装机制里有个隐含的版本匹配规则PDSC文件的Schema版本、CMSIS版本、编译器版本都可能和Keil内部组件有最低版本要求。旧版Keil拿到新版pack时解析PDSC就可能报错表现可能是双击.pack后没反应导入时提示文件损坏或不是有效的CMSIS-Pack解压到一半时弹出版本不兼容的日志。排查方法很简单打开Keil菜单栏 Help → About uVision看一眼当前MDK-Core版本号。再去下载pack的页面找到这个pack要求的最低MDK版本。两者一对比问题就清楚了。如果current版本明显低于要求两个选择升级Keil到支持的版本或者下载历史版本的pack。对于老项目我一般不建议为了一个新pack而升级整个Keil因为会连带影响编译器行为和已用外设库的兼容性得不偿失。2.2 中文路径和含空格目录引发的“装不上”Windows用户名是中文是个特别常见的雷区。Keil的pack安装过程中别以为只涉及Keil安装目录实际上它会往用户目录的AppData\Local\Arm\Packs里写入缓存和安装记录。如果当前Windows用户名是中文或者Keil的安装路径里存在中文目录很多版本的Keil在处理路径时表现极不稳定有的解压时能正常创建文件夹但引用时生成了乱码路径有的干脆在路径解析阶段就抛异常只留下一个空文件夹或者半截缓存。这个问题最让人头疼的地方在于Keil的报错完全不会提示路径问题它只会告诉你“安装被中止”或者“未找到有效的设备描述文件”。所以当你已经试了几次都失败、检查了权限和杀软都没有问题的时候一定去检查路径。判断方法看Keil安装路径是否包含中文或空格比如“D:\软件\Keil_v5”这种基本是雷还要看Windows用户名如果用户名是“张三”“王小明”这种多半就是它了。注意Keil默认推荐路径“C:\Keil_v5”和“Arm\PACK”结构本身没有空格但在“C:\Program Files (x86)”下安装则是有空格路径也容易出现权限和解析方面的边角问题我后面会单独讲。2.3 下载文件残缺文件大小和哈希校验才是照妖镜离线.pack文件看起来下载完了实际可能是残缺的。有些人在网页上点下载网速一波动浏览器可能只下了一半就提示完成更多时候是公司局域网、校园网这种有内容过滤策略的网络环境下载过程被中断但HTTP状态没返回明显错误浏览器就给你留了一个同名文件。判断方法很直接看文件大小。不同芯片厂商的pack体积差异较大STM32F1系列完整pack一般在40MB往上GD32F1系列可能在80MB左右如果你看到一个标称几十MB的pack下载下来只有几百KB那基本就是残缺文件。更严谨的做法是算哈希值在pack下载页通常能查到一个SHA256或者MD5校验值用CertUtil或其他校验工具比对一下不一致就直接删掉重下。残缺文件装进Keil会出现两类现象一类是导入时直接提示“Pack file is corrupted or not a valid CMSIS-Pack”另一类是解压到一半突然报缺少某个文件。这两类问题的解法不是重试而是删掉这个文件重新下载完整版本再重新导入。2.4 杀软和系统权限半路打劫这个原因在前面提过但它出现的频率非常高值得单独展开。很多安全软件的实时防护策略是“扫描所有被释放的可执行文件”而pack文件解压出来的FLM算法、DLL组件恰恰属于这类。当Keil在后台解压时杀软可能直接隔离其中一个文件Keil看到的反馈就是某个文件写入失败然后中断安装。处理办法是装pack时临时把杀毒软件的实时防护关掉装完再开回来。Windows自带的Defender在部分版本上也会拦截但相对温和通常只是延迟写入不容易导致最终失败。第三方杀软尤其是带“防火墙”和“病毒查杀”双引擎的那种拦截概率明显更高。另外要注意卸载Keil或者清理pack缓存的时候杀软也可能会拦截删除操作导致卸载不干净再次安装时新的pack和旧文件冲突。所以不管是装还是卸过程中尽量临时关闭实时防护能省去很多绕来绕去的麻烦。2.5 Keil进程残留占用包管理器的隐藏锁Keil跑过一次以后即使关了窗口后台可能还留着UV4进程或者MKDLL进程。这些进程不占用多少内存但有可能锁住ARM/PACK目录下的文件。这时候你再安装pack解压这一步就可能因为文件被占用而失败报错往往是“访问被拒绝”或者“无法写入文件”。遇到这类问题不要急着反复双击先打开任务管理器把UV4.exe、Uv4.exe、以及名字里带“Keil”或“Arm”的进程都结束掉再重新打开Keil导入。我遇到过一次一个pack文件怎么装都是文件占用后来才发现是之前一次在线安装失败Pack Installer进程没有完全退出一直在后台挂着一个锁把这个进程杀掉以后再装一次通过。如果你经常发现Keil进程无法退出留意一下是不是某个插件或者调试器驱动一直循环在后台。平时保存好工程以后再通过任务管理器确认进程清空再执行pack安装这类问题会少很多。2.6 Pack Installer在线下载卡死缓存残留的连锁反应在线安装pack中途下载失败的话Pack Installer会在本地留下一个缓存目录通常位于“C:\Users\用户名\AppData\Local\Arm\Packs”下的.temp或者.web文件夹。下一次安装同一个pack时Keil会把这个残留文件当作已下载内容但内容不完整于是反复出现校验错误甚至卡在“Downloading Pack”界面出不来。处理这个问题的标准动作是关掉Keil进到上面那个目录删除.temp、.web等临时文件夹里的内容然后再重新打开Pack Installer重试。如果是在线下载经常失败的网络环境强烈建议直接跳过在线安装去厂商官网或者Keil的pack下载页面手动下载离线.pack然后用本地导入方式安装成功率会比在线方式高一大截。为了让你更快地锁定问题我把六类典型场景整理成了一张表方便对照失败现场典型提示或表现主要嫌疑处理方向双击.pack无反应窗口闪一下或没反应文件关联、UAC权限改成Keil内部导入导入提示文件损坏Pack file is corrupted下载残缺、杀软误删校验文件大小/哈希、关杀软导入开始即中止未显示详细错误MDK版本太旧查看当前MDK版本并下载匹配pack反复卡在解压中解压进度条不动缓存残留、文件占用删除临时目录、结束Keil进程路径相关失败访问被拒绝、无法写入中文路径、空格目录安装到纯英文路径、换英文账户在线下载卡死Download failed网络环境限制手动下载离线pack再导入3. 一次完整排错过程从报错红叉到装包成功理论说再多不如走一遍实操。这一节我复盘一个典型的pack安装失败案例。当时我用的还是MDK 5.23要给一个旧项目补上STM32F1的支持于是去官网下了最新的STM32F1系列pack版本大概是4.20.8。双击.packKeil窗口闪了一下一点反应也没有。再用管理员身份打开Keil从Pack Installer导入直接提示“Pack file is corrupted or not a valid CMSIS-Pack”。3.1 排查第一步先看文件本身有没有问题我第一反应是下载文件损坏。先看一眼文件大小那个pack大概41MB大小正常不像下载中断。但保险起见我还是算了一遍SHA256跟官网页面的校验值做对比结果一致说明文件本身是完整的问题不在网络下载环节。这一步很重要很多人看到“corrupted”就误以为下载坏了反复重新下载好几遍浪费时间。做过哈希校验之后就可以把网络下载问题从嫌疑清单里排除掉把目光转向Keil自身的解析环节。3.2 排查第二步验证当前MDK版本接着打开Help → About uVision看到MDK-Core版本是5.23。这时候我心里已经有底了因为这个版本的Keil对较新PDSC格式的支持不完善。官网那个pack的Release Notes里其实写得很清楚要求MDK 5.26以上。看一眼版本号就明白了这是一个典型的版本鸿沟Keil太老pack太新Keil解析不了PDSC文件于是给了个模糊的“corrupted”提示。当时我的处理方案不是升级Keil因为那个项目牵涉到很多旧编译器选项升级可能引发一堆不必要的问题。我选择去Keil网站翻历史版本下载了STM32F1 pack的4.10.1版这个版本明确列着支持MDK 5.23及以下。下载完之后发现双击仍然没有反应但这个现象已经不影响判断了因为我已经决定从Keil内部导入。3.3 排查第三步从Pack Installer内部导入打开Keil菜单栏 Project → Manage → Pack Installer在打开的管理器界面里找到导入按钮。不同版本叫法略有差异有的版本在工具栏上直接显示为“Import from local directory”有的则藏在“Packs”菜单下。我点开导入选择刚才下载的4.10.1版本pack这次解压过程正常跑完了进度条走到底Installed列表里出现了STM32F1系列问题成功解决。温和提醒一句遇到pack安装失败尽量避免双击那条路。从我实际经验看从Pack Installer内部导入的成功率比双击高很多因为内部导入完全绕开了文件关联和Shell层的干扰Keil直接用自己的包管理逻辑去解析文件权限提示也更明确。3.4 这一步的复盘三个可复用的排查动作这轮排错看起来简单但背后藏着三个可复用的排查动作。第一个动作是确认文件完整用哈希校验而不是肉眼判断第二个动作是确认版本匹配从Help里看清当前MDK版本再去看pack要求的版本第三个动作是换一种安装通道双击失败就改从Pack Installer导入一连换三次都是同一个结果才说明是深层问题。很多人在这一步卡住是因为跳过了第一步和第二步直接反复双击同一个pack或者不停重下同一个文件。磨刀不误砍柴工先把版本和文件完整性这两件事确认了后面所有操作都有的放矢。4. 安装.pack的正确姿势离线包管理器的完整操作流程这一节写给已经准备跟pack死磕到底的人。既然双击安装动不动就翻车那就索性放弃这条路径统一走“本地导入”通道。只要按这个流程做绝大多数环境问题都能被绕过去。4.1 离线.pack导入的七个步骤下面这套流程我反复用过几十次在MDK 5.23到5.38这几个版本上都验证过。你按顺序操作每一步都别跳过先去官网或Keil官网pack页面下载离线.pack文件存放路径要求全英文比如“D:\downloads\Keil_Packs\”。验证文件完整性。用哈希工具算一下SHA256或者MD5和官方页面显示的值对比。如果页面找不到校验值至少确认文件大小和页面标注一致再继续。临时关闭杀毒软件实时防护。如果是Windows自带Defender可以暂时关闭实时保护如果是第三方杀软也建议在安装期间暂停防护。以管理员身份运行Keil uVision5。右键点击Keil图标选择“以管理员身份运行”这一步能避免UAC权限问题。打开Pack Installer路径是Project → Manage → Pack Installer。点击工具栏或菜单里的“Import from local directory”选中下载好的.pack文件等待安装流程完成。安装过程中Pack Installer底部会有进度条你会看到解压和校验的过程。安装完成后在Pack Installer的Installed选项卡中搜索芯片型号确认设备已出现在列表中。如果找不到先关闭并重新打开Keil让设备数据库刷新一下。这套流程里最容易被忽略的是第2步和第3步。第2步能帮你排除下载残缺这类低级问题第3步能排除杀软拦截这类隐形杀手。跳过这两步后面出问题很难定位。4.2 在线安装Pack Installer的兜底方法如果你的网络环境够稳定在线安装也能用操作更简单打开Pack Installer左侧选中芯片厂商搜索具体型号点Install等进度条走完。但有一个点要特别注意在线安装卡在下载阶段时不要反复点Install。每次失败后在后台缓存里留下的临时文件会越来越多遮遮掩掩地互相干扰。正确的兜底办法是当在线下载第三次还没成功时直接停手去手动下载离线.pack。下载完后不要双击按上面那七个步骤操作。这个组合基本能解决99%的pack安装场景。4.3 导入以后选择正确的PACK家族别只看厂商Logo最后提醒一个容易装错的情况。同一家芯片厂商下面不同系列的pack是分开的。以ST为例STM32F1、STM32F4、STM32H7、STM32L0各有独立packGD32的GD32F1、GD32F3、GD32F4也不一样。你在Pack列表里选的时候一定要明确当前工程用的是什么芯片系列。有个常见场景工程用STM32F103想通过安装新版pack来获得更多器件选项结果去官网下载时随手点了一个STM32F4的pack导入了半天最后Devices列表里找不到F103。这不是安装失败而是选错安装对象。pack安装从来是“精确对应系列”的每个pack里面只包含特定系列的设备描述信息。5. 那些绕不开的兼容和路径问题从根上减少失败路径和版本兼容这两个老问题值得专门拿出一章说透。因为环境搭得不对后续所有工程都会在这个地方反复摔跟头。5.1 Keil安装目录的最佳选择不要装在Program Files里Keil默认安装路径是“C:\Keil_v5”这个路径设计其实是经过考量的没有空格、没有中文、离根目录近。很多人为了方便或者顺手把它装进了“C:\Program Files (x86)\Keil_v5”或者“D:\开发软件\Keil5”这些路径都会慢慢变成麻烦制造机。“Program Files (x86)”路径带空格和系统保护机制pack安装会受到UAC约束经常出现“access denied”类错误中文路径在Keil内部字符集处理上存在历史包袱各种解压和注册动作都可能出现异常。如果已经踩了这个坑别想着通过改权限来解决最实在的办法是卸载Keil重新安装到“C:\Keil_v5”或“D:\Keil_v5”这种纯英文、无空格的目录下。重装后以前安装过的pack需要重新装一遍这个步骤虽然繁琐但能从根本上消除后面一大类问题。5.2 中文Windows用户名的镜像问题Keil的pack安装离不开用户目录下的“%LOCALAPPDATA%\Arm\Packs”这个目录会继承Windows用户名。如果用户名是中文路径就会变成类似“C:\Users\张三\AppData\Local\Arm\Packs”。Keil的大部分组件能处理英文路径但对中文路径的支持并不完善不同版本差异很大。处理方案有两个优先级如果你的Keil还没装先新建一个全英文的Windows管理员账户在那个账户下安装Keil和pack这是最干净的路径。如果Keil已经装好了且整个工程环境迁移成本太高可以尝试把用户目录的路径做一个英文映射或者用系统工具重定向但这类操作风险偏高不熟悉系统机制的人容易把环境弄坏建议谨慎。从实战角度看绝大多数用户遇到中文用户名导致pack安装失败最终都是新建一个英文账户重新搭环境解决的。这个操作不复杂控制面板 → 用户账户 → 添加用户密码可以设一个简单的安装完再切回原账户。虽然以后每次开Keil都得切换账户有点麻烦但稳定压倒一切。5.3 MDK版本和PACK版本的选择策略版本不匹配是pack安装失败的高频根因但很多人误以为只要把Keil升级到最新就没问题了。实际上新pack往往需要新Keil但旧工程不一定会因为你升级了Keil就乖乖编译通过。编译器路径、已安装的CMSIS版本、旧外设库的兼容性都有可能因为升级而改变行为。我的策略是对于正在维护的老项目保持当前MDK版本不变安装pack时选择与当前MDK兼容的历史版本。只有在新项目、或者需要支持最新芯片时才考虑升级MDK。判断pack版本兼容性时去查它的Release Notes里面一般会列出“Minimum MDK-Core Version”或“Supported toolchain”之类的内容。简单说不要让Keil版本和pack版本的差距过大安装前用半分钟核对一次后面能省下半天。这里也顺带说一句经常被问到的事如何同时用Keil开发51单片机和ARM芯片。C51和MDK是两个不同组件可共存于同一个uVision环境。但51单片机的“设备数据库”跟ARM系列的CMSIS-Pack不是一个体系不要试图用安装ARM.pack的方式去添加C51设备。如果Devices列表里找不到STC89C52、AT89C51这些经典51单片机不是pack没装好而是缺少Keil C51组件需要在安装时勾选C51支持然后用数据库方式添加51芯片。6. 安装成功之后别急着写代码先验证这三样pack能装进去只是第一步。如果接下来你兴致勃勃地去新建工程结果发现Device列表里没芯片、编译缺头文件、烧录报错前面的工作就白做了。所以每次装完pack以后我建议花三分钟做一次完整验证确认设备库、CMSIS组件、Flash算法这三样都到位。6.1 在Device下拉菜单里找到你的芯片型号新建工程的流程是Project → New μVision Project在弹出的界面左侧依次展开厂商和系列找到你刚才安装的pack对应的芯片。比如安装的是STM32F1系列的pack展开STMicroelectronics → STM32F1 Series后列表里应该能看到F103各子型号。如果你安装完pack后在这个列表里找不到先关掉Pack Installer退出并重新打开Keil让设备数据库重新加载。如果重新加载还找不到检查pack是否真的进入了Installed列表。打开Pack Installer切到Installed选项卡搜索一下芯片型号对应的pack名。如果搜到说明安装成功只是Keil的设备数据库刷新延迟如果搜不到说明pack并没有被真正登记得回到上面的安装流程重新走一遍。6.2 Flash Programming Algorithm是否自动挂载pack安装正确后在新建工程时选中芯片Keil会自动带着对应的Flash算法。你可以通过Options for Target → Debug → Settings → Flash Download里看到这个配置一般是一个以芯片型号开头的.FLM文件比如STM32F10x系列对应的是“STM32F10x Med-density Flash”这类算法。如果这个区域是空的或者显示“No Algorithm”烧录时会直接报“Flash Download failed - Could not find a suitable flash algorithm”。这种情况通常出现在手动改了工程结构、卸载重装之后pack没装全、或者新老pack冲突导致FLM文件没有被正确覆盖。处理办法先确认当前选中芯片型号和pack里的设备描述完全匹配再去Flash Download区域点击Add手动选择对应的FLM文件。如果Add菜单里也没有说明pack文件确实没装完整。不要试图从别的工程那里复制FLM文件过来根治方法还是回到包管理器里重装一次pack。6.3 CMSIS与启动文件是否完整编译一遍是最快的体检pack装完以后头文件和启动文件是否完整没有办法用肉眼看出最好的方式是直接创建一个空工程跑一次编译。新建工程时在Manage Run-Time Environment窗口里勾选需要的CMSIS组件比如CMSIS → CORE。生成工程后默认会自带启动文件、系统初始化文件。如果编译报错缺“core_cm3.h”“system_stm32f1xx.h”这类头文件大概率是CMSIS Pack没安装或者安装不完整或者是芯片厂商的设备包和ARM.CMSIS包之间的关系没有建立好。以GD32为例它的设备描述依赖ARM.CMSIS这个公共包。如果你只安装了GD32的设备包没有安装ARM.CMSIS新建工程时会报大量头文件缺失。解决办法在Pack Installer里找到ARM → CMSIS这个pack安装一个较新的稳定版本比如5.x然后再重新编译工程。这一步做完可以说你的pack安装环境才算真正稳定下来。后面写代码、编译、烧录再遇到问题就跟pack安装无关了该往工程配置、调试器驱动、烧录引脚等其他方向排查。最后说一个我自己的习惯。我现在拿到任何pack文件第一件事不是双击而是先放到一个纯英文目录看一眼文件大小然后用Pack Installer从本地导入。如果第一次失败我不会去反复双击同一个文件而是先删掉“C:\Users\你的用户名\AppData\Local\Arm\Packs”下的临时文件夹关掉杀软实时监控再以管理员身份重来一次。这套流程看起来琐碎但绝大多数情况下都能解决。Keil的pack安装失败从来不是单一原因但也不是什么玄学挨个排查基本十分钟内能定位。希望这篇能帮你少走点弯路。
返回列表