1. 概念
IAP:In-Application Programming”,中文解释为“在程序中编程”。ICP(In-Circuit Programming)技术即通过在线仿真器对单片机进行程序烧写,而ISP技术则是通过单片机内置的bootloader程序引导的烧写技术。
2. 框架设计
简要说明: 将STM32 的Flash 512Kb 分为两个部分,一个256Kb 用来存放最小系统,一个256Kb用来存放APP代码。具体最小系统与APP的Flash大小可根据实际情况调整。
难点解析:
最小系统与APP的存放地址
要找到最小系统与APP的存放地址,那么就需要了解STM32的Flash存储空间,如下:
最小系统与APP的跳转
系统启动之后首先进入最小系统,这是由硬件决定的,进入最小系统之后,再判断APP系统烧录的地址的栈顶指针是否正确来判断是否烧录了APP,启动APP。官方例程代码如下:
/* Test if user code is programmed starting from address "ApplicationAddress" */
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
上面这个是第一种方法,还有第二种方法是:在将APP程序写入Flash后在Flash中写入相关信息,最小系统程序不断检测读取该信息,如读到该信息则写一个标志位到SRAM中,重启MCU,剩下的同样利用上面的代码,只不过判断条件改为SRAM中的标志位了。
启动顺序
关于启动顺序,网上有比较详细的说明没有使用IAP的
使用IAP的
最小系统与APP的编译
最小系统的编译直接按照正常的工程编译就行,而APP的编译则需要特殊处理:keil中设置如下:
上面这个是针对程序的存放的Flash地址的,还需要对中断向量表进行重地位,可使用函数void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset);
在APP main函数中调用该函数设置偏移量,偏移量要等与程序 Flash相等的偏移量
上一篇:将STemWin移植到在STM32F103RCT6上的FreeRTOS上
下一篇:STM32L152 外部中断配置
推荐阅读
史海拾趣
在发展过程中,Bytes公司注重与其他企业和机构的合作。公司与多家知名企业建立了战略合作关系,共同开发新产品、拓展新市场。同时,公司还积极参与行业组织和协会的活动,推动行业标准的制定和实施。通过合作与共赢的方式,Bytes公司实现了资源共享、优势互补,进一步提升了自身的竞争力和影响力。
ECS公司成立于XXXX年,由一群热衷于云计算技术的工程师创立。在创立初期,公司就明确了以提供高效、弹性的云服务为目标。他们深入研究了虚拟化技术、自动化管理等关键技术,成功推出了ECS服务,为客户提供按需分配的计算资源。这一创新的服务模式迅速吸引了众多客户的关注,ECS公司开始在云服务市场崭露头角。
Altus Technology Inc自成立以来,始终将技术创新作为公司发展的核心驱动力。在早期,公司研发团队通过不懈努力,成功开发出了一款具有革命性的芯片,这款芯片在性能和功耗上均优于当时的同类产品。凭借这一技术突破,Altus在市场上迅速获得了一席之地,并吸引了大量合作伙伴和投资人的关注。随着技术的不断迭代和升级,Altus逐渐在电子行业中树立了技术领先的形象,并持续推出了一系列创新产品,巩固了市场地位。
服务:Hartmann Codier GmbH深知客户是企业发展的基石。因此,公司始终将客户服务放在首位,致力于为客户提供优质的产品和服务。公司建立了完善的客户服务体系,包括售前咨询、售中支持和售后服务等环节。
成果:通过不断优化客户服务流程和提高服务质量,Hartmann Codier GmbH赢得了广大客户的信赖和支持。公司与客户之间建立了长期稳定的合作关系,共同推动了电子行业的繁荣发展。同时,公司也根据客户的反馈和需求,不断改进产品和服务,以满足市场的不断变化和升级。
进入2015年后,随着物联网、5G等新兴技术的兴起,光电子器件的市场需求呈现出爆发式增长。Hei Inc Optoelectronic Division敏锐地捕捉到了这一市场趋势,及时调整产品策略,加大了对低功耗、小型化光电子模块的研发力度。公司推出的新一代光电子模块不仅满足了市场对于高效能、低能耗的需求,还凭借其优异的性价比迅速占领了市场份额。这一举措不仅推动了公司的快速增长,还进一步巩固了其在光电子领域的市场地位。
近年来,随着全球对环保和可持续发展的重视,Hei Inc Optoelectronic Division积极响应国家号召,将绿色可持续发展理念融入到企业的生产经营中。公司投入巨资研发环保型光电子器件,并不断优化生产工艺流程以降低能耗和排放。同时,公司还积极参与各类环保公益活动,提升公众对绿色光电子技术的认知度。这些举措不仅赢得了社会各界的广泛赞誉,还为公司树立了良好的企业形象和品牌形象。在绿色可持续发展的道路上,Hei Inc Optoelectronic Division正稳步前行,不断开创光电子领域的新篇章。
本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 家电中单相异步电机绕组的维修(上) 在一些家用电器(如电风扇、洗衣机、排风扇等)中,电机损坏后的维修, ...… 查看全部问答∨ |
|
(1)开关键盘输入交通灯初始时间,通过8031单片机P1输入到系统 (2) 由8031单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PC 口显示红、绿、黄灯的燃亮情况;由8255的PA、PB口显示每个灯的燃亮时间。   ...… 查看全部问答∨ |
|
TL431特点: TL431精密可调基准电源有如下特点:稳压值从2.5~36V连续可调;参考电压原误差+-1.0%,低动态输出电阻,典型值为0.22欧姆输出电流1.0~100毫安;全温度范围内温度特性平坦,典型值为50ppm;低输出电压噪声。 原 ...… 查看全部问答∨ |
|
1.首先上一个图,主芯片供电路 在该电路中电容作用: 1.EC4电容,它起的作用是什么,应该使用什么型号电容呢? 2.C16电容,它起的作用是什么,应该使用什么型号的贴片电容呢? 2.在一个电源设计中的电路 1.C3的作用是什么,应该使用什么型号电容呢? ...… 查看全部问答∨ |
小弟现在在做一个基于ARM的3G无线视频通信项目,3G现在已经在ARM上调通,对于下一步方案无限迷茫。 小弟的项目内容是,在PC端用3G发出一个视频文件,然后ARM板接收并传出这个视频文件 请大哥们给点思路, ...… 查看全部问答∨ |
修改BSP 编译报错: BUILD: [00:0000000058:PROGC ] Linking \\WINCE500\\PLATFORM\\MCORE\\drivers\\psm\\fsd\\ directory. BUILD: [01:0000000066:ERRORE] NMAKE : U1073: don\'t know how to make \'C:\\WINCE500\\PBWorkspaces\\ ...… 查看全部问答∨ |