一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

關(guān)于STM32芯片的三種燒寫(xiě)方式對(duì)比

茶話MCU ? 2019-08-29 10:49 ? 次閱讀

我們做STM32產(chǎn)品開(kāi)發(fā),最終是要將編寫(xiě)的程序代碼寫(xiě)進(jìn)芯片存儲(chǔ)器,通常指Flash存儲(chǔ)器【含可以映射到芯片存儲(chǔ)空間的片外存儲(chǔ)器】,讓程序正常運(yùn)行起來(lái)以實(shí)現(xiàn)相應(yīng)的功能。

一般來(lái)講,將我們準(zhǔn)備好的機(jī)器代碼HEX或BIN文件等寫(xiě)進(jìn)片上FLASH可以有三種常用的燒寫(xiě)方式?!緶剀疤崾荆合旅嫣岬降臒龑?xiě)方式的術(shù)語(yǔ)或稱(chēng)謂不是絕對(duì)的,對(duì)于不同的器件可能有不同的表述甚至內(nèi)涵,這里僅針對(duì)STM32,知道怎么回事就好】

第一種,ICP【In circuit programming】,即在電路編程或在線編程【注:不必太糾結(jié)該術(shù)語(yǔ)名字或稱(chēng)謂。平常稱(chēng)之為ICP也挺好】。一般是指利用調(diào)試器通過(guò)調(diào)試接口將程序代碼寫(xiě)進(jìn)芯片存儲(chǔ)器的過(guò)程。調(diào)試器可以是ST官方的STLINK或其它公司的產(chǎn)品,比如JLINK,ULink等。 這里的調(diào)試端口可以是SWD或JTAG接口。

針對(duì)ICP編程方式,ST官方有提供相應(yīng)的軟件工具,比如STLINK_UtilitySTM32cbueProgrammer。至于其它公司的調(diào)試器,也有配套的軟件工具。

第二種,IAP【In application programming】,即在應(yīng)用編程。一般是指芯片里已經(jīng)存在具有升級(jí)更新功能的代碼在里面了,用戶基于該部分功能代碼再將另外的程序代碼寫(xiě)進(jìn)芯片存儲(chǔ)器的過(guò)程。也就是說(shuō)芯片里平常有兩套代碼,一套用于實(shí)現(xiàn)代碼的更新升級(jí),往往稱(chēng)之為用戶引導(dǎo)代碼或啟動(dòng)代碼。另外一套就是芯片平常運(yùn)行的功能代碼,我們稱(chēng)之為用戶應(yīng)用代碼。

第三種,ISP【In system programming】,即在系統(tǒng)編程。我們可以把該模式看做一種特殊的IAP模式,只是片內(nèi)的啟動(dòng)代碼是由芯片廠家這個(gè)特定用戶出廠時(shí)寫(xiě)好提供的。一般來(lái)講該段代碼位于特定存儲(chǔ)位置、用戶不可更改。

我們使用ISP方式編程的話,可以選擇內(nèi)嵌系統(tǒng)啟動(dòng)代碼認(rèn)可的通信接口,比如USART,I2C,SPI,CAN,USB等,借助于芯片廠家或第三方提供的軟件工具來(lái)實(shí)現(xiàn)。具體到STM32系列芯片,欲利用ISP方式進(jìn)行編程燒寫(xiě)的話,軟件工具可以使用ST官方提供的Stm32CubeProgrammer。

對(duì)于STM32芯片的ISP方式燒錄編程,往往需要對(duì)硬件BOOT腳做合適的電平設(shè)置,以及對(duì)選項(xiàng)字進(jìn)行正確配置,確保芯片從系統(tǒng)存儲(chǔ)區(qū)啟動(dòng)、運(yùn)行。另外,燒錄完畢后,記得將相關(guān)BOOT腳電平進(jìn)行調(diào)整,以保證下次芯片啟動(dòng)后運(yùn)行在正確的程序空間,一般是指調(diào)整回芯片主程序區(qū)。

