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

歷史上的今天

今天是:2025年02月01日(星期六)

2020年02月01日 | STM32F072使用SD卡進(jìn)行IAP升級(jí)

發(fā)布者:huanran 來(lái)源: eefocus關(guān)鍵字:STM32F072  SD卡  IAP升級(jí) 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

之前做的一個(gè)小項(xiàng)目,因?yàn)閯傞_(kāi)始沒(méi)有考慮到以后會(huì)經(jīng)常升級(jí),而每次升級(jí)都要旋開(kāi)4顆螺絲拆殼,然后燒程序,再裝殼,如果只要更新幾個(gè)倒沒(méi)啥感覺(jué),但是一下更新幾百個(gè),那工作量。。。。,正好板子上有SD卡,就想著寫個(gè)Bootloader程序,通過(guò)讀取SD卡中的Bin文件進(jìn)行IAP升級(jí),這樣可以大大簡(jiǎn)化以后的升級(jí)。IAP升級(jí)原理就不多說(shuō)了,網(wǎng)上相關(guān)的資料和帖子一大堆,這里簡(jiǎn)單介紹我做的IAP方案,歡迎大家批評(píng)指正!


Bootloader程序設(shè)計(jì)

bootloader程序的設(shè)計(jì)思路很簡(jiǎn)單,流程圖如下:

初始化程序就不介紹了,比較簡(jiǎn)單。主要介紹下Bin文件檢測(cè)以及IAP過(guò)程。我將IAP過(guò)程分為5個(gè)步驟,如下:

Step1:檢查是否存在升級(jí)文件,若存在,打開(kāi)后跳至Step2,若不存在或者打開(kāi)失敗,跳至Step5

Step2:擦除App程序?qū)?yīng)的扇區(qū),擦除成功后跳至Step3,若擦除失敗,跳至Step5

Step3:使用f_read()函數(shù)讀取Bin文件,每次讀取2048個(gè)字節(jié),并寫入Flash。當(dāng)文件全部被寫入flash后跳至Step4,若中間出現(xiàn)寫入錯(cuò)誤,跳至Step5

Step4:檢查棧頂?shù)刂罚D(zhuǎn)至App程序。若棧頂?shù)刂贩欠?,跳至Step5

Step5:此步表示本次升級(jí)失敗,死循環(huán),同時(shí)LED提示升級(jí)失敗,等待重新上電

查找升級(jí)文件時(shí)我固定從Update文件夾查找,所以只要將Bin文件拷貝至Update文件夾就行了。

