女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DE工具的Post-build往往在實際開發(fā)過程中容易被忽略

電子設計 ? 來源:網友電子設計發(fā)布 ? 作者:網友電子設計發(fā)布 ? 2021-12-29 14:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CC2640 R2是一款面向 Bluetooth Smart 應用的低功耗無線 MCU。該芯片運行TI的BLE協議棧,同時具有OAD(Over the Air Download)空中固件升級功能。

CCS是TI提供的強大的MCU/Processor免費軟件開發(fā)IDE,支持TI全系列的MCU和Processor。IAR是IAR公司提供的商用軟件開發(fā)IDE。CC2640R2可以選用CCS或者IAR任意一款進行開發(fā)。

為了提高OAD的效率,同時為了更合理的代碼架構,TI的BLE例程都分為Application和Stack兩個工程。但是兩個工程和兩個固件,往往會造成生產或者OAD的不便,在此我們提供一個小竅門來改善一下這個不便。

首先我們看一下IAR/CCS的編譯結果:

IAR和CCS是開發(fā)TI的BLE方案的IDE工具。在代碼編譯完成后,都能生供下載調試用的.out文件,還有.hex文件和.bin文件。

其中.out文件帶了調試信息,主要是下載調試用。.hex文件和.bin文件都可以用于生產下載,但是.hex文件又帶了地址信息,crc校驗等額外信息,所以.out和.hex都會比.bin文件大很多。因此最理想的生產下載文件其實還是.bin文件,同樣,對于目前CC2640R2F的OAD功能來說,.bin文件也依然是最佳選擇。

我們再來看一下CC2640R2帶OAD特性的工程:

CC2640R2帶OAD特性的工程由三個子工程構成,BIM,application和stack。

BIM其實就是bootloader,app就是application,stack就是協議棧。

這樣的好處是升級的時候可以只單獨更新application部分,并且能大大提高OAD的速度(因為對大多數客戶來說實際只需要更新application部分)。

但是這樣做的結果就有了三個獨立image文件,這會對最終的生產造成困擾。好在IAR或CCS等IDE工具提供了一些方法,能使我們靈活在.hex文件和.bin文件之間互相轉換,合并等等,這就是它們提供的post-build工具:post-build顧名思義就是build之后的動作。

先來看一下IAR/CCS的Post-build工具:

以Application工程為例。

IAR的Post-build工具:

把IAR和CCS的Post-build 內容拿出來,分別是:

IAR的Post-build內容:

cmd /C “$TOOLS_BLE_DIR$\output_converter\output_converter.exe

$EXE_DIR$\sp_oad_offchip_$PROJ_FNAME$_$CONFIG_NAME$.bin & $TOOLS_BLE_DIR$\oad\oad_image_tool.exe

iar $PROJ_DIR$ 1 $EXE_DIR$\$TARGET_BNAME$.hex $PROJ_DIR$\。.\config\iar_boundary.xcl

$PROJ_DIR$\。.\stack\FlashROM\Exe\sp_oad_offchip_cc2640r2lp_stack_FlashROM.hex -o

$EXE_DIR$\$TARGET_BNAME$_oad”

CCS的Post-build內容:

${TOOLS_BLE_DIR}/oad/oad_image_tool ccs ${PROJECT_LOC} 1 FlashROM/${ProjName}_${ConfigName}.hex ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_stack/TOOLS/ccs_compiler_defines.bcfg ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_stack/FlashROM/simple_peripheral_cc2640r2lp_oad_offchip_stack_FlashROM.hex -o ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/${ProjName}_${ConfigName}_oad

上面標紅的就是CC2640R2的SDK提供的一些腳本工具,可以在這個目錄中找到:C:\TI\simplelink_cc2640r2_sdk_1_40_00_45\tools\blestack。分別是

output_converter.exe和

oad_image_tool.exe。

SDK提供的這幾個.exe文件都是Python文件轉換過來的,我們也可以把自己用Python轉成的.exe文件放這里來執(zhí)行。

上述腳本工具在Post-build中的應用

output_converter.exe的用法:

output_converter.exe的作用:把.bin文件轉換成.hex文件。

用windows的command line可以看到它的參數配置:

oad_image_tool.exe的用法:

oad_image_tool.exe的作用:把特定的1個,或者多個.hex文件合并,新生成一個.hex文件,并轉換成加上CRC32校驗信息的.bin文件,注意的是,新生成的.hex文件是沒有加上CRC32校驗信息的,只有新生成的.bin文件帶。

