在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Keil生成bin、匯編、C與匯編混合文件?

Q4MP_gh_c472c21 ? 來源:最后一個(gè)bug ? 作者:bug君 ? 2021-03-09 13:59 ? 次閱讀

1、話題引入

在使用Keil集成開發(fā)環(huán)境中大伙使用頻率高的文件大概就是.hex吧,如果考慮內(nèi)存布局等會(huì)使用到.map文件,如果遇到了疑難bug還會(huì)在仿真過程中看一看匯編窗口欄。

然而bin文件作為嵌入式最為直接的固件,同樣也是我們非常需要獲得的文件,比如進(jìn)行遠(yuǎn)程升級(jí)等等,一方面可以直接通過其他hex轉(zhuǎn)bin工具轉(zhuǎn)化,另一方面通過集成開發(fā)環(huán)境自帶的功能進(jìn)行轉(zhuǎn)化即可。

同樣有時(shí)候我們不想通過debug狀態(tài)下的匯編欄進(jìn)行匯編查看,而是想直接分析每個(gè)源文件編譯所生成的匯編文件來定位問題和優(yōu)化性能,集成開發(fā)環(huán)境能夠有生成匯編文件的功能就再方便不過了。

2、生成bin文件

1、formelf.exe介紹

fromelf.exe即keil下的一個(gè)處理elf文件的工具,elf文件英文名為Executable and Linking Format ,該文件包括符號(hào)表,調(diào)試信息,匯編等等,所以通過使用fromelf.exe可以輸出較多信息文件,比如hex、bin、asm等。

對(duì)于此工具詳細(xì)的說明文件可以參考:using_the_fromelf_utility.pdf

該文檔網(wǎng)上很容易搜索到,這里就不板書了。

如果你想省點(diǎn)事,可以直接使用cmd輸出formelf.exe的幫助信息,過程如下。

2、formelf.exe詳細(xì)說明

1、首先在windows運(yùn)行欄中找到cmd命令輸入。

2、輸入命令行.fromelf.exe --help

bug菌對(duì)上面的輸出簡單的注釋了下。

ARM image conversion utilityfromelf [options] input_file

Options: --help display this help screen //【顯示幫助信息】 --vsn display version information//【顯示版本信息】 --output file the output file. (defaults to stdout for -text format)//【輸出文件。(-text格式默認(rèn)為stdout)】 8 --nodebug do not put debug areas in the output image//【不在輸出映像中放置調(diào)試域】 --nolinkview do not put sections in the output image//【不在輸出映像中放置段信息】

Binary Output Formats: --bin Plain Binary//【bin文件】 --m32 Motorola 32 bit Hex//【motol格式的hex文件】 --i32 Intel 32 bit Hex//【Intel格式的hex文件】 --vhx Byte Oriented Hex format//【面向字節(jié)的hex格式】

--base addr Optionally set base address for m32,i32

Output Formats Requiring Debug Information --fieldoffsets Assembly Language Description of Structures/Classes --expandarrays Arrays inside and outside structures are expanded

Other Output Formats: --elf ELF --text Text Information

Flags for Text Information -v verbose -a print data addresses (For images built with debug)//【打印數(shù)據(jù)地址信息】 -c disassemble code//【輸出匯編代碼】 -d print contents of data section//【打印數(shù)據(jù)域內(nèi)容】 -e print exception tables//【打印異常表】 -g print debug tables//【打印調(diào)試表】 -r print relocation information//【打印重定位信息】35 -s print symbol table//【打印符號(hào)表】 -t print string table//【打印字符串表】 -y print dynamic segment contents//【打印動(dòng)態(tài)段內(nèi)容】 -z print code and data size information//【打印代碼與數(shù)據(jù)大小信息】

輸出bin和匯編

在keil中進(jìn)行如下配置 ,表示在工程編譯以后所執(zhí)行的命令行。

命令行如下,方便大伙copy:

fromelf --text -c -o “$L@L.asm” “#L”

fromelf --bin -o “$L@L.bin” “#L”

確定配置好以后重新編譯,最終編譯器輸出如下信息。

從輸出信息來可以了解到bin文件和asm文件均由.axf文件通過fromelf工具轉(zhuǎn)化而來,相信轉(zhuǎn)化命令的通配符大家也可以理解了,輸出結(jié)果如下:

