日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

远程升级stm32程序_STM32IAP远程升级带C#上位机

發布時間:2024/10/12 C# 107 豆豆
生活随笔 收集整理的這篇文章主要介紹了 远程升级stm32程序_STM32IAP远程升级带C#上位机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關注“電子芯吧客” 每周都有精彩文章推薦

????在很多場景應用中需要我們的控制器能夠實現遠程升級,比如我之前做的一個項目中,項目的主要需求就是老師的電腦能夠獲取學生的實驗設備的實驗數據。第一批測試完成之后,所有的學生設備的主控板子都上線了。運行了大概一個月,買家那邊發現有些功能需要更新。沒辦法只能把這批100多塊主控板從學生設備的機箱里面拆出來,然后一塊一塊燒寫好程序之后,再裝回去。這個時候就很后悔當初沒有把IAP遠程升級的功能加到這里面去。加了這個功能一方面好和買家談價錢,另一方面方便自己。

? ? IAP的大概意思就是在自己目前運行的程序中,對用戶的另外部分內存進行燒寫,燒寫完成之后,再跳轉到燒寫好的那一部分程序(也就是升級之后的程序)當中。所以這里面大概需要了解的是

1、STM32的ROM起始地址以及ROM大小;

2、STM32對flash的讀寫;

3、程序中斷的指針偏移等。

? ? 要實現IAP遠程升級,程序包含兩部分

1、IAP跳轉程序;

2、APP運行程序。

大致思路為:程序開始從IAP進入,IAP中判斷是否有收到升級包,如果沒有升級包跳轉到APP程序。有則燒寫新的升級包。跳轉至APP程序后,APP程序完成我們項目需求的功能,并加上一個跳轉回IAP的指令。

? ? 上位機程序中,將固件分包為2K一包,包頭加上0X5A的固定頭,以及長度字符(以0xA5為結尾標志),0xaa為包尾。IAP程序從0x08000000-0x08010000,APP從0x0801000開始。

? ? 下面為IAP的主函數,IAP程序從0x08000000開始,主要設置了串口1、按鍵、LED燈,以及延遲函數。程序采用串口1接收升級的固件包。當接收到數據時,先判斷包頭和包尾是否正確。再將分包放入待燒寫的數組中,燒寫后,燒寫的位置 Flash_App_Pos 也相應的增加剛才接收的升級包的長度(去除了包頭包尾)。待接收到0xA5的包時,表示接收到最后的一包升級分包。接收完成后,燒寫成功后,即可開啟跳轉。因篇幅問題,將程序中的1分鐘未接收到升級包便跳轉至APP程序略去。程序如下:

函數主要有設置偏移的語句? SCB->VTOR = FLASH_BASE; //@@* Vector Table Relocation in Internal FLASH. */FLASH_BASE=0X08000000;

int main(void)
?{?? ?
?? ?u8 t,half_s;
?? ?u8 times=0;
?? ?u16 oldcount=0;?? ??? ??? ??? ??? ??? ?//老的串口接收數據值
?? ?u16 applenth=0;?? ??? ??? ??? ??? ??? ?//接收到的app代碼長度
?? ?u16 buf=0;
?? ?u8 CodeSize;?
?? ?u16 i;?
?? ?SCB->VTOR = FLASH_BASE; /@@* Vector Table Relocation in Internal FLASH. */?? ??
?? ?delay_init();
?? ?uart_init(115200);
?? ?LED_Init();
?? ?KEY_Init();
?? ?STMFLASH_Read(CONFIG_PARAM_ADDR, &buf, 1);
?? ?if(buf!=0xAA)
?? ?{?? ?
?? ???if(((*(vu32*)0x8000000)&0x2FFE0000)==0x20000000)?? ?//檢查棧頂地址是否合法.
?? ???? {
?? ??? ?delay_init();
?? ??? ?uart_init(115200);
?? ??? ?LED_Init();
?? ??? ?KEY_Init();
?? ??? }
?? ?}
?? __enable_irq(); ??? ??? ?
? while(1)
?? ?{?? ??? ?
?? ?if(USART_RX_CNT)
?? ?{
?? ?????if(oldcount==USART_RX_CNT)//新周期內,沒有收到任何數據,認為本次數據接收完成.
?? ??? ?{
?? ??? ??? ?applenth=USART_RX_CNT;
?? ??? ??? ?if(USART_RX_BUF[0]==0x5a&&USART_RX_BUF[applenth-1]==0xaa)
?? ??? ??? ?{
?? ??? ??? ??? ?LED0=0;?? ?
?? ??? ??? ??? ?for(i=0;i?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?Upstring[i]=USART_RX_BUF[i+2];
?? ??? ??? ??? ?}?? ?
?? ??? ??? ??? ?LED0=1;
?iap_write_appbin(Flash_App_Pos,Upstring,applenth-3);//更新FLASH代碼?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?Flash_App_Pos+=(applenth-3);?? ??? ??? ??? ?
?? ??? ??? ??? ?backdata[1]=USART_RX_BUF[1];
?? ??? ??? ??? ?Usart1_SendStr_length(backdata,3);
?? ??? ??? ??? ? if(USART_RX_BUF[1]==0xa5)
?? ??? ??? ??? ?{
?? ??? ??? ??? ???? iap_load_app(FLASH_APP1_ADDR);//執行FLASH APP代碼FLASH_APP1_ADDR=0X08010000
?? ??? ??? ??? ?}?? ??? ??? ??? ??? ?
?? ??? ??? ?}?? ??? ??? ??? ?
?? ??? ??? ?oldcount=0;
?? ??? ??? ?USART_RX_CNT=0;?? ??? ??? ??? ??? ??? ??? ?
?? ??? ?}else oldcount=USART_RX_CNT;?? ??? ??? ?
?? ?}
?? ?t++;
?? ?delay_ms(100);
?}
}