上面介紹了ICP和ISP燒錄所涉及的軟件工具。至于IAP,程序的更新升級(jí)就是基于MCU現(xiàn)有的通信接口并借助用戶之前寫(xiě)進(jìn)芯片的啟動(dòng)代碼來(lái)完成。比方,用戶通過(guò)UART接口借助于內(nèi)部引導(dǎo)程序來(lái)完成應(yīng)用程序的更新。這里可能會(huì)有人會(huì)問(wèn),那用戶準(zhǔn)備的啟動(dòng)程序如何寫(xiě)進(jìn)芯片呢?顯然,我們可以通過(guò)ICP方式或ISP方式來(lái)完成用戶啟動(dòng)代碼的事先燒寫(xiě)。

下面是三種燒寫(xiě)方式的一個(gè)簡(jiǎn)單比較匯總表。三種方式各有特點(diǎn).。表格中提到的無(wú)特定軟硬件接口需求是相對(duì)的,意思是指基于芯片現(xiàn)有常用接口和通用軟硬件工具,比方串口調(diào)試助手等。其中IAP方式對(duì)特定軟硬件的依賴(lài)性最弱,使用更為靈活。但開(kāi)發(fā)工程師須多做一件事,即自己寫(xiě)用戶引導(dǎo)程序。當(dāng)然,對(duì)于STM32來(lái)講,各個(gè)系列都有一些IAP例程供用戶參考。而ICP方式往往是產(chǎn)品調(diào)試過(guò)程中最為常用的一種燒寫(xiě)方式。ISP方式是生產(chǎn)環(huán)節(jié)較為常用的一種代碼燒寫(xiě)方式。

關(guān)于STM32芯片的三種燒寫(xiě)方式對(duì)比

下面就STM32F746芯片使用ISP方式的燒寫(xiě)流程做個(gè)簡(jiǎn)單介紹,順便做些提醒。

一般來(lái)講絕大部分STM32芯片都是支持ISP方式的。在選用這個(gè)燒寫(xiě)方式之前先確認(rèn)下它是否支持ISP方式,即片內(nèi)是否內(nèi)置了system memory,該處存放著系統(tǒng)啟動(dòng)程序。我們可以通過(guò)各芯片所屬的參考手冊(cè)BOOT章節(jié)和AN2606應(yīng)用筆記查看確認(rèn)。

經(jīng)確認(rèn),STM32F746支持ISP,不妨選用UART3接口?!井?dāng)然,它還支持其它通信接口】

查看其所對(duì)應(yīng)的參考手冊(cè),了解使用ISP方式所需的配置。一般指BOOT腳的電平確定、選項(xiàng)字的配置。具體到這里,就是確定BOOT腳的電平和System memory的啟動(dòng)入口地址。

對(duì)于STM32F7而言,芯片的啟動(dòng)地址可以通過(guò)啟動(dòng)地址選項(xiàng)字節(jié)任意配置,且有兩種配置方式,對(duì)應(yīng)于BOOT腳的電平為高或?yàn)榈蜁r(shí)啟動(dòng)地址選項(xiàng)字節(jié)所給出的地址。其地址范圍在0x0000 0000 to 0x3FFF FFFF之間。如果配置的地址越界,硬件將使用默認(rèn)啟動(dòng)入口地址。

我們現(xiàn)在要使用system memory,故需找出它所在的地址范圍,根據(jù)手冊(cè)可以查到。

從上面表格得知,訪問(wèn)System memory可以有兩個(gè)地址,分別源自不同的訪問(wèn)接口。

我們不妨選用ICTM接口地址作為其入口地址,即0x00100000,將BOOT腳電平設(shè)置為高,則需配置BOOT_ADDR1【15:0】選項(xiàng)字節(jié)。這個(gè)選項(xiàng)字節(jié)是怎么擬定的呢?它是將程序啟動(dòng)入口地址的bit29~bit14對(duì)應(yīng)過(guò)來(lái)的。比方我們選擇system_memory的啟動(dòng)入口地址為0x0010,0000,則它所對(duì)應(yīng)的選項(xiàng)字節(jié)數(shù)據(jù)就是0x0040。這點(diǎn)要弄清楚,否則當(dāng)我們想通過(guò)修改啟動(dòng)地址選項(xiàng)字節(jié)來(lái)改變啟動(dòng)地址時(shí)就不知怎么填寫(xiě)數(shù)據(jù)了。

