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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5516|回復(fù): 0
收起左側(cè)

IAR調(diào)用openOCD腳本實(shí)現(xiàn)燒錄程序功能

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

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

#set FLASH_SIZE 0x20000

source [find target/stm32f1x.cfg]

adapter_khz 10000

點(diǎn)擊保存,在目錄openocd-toolbox\openocd-toolbox\scripts\windows\stm32f1x新建一個(gè)flash_write.bat文件,內(nèi)容如下:
..\..\..\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

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

    顯示DAP LINK下載256k大小的文件用時(shí)10.76秒,實(shí)測(cè)比STLINK V2快1秒。這個(gè)速度比串口下載程序快多了,串口波特率選擇460800,下載256k的程序也要36秒左右,簡(jiǎn)直令人抓狂。
四、復(fù)制文件到工程
    由于腳本文件用到OpenOCD-20190426-0.10.0目錄的文件,我們需要將OpenOCD-20190426-0.10.0文件夾復(fù)制到STM32工程里面,將flash_write.bat腳本復(fù)制到工程hex文件生成的目錄下。flash_write.bat的內(nèi)容還有做修改,以便IAR可以正常調(diào)用。修改如下:
@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識(shí)別用的,加上這兩句,IAR就能正常調(diào)用該腳本。“::pause”表明pause被注釋掉的,這樣執(zhí)行窗口在程序下載完成后會(huì)自動(dòng)關(guān)閉。對(duì)openocd.exe 和stm32f1x_cmsisdap.cfg的相對(duì)路徑也有根據(jù)實(shí)際情況更改。
五、IAR調(diào)用腳本文件
    人在IAR的Options-Build Actions-Bulid Actions Configuration-Post Build Command Line填寫"$EXE_DIR$\flash_write.bat",如下圖所示:
pre build.JPG

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



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久小视频 | 天天射网站 | 亚洲区一区二区 | 我我色综合 | 国产精品久久久久久久久久 | 色偷偷噜噜噜亚洲男人 | 日本成人三级电影 | 国产精品日产欧美久久久久 | 国产精品区一区二 | 欧美在线视频一区二区 | 2019中文字幕视频 | 精品一二区| 国产精品国产三级国产aⅴ原创 | 欧美精品网站 | 91视频www.| 欧美精品一区二区三区在线播放 | 亚洲欧洲av在线 | 成人午夜电影在线观看 | 国产一级免费在线观看 | 综合婷婷 | 国产精品精品视频一区二区三区 | 国产一区二区精品在线观看 | 国内av在线| 国产成人精品免费视频大全最热 | 女女百合av大片一区二区三区九县 | 国产精品毛片无码 | 久久福利电影 | 天天操天天干天天曰 | av在线免费观看不卡 | 欧美激情五月 | 欧美成人一区二区 | 亚洲午夜一区二区 | 亚洲精品欧美一区二区三区 | 免费一区二区三区 | 午夜午夜精品一区二区三区文 | 国产97在线看 | 久久久91精品国产一区二区三区 | 999久久| 91婷婷韩国欧美一区二区 | 国产日韩精品一区 | 日本精品一区二区 |