五個(gè)步驟的轉(zhuǎn)換是通過(guò)switch函數(shù)實(shí)現(xiàn)的。代碼如下:


        while(1)

        {

            switch(iap_step)

            {

                /* Step1:檢查是否存在升級(jí)文件 */

                case 1:

                {

                    /* 查找升級(jí)文件 */

                    result = f_findfirst(&dj, &fno, "0:/Update", "FDR_update*.bin");

                    

                    /* 存在升級(jí)文件 */

                    if(result==FR_OK && fno.fname[0])

                    {

                        /* 獲取文件名字符串 */

                    #if _USE_LFN

                        fn_str = *fno.lfname ? fno.lfname : fno.fname;

                    #else

                        fn_str = fno.fname;

                    #endif 

                        /* 得到完整的文件名路徑 */

                        sprintf(fname_path,"/Update/%s",fn_str);   

                        

                        /* 打開(kāi)升級(jí)文件 */

                        result = f_open(&file_fdr,fname_path,FA_OPEN_EXISTING|FA_READ);

                       

                        if(result==FR_OK)

                        {

                            /* 打開(kāi)成功,準(zhǔn)備升級(jí) */

                            iap_step = 2;

                        }

                        else

                        {

                            /* 打開(kāi)失敗 */

                            f_close(&file_fdr);

                            f_closedir(&dj);

                            iap_step = 5;

                        }

                        

                    }

                    else

                    {

                        

                        /* 不存在升級(jí)文件,直接跳轉(zhuǎn) */

                        f_closedir(&dj);

                        iap_step = 4;

                        

                    }

                    break;

                }

                

                /* Step2:存在升級(jí)文件,先擦除扇區(qū) */

                case 2:

                {

                    FLASH_Unlock();

                    res = IAP_FLASH_Erase(APPLICATION_ADDRESS);

                    FLASH_Lock();

                    if( res )

                    {

                        iap_step = 3;

                    }

                    else

                    {

                        f_close(&file_fdr);

                        f_closedir(&dj);

                        iap_step = 5;

                    }

                    break;

                }

                

                /* Step3:扇區(qū)擦除成功,準(zhǔn)備依次讀取并寫入 */

                case 3:

                {

                    memset(appbuf,0xFF,2052);

                    f_read(&file_fdr,appbuf,2048,&br);

                    

                    FLASH_Unlock();

                    

                    res = IAP_FLASH_Write((u32*)appbuf,(u16)ceil(br/4.0f));

                    

                    FLASH_Lock();

                    

                    Toggle_LED_AP();

                    

                    if(res == 0)

                    {

                        f_close(&file_fdr);

                        f_closedir(&dj);

                        iap_step = 5;

                        

                    }

                    else

                    {

                        /* 文件讀完了 */

                        if(br<2048)

                        {

                            f_close(&file_fdr);

                            f_closedir(&dj);

                            f_unlink(fname_path);

                            iap_step = 4;    

                            

                        }

                        

                    }

                    break; 

                }

                

                /* Step4:跳轉(zhuǎn)至App程序 */

                case 4:

                {  

[1] [2]
關(guān)鍵字:STM32F072  SD卡  IAP升級(jí) 引用地址:STM32F072使用SD卡進(jìn)行IAP升級(jí)

上一篇:stm32f2 從 SD卡里面的讀取程序的bootloader
下一篇:stm32程序升級(jí)SD卡讀取hex文件寫入flash

推薦閱讀

;本程序用于驗(yàn)證 STC12C2052AD 系列 單片機(jī) 的看門狗及其溢出時(shí)間計(jì)算公式 ;看門狗及其溢出時(shí)間 = (12 * Pre_scale *32768)/Oscillator Frequency WDTCR EQU 0E1H ;看門狗地址 WDT_TIME_LED EQU P1.5 ;用 P1.5 控制看門狗溢出時(shí)間指示燈, ;看門狗溢出時(shí)間可由該指示燈亮的時(shí)間長(zhǎng)度或熄滅的時(shí)間長(zhǎng)度表示 WDT_FLAG_L...
集微網(wǎng)消息,近日荷蘭網(wǎng)站LetsGoDigital放出了華為首款折疊手機(jī)的3D渲染圖,此次的渲染圖是基于之前爆料消息匯總制作的。(配圖來(lái)自:LetsGoDigital)據(jù)了解,余承東曾表示華為將在MWC 2019上展示首款5G折疊屏智能機(jī)。并且在去年華為已經(jīng)提交了一系列產(chǎn)品名稱商標(biāo)申請(qǐng),其中包括 Mate Flex、Mate Flexi、Mate Fold 和 Mate F 。(配圖來(lái)自:LetsG...
  針對(duì)當(dāng)前應(yīng)用的復(fù)雜性,SOC芯片更好能能滿足應(yīng)用和媒體的需求,集成眾多接口,用ARM做為應(yīng)用處理器進(jìn)行多樣化的應(yīng)用開(kāi)發(fā)和用戶界面和接口,利用DSP進(jìn)行算法加速,特別是媒體的編解碼算法加速,既能夠保持算法的靈活性,又能提供強(qiáng)大的處理能力。德州儀器(TI)繼第一系列Davinci芯片DM644x之后,又陸續(xù)推出了DM643x,DM35x/36x,DM6467,OMAP35x,OMAP...
此前,在驍龍技術(shù)峰會(huì)上,高通移動(dòng)業(yè)務(wù)高級(jí)副總裁 Alex Katouzian 評(píng)價(jià)了蘋果 M1 版 MacBook,表示它不支持 4G 和 5G 網(wǎng)絡(luò),無(wú)法讓設(shè)備隨時(shí)保持在線。 事實(shí)上,蘋果過(guò)去注冊(cè)過(guò)多個(gè)計(jì)算機(jī)相關(guān)的蜂窩網(wǎng)絡(luò)技術(shù)專利,能夠讓 Mac 系列產(chǎn)品在不使用 Wi-Fi 的情況下,像 iPhone/iPad 一樣直接連接移動(dòng)網(wǎng)絡(luò)。雖然 M1 版 MacBook 沒(méi)能支持蜂窩...

史海拾趣

問(wèn)答坊 | AI 解惑

用CMOS技術(shù)實(shí)現(xiàn)高速模數(shù)轉(zhuǎn)換器

 通信用接收器的發(fā)展趨勢(shì)是必需在信號(hào)剛一進(jìn)入接收器信號(hào)通道時(shí)就進(jìn)行取樣,并配備有精確的測(cè)試儀,而要達(dá)到這個(gè)目標(biāo)就要依賴超高速模擬數(shù)字轉(zhuǎn)換器來(lái)實(shí)現(xiàn)。美國(guó)國(guó)家半導(dǎo)體首推的 ADC081000 芯片是一款模擬輸入帶寬高達(dá) 1.8 GHz 的 8 位 1GSPS ...…

查看全部問(wèn)答∨

電量隔離放大器 順源科技產(chǎn)品資料下載索引

電量隔離放大器 順源科技產(chǎn)品資料下載索引2009-06-3 順源科技產(chǎn)品資料索引順源科技常用產(chǎn)品資料索引 (1)  一進(jìn)二出、二進(jìn)二出 模擬信號(hào)磁電隔離變送器。 一進(jìn)二出模擬信號(hào)磁電隔離變送器:DIN 1X2 ISO EM系列產(chǎn)品具有全量程范圍內(nèi)極高的線性度( ...…

查看全部問(wèn)答∨

幾百一個(gè)的三極管老燒,跪求高手指點(diǎn)

我用功放管3886驅(qū)動(dòng)一對(duì)三極管對(duì)管做擴(kuò)流,然后三極管的輸出再驅(qū)動(dòng)變壓器來(lái)做最終輸出的,但是PNP的三極管老實(shí)被擊穿,也加了一些保護(hù)還是沒(méi)用,這個(gè)三極管幾百一個(gè),現(xiàn)在搞的都不趕試,跪求高手幫忙分析下,?!?

查看全部問(wèn)答∨

請(qǐng)問(wèn)硬件維護(hù)工程師如何評(píng)定初級(jí)、中級(jí)和高級(jí)

rt。請(qǐng)問(wèn)有相關(guān)的認(rèn)證考試嗎? 軟件方面有國(guó)家軟考,硬件方面的有嗎?…

查看全部問(wèn)答∨

這些 怎么定義 state_machine rcvdat retval

這些  怎么定義   state_machine   rcvdat  retval      是串口通信解析的          if(state_machine == 0)     // 協(xié) ...…

查看全部問(wèn)答∨

小弟剛剛新建了一個(gè)BLOG,歡迎各位朋友去踩踩

小弟剛剛新建了一個(gè)BLOG,歡迎各位朋友去踩踩 pcboy.3u.cn 在5月23日以前去注冊(cè)的朋友還可以在我的BLOG里發(fā)表技術(shù)日志或技術(shù)文章 …

查看全部問(wèn)答∨

有趣的電子訊息彈弓

在調(diào)皮男生的童年記憶當(dāng)中,絕對(duì)不會(huì)少了彈弓這一好伙伴,它可是戰(zhàn)爭(zhēng)游戲中不可或缺的高殺傷力武器。一家柏林公司則將這一經(jīng)典玩具進(jìn)行改裝,讓它附加上高科技組件,變身成為一款獨(dú)特的訊息發(fā)射端。只要在電子彈弓的輸入按鈕上編寫好訊息,然后拉動(dòng) ...…

查看全部問(wèn)答∨

stm32的USB問(wèn)題

為什么再XP下應(yīng)用正常的STM32做的USB鍵盤,到win2000下不能識(shí)別?系統(tǒng)提示設(shè)備不能啟用,應(yīng)該是沒(méi)有正確裝載HID驅(qū)動(dòng)。此機(jī)器可以正常使用買來(lái)的USB鍵盤。后用BUSHOUND抓包??吹皆蚴窃O(shè)備描述符發(fā)送不完整。但是在XP下沒(méi)有任何問(wèn)題,整個(gè)描述 ...…

查看全部問(wèn)答∨

關(guān)于STM32F103的GPIO等幾個(gè)問(wèn)題

最近開(kāi)始搞stm32開(kāi)發(fā)項(xiàng)目,有幾個(gè)問(wèn)題想請(qǐng)教一下:   1.GPIO的設(shè)置,輸入和輸出怎么切換啊?比如在做模擬I2C時(shí),SDA腳作為數(shù)據(jù)口,有輸入也有輸出的時(shí)候,怎么切換的,我網(wǎng)上看了一個(gè)stm32的例程,好像沒(méi)有切換輸入輸出模式,直接 ...…

查看全部問(wèn)答∨

我做了個(gè)板通過(guò)BOOT SPI 16位模式加載程序有幾個(gè)問(wèn)題想請(qǐng)教

我做了個(gè)板通過(guò)BOOT SPI 16位模式加載程序有幾個(gè)問(wèn)題想請(qǐng)教 1.如何把我寫的程序轉(zhuǎn)換為數(shù)據(jù)格式,是不是通過(guò)那個(gè)HEX55?還是直接SAVE DATA,如果用后者 應(yīng)該從哪里開(kāi)始SAVE 2.BOOT手冊(cè)里說(shuō)CLKX的頻率=244* DSPCLK(是不是就是CLKIN的頻率) 如果是的 ...…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 津市市| 滁州市| 辽宁省| 富蕴县| 南溪县| 东方市| 海城市| 泸水县| 仙游县| 综艺| 弥勒县| 扎鲁特旗| 汽车| 蓬莱市| 米脂县| 呼和浩特市| 商南县| 绥滨县| 南康市| 平舆县| 水城县| 高雄市| 康平县| 昭苏县| 宣武区| 乌拉特后旗| 汉川市| 梧州市| 眉山市| 北流市| 龙山县| 烟台市| 巴林左旗| 甘肃省| 舞钢市| 周宁县| 淳安县| 开鲁县| 星座| 全州县| 萍乡市|