當(dāng)然,對(duì)于BOOT_ADDR0和BOOT_ADDR1都有默認(rèn)值。BOOT_ADDR0的默認(rèn)值是0080,對(duì)應(yīng)于ITCM接口的0x00200000。BOOT_ADDR1的默認(rèn)值是0040,即對(duì)應(yīng)于ITCM接口的0x00100000,結(jié)合上面的介紹可知它剛好是system memory的入口地址。顯然,對(duì)于一顆沒(méi)有更改過(guò)BOOT_ADDR1的STM32F7芯片來(lái)說(shuō),欲使用ISP的話,只需將BOOT腳置高即可,無(wú)須再手動(dòng)調(diào)整啟動(dòng)地址選項(xiàng)字節(jié)。

剩下的事情就是確認(rèn)硬件線路、打開(kāi)STM32CubeProgrammer、連機(jī)下載即可。當(dāng)然下載前可以根據(jù)需要做好各自配置,比如讀寫(xiě)保護(hù)、看門(mén)狗啟動(dòng)選擇等。

再次提醒下,通過(guò)ISP燒寫(xiě)完畢后,記得調(diào)整BOOT腳的電平以保證芯片重啟后運(yùn)行主程序區(qū)的用戶代碼。

總的來(lái)講,基于ISP方式的STM32芯片燒寫(xiě)過(guò)程不復(fù)雜。最后一點(diǎn)建議,目標(biāo)板上最好弄個(gè)復(fù)位鍵,操作方便點(diǎn),如果板上不方便設(shè)計(jì)復(fù)位鍵,燒寫(xiě)工位上安排個(gè)也可以?;赟TM32F746芯片使用ISP方式進(jìn)行燒錄就提醒這么多。畢竟說(shuō)得再多,不如一試。

本文的主要目的就是讓剛接觸STM32的人對(duì)STM32芯片的燒寫(xiě)方式有個(gè)基本的了解,至于具體的實(shí)現(xiàn),除了上面提到的基于ST的工具外,還有其它第三方的編程燒寫(xiě)工具可以選用。

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

    關(guān)注

    0

    文章

    57

    瀏覽量

    14517
  • STM32芯片
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4542

原文標(biāo)題:STM32芯片的幾種燒寫(xiě)方式簡(jiǎn)介

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

