日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]IAP需要有兩個(gè)工程,第一個(gè)是Bootloader,第二個(gè)是Application同時(shí)將這兩份程序放在mcu的flash里的不同位置,啟動(dòng)時(shí)自動(dòng)進(jìn)入bootloader(可選擇)進(jìn)行iap,成功后跳轉(zhuǎn)至application。那么IAP問(wèn)題簡(jiǎn)化成三個(gè)步驟,Ste

IAP需要有兩個(gè)工程,第一個(gè)是Bootloader,第二個(gè)是Application

同時(shí)將這兩份程序放在mcu的flash里的不同位置,啟動(dòng)時(shí)自動(dòng)進(jìn)入bootloader(可選擇)進(jìn)行iap,成功后跳轉(zhuǎn)至application。

那么IAP問(wèn)題簡(jiǎn)化成三個(gè)步驟,

Step1:做Bootloader工程

Step2:做Application工程

Step3:燒進(jìn)Flash的不同位置

Step1:需要做這些事情:

1:初始化IAP相關(guān)外設(shè)

2:下載文件(ymodem協(xié)議)

3: 寫(xiě)入Application程序存儲(chǔ)空間

雞:

IAP_Init();

SerialDownload();

具體實(shí)現(xiàn):

voidIAP_Init(void)

{

uint32_tt;

LEDInit();

SysTickInit();

USART_Configuration();

FLASH_If_Init();

for(t=2000;t>10;t>>=1)

{

LEDTogle(1);delayms(t);

}

}

voidSerialDownload(void)

{

uint8_tNumber[10]={0};

int32_tSize=0;

SerialPutString("Waitingforthefiletobesent...(press'a'toabort)nr");

Size=Ymodem_Receive(&tab_1024[0]);

if(Size>0)

{

SerialPutString("nnrProgrammingCompletedSuccessfully!nr--------------------------------rnName:");

SerialPutString(FileName);

Int2Str(Number,Size);

SerialPutString("nrSize:");

SerialPutString(Number);

SerialPutString("Bytesrn");

SerialPutString("-------------------n");

}

elseif(Size==-1)

{

SerialPutString("nnrTheimagesizeishigherthantheallowedspacememory!nr");

}

elseif(Size==-2)

{

SerialPutString("nnrVerificationfailed!nr");

}

elseif(Size==-3)

{

SerialPutString("rnnAbortedbyuser.nr");

}

else

{

SerialPutString("nrFailedtoreceivethefile!nr");

}

}


Step2:需要這樣干:

在Application工程中程序運(yùn)行的一開(kāi)始加上如下中斷拷貝即可

voidInterruptRemap(void)

{

u8i;

u32Data;

u32Address;

for(i=1;i<48;i++)

{

Data=*(__IOu32*)(0x08003000+i*4);

Address=0x20000000+(i*4);

*(__IOu32*)Address=(u32)Data;

}

SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);

}


Step3:這就樣

將兩個(gè)工程分別燒在不同的flash地址段中

A:bootloader

1:點(diǎn)Project選項(xiàng)卡,然后點(diǎn)Optionsfor Target選項(xiàng)如圖:


2:Target選項(xiàng)卡下有on-chip地址設(shè)置,bootloader放在0x8000000開(kāi)頭的0x3000空間內(nèi)

如圖:



然后正常手段燒入flash即可。

B:application

和上述設(shè)置手段一樣,只不過(guò)in-chip的IROM1設(shè)置起始地址為0x8003000,Size為mcu的Flash大小減去0x3000即可(注意是16進(jìn)制哦)

然后就祝你幸福了0.0

完整源碼:

http://blog.csdn.net/metalseed/article/details/40874461


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