IAP程序點開魔法棒設置size為0x10000.

APP程序主要采用了FreeRTOS操作系統,創建了LED翻轉的任務,串口1接收到數據之后之后處理的任務,以及看門狗喂狗任務。同樣在程序開始時,需要設置偏移。
NVIC_SetVectorTable(FLASH_APP1_ADDR,0);
串口接收到0XAA,0XBB,0XCC,0XDD,0XEE。的跳轉回IAP的指令之后,便寫入config之后,開始跳轉。跳轉前,關閉所有中斷,并清除標志位。
程序如下:

總結

以上是生活随笔為你收集整理的远程升级stm32程序_STM32IAP远程升级带C#上位机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲成人精选 | 国产婷婷色一区二区三区 | 91精品国产91综合久久蜜臀 | 波多野结衣二区三区 | 亚洲第一区在线播放 | 九色影视| 中文字幕在线视频网站 | 99r热| 麻豆社 | 日本激情一区二区 | 亚洲欧洲精品成人久久奇米网 | 激情四虎 | 国产亚洲一区二区不卡 | 一区二区日韩国产 | 中文字幕在线观看你懂的 | 青春草视频在线免费观看 | 亚洲熟女乱综合一区二区 | 男女啪啪网站 | 先锋影音av资源在线观看 | 日日燥夜夜燥 | 亚洲国产福利视频 | 在线观看一级片 | 国产精品一区二区三区在线看 | 国偷自产av一区二区三区 | 亚洲欧美日韩网站 | 久久涩涩| xxxxav| 国产精品亚洲专区无码牛牛 | 高清视频一区二区三区 | 国产精品人成在线观看免费 | ,亚洲人成毛片在线播放 | av手机在线免费观看 | 三年在线观看视频 | 日本理论片午伦夜理片在线观看 | 和黑帮大佬的365 | 亚洲国产黄色 | 国产一区二区自拍 | 福利一区三区 | 伊人国产在线 | 日韩久久一区二区三区 | 国产精品丝袜黑色高跟 | 中国大陆一级毛片 | 日日日日操 | 男性裸体全身精光gay | 少女与动物高清版在线观看 | 国产睡熟迷奷系列精品视频 | 少妇免费看 | 天天尻 | 欧美一区亚洲一区 | 精品久久人妻av中文字幕 | 国产又爽又黄无码无遮挡在线观看 | 午夜一区 | 韩国三级中文字幕hd久久精品 | 亚洲黄v | 黄色小视频免费观看 | 亚洲精品资源在线 | av在哪里看 | 嫩草影院懂你的影院 | 国产亚洲欧美日韩高清 | 国产91传媒| 好吊色视频一区二区 | 男女啪啪在线观看 | 极品videosvideo喷水 | 国产精品久久久久久久无码 | 成人一二区| 亚洲电影一区二区三区 | 国产又爽又黄又嫩又猛又粗 | 淫语对白 | 男人的天堂在线播放 | xxx视频网站 | 中文字幕在线视频一区 | 国产污在线观看 | 一个人看的www视频在线观看 | 久久婷婷视频 | 黄色在线观看网址 | free性欧美hd另类 | 国内激情自拍 | www.日批 | 91精品国产一区 | 4438亚洲最大 | 婷婷午夜影院 | 欧美日韩在线观看视频 | 国产精品亚州 | 最新国产拍偷乱偷精品 | 日韩中文字幕视频在线观看 | 女人性做爰24姿势视频 | 成人久久 | av网站观看 | 国内三级在线 | 亚洲精品国产片 | 国产男女在线 | 日本黄色一区二区三区 | 操碰视频 | 少女视频的播放方法 | 在线观看理论片 | 日韩黄片一区二区三区 | 日韩伦理在线视频 | 91国偷自产中文字幕久久 | 欲色网站|