收藏 人收藏

    評(píng)論

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

    STM32寫(xiě)失敗錯(cuò)誤的處理方法

    STM32寫(xiě)失敗錯(cuò)誤:Contents mismatch at: 08000000H (Flash=FFH Required=00H)
    的頭像 發(fā)表于 06-21 08:55 ?1.5w次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>燒</b><b class='flag-5'>寫(xiě)</b>失敗錯(cuò)誤的處理方法

    debugInRam,與debuginflash,reinflash這三種寫(xiě)方式有什么區(qū)別?

    我買(mǎi)的是一個(gè)lpc2131的arm板子然后總是出現(xiàn)以下情況,我用的是jlink,這樣之后就沒(méi)法代碼了,然后只有用j-tag寫(xiě)之后才能重新編碼?我用的
    發(fā)表于 02-20 18:34

    單片機(jī)寫(xiě)是什么?有哪幾種方式

    單片機(jī)寫(xiě)是什么單片機(jī)寫(xiě)三種方式
    發(fā)表于 04-01 19:49

    STM32三種開(kāi)發(fā)方式

    1 STM32三種開(kāi)發(fā)方式通常新手在入門(mén)STM32的時(shí)候,首先都要先選擇一要用的開(kāi)發(fā)方式,不
    發(fā)表于 08-05 06:56

    STM32三種啟動(dòng)方式

    STM32三種啟動(dòng)方式依靠BOOT0和BOOT1兩個(gè)引腳的電平來(lái)決定,ST官方推薦的是串聯(lián)10k電阻然后在接高電平或接地。我用0R直接接地的,沒(méi)有串聯(lián)10k電阻,造成STM32的硬件
    發(fā)表于 08-11 06:33

    STM32三種開(kāi)發(fā)方式分享

    STM32三種開(kāi)發(fā)方式通常新手在入門(mén)STM32的時(shí)候,首先都要先選擇一要用的開(kāi)發(fā)方式,不同的
    發(fā)表于 12-01 07:59

    STM32三種boot模式介紹

    、示例驗(yàn)證總結(jié)參考資料任務(wù)摘要請(qǐng)說(shuō)明STM32三種Boot模式的差異,并在之前第11-12周“C語(yǔ)言各種變量的存儲(chǔ)地址”作業(yè)代碼基礎(chǔ)上,研究至少兩boot模式下,代碼下載(燒錄)運(yùn)行后所在的地址位置,與理論
    發(fā)表于 12-10 07:46

    STM32三種啟動(dòng)方式是什么

    STM32三種啟動(dòng)方式是什么
    發(fā)表于 12-15 07:16

    esp8266-01板的arduino寫(xiě)方式分享

    這個(gè)寫(xiě)方式,是ESP8266無(wú)線模塊針對(duì)于Arduino開(kāi)發(fā)的一寫(xiě)
    發(fā)表于 11-23 15:41 ?5.1w次閱讀
    esp8266-01板的arduino<b class='flag-5'>燒</b><b class='flag-5'>寫(xiě)</b><b class='flag-5'>方式</b>分享

    單片機(jī)寫(xiě)三種方式解析

    所謂寫(xiě),其實(shí)就是對(duì)單片機(jī)中的rom進(jìn)行擦寫(xiě)?,F(xiàn)代工藝下,rom已經(jīng)可以進(jìn)行多次擦寫(xiě),但在早期,rom只能一次性設(shè)計(jì)好,例如早期的PLC,把二極管上的絲燒了后就永久編碼出1。
    發(fā)表于 03-23 16:01 ?5864次閱讀
    單片機(jī)<b class='flag-5'>燒</b><b class='flag-5'>寫(xiě)</b>的<b class='flag-5'>三種</b><b class='flag-5'>方式</b>解析

    單片機(jī)寫(xiě)程序的三種方式

    早期一般是將調(diào)試好的單片機(jī)程序?qū)懭氲?ROM、 EPROM 中,這種操作就像刻制光盤(pán)一樣,實(shí)在高電壓方式下寫(xiě)入,PROM 是一次性寫(xiě)入,存儲(chǔ)內(nèi)部發(fā)生變化,有些線路或元件就被斷,不可再恢復(fù),所以叫做
    發(fā)表于 07-16 10:08 ?9406次閱讀

    單片機(jī)常用的三種程序寫(xiě)方式資料下載

    電子發(fā)燒友網(wǎng)為你提供單片機(jī)常用的三種程序寫(xiě)方式資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣
    發(fā)表于 04-10 08:53 ?3次下載
    單片機(jī)常用的<b class='flag-5'>三種</b>程序<b class='flag-5'>燒</b><b class='flag-5'>寫(xiě)</b><b class='flag-5'>方式</b>資料下載

    三種常見(jiàn)的STM32單片機(jī)的寫(xiě)方法

    三種常見(jiàn)的STM32單片機(jī)的寫(xiě)方法
    發(fā)表于 05-28 09:57 ?34次下載

    STM32:程序寫(xiě)方式

    模式SWD模式是ST-LINK寫(xiě)的一方式,只需要4根線,分別為VCC,GND,SWCLK,SWDIO。接線圖如下:2. JTAG模式JTAG模式是ST-LINK
    發(fā)表于 12-07 10:51 ?15次下載
    <b class='flag-5'>STM32</b>:程序<b class='flag-5'>燒</b><b class='flag-5'>寫(xiě)</b><b class='flag-5'>方式</b>

    恩智浦LPC2378芯片三種寫(xiě)程序方法

    芯片解密我們得到燒錄碼之后又將面臨下一個(gè)難關(guān),那么就是芯片寫(xiě);很多人表示為何程序明明是正確的,但為何自己燒錄的芯片就不能正常使用呢?致芯
    的頭像 發(fā)表于 12-20 13:32 ?2542次閱讀
    恩智浦LPC2378<b class='flag-5'>芯片</b>的<b class='flag-5'>三種</b><b class='flag-5'>燒</b><b class='flag-5'>寫(xiě)</b>程序方法