基于stm32f4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法
【專利摘要】本發(fā)明涉及一種基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法,通過(guò)編譯連接STM32F4_bootloader工程代碼,將最終執(zhí)行代碼下載到系統(tǒng)板,啟動(dòng)后就可以看到boot界面。STM32F4的引導(dǎo)加載程序bootloader通過(guò)上位機(jī)的串口與STM32F4系統(tǒng)連接,可以實(shí)現(xiàn)通過(guò)串口將上位機(jī)中已經(jīng)編譯連接后的*.bin文件下載到STM32F4的內(nèi)部Flash固定位置中、將STM32F4內(nèi)部Flash固定位置中的內(nèi)容上傳到上位機(jī)文件、從STM32F4內(nèi)部FLASH固定位置開(kāi)始執(zhí)行程序。解決了下載程序需要硬件下載器的不便性。設(shè)計(jì)實(shí)現(xiàn)了STM32F4控制器的啟動(dòng)程序,提出了使用該軟件下載器下載應(yīng)用程序必須進(jìn)行的修改,實(shí)現(xiàn)了應(yīng)用程序的下載功能,并進(jìn)一步提出應(yīng)用現(xiàn)有的網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)應(yīng)用程序的遠(yuǎn)程下載功能。
【專利說(shuō)明】基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種嵌入式處理器,特別涉及一種基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]STM32F4是ARM最新的嵌入式處理器Cortex M4,常用于控制和信號(hào)處理功能混合的數(shù)字控制市場(chǎng)。該控制器(MCU)提高了運(yùn)行速度,增加了信號(hào)處理功能,同時(shí)增加了浮點(diǎn)運(yùn)算單元(FPU)、自適應(yīng)實(shí)時(shí)加速器、32位多重AHB總線矩陣和多通道DMA控制器、數(shù)字信號(hào)控制器(DSC)等多個(gè)新特性。其集成度較高,功耗較低,內(nèi)置最高IMB片上Flash,192KBSRAM,正常工作頻率為168MHz,因此得到了廣泛的應(yīng)用。對(duì)于STM32F4系列產(chǎn)品,其程序啟動(dòng)運(yùn)行及程序下載方式有好幾種,但都需要硬件的下載器,如JLINK,對(duì)于程序更新非常不方便。
[0003]STM32F4啟動(dòng)方式及程序下載:STM32F4系列產(chǎn)品上電啟動(dòng)時(shí)按照其硬件啟動(dòng)管腳B00T1和Β00Τ0決定,如表1所示STM32F4系列啟動(dòng)管腳配置。對(duì)于不同的啟動(dòng)方式,程序駐扎空間也不同,表2列出了 STM32F407存儲(chǔ)區(qū)域配置情況。通常用戶應(yīng)用程序燒寫在閃存Flash中,因此硬件配置成Β00Τ0為接地。當(dāng)在調(diào)試過(guò)程中為了測(cè)試結(jié)果,也經(jīng)常在內(nèi)嵌SRAM中測(cè)試,此時(shí)需要配置成B00T1和O均接成高電平。另外STM32F4還提供了系統(tǒng)存儲(chǔ)區(qū)啟動(dòng)的方式,即將BOOTl-O接成01。此方式主要目的是為了使用ST公司提供的FlashLoader通過(guò)串口下載用戶程序的方法。但是這種方式必須執(zhí)行ST的Flash Loader程序,并且最不方便的是必須在燒寫程序時(shí),配置BOOTl-O為01,燒好以后將Β00Τ0改接為地。通常下載程序主要通過(guò)開(kāi)發(fā)器或下載器如JLINK等實(shí)現(xiàn),在Keil uvision MDK集成開(kāi)發(fā)環(huán)境中,JLINK可以同時(shí)作為調(diào)試器, 并且可以實(shí)現(xiàn)單步調(diào)試。
[0004]表1
【權(quán)利要求】
1.一種基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法,其特征在于,包括如下具體步驟: O將STM32F4的引導(dǎo)加載程序bootloader通過(guò)上位機(jī)的串口與STM32F4系統(tǒng)連接,程序開(kāi)始后即進(jìn)行STM32F4系統(tǒng)初始化和參數(shù)設(shè)置,同時(shí)解鎖STM32F4系統(tǒng)Flash,以備Flash的讀寫操作,初始化串口,開(kāi)啟串口中斷,STM32F4系統(tǒng)和上位機(jī)的通信完全通過(guò)串口 的 STM32F4_bootloader 來(lái)實(shí)現(xiàn); 2)STM32F4_bootloader每隔I秒向串口輸出信息,同時(shí)檢測(cè)上位機(jī)是否發(fā)送程序重下載命令信息,如果5秒內(nèi)沒(méi)有收到串口信息,則系統(tǒng)自動(dòng)運(yùn)行在Flash固定位置的用戶應(yīng)用程序,如5秒內(nèi)收到上位機(jī)數(shù)據(jù),則通過(guò)串口輸出菜單信息,用戶選擇使用STM32F4_bootloader處理用戶程序; 3)若用戶輸入‘I’,則進(jìn)行程序下載,通過(guò)串口將上位機(jī)中已經(jīng)編譯連接后的bin文件下載到STM32F4的內(nèi)部Flash固定位置中;若用戶輸入‘2’則進(jìn)行逆過(guò)程,將STM32F4內(nèi)部Flash固定位置中的內(nèi)容上傳到上位機(jī)文件;若用戶輸入‘3’則進(jìn)行用戶程序的自動(dòng)執(zhí)行,從STM32F4內(nèi)部FLASH固定位置開(kāi)始執(zhí)行程序。
2.根據(jù)權(quán)利要求1所述基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法,其特征在于,所述串口的發(fā)送接收數(shù)據(jù)采用了 YMODEM協(xié)議。
3.根據(jù)權(quán)利要求1所述基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法,其特征在于,所述步驟I) STM32F4系統(tǒng)初始化,STM32F4_bootloader程序駐扎STM32F4內(nèi)部Flash空間的SectorO,其系統(tǒng)地址為0x0800 0000?0x0800 3FFF,應(yīng)用程序下載空間固定從Sectorl即地址0x0800 4000開(kāi)始,應(yīng)用程序大小限制于在Sectorl?Sectorll之間,執(zhí)行應(yīng)用程序時(shí),固定從地址0x0800 4000開(kāi)始。
4.根據(jù)權(quán)利要求3所述基于STM32F4控制器的程序遠(yuǎn)程下載的實(shí)現(xiàn)方法,其特征在于,所述步驟I) STM32F4系統(tǒng)參數(shù)設(shè)置,按照正常流程生成的應(yīng)用程序是按照從Flash的O地址開(kāi)始執(zhí)行的,其地址配置、中斷向量表進(jìn)行修正,具體包括如下步驟: A:生成默認(rèn)運(yùn)行程序: 首先按照正常的操作流程、默認(rèn)配置建立應(yīng)用程序; B:修改應(yīng)用程序的地址空間: 按照默認(rèn)流程編譯連接產(chǎn)生的應(yīng)用程序,修改對(duì)應(yīng)于Flash的O地址,也即STM32F4的系統(tǒng)地址空間 SectorO,應(yīng)用 了 STM32F4_bootloader 以后,SectorO 空間由 STM32F4_bootloader占據(jù);修改Flash下載地址Sectorl,系統(tǒng)上電后首先執(zhí)行STM32F4_bootloader,當(dāng)下載、上傳或執(zhí)行應(yīng)用程序時(shí)按照從應(yīng)用程序下載空間Sectorl開(kāi)始; C:修改應(yīng)用程序的中斷向量表地址: 將原來(lái)中斷向量地址從Flash的O地址開(kāi)始,改為Flash下載地址Sectorl開(kāi)始,當(dāng)加了 STM32F4_bootloader以后,中斷向量表必須進(jìn)行偏移; D:將Keil uvision MDK環(huán)境中生成的axf文件轉(zhuǎn)換為bin文件: 在Keil uvision MDK的集成開(kāi)發(fā)環(huán)境中,默認(rèn)情況下生成*.axf格式的調(diào)試文件和*.hex格式的可執(zhí)行文件,將*.axf格式文件或*.hex格式文件轉(zhuǎn)換成二進(jìn)制*.bin格式的文件。
【文檔編號(hào)】G06F9/445GK103514018SQ201310463593
【公開(kāi)日】2014年1月15日 申請(qǐng)日期:2013年10月8日 優(yōu)先權(quán)日:2013年10月8日
【發(fā)明者】袁三男, 王紹徐 申請(qǐng)人:上海電力學(xué)院