当前位置:首页 > 单片机 > 单片机
[导读]前几天在网上看到了一个sd bootloader,但是下载需要积分。于是想着自己写个简单的sd卡的bootloader,实际上就是stm32的iap功能了。简单介绍一下stm32的iap吧,以下内容摘抄自网络。IAP是In Application Programming

前几天在网上看到了一个sd bootloader,但是下载需要积分。于是想着自己写个简单的sd卡的bootloader,实际上就是stm32的iap功能了。简单介绍一下stm32的iap吧,以下内容摘抄自网络。

IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。

通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:

1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行

第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。

对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,通常会安排第一部分代码处于Flash的开始区域,而第二部分代码紧随其后。

在第二部分代码开始执行时,首先需要把CPU的中断向量表映像到自己的向量表,然后再执行其他的操作。

如果IAP程序被破坏,产品必须返厂才能重新烧写程序,这是很麻烦并且非常耗费时间和金钱的。针对这样的需求,STM32在对Flash区域实行读保护的同时,自动地对用户Flash区的开始4页设置为写保护,这样可以有效地保证IAP程序(第一部分代码)区域不会被意外地破坏。

stm32的iap功能,官方也有com,i2c以及基于USB的DFU,大致原理都是前面所说的那样。对于sd的bootloader,也就是前面所说的第一部分代码实现的主要过程是使用fatfs系统读取sd卡上的bin文件,并把数据写到第二部分代码的向量表起始位置,我的设定是0x8003000处。写完后读取flash校验。就是如此的简单,废话不多说上代码!


/*******************************************************************************

*FunctionName:main.

*Description:mainroutine.

*Input:None.

*Output:None.

*Return:None.

*******************************************************************************/

intmain(void)

{

DFU_Button_Config();

/*CheckiftheKeypush-buttononSTM3210x-EVALBoardispressed*/

if(DFU_Button_Read()!=0x00)

{/*Testifusercodeisprogrammedstartingfromaddress0x8003000*/

if(((*(__IOuint32_t*)ApplicationAddress)&0x2FFE0000)==0x20000000)

{/*Jumptouserapplication*/

JumpAddress=*(__IOuint32_t*)(ApplicationAddress+4);

Jump_To_Application=(pFunction)JumpAddress;

/*Initializeuserapplication'sStackPointer*/

__set_MSP(*(__IOuint32_t*)ApplicationAddress);

Jump_To_Application();

}

}/*OtherwiseentersDFUmodetoallowusertoprogramhisapplication*/

UsartInitilize();

RCC_HSICmd(ENABLE);

NVIC_Initilize();

ComPrint("**********************************n");

ComPrint("*STM32SDBootloader*n");

ComPrint("*V1.0*n");

ComPrint("**********************************n");

ComPrint("nSD-LODER:startflashprogram......n");

if(SD_Initilize()==SD_OK)

{

FRESULTstatus=FR_OK;

uint8_tflashProgramSuccess=0;

uint8_tcheckSum=0;

uint32_tsize=0;

uint32_tlength=0;

uint32_tsectorAddr=0;

uint32_ti=0,j=0,k=0,numberOfPage=0;

f_mount(0,&fsrc);

status=f_open(&fp,"upload.bin",FA_READ+FA_OPEN_EXISTING);

if(status==FR_OK&&(size=f_size(&fp))!=0)

{

ComPrint("nSD-LODER:openupload.binsuccess,size=%dKBnn",size/1024);

numberOfPage=size/FLASH_PAGE_SIZE+1;

Hal_Unlock();

for(i=0;i

{

ComPrint("*");

sectorAddr=ApplicationAddress+i*FLASH_PAGE_SIZE;

Hal_Erase(sectorAddr);

for(j=0;j

{

memset(MAL_Buffer,0x0,wTransferSize);

status=f_read(&fp,MAL_Buffer,wTransferSize,&length);

if(status!=FR_OK||length==0)

{

ComPrint("SD-LODER:nreadfilefailedwhenprogrampage%d!n",i);

gotoEnd_Flash;

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