keil文件转为bin文件的方式
因为之前就写了一个bootloader程序基础版成功了,后面没管它了。但最近需要升级bootloader然后把之前的工程拿出来,先试用的时候就出问题了。就想着整个过程还是需要作记录以防自己忘记
失误一——串口没有显示
因为上个工程串口有点问题,不知道为啥试用原来的bootloader程序时连主菜单都没显示出来。觉得不应该后面使用bootloader教程中经常提到的SecureCRT。串口的主菜单页面显示出来了,然后又回到sscom软件发现也能用的。
出现这种情况可能是之前使用的终端仿真软件与串口之间存在兼容性问题。测试其他终端仿真软件:如果问题仅限于某个终端仿真软件,使用其他软件来验证是否存在与该软件相关的兼容性问题。所以这种情况的结果大概率就是这个问题
失误二——keil转bin文件的方法与理解这个过程(只是对于应用app设置)
之前是按照大部分CSDN中的教程来进行配置的,有好几种配置方式,试过之后对于我来说一下的方式更适合我一些。一些操作步骤网上都有,主要针对我配置过程中比较困惑的地址方面进行详细解释
配置过程主要分为三部分,实例路径如下:
D:\GD32\keil533\keil core\ARM\ARMCLANG\bin\fromelf.exe --bin --output .\save_newbin\newtest.bin .\Objects\test.axf
第一部分:
formelf.exe是Keil自带的格式工具软件,首先需要找到它的路径,一般在你安装keil的文件夹中都能找到,对应的是这一部分
D:\GD32\keil533\keil core\ARM\ARMCLANG\bin\fromelf.exe
一下固定格式(含有空格,怕错可以考虑直接复制过去)
输出bin文件的命令语句:
--bin
输出bin文件的命令语句
--output
第二部分:
输出bin文件地址
首先需要空一格
其次:
.\save_newbin
这个用于存放输出bin文件的文件夹,是相对路径.\表示在工程文件下,举例来说你创建了一个叫demo的keil工程save_newbin就是你打开damo文件后里面创建的一个文件
\newtest.bin
表示你在save_newbin文件下生成名叫newtest.bin的二进制输出文件,bootlodaer下载的文件就是这个。
第三部分:
也是首先需要空一格
.\Objects\test.axf
文件路径的配置过程与第二部一致
对于这一步,我出错了。因为之前写了一个简单的串口打印,下载实现。后面再试用的时候想要验证对不对于是改了一些输出值,结果发现还是原来那个,就很困惑。
于是把之前生成的文件删除了重新配置,结果发现是自己对axf输入文件理解不透的原因
首先编译后产生的axf文件是由连接器产生可执行文件(ELF文件格式),该格式文件包含大量调试信息。它通常包含了应用程序代码、数据和符号信息等。
在使用Bootloader下载应用程序时,将AXF文件转换成BIN文件可以优化存储空间,并使得应用程序更适合被Bootloader加载和执行。
因此整个过程的对象是指定的AXF文件转换成对应的BIN文件,
我的问题在于,axf文件位置配置和指定生成文件中的错误
最初在这里,我是又重新配置了axf文件。但是我路径没改变,还是原来axf文件的路径,所以导致了我bin文件确实是新生成的,但是不是对应的新axf文件。
发现这个问题主要是因为我想重新配置整个过程找原因,但是不好找到axf文件,于是去工程下搜索发现两个axf文件。
所以最后一步的路径一定要和上图的axf文件的配置对应,才能得到你更新之后的bin文件