娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月14日(星期六)

2019年06月14日 | stm32 Bootloader設計(YModem協議)

發布者:TechVoyager 來源: eefocus關鍵字:stm32  Bootloader  YModem協議 手機看文章 掃描二維碼
隨時隨地手機看文章

相信很多人都希望,不開蓋就可以對固件進行升級吧,就像手機那些。下文中的bootload就來實現這樣的功能。
         前段時間有項目關于Bootload設計。所以就仔細的去了研究了一翻。以前都是用的stm32官方的,沒有去深入了解。這次做完了過后,發現官方的版本存在一些問題。比如說YModem傳送過程中,完全沒有對數據區進行效驗,只是核對了下編號,就進行燒寫。整個程序完全為阻塞式,浪費了大量的cpu做無用功。當然這在升級程序方面也用不了多少時間。有一個重要的問題,官方代碼只可以用超級終端進行傳輸。這樣如果你用的是64位的win7,那就沒有辦法升級。因為只有xp或32位的win7才可以使用 超級終端。64位的win7下超級終端沒辦法使用。 不過SecureCRT工具到是可以在64位win7使用,但是官方代碼不對其支持。SecureCRT下支持的是最原始的YModem協議,第一幀數據包中不包含總字節數。超級終端下的YModem應該是改進版的,所以官方的dome只可以在超級終端下傳輸。下面會對YModem進行詳細說明。就會知道其中的原因。
         首先奉上一個精簡的Bootloader工程。
         http://pan.baidu.com/share/link?shareid=373630&uk=118334538
         支持協議:YModem, YModem-G。
         所支持的PC軟件:超級終端,SecureCRT。
         http://pan.baidu.com/share/link?shareid=373637&uk=118334538

YModem協議:         YModem協議是由XModem協議演變而來的,每包數據可以達到1024字節,是一個非常高效的文件傳輸協議。下面有一些相關的文檔。這里要感謝關注我微博的一些朋友提供的資料。省去了不少時間。
         下面先看下YModem協議傳輸的完整的握手過程:先看下圖

SENDER:發送方。
RECEIVER:接收方。
第一步先由接收方,發送一個字符'C'
發送方收到'C'后,發送第一幀數據包,內容如下:
SOH 00 FF Foo.c NUL[123] CRC CRC
第1字節SOH:表示本包數據區大小有128字節。如果頭為STX表示本包數據區大小為1024
第2字節00: 編號,第一包為00,第二包為01,第三包為02依次累加。到FF后繼續從0循環遞增。
第3字節FF: 編號的反碼。 編號為00 對應FF,為01對應FE,以此類推。

第4字節到最后兩字節:若第1字節為SOH時有128字節,為STX時有1024字節,這部分為數據區。“Foo.c” 文件名, 超級終端下,在文件名后還有文件大小。官方dome也是因為使用了這個文件大小進行比對。這就是為什么用SecureCRT中的YMODEM協議而無**確傳輸的原因。
         在文件名和文件大小之后,如果不滿128字節,以0補滿。
最后兩字節:這里需要注意,只有數據部分參與了效CRC驗,不包括頭和編碼部分。
16位CRC效驗,高字節在前,低字節在后。

接收方收到第一幀數據包后,發送ACK正確應答。
然后再發送一個字符'C'。
發送方收到'C'后,開始發送第二幀,第二幀中的數據存放的是第一包數據。
接收方收到數據后,發送一個ACK然后等待下一包數據傳送完畢,繼續ACK應答。直到所有數據傳輸完畢。
數據傳輸完畢后,發送方發EOT,第一次接收方以NAK應答,進行二次確認。
發送方收到NAK后,重發EOT,接收方第二次收到結束符,就以ACK應答。
最后接收方再發送一個'C',發送方在沒有第二個文件要傳輸的情況下,
發送如下數據
SOH 00 FF 00~00(共128個) CRCH CRCL
接收方應答ACK后,正式結束數據傳輸。

