多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Keil官网下载太慢?国内镜像与本地导入搞定MDK5及STM32芯片包

Keil官网下载太慢?国内镜像与本地导入搞定MDK5及STM32芯片包 打开Keil官网那一刻我就知道又要和网速较劲了。加载MDK下载页面要半天点下去之后每秒几十KB的速度跑到中途直接断掉反复重试一上午连个安装包的影子都没见着。后来还要再装STM32芯片包Pack Installer那个界面盯着看进度条几乎纹丝不动最后干脆报错“下载失败”。我相信很多用MDK5开发STM32的朋友都体验过这种绝望。这篇文章不绕弯子直接说清楚怎么用国内镜像站和本地导入的方式麻利地把MDK5和STM32芯片包搞定。文章里会覆盖几个大家最关心的问题为什么Keil官网下载这么慢、MDK5和芯片包到底是什么、下载前要确认哪些版本信息、有哪些靠谱的国内镜像思路以及从下载到验证的完整实操步骤。不管你是刚接触STM32的学生还是被官网下载折磨到想换集成开发环境的工程师这篇文章应该能帮你把环境搭建这一步走顺。1. 先弄明白Keil下载慢的根源和要下载的东西1.1 为什么Keil官网下载这么慢Keil的下载服务器主要放在境外国内的访问链路很长中间经过的国际出口带宽在高峰时段几乎被挤爆。所以常见的情况是网页能打开但文件下载速度慢得离谱尤其是几十MB甚至上百MB的安装包和芯片包动不动就要下载好几个小时。Pack Installer默认的下载源指向www.keil.com/pack这个地址同样在境外。芯片包动辄几十MB每一次下载都像在抽奖。运气好熬过去运气差下载到90%就断又从头再来。更麻烦的是Pack Installer的下载机制不算友好断点续传能力很弱没有稳定的网络环境几乎没法顺利完成。国内镜像站的价值就是把同一个文件放到境内服务器上。文件内容一模一样但下载链路短了很多速度快几十倍很正常。这不是什么玄学就是服务器位置带来的物理差异。1.2 MDK5和STM32芯片包分别是什么MDK5是Keil公司推出的嵌入式开发环境原名Keil MDK-ARM后来改叫MDK。它包含了编译器、调试器、项目管理器和编辑器。简单说它是你写代码、编译、烧录、调试STM32程序的主战场。STM32芯片包在软件里叫DFP全称Device Family Pack也就是设备家族支持包。以STM32F103为例对应的包名是STM32F1xx_DFP。里面装着芯片的头文件、启动文件、Flash烧录算法、调试描述文件等关键内容。没有这个包MDK不知道你用的是哪颗芯片自然没法帮你生成正确的编译和烧录配置。打个比方MDK5是一套毛坯房芯片包就是房间里需要安装的插座、开关和灯具。毛坯房再漂亮没有电气设备也住不了人。所以装完MDK5之后第一件事就是装对应型号的芯片包。1.3 下载流程与常见翻车点官网下载MDK5安装包的流程是这样的访问Keil官网的下载页面填写邮箱等基本信息然后官网发一封邮件邮件里带下载链接。整个过程本来就繁琐加上服务器远在境外体验就更差了。下载芯片包的流程类似。打开Pack Installer在搜索框输入STM32F1勾选对应版本点击安装。正常的安装流程应该是下载、校验、解压、写入本地Pack目录。但实际使用中卡在下载阶段的情况占了绝大多数。更尴尬的是如果下载的Pack文件不完整Pack Installer还经常提示“文件损坏”或者“校验失败”查来查去也定位不到原因。翻车点总结起来就三个第一下载慢慢到让人怀疑人生第二下载中断导致包文件损坏第三版本不匹配装了新版芯片包但MDK版本太老直接无法识别。理解了这些问题后面的应对方案才会更有针对性。2. 下载前必做的准备工作2.1 确认芯片型号对应的Pack名称不同系列的STM32对应不同的芯片包名字格式都是STM32xx_DFP。下载前一定要搞清楚自己用的芯片属于哪个系列不要乱下载。常见的对应关系如下芯片系列Pack名称适用型号举例STM32F0STM32F0xx_DFPSTM32F030、F051STM32F1STM32F1xx_DFPSTM32F103C8T6、F103ZET6STM32F2STM32F2xx_DFPSTM32F205、F207STM32F3STM32F3xx_DFPSTM32F303、F334STM32F4STM32F4xx_DFPSTM32F407、F411、F429STM32F7STM32F7xx_DFPSTM32F746、F767STM32G0STM32G0xx_DFPSTM32G030、G071STM32G4STM32G4xx_DFPSTM32G431、G474STM32H7STM32H7xx_DFPSTM32H743、H750STM32L4STM32L4xx_DFPSTM32L431、L476STM32WBSTM32WBxx_DFPSTM32WB55注意STM32系列还在持续扩展新芯片如果列表里没找到去官网或者Pack Installer搜索框里输入型号关键词即可。关键是认准_DFP后缀这是Device Family Pack的固定命名规则。2.2 版本匹配不要想当然芯片包有版本号MDK5本身也有版本号。很多新人下载了最新版的STM32F1xx_DFP结果MDK是早期版本装完之后芯片列表里一片空白或者编译时报一堆奇奇怪怪的错误。MDK5.36之前的版本对较新的DFP支持并不好。我个人的经验是如果用MDK 5.36配合STM32F1xx_DFP 2.3.0或2.4.0跑F103系列非常稳。如果你的芯片是F4系列STM32F4xx_DFP 2.16.0附近的版本也很成熟。新版DFP确实更晚但新版本需要新MDK支持没必要盲目追新。查看当前MDK版本的方法很简单打开uVision5点击菜单栏Help - About uVision弹窗里能看到完整的版本号。如果发现MDK版本太老先升级MDK再去装新的芯片包。大部分“装不上包”的报错本质上都是版本不匹配。2.3 准备工具与安全校验下载过程中我建议准备一个支持断点续传的下载工具比如IDM或者迅雷。它们对HTTP链接的处理比浏览器自带下载更稳定中途断了也能续传。注意这里说的是下载工具不是那些乱七八糟的“绿色版”或者“注册机”大家要分清楚。从第三方渠道下载MDK安装包或芯片包之后最好校验一下文件哈希值。Windows系统自带certutil命令在命令行里输入certutil -hashfile 文件路径 MD5就能算出文件的MD5值。和官方公布的值比对一下一致才放心安装。虽然麻烦一点但能有效防止下载到被篡改的文件。文件扩展名也要看清。芯片包的标准格式是.packMDK安装包的标准格式是.exe。如果看到.rar、.zip夹杂着应用程序就要提高警惕先查数字签名。3. MDK5安装包的国内下载方案3.1 官方通道还是首选如果官网下载速度勉强能接受我还是建议优先走官方渠道。进入Keil官网的MDK下载页面填写邮箱、姓名、公司等信息提交后官网会发送一个下载链接到邮箱。这个链接通常有一定有效期过期需要重新申请。官方渠道的好处是文件完整、安全可控不会有篡改风险。缺点就是慢但至少稳定。如果你有耐心挂一个下载工具慢慢拖也能成功。下载完成后记得看安装包的数字签名签名者应该是ARM或Keil相关主体右键安装包属性里就能看到。3.2 使用国内软件镜像和嵌入式社区资源官网实在下不动的时候可以借助国内嵌入式社区的资料库。很多硬件厂商和培训机构都会在他们的资料中心提供MDK5安装包的国内下载地址比如正点原子、野火电子这些在STM32圈子里非常活跃的团队。他们提供的MDK安装包大多是从官方搬运到国内网盘的下载速度比官网好很多。具体操作方式很简单打开你常用的搜索引擎搜“MDK5 下载 正点原子资料”或者“MDK5 野火资料”很容易找到网盘链接或社区资源帖。进入下载页面后优先选.exe原始安装包不要选那些打包了其他软件的“全家桶”版本。下载后先校验数字签名确认没问题再双击安装。安装MDK5时还有一些小细节。安装路径不要带中文不要放在带空格的系统目录里否则后续编译器偶发找不到工具链排查起来非常费劲。右键选择“以管理员身份运行”默认组件全部勾选一路下一步就行了。安装完成后桌面会出现uVision5图标暂时不需要打开后面还有芯片包要处理。3.3 安装完成后的基础设置打开uVision5第一次会弹出Pack Installer窗口还会提示需要注册。如果是评估版直接点“OK”继续使用如果是正版License通过License Management把授权文件导入即可。评估版有代码大小限制但用来前期熟悉环境完全够用。另外我建议在Project - Manage - Pack Installer里先看一眼默认Pack目录。默认路径一般是C:\Keil_v5\ARM\PACK如果你之前在其他磁盘装过旧版Keil这里路径可能不对需要手动改成实际安装路径否则后续导入的芯片包不会被识别。4. 用国内镜像思路搞定STM32芯片包三种方法4.1 方法一从Gitee镜像仓库下载.pack后本地导入这是我最推荐的办法也是网上大量开发者实践下来最稳的路子。Gitee是国内代码托管平台服务器在国内下载Git仓库附件或Releases文件的速度非常快。很多人把官方.pack文件原封不动地放在Gitee仓库里相当于一个民间镜像。具体步骤打开Gitee网站在搜索框输入STM32F1xx_DFP或者Keil Pack回车搜索。从搜索结果里找一个文件较完整、更新日期比较近的仓库点进去看Releases或文件列表。找到.pack后缀的文件点击下载。如果仓库里没有Releases就点“克隆/下载”按钮下载整个仓库再把里面的.pack文件拿出来。把.pack文件保存到一个无中文的路径下例如D:\keil_pack不要放在桌面或下载文件夹里避免后续权限问题。打开uVision5点击工具栏上的Pack Installer图标进入Pack管理器。在Pack Installer窗口的左上角找到File菜单选择Import from Local Directory。弹出文件选择框后定位到刚才保存的.pack文件选中并打开。稍等一会儿Pack Installer会解析并安装这个包。看到左侧Devices列表里出现STMicroelectronics - STM32F1 Series说明导入成功。之所以推荐这个方法是因为它完全不依赖Keil官网的下载速度。Gitee的下载速度通常在几MB/s到几十MB/s之间比官网几十KB/s快了两个数量级。而且导入过程是本地解压不存在下载中断导致包损坏的问题。4.2 方法二修改Pack Installer的下载源地址如果你不喜欢手动下载也可以尝试直接修改Pack Installer的下载源。Pack Installer本身支持自定义下载源URL原理跟Linux切换国内软件源是一样的只是很多人不知道这个入口。在Pack Installer窗口的右上角或右下角有一个Settings或Configure按钮不同MDK版本入口位置略有差异。点开之后可以看到一个“Pack Source URL”的输入框默认值大概是https://www.keil.com/pack。把默认地址替换成你找到的国内镜像地址点击保存然后重新点击Check for Updates。如果能连上镜像源Pack列表会正常加载速度会明显提升。如果加载不出来说明这个镜像地址不可用改回默认地址就行。我需要提醒一句目前没有哪个纯公益镜像站能保证长期维护Keil Pack目录网上流传的镜像地址时不时会失效。所以用这个方法之前最好先去搜索引擎确认当前可用地址或者用Gitee搜索“Keil镜像”看看有没有更新的地址。这个方法最接近“切换国内镜像站”的本意但可遇不可求。4.3 方法三官方直链加多线程下载工具兜底如果上面两个方法都行不通还有最后一个兜底方案直接拿到官方Pack文件直链用下载工具多线程下载。具体怎么拿到直链呢在浏览器里打开https://www.keil.com/dd2/pack找到对应芯片包页面一般会有下载按钮。右键复制下载链接通常是一个指向.pack文件的完整URL。把这个URL粘贴到IDM或迅雷里开启多线程下载。多线程下载的好处是即使服务器发送速度不高也能通过多个连接把总速度拉上来而且断点续传功能比Pack Installer强很多。下载完成的.pack文件同样通过Import from Local Directory导入和第一种方法后半段完全一样。要注意的是官方直链偶尔会自动跳转到登录页或者生成一次性临时链接过几分钟就失效。所以复制链接后尽快开始下载。这个方案谈不上镜像站但胜在简单直接作为最后的备选。5. 完整实操从零装MDK5并配置STM32F103芯片包5.1 实操环境与目标为了照顾刚入坑的朋友我走一遍完整的实操流程。目标芯片是STM32F103C8T6这块芯片在小系统板和很多入门项目里非常常见。实操环境是Windows 11MDK版本5.36芯片包用STM32F1xx_DFP。准备材料很简单一台能上网的Windows电脑、一个MDK5安装包、一个STM32F1xx_DFP.pack文件。MDK安装包可以从官方渠道下载如果你急着用从国内社区资料中心弄一个也行芯片包建议直接走Gitee下载。5.2 安装过程记录先把MDK5安装包放到一个干净目录比如D:\download双击运行安装程序。安装向导里需要选择安装组件全部保持默认即可。安装到路径选择时默认是C:\Keil_v5如果C盘空间紧张可以改成其他盘但路径里千万不要有中文也不要包含空格。安装完成之后先别急着打开uVision5先确认两个东西第一桌面是否有uVision5图标第二安装目录下是否有ARM\PACK文件夹。没有PACK文件夹也不奇怪第一次启动uVision5或Pack Installer时通常会自动创建。接下来运行uVision5第一次启动时Pack Installer会自动弹出。如果没有弹出点击工具栏上的“魔方”图标打开它。在Pack Installer的默认界面里左侧是Packs列表右侧有Devices、Packs等标签页。我们不看这个列表直接走本地导入的路线。在Pack Installer窗口上方菜单栏找到File点击下拉菜单里的Import from Local Directory。在弹出的对话框里定位到你保存的STM32F1xx_DFP_2.3.0.pack文件选中并点击确定。导入过程一般持续几十秒完成后左侧列表会刷新。导入完成后在Pack Installer的Devices标签页左侧设备树里展开STMicroelectronics看到STM32F1 Series就能确定芯片包已经成功安装。如果没看到尝试关闭Pack Installer再重新打开一次。5.3 验证芯片包是否生效芯片包装完接下来验证一下到底能不能用。在uVision5里点击菜单Project - New uVision Project输入项目名称并选择保存路径后会弹出一个“Select Device for Target”的窗口。在设备树左侧找到STMicroelectronics - STM32F1 Series - STM32F103右侧应该出现STM32F103C8和STM32F103CB等具体型号。选中STM32F103C8点击OK右侧Management窗口会弹出RTE组件选择界面。这里可以看到CMSIS、Device、Startup等组件包。这一步能正常显示说明芯片包已经接管了工程配置。最后测试编译是否正常。在uVision5里新建一个空的main.c文件写一个空main函数点击编译按钮。如果编译器正常输出且没有报“Target not created”或“device not found”这类错误说明MDK5和STM32芯片包的组合已经可以正常工作了。6. 常见问题与排查技巧实录6.1 问题速查表整理了一下我踩过以及身边朋友问得比较多的问题做成一张速查表方便大家对照排查现象可能原因解决方法Pack Installer连接不上官网网络问题官网服务器不稳定不要干等直接改用本地导入.pack文件下载到99%失败提示校验错误下载中断导致包不完整删除旧文件从Gitee重新下载后用工具下载导入.pack提示Invalid Pack文件损坏或MDK版本过旧校验文件哈希升级MDK到5.36及以上设备树里找不到STM32系列芯片包没装成功或Pack路径不对检查ARM/PACK目录确认导入后Pack列表是否刷新编译提示cannot open file .\RTE...RTE组件缺失在Manage Run-Time Environment窗口勾选CMSIS、Device组件烧录提示Flash Download failed没有选择对应的Flash算法在Options for Target - Debug - Flash Download中勾选正确的算法安装MDK时提示路径非法路径含中文或空格换到纯英文无空格路径重装6.2 本地导入后仍提示缺包有时候导入了DFP包但新建工程时还是会提示缺组件。这有可能是缺少了基础依赖包。MDK5的芯片包并不是孤立的它可能依赖CMSIS包、Device包、以及对应的Startup文件。这些组件通常包含在DFP包内部但在某些版本下需要你额外安装CMSIS包。解决办法是在Pack Installer里搜索CMSIS找到对应的ARM.CMSIS包同样通过本地导入或者自动安装的方式装好。装完之后再回到RTE组件面板之前缺失的组件大概率就补上了。另外有些开发板型号比较特殊比如STM32F103C8T6这种小封装芯片它其实在DFP包里是有的但如果你在下拉列表里没看到可以把设备树折叠再展开或者直接搜索STM32F103C8搜索不到再检查Pack是否真的装上了。6.3 下载安全方面的提醒虽然下载封装包本身没有太大风险但还是要提醒一句不要从来路不明的网站下载“绿色版MDK”或者“注册机”之类的东西。经常有读者反馈装了这类东西之后电脑变卡、后台跑挖矿程序甚至被植入木马。MDK本身有评估版用来学习已经完全够用没必要为了一点破解功能冒这么大的安全风险。从第三方渠道下载MDK安装包或芯片包也尽量选择大家熟悉的社区和厂商比如正点原子、野火、ST官方中文社区下载后看数字签名和文件大小是否合理。如果文件后缀是.exe但体积只有几MB还要你关闭杀毒软件才能运行这种直接删掉不要留恋。6.4 芯片包路径异常导致找不到包还有一个容易踩的坑就是Pack路径不对。比如你电脑上曾经装过旧版Keil4注册表里残留了Pack路径信息新装的MDK5可能会读取到错误路径导致已经导入的Pack不生效。遇到这种情况打开Pack Installer点击Settings或Configure在Pack目录设置里手动改成当前MDK5的安装路径例如C:\Keil_v5\ARM\PACK然后重启uVision5基本就能解决。这个路径最好直接复制系统默认的不要自己新建一个奇怪的文件夹免得权限有问题。最后再多说一句我自己的经验是Keil下载这件事输在了“死磕”两个字上。很多人不敢用镜像和本地导入总觉得不官方就不安全。实际上Gitee上的.pack文件是原样搬运的校验哈希没问题就能放心用。换个思路问题一下就解决了。如果你手头正好有一台刚装完系统的电脑或者你的同事朋友还在官网上一遍遍刷新下载把这篇实操步骤丢过去应该能省下不少时间。
返回列表