這樣看來.axf文件所包含的信息非常之多,其全稱為:Arm executable File,其實(shí).axf文件與gcc中的elf文件是類似的,Keil默認(rèn)生成.axf文件。

如果在Keil中沒有勾選hex文件的生成,那么就用.axf文件來進(jìn)行燒錄。

而如果勾選了Hex文件生成,其實(shí)就是Keil通過調(diào)用fromelf將axf轉(zhuǎn)換為hex文件,所以編譯后可以在輸出文件中同時(shí)看到axf和hex文件。

3、C與匯編混合展示

我們打開前面的.asm文件如下圖所示:

零零散散我們可以看到幾個(gè)C函數(shù),不過閱讀起來稍微有點(diǎn)吃力,大伙應(yīng)該還是比較喜歡閱讀debug時(shí)候匯編框中C語言與匯編語言一一對(duì)應(yīng)的形式,這樣也更好理解匯編語言。

1、生成.txt和.i文件

我們?cè)趉eil中勾選如下幾項(xiàng),然后進(jìn)行重新編譯。

其中在工程目錄的*.txt即為匯編與C混合文件,而*.i為經(jīng)過了預(yù)處理的文件。

2、對(duì)比.c和.i文件

對(duì)于預(yù)處理過程主要是去掉注釋和展開宏等,下面我們對(duì)比一下源文件與.i文件。

7126eb62-7ec2-11eb-8b86-12bb97331649.png

3、查看.txt文件

生成的.txt即為C代碼與匯編的混合文件。

71337f12-7ec2-11eb-8b86-12bb97331649.png

原文標(biāo)題:用Keil生成bin、匯編、C與匯編混合文件,再也不想debug了!

文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3685

    瀏覽量

    94915
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1223

    瀏覽量

    169096

