亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
stm32 IAP Bootloader V1.0程序源碼
[打印本頁]
作者:
feilonglong
時間:
2018-8-3 11:43
標題:
stm32 IAP Bootloader V1.0程序源碼
1.登陸進去 root coolKids
2.殺掉之前的程序
用 ps -ef 看一下兩個程序的PID號 run.sh 和 sbcmon2.arm
然后用kill PID號 殺掉兩個程序
3 進去alarm目錄 啟動程序 ./sendfile
就是alarm目錄下
chmod 775 sendfile 權限設置
echo 123456 >> /dev/ttyS2 串口發送數據
重啟命令:reboot
本實驗將實現如下功能:開機的時候先顯示提示信息,然后等待串口輸入接收APP程序(無校驗,一次性接收),在串口接收到APP程序之后,即可執行IAP。如果是SRAM APP,通過按下KEY0即可執行這個收到的SRAM APP程序。如果是FLASH APP,則需要先按下KEY_UP按鍵,將串口接收到的APP程序存放到STM32F4的FLASH,之后再按KEY2既可以執行這個FLASH APP程序。通過KEY1按鍵,可以手動清除串口接收到的APP程序。DS0用于指示程序運行狀態。
注意:
1,SRAM APP代碼的起始地址必須是:0X20001000,FLASH APP代碼的起始地址必須是:0X08010000。
2,大家在創建APP代碼的時候,切記要設置中斷向量偏移量!!
stm32單片機源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "stmflash.h"
#include "iap.h"
#include <absacc.h>
u8 uartRxBuf[DEFpUartRxBufLen];
u8 uartTxBuf[DEFpUartTxBufLen];
u32 FlashData[1024*28]__at(0x20002000);
IapStr vIapStr = {
FlashData,
uartRxBuf,
uartTxBuf,
0,
0,
0,
0,
0,
0,
1
};
int main(void)
{
u16 t,error=0;
u16 flag;
u8 *pString;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
WatchdogInit();
FeedDog();
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
FeedDog();
PWR_BackupAccessCmd(ENABLE);
PWR_BackupRegulatorCmd(ENABLE);
delay_init(168); //初始化延時函數
uart_init(460800); //初始化串口波特率為115200
UART4_Configuration();
printf("\r\n系統上電!");
// while(PWR_GetFlagStatus(PWR_FLAG_BRR) == RESET);
FeedDog();
// if(*(u16 *)(BKPSRAM_BASE+2) < 50)
// *(u16 *)BKPSRAM_BASE = 0x5aa5;
// *(u16 *)(BKPSRAM_BASE+2) = 0;
// if(*(u16 *)BKPSRAM_BASE == 0x5aa5)
vIapStr.FlashProgramFlag = 1;
// else
// vIapStr.FlashProgramFlag = 0;
*(u16 *)BKPSRAM_BASE = 0;
delay_init(168); //初始化延時函數
uart_init(460800); //初始化串口波特率為115200
UART4_Configuration();
printf("\r\n系統啟動!");
if(vIapStr.FlashProgramFlag)
printf("\r\n系統燒寫請求。");
// while(1)
// {
// delay_ms(1000);
// printf("\r\n系統啟動!");
// FeedDog();
// }
FeedDog();
while(1)
{
if(vIapStr.FlashProgramFlag)
{
printf("\r\n等待接收程序數據......");
for(vIapStr.Rx = 0,t=0;t<10000;t++)
{
FeedDog();
delay_ms(1);
if(vIapStr.Rx >5) //開始接收數據
{
printf("\r\n開始接收程序數據");
break;
}
}
vIapStr.OldRx = 0;
if(vIapStr.FlashProgramFlag == 1 && t>9999)
{
vIapStr.FlashProgramFlag = 0;
printf("\r\n等待超時!");
}
vIapStr.Fram = 0;
t = 0;
while(vIapStr.FlashProgramFlag&&t++<4000)
{
FeedDog();
delay_ms(2);
if((vIapStr.Rx)&&(vIapStr.OldRx == vIapStr.Rx))//新周期內,沒有收到任何數據,認為本次數據接收完成.
{
t = 0;
delay_ms(2);
flag = FlashDataCrc((u8 *)vIapStr.pUartRxBuf,(u8 *)vIapStr.pData,vIapStr.Rx,&vIapStr.Fram);
if(flag == 0)
{
printf("\r\n第%d包數據接收錯誤,重新請求",vIapStr.Fram+1);
error++;
if(error>5)
{
vIapStr.FlashProgramFlag = 0;
printf("\r\n超時正常啟動");
break;
}
}else
printf("\r\n第%d包數據接收完成",vIapStr.Fram);
vIapStr.OldRx = 0;
vIapStr.Rx = 0;
if(flag ==2)
{
printf("\r\n程序接收完成");
error = 0;
if(((*(vu32*)(0x20002000+4))&0xFF000000)==0x08000000)//判斷是否為0X08XXXXXX.
{
pString = (u8 *)(0x20002000 + 0x10000);
if(pString[0] == 'd' &&
pString[1] == 'm' &&
pString[2] == 'w' &&
pString[3] == 'A' &&
pString[4] == 'p' &&
pString[5] == 'p'
)
{
printf("\r\n程序版本號:%s",pString);
printf("\r\n開始更新固件...");
iap_write_appbin(FLASH_APP1_ADDR,(u8 *)vIapStr.pData,vIapStr.FlashLenth);//更新FLASH代碼
FeedDog();
printf("\r\n固件更新完成!");
printf("\r\n開始執行FLASH用戶代碼!!");
iap_load_app(FLASH_APP1_ADDR);//執行FLASH APP代碼
}else
{
printf("\r\n程序版本錯誤!");
printf("\r\n請重新下載應用程序!");
vIapStr.FlashProgramFlag = 2;
vIapStr.Fram = 0;
}
}else
{
printf("\r\n非FLASH應用程序,無法執行!");
printf("\r\n請重新下載應用程序!");
vIapStr.FlashProgramFlag = 2;
vIapStr.Fram = 0;
}
}
}
else
vIapStr.OldRx = vIapStr.Rx;
}
}
else
{
FeedDog();
printf("\r\n開始執行FLASH用戶代碼!!");
if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)//判斷是否為0X08XXXXXX.
{
iap_load_app(FLASH_APP1_ADDR);//執行FLASH APP代碼
}else
{
printf("\r\n非FLASH應用程序,無法執行!");
printf("\r\n請重新下載應用程序!");
vIapStr.FlashProgramFlag = 2;
vIapStr.Fram = 0;
}
}
}
}
復制代碼
所有資料51hei提供下載:
IAP Bootloader V1.0-18.rar
(494.94 KB, 下載次數: 53)
2018-8-3 16:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
tianyu22
時間:
2019-8-1 15:31
正好學習stm32的備份區怎么使用
作者:
云飄火燒
時間:
2019-12-2 10:21
支持一下
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1