久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5679|回復: 0
收起左側

IAR調用openOCD腳本實現燒錄程序功能

[復制鏈接]
ID:351097 發表于 2020-4-13 21:23 | 顯示全部樓層 |閱讀模式
本帖最后由 沒有你 于 2020-4-13 21:31 編輯

    在IAR for ARM編譯使用STM32,有個不方便的地方,就是如果只下載程序不進行仿真,程序下載完需要手動按復位按鈕才能執行程序,比較麻煩。其實很多時候我們都是直接燒錄程序,并不會用到仿真功能,這樣比較省時間。另外一種方式就是在IAR編譯產生hex文件,然后再用其他軟件如STM32 Cube Programmer或者FlyMCU下載hex文件到STM32中。如果有一種工具,可以在IAR編譯完就直接燒錄程序,并且自動重啟,那就方便了。無意之間我看到了openOCD,openOCD是一款開源片上調試器,旨在提供針對嵌入式設備的調試、系統編程和邊界掃描功能。IAR不像eclipse支持用戶使用第三方片上調試器,所以無法直接在IAR上用openOCD。接下來我介紹如何在IAR使用openOCD的程序燒錄功能。一、選擇一款調試器
    我們需要一款調試工具,這里我選擇DAP Link。因為DAP Link不僅支持芯片的燒錄和調試,更重要的是它帶有虛擬串口功能。DAP Link支持免驅HID,直接接上電腦就可以使用。在IAR for ARM上是支持DAP Link調試器的,調試器選項選擇CMSIS DAP即可,DAP Link是CMSIS DAP的升級版本。
二、構建腳本文件
    這里我選擇構建腳本文件,因為IAR for ARM可以執行。我們需要下載openOCD資料文件,我的單片機是STM32F103RC,要在目錄openocd-toolbox\OpenOCD-20190426-0.10.0\share\openocd\scripts\target找到stm32f1x.cfg。然后復制到openocd-toolbox\OpenOCD-20190426-0.10.0\tcl\target中,再這個目錄新建一個stm32f1x_cmsisdap.cfg文件,內容為:
interface cmsis-dap
transport select swd

#set FLASH_SIZE 0x20000

source [find target/stm32f1x.cfg]

adapter_khz 10000

點擊保存,在目錄openocd-toolbox\openocd-toolbox\scripts\windows\stm32f1x新建一個flash_write.bat文件,內容如下:
..\..\..\OpenOCD-20190426-0.10.0\bin\openocd.exe ^
    -f ..\..\..\OpenOCD-20190426-0.10.0\tcl\target\stm32f1x_cmsisdap.cfg ^
    -c "init;halt;reset halt;flash write_image erase flash_image.hex;reset;shutdown;"
pause

三、測試腳本文件
    flash_write.bat相同目錄粘貼一個STM32F103RC單片機可以執行的hex文件,文件命名為flash_image.hex。電腦插上DAP LINK,用SWD接口連接STM32F103RC,然后點擊執行flash_write.bat,這時可以看到如下圖:
調試.JPG

    顯示DAP LINK下載256k大小的文件用時10.76秒,實測比STLINK V2快1秒。這個速度比串口下載程序快多了,串口波特率選擇460800,下載256k的程序也要36秒左右,簡直令人抓狂。
四、復制文件到工程
    由于腳本文件用到OpenOCD-20190426-0.10.0目錄的文件,我們需要將OpenOCD-20190426-0.10.0文件夾復制到STM32工程里面,將flash_write.bat腳本復制到工程hex文件生成的目錄下。flash_write.bat的內容還有做修改,以便IAR可以正常調用。修改如下:
@echo off
cd /D %~dp0
..\..\TOOL\OpenOCD-20190426-0.10.0\bin\openocd.exe ^
    -f ..\..\TOOL\OpenOCD-20190426-0.10.0\tcl\target\stm32f1x_cmsisdap.cfg ^
    -c "init;halt;reset halt;flash write_image erase STM32F103.hex;reset;shutdown;"
::pause

    說明:“@echo off”和“cd /D %~dp0”是給IAR識別用的,加上這兩句,IAR就能正常調用該腳本。“::pause”表明pause被注釋掉的,這樣執行窗口在程序下載完成后會自動關閉。對openocd.exe 和stm32f1x_cmsisdap.cfg的相對路徑也有根據實際情況更改。
五、IAR調用腳本文件
    人在IAR的Options-Build Actions-Bulid Actions Configuration-Post Build Command Line填寫"$EXE_DIR$\flash_write.bat",如下圖所示:
pre build.JPG

    點擊確認后,就配置完成了。現在只要按下快捷鍵F7,IAR就會編譯程序,然后調用腳本下載hex文件,腳本會在下載后讓STM32F103會重啟執行程序,不用人工按復位按鍵。如果需要程序仿真,則點擊debugger without download,IAR就會直接進入仿真,省去重新下載程序的時間。
    編譯同一個大工程IAR的速度會比kei明顯快不少,這也是部分人喜歡用IAR的原因之一,長期下來,節省的時間可不是一點點了。現在加上這個功能,就更快了,直接按F7就可以自動編譯和燒錄程序,連鼠標都不用點。目前國內IAR用戶還是比keil少,有部分原因是很多人從51就一直用keil,使用習慣問題導致后面開發也選擇keil。其實我們沒有必要局限在keil,除了IAR,eclipse也是一個不錯的開發平臺。
    IAR for ARM版本為:8.32.1,本次STM32F103最小工程(帶自動下載程序腳本)的分享鏈接如下:https://pan.baidu.com/s/1bGJnWNIr0fH0bC9X6WCYdQ  提取碼:6qxc。有興趣的可以下載使用。



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久影院色老大 | 999精品网| 久久精品电影 | 日韩欧美在线观看 | 青青草av在线播放 | 91在线观看 | 成人久久一区 | 午夜一区二区三区在线观看 | 天堂一区二区三区 | 日韩精品视频在线免费观看 | 一区二区免费视频 | 最新中文在线视频 | 成人精品| 国产日韩精品一区 | 亚洲一区在线日韩在线深爱 | 狠狠操狠狠色 | 午夜小视频免费观看 | 欧美成人久久 | 欧洲一区二区在线 | 国产精品久久久久久久免费大片 | 欧美亚洲视频在线观看 | 成人国产a | 国产ts人妖系列高潮 | 91色视频在线 | 亚洲色图婷婷 | 亚洲精品在线播放 | 久久久久久亚洲精品 | 欧美精品啪啪 | 国产在线观看免费 | 福利视频一二区 | www.99热.com | 国产精品欧美一区二区三区 | 天天操夜夜爽 | 午夜一区二区三区视频 | 国产99精品 | 日韩一区二区三区在线观看 | 欧美日韩福利视频 | 国产精品美女久久久久久久久久久 | 日韩成人久久 | 国产剧情一区 | 精品熟人一区二区三区四区 |