它是特別指定了OAD要用的BIM,application,stack三個工程的某種組合,且合并的話,只能合并application和stack工程的image,所以這個工具并不是通用.hex轉.bin工具,只能配合OAD用(文章后面會有通用.hex轉.bin工具介紹)。

圖 5. oad_image_tool.exe的參數配置

*注意:這里說的都是application工程,編譯application工程之前,stack工程必須先編譯完成。因為很顯然,stack工程的.hex文件是其中的一個參數。

output_converter.exe & oad_image_tool.exe的配合:

IAR的工程配置里面,配置的是編譯好默認輸出.bin文件,所以需要先用output_converter.exe把.bin文件轉換成.hex。

CCS則是直接生成.hex文件,CCS只要調用oad_image_tool.exe轉換成帶CRC32校驗信息的.bin文件就可以了。

所以最后總結,不管是IAR還是CCS,都是通過post-build來轉換application和stack工程的編譯結果,并產生這兩個工程單個合并的.hex和.bin文件(BIM工程并不在合并之列),產生的.bin文件是帶OAD需要的CRC32的image校驗信息的,而.hex文件是不帶這個CRC32校驗信息的。

在Post-build中活用腳本工具:

用hex的方法燒錄

如果用.hex的方式去燒錄,這中間就有兩個問題:

第一就是還是得燒錄兩個.hex文件:BIM的.hex,和application+stack合并的.hex。

第二就是,默認的post-build產生的.hex文件不帶CRC32信息,如果直接把最終產生的單個.hex文件和BIM工程的.hex文件燒錄至芯片,由于application鏡像的起始位置不帶有效的CRC32信息,因此BIM會認為這是無效的鏡像,最后造成無法跳轉到application去執(zhí)行。

要解決這兩個問題,就得在application+stack的.hex起始位置加上有效CRC32校驗信息,然后把BIM的.hex文件和application+stack的.hex文件合并,變成真正的單個.hex,這樣直接下載就沒問題了。

解決方法:

首先,給application+stack的.hex文件頭部相應位置加入CRC32信息。

實際上經過oad_image_tool.exe合并的application+stack的.bin文件的頭部已經有CRC32校驗信息,而且output_converter.exe能把.bin文件轉成.hex文件,所以最快的方法自然是用output_converter.exe把已經合并的application+stack的.bin文件再轉換成.hex就行了:

$TOOLS_BLE_DIR$\output_converter\output_converter.exe -o

$EXE_DIR$\$TARGET_BNAME$_oad_merged_crc32.hex $EXE_DIR$\$TARGET_BNAME$_oad_merged.bin“

這個產生的.hex就是application+stack,并帶CRC32信息。

接下來就是把BIM的.hex和application+stack帶CRC32信息的.hex 合并。

由于SDK提供的oad_image_tool.exe是一個特殊的工具,并不能隨意合并任意的.hex文件,所以不能用這個工具來合并BIM和application+stack的.hex文件。這里提供一個能合并任意.hex文件的工具:hexmerge.exe,這個也是通過python轉換的.exe文件,后面會介紹怎么轉換的。

把hexmerge.exe放到對應目錄下,比如:C:\TI\simplelink_cc2640r2_sdk_1_40_00_45\tools\blestack\oad

用法:

$TOOLS_BLE_DIR$\oad\hexmerge.exe -o $EXE_DIR$\bim_app_stack_crc32.hex $PROJ_DIR$\。.\bim_offchip\

FlashOnly \Exe\sp_oad_offchip_cc2640r2lp_bim_offchip_FlashOnly.hex

$EXE_DIR$\$TARGET_BNAME$_oad_merged_crc32.hex

把上面兩條命令加入到post-build中去,下面藍色部分:

cmd /C ”$TOOLS_BLE_DIR$\output_converter\output_converter.exe $EXE_DIR$\sp_oad_offchip_$PROJ_FNAME$_$CONFIG_NAME$.bin & $TOOLS_BLE_DIR$\oad\oad_image_tool.exe iar $PROJ_DIR$ 1 $EXE_DIR$\$TARGET_BNAME$.hex $PROJ_DIR$\。.\config\iar_boundary.xcl $PROJ_DIR$\。.\stack\FlashROM\Exe\sp_oad_offchip_cc2640r2lp_stack_FlashROM.hex -o $EXE_DIR$\$TARGET_BNAME$_oad & $TOOLS_BLE_DIR$\output_converter\output_converter.exe -o $EXE_DIR$\$TARGET_BNAME$_oad_merged_crc32.hex $EXE_DIR$\$TARGET_BNAME$_oad_merged.bin & $TOOLS_BLE_DIR$\oad\hexmerge.exe -o $EXE_DIR$\bim_app_stack_crc32.hex $PROJ_DIR$\。.\bim_offchip\FlashOnly\Exe\sp_oad_offchip_cc2640r2lp_bim_offchip_FlashOnly.hex $EXE_DIR$\sp_oad_offchip_cc2640r2lp_app_FlashROM_oad_merged_crc32.hex“

這樣,最終就能產生出一個bim+application+stack三個工程合并后的.hex文件,并且?guī)RC32校驗,一次性下載到芯片后能直接運行。

用bin的方法燒錄

如果用.bin的方式燒錄,那么CRC32的問題是不存在的,存在的唯一問題就是:

BIM的.bin和application+stack的.bin是兩個獨立的文件,沒法同時燒錄,也沒法分別燒錄,因為.bin文件是不帶地址信息的,比較麻煩。

最好的方法當然是把這幾個.bin文件合成一個,再進行燒錄。但SDK提供的oad_image_tool.exe又不能直接把BIM合并進去產生.bin文件,所以還是需要借助其他工具。

其實根據前面的啟發(fā),最快的方法,只要把前面的過程中產生的BIM+application+stack并帶CRC32校驗的.hex文件直接轉換成.bin文件就行了。我們借用hex2bin.exe這個工具,同樣,也是python轉換過來的.exe。

解決方法:

首先,比如也把hex2bin.exe放到下面目錄中:

C:\TI\simplelink_cc2640r2_sdk_1_40_00_45\tools\blestack\oad

用法:

$TOOLS_BLE_DIR$\oad\hex2bin.exe $EXE_DIR$\bim_app_stack_crc32.hex $EXE_DIR$\bim_app_stack_crc32.bin

那么把這條命令加到post-build中去:

cmd /C ”$TOOLS_BLE_DIR$\output_converter\output_converter.exe $EXE_DIR$\sp_oad_offchip_$PROJ_FNAME$_$CONFIG_NAME$.bin & $TOOLS_BLE_DIR$\oad\oad_image_tool.exe iar $PROJ_DIR$ 1 $EXE_DIR$\$TARGET_BNAME$.hex $PROJ_DIR$\。.\config\iar_boundary.xcl $PROJ_DIR$\。.\stack\FlashROM\Exe\sp_oad_offchip_cc2640r2lp_stack_FlashROM.hex -o $EXE_DIR$\$TARGET_BNAME$_oad & $TOOLS_BLE_DIR$\output_converter\output_converter.exe -o $EXE_DIR$\$TARGET_BNAME$_oad_merged_crc32.hex $EXE_DIR$\$TARGET_BNAME$_oad_merged.bin & $TOOLS_BLE_DIR$\oad\hexmerge.exe -o $EXE_DIR$\bim_app_stack_crc32.hex $PROJ_DIR$\。.\bim_offchip\FlashOnly\Exe\sp_oad_offchip_cc2640r2lp_bim_offchip_FlashOnly.hex $EXE_DIR$\sp_oad_offchip_cc2640r2lp_app_FlashROM_oad_merged_crc32.hex & $TOOLS_BLE_DIR$\oad\hex2bin.exe $EXE_DIR$\bim_app_stack_crc32.hex $EXE_DIR$\bim_app_stack_crc32.bin“

所以總結起來,只要把上面的這一整段命令復制,粘帖到IAR的post-build配置中去,我們就能通過IAR的一次編譯,自動同時可以得到一個合并了BIM,application,stack的完整的.hex和.bin文件(bim_app_stack_crc32.hex和bim_app_stack_crc32.bin),可以用于燒錄。

在CCS中的靈活用法

前面是基于IAR的配置方式,基于CCS的本質上也是一樣,在post-build中,加入:

${TOOLS_BLE_DIR}/oad/oad_image_tool ccs ${PROJECT_LOC} 1 FlashROM/${ProjName}_${ConfigName}.hex ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_stack/TOOLS/ccs_compiler_defines.bcfg ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_stack/FlashROM/simple_peripheral_cc2640r2lp_oad_offchip_stack_FlashROM.hex -o ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/${ProjName}_${ConfigName}_oad