以上部分,為YMODEM協議的基本操作流程。


STM32 Bootloader軟件設計         

筆者一開始軟件的基本思想,串口接收數據,和寫數據到ROM中,兩者可以同步進行。這樣可以讓cpu得到最大程度的有效利用。
比如說接收一幀1024的數據,所用的時間= 當前波特率單字符所用時間 * (1024 + 1頭 + 2編碼 + 2CRC)= (1/115200 * 10) * (1024 + 1 + 2 + 2) = 89.323ms
也是就是,在接收的這90ms左右的時間里,在接收下一幀結束這一期間內,可以把上一幀的數據寫入到ROM中。 串口接收數據是中斷的方式,所以收寫操作基本上算同步運行。程序流程如下
        


STM32 Bootloader使用方法:        

 這個STM32 Bootloader程序使用起來很簡單,如果你以前沒有用過IAP升級方式,也沒關系下面會詳細說明。

準備工作:
         硬件:有串口目標板1,串口連接線。
         軟件:PC工具:超級終端 或SecureCRT,stm32目標板程序.bin,stm32 Bootloader。

1)         先把上面的工程stm32 Bootloader下載到目標板中;
2)         打開超級終端 或SecureCRT,設置波特特115200,停止位1,數據位8,效驗無。
3)         先按下‘C’再給目標板上電;(注意先后順序)

4)         選擇1,然后使用YModem, YModem-G協議發送"stm32目標板程序.bin"文件。
5)         傳輸完畢后,會自動運行。

注意:以下兩處根據自己的需求調整

stm32 Bootloader修改:
找到工程下的common.h文件:
以下三個宏定義根據自己目標板的需求來定:
#define ApplicationAddress      0x8002000        //程序首地址
#define ApplicationSize         120000           //目標程序預留空間
#define STM32F10X_HD                         //目標板芯片類型

stm32目標板程序.bin偏移地址修改:
有兩個地方:
1找到system_stm32f10x.c
#define VECT_TAB_OFFSET  0x2000 /*!< Vector Table base offset field.


關鍵字:stm32  Bootloader  YModem協議 引用地址:stm32 Bootloader設計(YModem協議)

上一篇:STM32 YMODEM實現bootloader
下一篇:STM32串口IAP(YModem)

推薦閱讀

隨著制造業在全球范圍內的興盛,“綠色、智能、技術、創新”為下一個時代的智能制造提出了新要求,在工業制造領域的“智能化、輕量化、創新化”等概念不斷被提出。工業機器人是未來智能制造的核心生產力,錢江機器人依托錢江工業機器人研究院頂級專家教授技術團隊,在焊接、噴涂、碼垛、拋光打磨、分揀等高端制造應用領域銳意進取,開拓創新,以核心技術優...
1. 開發環境開發平臺:官方開發板STM32F030R8-Nucleo開發軟件:Keil uVision5.24開發庫:STM32Cube_FW_F0_V1.9.02. 實驗現象根據官方例程,將UART1的DMA傳輸配置更改為UART2,但是使用UART2時,DMA的中斷都進入不了,一開始以為是時鐘未開啟導致的,后來仔細對比后并無異常。于是查看了STM32F030的參考手冊,DMA這一章,發現DMA的通道固定映射到相應的...
2020榮耀life沈陽店開業,榮耀總裁趙明在發布會后接受媒體采訪時稱,榮耀將在2020年推出大屏手機產品,但并未透露大屏手機產品的具體細節和發布時間。趙明表示:“榮耀是最開始做大屏手機的,這個系列我們還會有,今年也還會有產品發布”。在2020年的5G換機大潮下,各大廠商都在盡量選擇更為“均衡”的產品來爭取用戶和市場,少有針對細分用戶、滿足用戶個...
對于考慮使用電動汽車的人來說,真正的痛點在于電池的充電時間。據外媒報道,美國初創公司ATLIS Motor Vehicles開發的一種電池電芯,據稱可在不到15分鐘的時間內充滿電。(圖片來源:ATLIS公司)ATLIS宣布生產AMV電池電芯,并且正在開發自己的電池電芯和電池組,以為其ATLIS XP平臺和XT皮卡車提供動力,續航里程為300-500英里。電動中重型卡車XP平臺,...