原文標(biāo)題:用Keil生成bin、匯編、C與匯編混合文件,再也不想debug了!

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    rt-thread studio debug生成了elf & map,為什么不生成匯編

    開發(fā)中crash后dump出了現(xiàn)場,需要通過反匯編文件確定crash的lr & pc,大部分使用rtthread studio的環(huán)境是windows,在windows下倒反匯編文件
    發(fā)表于 06-11 06:42

    飛凌嵌入式ElfBoard ELF 1板卡-uboot編譯原理介紹

    譯->編譯->匯編->鏈接->生成elf文件->轉(zhuǎn)換為二進(jìn)制可支持bin文件。預(yù)編譯Pre-compile階段
    發(fā)表于 05-22 11:17

    使用RASC生成Keil工程

    手動(dòng)新建一個(gè)名為“Workspace_Keil”的文件夾,并將該文件夾作為我們的工作空間,我們的所有Keil工程都會(huì)放在這個(gè)文件夾里面。值得
    的頭像 發(fā)表于 05-15 14:46 ?300次閱讀
    使用RASC<b class='flag-5'>生成</b><b class='flag-5'>Keil</b>工程

    EE-134:為SHARC系列編寫C兼容匯編代碼中斷處理程序

    電子發(fā)燒友網(wǎng)站提供《EE-134:為SHARC系列編寫C兼容匯編代碼中斷處理程序.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:58 ?0次下載
    EE-134:為SHARC系列編寫<b class='flag-5'>C</b>兼容<b class='flag-5'>匯編</b>代碼中斷處理程序

    EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù).pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b>語言中的DSP:從<b class='flag-5'>C</b>調(diào)用<b class='flag-5'>匯編</b>類成員函數(shù)

    TMS320C6000匯編語言工具v7.4用戶指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000匯編語言工具v7.4用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-30 16:42 ?0次下載
    TMS320<b class='flag-5'>C</b>6000<b class='flag-5'>匯編</b>語言工具v7.4用戶指南

    TMS320C6000匯編語言工具 v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000匯編語言工具 v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:00 ?0次下載
    TMS320<b class='flag-5'>C</b>6000<b class='flag-5'>匯編</b>語言工具 v8.3.x

    ARM匯編語言工具

    電子發(fā)燒友網(wǎng)站提供《ARM匯編語言工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 09:12 ?2次下載
    ARM<b class='flag-5'>匯編</b>語言工具

    TMS320C28x匯編語言工具

    電子發(fā)燒友網(wǎng)站提供《TMS320C28x匯編語言工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:32 ?2次下載
    TMS320<b class='flag-5'>C</b>28x<b class='flag-5'>匯編</b>語言工具

    C語言生成可執(zhí)行二進(jìn)制文件的具體過程

    C語言源碼到生成可執(zhí)行文件的過程通常包括預(yù)處理(Preprocessing)、編譯(Compilation)、匯編(Assembly)、鏈接(Linking)等多個(gè)步驟,每個(gè)步驟都有其
    的頭像 發(fā)表于 10-21 14:30 ?1479次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>生成</b>可執(zhí)行二進(jìn)制<b class='flag-5'>文件</b>的具體過程

    TMS320LF240x DSP的C語言和匯編代碼快速入門

    電子發(fā)燒友網(wǎng)站提供《TMS320LF240x DSP的C語言和匯編代碼快速入門.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 10:14 ?1次下載
    TMS320LF240x DSP的<b class='flag-5'>C</b>語言和<b class='flag-5'>匯編</b>代碼快速入門

    hex文件怎么能轉(zhuǎn)回去c語言

    的差異。 然而,如果你想要從 .hex 文件中獲取一些有用的信息或者對(duì)程序進(jìn)行分析,你可以采取以下步驟來盡可能接近原始的C語言邏輯: 反匯編 : 使用反匯編工具(如IDA Pro、Gh
    的頭像 發(fā)表于 09-02 10:46 ?4126次閱讀

    hex文件如何查看原c語言代碼

    是處理器可以直接執(zhí)行的指令,而 C 語言代碼則是人類可讀的高級(jí)編程語言代碼。 然而,如果你想要從 .hex 文件中獲取一些有用的信息或者對(duì)程序進(jìn)行分析,你可以考慮以下幾種方法: 反匯編(Disassembly) : 使用反
    的頭像 發(fā)表于 09-02 10:37 ?4537次閱讀

    bin文件怎么燒錄到stm32

    燒錄bin文件到STM32微控制器是一個(gè)相對(duì)復(fù)雜的過程,涉及到硬件連接、軟件配置和固件燒錄等多個(gè)方面。 一、硬件準(zhǔn)備 STM32開發(fā)板 STM32開發(fā)板是燒錄bin文件的基礎(chǔ),市場上有
    的頭像 發(fā)表于 08-22 09:38 ?3944次閱讀

    keil仿真查看反匯編,匯編窗口怎么跳轉(zhuǎn)到指定行了呢?

    請(qǐng)問大神;如圖所示,想在匯編窗口跳轉(zhuǎn)到C:045F,查看匯編原碼;怎么操作?有無直接跳轉(zhuǎn)的辦法現(xiàn)在只能用鼠標(biāo)滾輪一直翻,有時(shí)候還到不了指定行;
    發(fā)表于 07-24 07:06
    主站蜘蛛池模板: www在线观看| 六月婷婷在线观看 | 亚洲国产精品嫩草影院 | 在线天堂视频 | 婷婷色在线视频 | 天天精品视频 | 性满足久久久久久久久 | 99热99热 | 99热手机在线观看 | 精品国产自在在线在线观看 | 手机看片中文字幕 | 色偷偷亚洲男人 | 天天综合网天天综合色不卡 | 国产精品天天爽夜夜欢张柏芝 | 免费一级视频在线播放 | 亚洲电影天堂网 | 美女视频永久黄网站免费观看国产 | 久草视频一区 | 欧美就是色 | 天天拍天天干 | 久久狼人综合 | 天天添天天干 | 亚洲五月婷 | 日韩成人午夜 | 中文字幕一区二区三区乱码aⅴ | 中文字幕天堂 | 天堂va欧美ⅴa亚洲va一国产 | 成人免费看片视频色多多 | 在线永久免费观看黄网站 | 国产区精品高清在线观看 | 色丁香六月 | 日本大片成人免费播放 | 国产又色又爽又黄的网站在线一级 | 三级aa久久 | 中文字幕一区二区三区在线播放 | 亚洲jjzzjjzz在线观看 | 欧美性xxxx极品高清 | 久视频在线观看久视频 | 天天摸天天摸天天躁 | 噜噜噜 综合 亚洲 | 久久新视频 |