${TOOLS_BLE_DIR}/output_converter/output_converter -o

${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/${ProjName}_${ConfigName}_oad_merged_crc32.hex ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/${ProjName}_${ConfigName}_oad_merged.bin

${TOOLS_BLE_DIR}/oad/hexmerge -o ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/bim_app_stack_crc32.hex ${WORKSPACE_LOC}/bim_oad_offchip_cc2640r2lp_app/FlashOnly/bim_oad_offchip_cc2640r2lp_app.hex ${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/${ProjName}_${ConfigName}_oad_merged_crc32.hex

${TOOLS_BLE_DIR}/oad/hex2bin

${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/bim_app_stack_crc32.hex

${WORKSPACE_LOC}/simple_peripheral_cc2640r2lp_oad_offchip_app/FlashROM/bim_app_stack_crc32.bin

這樣,編譯完application工程后,就能自動得到合并了BIM+application+stack的.hex和.bin文件(bim_app_stack_crc32.hex和bim_app_stack_crc32.bin)。

結論:

IDE工具的Post-build往往在實際開發(fā)過程中容易被忽略,其實只要靈活應用,還是能幫助我們做很多事情的,比如本文所說針對CC2640R2F的固件的生成,靈活應用Post-build功能就能方便產生我們自己需要的固件,提高工作效率。

另附

Python的獨立可執(zhí)行.exe腳本文件

如何通過Python得到可直接獨立執(zhí)行,不需要python環(huán)境的.exe文件?可以用Pyinstaller這個工具,Pyinstaller是一個可以把Python腳本文件打包成.exe的工具。

Python環(huán)境下載:https://www.python.org/

Pyinstaller下載:http://www.pyinstaller.org/

這里用到的hexmerge和hex2bin,用的是python的intelhex庫:https://pypi.python.org/pypi/IntelHex

審核編輯:何安

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 嵌入式處理
    +關注

    關注

    0

    文章

    341

    瀏覽量

    10299
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    功能安全開發(fā)的“降本利器”:高效平臺化工具鏈實戰(zhàn)

    隨著智能駕駛技術的快速發(fā)展,汽車電子電氣(E/E)系統(tǒng)的復雜度顯著提升,功能安全已成為其開發(fā)過程中不可或缺的關鍵要素。依據ISO26262標準要求,功能安全開發(fā)活動通常數量眾多且關聯性強。基于以往
    的頭像 發(fā)表于 07-10 14:27 ?327次閱讀
    功能安全<b class='flag-5'>開發(fā)</b>的“降本利器”:高效平臺化<b class='flag-5'>工具</b>鏈實戰(zhàn)

    使用CY7C65213開發(fā)過程中,應該用哪個interface進行uart通信?

    使用CY7C65213開發(fā)過程中,我想用CyUartRead讀數據,但是好像沒有接口的deviceType是CY_TYPE_UART,想請問我應該用哪個interface進行uart通信? 是否有相關指導文件,或描述符指導?
    發(fā)表于 06-03 07:04

    MES系統(tǒng)開發(fā)的質量模塊設計,90%企業(yè)都忽略了這點

    制造業(yè)數字化轉型的浪潮,MES(制造執(zhí)行系統(tǒng))作為提升企業(yè)生產效率和質量管理能力的核心工具,正受到越來越多企業(yè)的青睞。然而,MES系統(tǒng)的開發(fā)過
    的頭像 發(fā)表于 04-08 14:27 ?262次閱讀
    MES系統(tǒng)<b class='flag-5'>開發(fā)</b><b class='flag-5'>中</b>的質量模塊設計,90%企業(yè)都<b class='flag-5'>忽略</b>了這點

    芯科科技Web-BasedFlash工具助力優(yōu)化Matter開發(fā)流程

    很高興向大家介紹新發(fā)布的Web-BasedFlash工具以優(yōu)化Matter開發(fā)流程,該工具旨在簡化展示Matter硬件功能和性能的過程,使開發(fā)
    的頭像 發(fā)表于 02-20 09:52 ?485次閱讀

    linux下開發(fā)過程中, DLP4500 GUI無法連接光機怎么解決?

    linux下開發(fā)過程中, DLP4500 GUI 無法連接光機,出現錯誤提示如下: open device_handle error: Is a directory opening path
    發(fā)表于 02-20 08:41

    DevEco Studio構建分析工具Build Analyzer 為原生鴻蒙應用開發(fā)提速

    原生鴻蒙應用開發(fā)過程中,隨著項目復雜度的增加,開發(fā)者花費構建上的時間越來越長,導致開發(fā)效率降低。為了幫助
    發(fā)表于 02-17 18:06

    如何在日常開發(fā)過程中提高代碼質量

    。 提高代碼質量是一個系統(tǒng)工程,本文主要介紹開發(fā)人員如何在日常開發(fā)過程中提高代碼質量。 01 什么是代碼質量? 代碼質量一般用于衡量代碼的“好”和“爛”:“好”代碼表示代碼質量高,“爛”代碼表示代碼質量低。雖然目前
    的頭像 發(fā)表于 01-23 09:09 ?543次閱讀
    如何在日常<b class='flag-5'>開發(fā)過程中</b>提高代碼質量

    實際應用過程中發(fā)現ADS1120QPWRQ1會出現漏流,怎么解決?

    我們實際應用過程中發(fā)現ADS1120QPWRQ1會出現漏流,這個在手冊上沒有找到明確的范圍,能否幫忙提供漏流的范圍嗎? 開啟時漏流大約多少到多少的uA; 關閉時漏流大約多少到多少的uA; 謝謝!
    發(fā)表于 12-18 07:19

    嵌入式筆記 | 非常容易忽略的電流倒灌

    導讀在嵌入式開發(fā)工程,電流倒灌是一個容易被忽視但可能導致嚴重后果的問題。本章節(jié)將深入探討電流倒灌的成因、影響以及如何在實際工程識別和預防
    的頭像 發(fā)表于 12-09 16:57 ?1821次閱讀
    嵌入式筆記 | 非常<b class='flag-5'>容易</b><b class='flag-5'>被</b><b class='flag-5'>忽略</b>的電流倒灌

    使用ADS1299的過程中遇到的疑問求解

    使用ADS1299的過程中有一點疑問,需要您的幫助。 這是一張關于BIAS反饋回路的示意圖,我的理解里這可以看作一個加減運算電路,我想知道的是,只關注它的反向輸入時,且暫時忽略
    發(fā)表于 11-15 06:35

    自己做的TAS5825板子軟件開發(fā)過程中怎么接到PPC3上去調試呢?

    我們打算做一個TAS5825的板子,PPC3軟件已經申請下來了,有個問題是我們自己做的TAS5825板子軟件開發(fā)過程中怎么接到PPC3上去調試呢?
    發(fā)表于 10-15 08:15

    SMT貼片加工過程中容易出現問題的封裝類型原因

    )上。盡管SMT技術極大地提高了生產效率和電子設備的可靠性,但在貼片加工過程中,某些組件的封裝類型可能會比其他類型更容易出現問題。 容易出現問題的封裝類型及其原因: 1. 微型封裝(如0201、01005尺寸的組件) 原因: -
    的頭像 發(fā)表于 08-30 09:28 ?651次閱讀
    SMT貼片加工<b class='flag-5'>過程中</b><b class='flag-5'>容易</b>出現問題的封裝類型原因

    康謀分享 | 基于場景的AD/ADAS驗證過程中,識別挑戰(zhàn)性場景!

    基于場景的驗證是AD/ADAS系統(tǒng)開發(fā)過程中的重要步驟,然而面對海量駕駛記錄數據時,如何實現自動且高效地識別、分類和提取駕駛記錄的挑戰(zhàn)性場景?本文康謀為您介紹IVEX軟件識別挑戰(zhàn)性場景并進行數據分析的強大功能。
    的頭像 發(fā)表于 08-28 10:16 ?1420次閱讀
    康謀分享 | <b class='flag-5'>在</b>基于場景的AD/ADAS驗證<b class='flag-5'>過程中</b>,識別挑戰(zhàn)性場景!

    AMC1200使用的過程中測信號的地需要和GND1相連嗎?

    請問 AMC1200使用的過程中測信號的 地 需要和GND1相連嗎?AMC1200EVM User's Guide,沒
    發(fā)表于 08-19 08:00

    設備運行過程中,調用云端接口后報status500的原因?如何解決?

    設備運行過程中出現,調用云端接口后,報500,設備接收到了云端發(fā)過來數據,并執(zhí)行了動作! 想問導致status500錯誤具體可能的情況和原因是什么?如何解決?
    發(fā)表于 07-18 06:48