史海拾趣

問答坊 | AI 解惑

如何理解參數“全功率帶寬”?

如何定義, 又如何使用“全功率帶寬”?…

查看全部問答∨

用最簡單的東西做你想要的-------功放

這里介紹一個設計小巧、線路簡單但性能不錯的三管音頻放大器。其電路見附圖。也許你在一些袖珍晶體管收音機可以看到一些與此類似的電路。 原理分析:   電路如圖所示,輸入極(9014)的基極工作電壓等于兩輸出極三極管的中點電壓,一般為電源電 ...…

查看全部問答∨

c51的8253求助

我用51控制8253進行計數工作,片選接P24,A1A0通過373接P00P01,以下是我的總線方式 #define cnt0_8253 XBYTE[0xe0f0] #define cnt1_8253 XBYTE[0xe0f1] #define cnt2_8253 XBYTE[0xe0f2] #define ctrl_8253 XBYTE[0xe0f3] 我的計數器可以選到, ...…

查看全部問答∨

progisp V1.67安裝不上??

我的電腦(臺式)上裝progisp167的USB驅動裝不上,為什么? 我是從www.zhifengsoft.com上下載的,解壓后不管是直接右擊usbprog.inf安裝還是插設備在向導里安裝,都裝不上。可是,同事的筆記本就能裝! www.zhifengsoft.com的網站上也沒有說怎么回 ...…

查看全部問答∨

關于rs232表達錯誤,再問一下

已知硬件串口是好的,如何用數字式萬用表測試串口是否有信號輸出?…

查看全部問答∨

我想買一臺2440的GPS用來改裝其他用途,要使用到幾個IO和串口。大家覺得行得通嗎?

還有,是不是把JTAG接口找出來,使用并口將win ce的bootLoader寫入,然后用USB寫入win ce系統就可以了。…

查看全部問答∨

尋找商業投資戰略合作伙伴

尋找商業投資戰略合作伙伴,目前有大量國際資本操作 ,已經在國內。擬項目:擬在廣西南寧市建立國內外匯市場投資機構。模式是以核心固定交易模式技術與交通銀進行合作,運用核心技術和私募國際資本獨立進行全球金融-外匯市場投資,也涉及黃金 股指 ...…

查看全部問答∨

串口at指令,讀取到的數據包括寫入的嗎?

發送\"at\\r\\n\",讀取的是\"at\\r\\n\\r\\nOK\\r\\n\",不僅是\"\\r\\nOK\\r\\n\",讀取的包括寫入的,at指令都是這個原理的嗎?…

查看全部問答∨

lpc 13XX class B庫有什么功能?

lpc 13XX  class B庫有什么功能?…

查看全部問答∨

LM3S中斷問題

    各位大哥大姐好,小弟在這里請教一個問題。我現在想用GPIO中斷,比如說PC7  IO接口,我配置好中斷寄存器后,低電平中斷,去接收一組連續高低信號,發送端按bit位發送,每次發送1bit,接收端怎么才能完整接收到數據。是不是 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 嘉禾县| 保靖县| 乌海市| 大余县| 贞丰县| 昌平区| 广东省| 成安县| 二连浩特市| 舞钢市| 孝感市| 汝城县| 龙游县| 青冈县| 改则县| 凉城县| 保德县| 澜沧| 辽阳县| 台东县| 昌黎县| 元朗区| 西乡县| 清水县| 巫溪县| 崇仁县| 密山市| 岫岩| 凯里市| 徐州市| 本溪| 宁远县| 峨边| 秭归县| 柳林县| 秦安县| 扬中市| 保亭| 大田县| 疏勒县| 临湘市|