<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          hex文件、bin文件、axf文件的區(qū)別?

          共 1479字,需瀏覽 3分鐘

           ·

          2021-12-24 02:05

          ????關(guān)注、星標公眾號,直達精彩內(nèi)容

          來源:嵌入式大雜燴 | ZhengN



          在STM32開發(fā)中,經(jīng)常會碰到hex文件、bin文件與axf文件,這些都是可以燒寫到板子里運行的文件。這三個文件有什么區(qū)別呢?在這之前,先來一起回顧一下C語言編譯的過程:

          編譯的過程

          在之前的C語言筆記《C程序的編譯過程》中,有簡單的分析了C程序編譯的幾個過程:


          STM32也是用C語言來開發(fā),也會經(jīng)過類似的編譯過程,只不過我們常常用MDK或者其它IDE來編譯,其編譯過程如下:


          例如,我們的LED程序編譯過程如下:

          在IDE中進行編譯時,我們只需點擊編譯按鈕即可完成這些過程,編譯過程用到的工具(.exe文件)在IDE的安裝目錄下的某個文件夾下,比如我們這里用的MDK的編譯工具路徑:


          一般這些IDE或者工具集的一些編譯工具都放在bin文件夾。再比如我們MinGW工具集(里面包含gcc/g++編譯器,可以編譯在電腦上運行的程序)的編譯工具所在路徑為:

          回歸正題,我們的MDK編譯時就是使用安裝路徑下的這些編譯工具來完成我們的編譯過程。

          究其本質(zhì),我們在cmd命令窗口也是可以通過命令來編譯我們的STM32程序的(前提是配好環(huán)境變量,否則得到編譯工具所在的路徑下進行編譯)。

          但是我們不會這樣干,因為IDE已經(jīng)給我們提供了很大的便利。比如:


          下面看一下我們在cmd窗口下運行armcc命令看會發(fā)生什么:


          我們看到了很多關(guān)于armcc命令的提示說明,有些常用的編譯選項已經(jīng)集成在MDK里供我們選擇,比如:

          可燒錄的文件

          axf文件、hex文件與bin文件都是可以運行在我們的stm32上的,它們都存儲了編譯器根據(jù)源代碼生成的機器碼,根據(jù)應用場合的不同,它們又有所區(qū)別。

          • axf文件:包含調(diào)試信息。
          • hex文件:包含地址信息。
          • bin文件:最直接的代碼映像。

          axf文件是編譯默認生成的文件,不僅包含代碼數(shù)據(jù),而且還包含著調(diào)試信息,在MDK里進行debug調(diào)試用的就是這個文件。

          hex文件在MDK里要勾選如下選項才可以生成:


          hex 文件是一種使用十六進制符號表示的代碼記錄, 記錄了代碼應該存儲到FLASH 的哪個地址,下載器可以根據(jù)這些信息輔助下載。

          bin文件是根據(jù)axf文件生成的,需要在MDK下添加類似如下格式命令來生成對應的bin文件:


          bin文件就是最小的可以運行的文件了,其包含最直接的代碼映像。這三個文件中axf文件最大,hex文件次之,bin文件最小,如:


          關(guān)于它們的區(qū)別這里只是簡單的闡述說明,有時間、有精力、有興趣的朋友可以去分析它們里面的內(nèi)容。

          離線文件的燒錄方法

          hex文件的燒錄,我們可以使用FlyMcu工具通過串口來下載:


          FlyMcu不可以燒bin文件,因為上面說過了bin文件只包含最直接的代碼映像,不包含地址信息,會出現(xiàn)如下錯誤:


          bin文件可以使用STM32CubeProgrammer軟件通過STLINK進行下載:


          以上就是本次的分享,如有錯誤歡迎指出,謝謝!


          聲明:本文素材來源網(wǎng)絡,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我聯(lián)系刪除。

          ???????????????? ?END ?????????????????

          關(guān)注我的微信公眾號,回復“加群”按規(guī)則加入技術(shù)交流群。

          歡迎關(guān)注我的視頻號:

          點擊“閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看。

          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  香蕉啪啪| 免费A∨网站 | 欧美中文网 | 欧美黄片免费播放 | 婷婷性爱|