DAPLink源码生成Keil工程并编译成功——笔记


本文介绍使用DAP源码生产Keil工程的步骤以及遇到的坑。

一、前期准备工作

以下1~4为步骤:

  1. 安装Python 3 (https://www.python.org/downloads/),并添加至路径 PATH,此处忘截图了,总之看见pip、all user、add to PATH之类的就勾选。(网上也有些帖子说暂时不支持Python 3要用Python 2.7的,本人实测Python 3也可以,可能是以前不行的现在可以了)

  2. 安装 Git (https://git-scm.com/downloads),添加至路径 PATH(安装第三步 选项里推荐使用Notepad++作为默认编辑器,没有Notepad++需要先安装好,剩下的就一路默认即可)安装后会自动添加好路径D:\Git\bin\ 和D:\Git\cmd
    请添加图片描述

  3. 安装 Keil MDK (https://developer.arm.com/tools-and-software/embedded/keil-mdk),安装与License的方法网上一大堆,这里就不说明了

  4. 用命令行安装 virtualenv (最好用管理员权限打开cmd),输入 pip install virtualenv

    请添加图片描述

    如果提示pip需要升级什么的就按提示继续输入命令升级pip,一般不会有什么大问题

二、初始化安装

  1. 方法一:从Github上下载DAP源码 (https://github.com/mbedmicro/DAPLink),下载后的是名为DAPLink-main.zip的压缩包,需要解压。

    方法二:也可先新建个文件夹(命名为英文,如NEW),对着它右键选Git Bash Here,就会打开Git Bash的命令窗口,

请添加图片描述
请添加图片描述
输入
$ git clone https://github.com/mbedmicro/DAPLink
clone后的文件夹叫DAPLink ,无需解压(速度慢的话推荐第一种,反正都是一样的)

  1. clone完后把Git Bash根目录切换到源码的根目录。
    上述方法一的根目录为DAPLink-main,方法二的根目录为DAPLink,即对着这个文件夹右键Git Bash Here(关闭原来的Git Bash命令窗口),或者原来的窗口输入$ cd DAPLink

    请添加图片描述

  2. 输入$ pip install virtualenv 安装虚拟环境

    请添加图片描述

  3. 输入$ virtualenv venv 进入虚拟环境,此时DAPlink文件下会出现venv文件夹

请添加图片描述

请添加图片描述

三、启动虚拟环境

  1. 输入:

    $ venv/Scripts/activate (For Linux)
    $ venv/Scripts/activate.bat (For Windows)
    如果venv/Scripts/activate.bat不行就按照图片的提示前面加个source ,或者这个不需要命令行执行,直接在DAPlink目录下venv—Scripts文件夹里找到activate.bat,右键管理员打开即可

请添加图片描述
请添加图片描述

  1. 输入$ pip install -r requirements.txt(用于获取很多支持包,这步很关键,时长取决于你的网络,如果网络不好可能会下载不了,只要命令行里有显示Error或Warning之类的一律出问题)
    请添加图片描述

最后的显示是Successfully installed xxxxxxxxx 才是完全安装成功,出现Error或Warning之类需要重新执行$ pip install -r requirements.txt

在这里插入图片描述

四、生成Keil工程文件

  1. 输入 $ progen generate -t uvision 一步生成,
    在这里插入图片描述

  2. 如果这一步显示 bash: progen: command not found 之类的 均是上一步没弄好,可以重复执行上一步
    $ pip install -r requirements.txt直至完全获取支持包

  3. 此使可以关闭Git bash了(其实还不行,还有一个步骤,详见下文 坑三…),进入到文件夹里面,会发现多出个文件夹projectfiles,即刚刚生成的Keil工程文件,里面有116个工程文件,找到对应的芯片型号即可。

    在这里插入图片描述

    如常用的STM系列芯片:
    在这里插入图片描述

    以 _if 结尾的工程是对应工程的应用程序;_bl 结尾的是对应工程的Bootloader应用程序,以STM32F103C8为例,首先烧写bootloader,即stm32f103xb_bl工程编译出来的hex文件,然后再烧写stm32f103xb_if编译出来的hex文件即完成一个DAPLink制作。

五、编译工程的遇到坑

坑一:Arm v5编译器

  1. 用Keil打开,界面如下:
    在这里插入图片描述

    编译,确保有相应的芯片支持包(也称固件包),如果出现如下则是缺少Arm compiler version 5编译器,

    Rebuild started: Project: stm32f103xb_if
    *** Target 'stm32f103xb_if' uses ARM-Compiler 'Default Compiler Version 5' which is not available.
    *** Please review the installed ARM Compiler Versions:
       'Manage Project Items - Folders/Extensions' to manage ARM Compiler Versions.
       'Options for Target - Target' to select an ARM Compiler Version for the target.
    *** Rebuild aborted.
    Build Time Elapsed:  00:00:00
    

    目前最新下载的Keil版本都是v6的编译器了,相关的v5编译器安装网上也有很多帖子,好多都指向官网说在官网下载,但是本人花了十几首歌的时间浏览查找注册收验证码登录… 才发现Keil官网上已经没得下载了(这是个大坑!) 放弃官网寻找后才发现个帖子有说明v5编译器的文件夹地方,在以前的版本里安装目录下Keil_v5—ARM—ARMCC文件夹,

    在这里插入图片描述

    最新版本已经没有ARMCC这个文件夹了,所以可以用以前的版本copy过来放到ARM文件夹目录下,此处本人共享一波ARMCC文件夹出来:

    链接:https://pan.baidu.com/s/1gYGGfa1w7sSQ_GWs_Bp6KA
    提取码:ku9q
    如果需要将自己的ARMCC文件夹打包copy给别人,建议用7z格式压缩,压缩前428M,压缩后78.7M(zip)、17.8M(7z) (7z YYDS!)

  2. 此处简略说明安装过程:打开Keil点击魔术棒旁边红绿黄三个小方块的东西(Manage Project Items—Floders/Extensions—Use ARM Compiler处点击右边三个小点点,把ARMCC文件夹添加进去即可(或搜Arm compiler version 5安装,会有很多帖子有很详尽的教程)
    在这里插入图片描述

  3. Arm compiler version 5 安装完后打开Keil—魔术棒—Target—Code Generation会出现Use default compirler version 5,并选择它(没装ARMCC时只有Use default compirler version 6) ,OK即可用v5来编译

    在这里插入图片描述

坑二:Git的环境变量(或许该怪windows?)

  1. 然而继续编译会出现新的问题,如下:

    'git' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    #> Getting git description
    #> ERROR: Failed to get git description, do you have git.exe in your PATH environment variable?
    ".\build\stm32f103xb_if.axf" - 1 Error(s), 0 Warning(s).
    Target not created.
    

    这是因为 git 的环境变量未配置好,也有一个方法检测git是否正常运行,Win+R 输入cmd打开命令行,输入git,正常的话是可以显示git相关信息的,但本人的显示 “git’ 不是内部或外部命令,也不是可运行的程序或批处理文件“ 所以需要添加git的PATH路径。这一部分本人折腾了很久,网上找了很多添加git路径的帖子,有些是重复的,有些又不一样,在这里我整合了需要添加的路径(不一定都需要添加,但都加上又没什么影响):
    在这里插入图片描述

    注意安装路径不同的话要做修改。

  2. 至于为什么本人在添加PATH部分卡这么久,全怪Window神奇的bug(或者不是bug,只是我还不了解为什么,有了解情况的可以评论区一波),添加路径有两种方法,一种新建后直接在空白行输入,
    在这里插入图片描述

    还有一种是点击编辑文本
    在这里插入图片描述

    弹出提示点击确认即如下图所示,每一个PATH中间都由英文符号 ; 分号隔开,在这里插入图片描述
    在这里插入图片描述

  3. 然而我用了第一种方法,直接新建空白处填写路径,显示效果如下,却怎么都不行,cmd永远还是显示 “git’ 不是内部或外部命令,也不是可运行的程序或批处理文件。“

    在这里插入图片描述

    人都快崩溃时候无意点了下”编辑文档“,终于破案,
    在这里插入图片描述

    多了一对引号和分号,删掉之后再次cmd输入git ,终于大功告成!
    在这里插入图片描述

    但为什么会出现上述这样的问题本人也不知道,打开编译页面显示的跟未修改前的还是一样,根本看不出会对一双引号和分号
    在这里插入图片描述

    还是建议添加修改PATH用方法二吧,比较稳妥。

坑三:未关闭虚拟环境脚本

  1. cmd输入git也可以了,又开始Keil编译,一点编译,0.5秒都不到就听到 滴灵~ 一声编译完成,瞬间崩溃。一看问题,还是显示 ” ‘git’ 不是内部或外部命令“ …更加崩溃!接下来就是更加疯狂地google,

  2. 终于找到一篇帖子分享DAPLink的源码生成步骤有一处不一样,TA的最后一步需要关闭虚拟环境脚本 deactivate,在上述启动虚拟环境第一步就把虚拟环境脚本开启了,但是大部分的帖子以及官方的DEVELOPERS-GUIDE(在DAPLink目录下的docs里,包括了DAPLink的全部资料文档)均没有提及需要关闭(或许是我看漏)

  3. 已经是最后一根稻草了立马就试了下,Git bash里$venv/Scripts/deactivate.bat 或直接管理员打开venv—Scripts—deactivate.bat,再重开Keil编译,终于,大功告成,编译正常通过!

    在这里插入图片描述

  4. 至于为什么有的帖子需要关闭有的帖子又没写关闭就不知道了,知情的热心网友可以评论区一波。


补充–10.13

  1. 补充说明第三章启动虚拟环境中 如果用$ venv/Scripts/activate.bat没有反应的话就改为 $ source venv/Scripts/activate注意后面不带.bat的,成功进入虚拟环境是会显示(venv)的。在这里插入图片描述
  2. 网上也有帖子说必须要用DAPLink\tools里的launch_uvision.bat来启动(官方文档的最后一行也有提及),在这里插入图片描述
    但本人亲测好像直接工程打开也是可以的,并且后来又发现并不一定要退出虚拟环境deactivate后才能编译,总之有点迷,反正遇到问题了就都试试。
    在这里插入图片描述
  3. 关于launch_uvision.bat的启动需要修改Keil路径,如图片选中地方所示在这里插入图片描述
  4. 获取方式似乎也有不同的地方,本人亲测以上方法如果是Github上直接下下来解压的无论如何都不会编译通过,用git clone的均可以编译并且没有那么多奇奇怪怪的问题,git clone后$cd DAPLink 跳转到DAPLink的根目录,这时会出现(main)的字样,而如果使用压缩包解压再cd进DAPLink根目录下是没有这个(main)的,因此推荐使用git clone来获取DAPLink源码!!!在这里插入图片描述所以以上的截图都是错误的,正常的应该从cd DAPLink 命令后都会带有(main)
  5. 这里我汇总一下全部使用的git bash 命令:
$ git clone https://github.com/mbedmicro/DAPLink   //clone整个工程过来
$ cd DAPLink                                       //这个步骤会出现main
$ pip install virtualenv                           //pip安装虚拟环境     
$ virtualenv venv                                  //pip进入虚拟环境 
$ source venv/Scripts/activate                     //使能虚拟环境     
$ pip install -r requirements.txt                  //安装支持包
$ progen generate -t uvision                       //生成全部Keil工程文件
//--------------------------------------------------------//
//如果不需要生成全部一百多个工程文件,就只挑需要的来生成即可,以STM32F103xb为例:
$ progen generate -p stm32f103xb_bl -t uvision     //只生成stm32f103xb_bl工程
$ progen generate -p stm32f103xb_stm32f103rb_if -t uvision   //只生成stm32f103xb_if工程
//--------------------------------------------------------//
$ venv/Scripts/deactivate.bat					   //取消虚拟环境,此步不一定需要

  1. 如果遇到更多的情况可以参考官方DAPLink的Issues部分,有很多网友也提出了与本文类似的问题:https://github.com/ARMmbed/DAPLink/issues

结语

分享这篇文章出来旨在帮助坑友们排雷,节省十几首歌的时间,并且由于本人认知有限,本文的方法仅供参考,并不一定适用于任何情况。感谢DAPLink官方如此优秀的开源!

您好!对于Keil的版本问题,通常出现无法编译老版本生成工程的情况,可能是由于不同版本之间的兼容性问题导致的。为了解决这个问题,您可以尝试以下几个步骤: 1. 更新Keil版本:首先,尝试使用最新版本的Keil进行编译。新版本通常会修复旧版本存在的问题,并提供更好的兼容性。 2. 重新导入工程:如果更新Keil版本后仍然无法编译,请尝试重新导入工程。在Keil中,选择“Project”菜单,然后选择“Open Project”。在弹出的对话框中,选择您要导入的工程文件,然后点击“Open”按钮。 3. 重新配置工程设置:如果重新导入工程后仍然无法编译,请检查工程设置是否正确。在Keil中,选择“Project”菜单,然后选择“Options for Target”。在弹出的对话框中,确保工程设置正确,并且与您的目标硬件编译器版本兼容。 4. 检查编译器选项:如果以上步骤都没有解决问题,请检查编译器选项是否正确设置。在Keil中,选择“Project”菜单,然后选择“Options for Target”。在弹出的对话框中,选择“C/C++”选项卡,并确保编译器选项正确设置,并与您的目标硬件编译器版本兼容。 如果您仍然遇到问题,建议您参考Keil的官方文档或向Keil的技术支持团队寻求帮助,他们将能够更好地帮助您解决版本兼容性问题。希望这些步骤能对您有所帮助!如果还有其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值