LPC1768的IAP功能做完一段时间了,让自己放空了一下,今天来总结一下。
IAP就是In Application Programming在应用编程,是用户的应用代码对片内Flash存储器进行擦除/编程的方法,主要是包含boot和APP两个部分程序,boot程序负责引导和更新APP程序,APP程序负责实现功能应用。

2个重点的知识:
1、flash空间的划分
2、中断向量的偏移

首先要确认flash空间划分。通过数据手册知LPC1768有512MB的flash空间(好多啊,很富足),地址映射从0x0000 0000到0x0007 FFFF,划分为0~29个扇区(sector),每个sector以kB为单位,大小一般为4kB或32kB。我一开始是参考网上的例程boot给了0~2的扇区(12kB),剩下的给APP。结果最后编译出来的boot有9kB多,当把最后一个扇区用来存储数据时擦写会出错了,就只好又增加了一个扇区给boot。哎,反正空间多,不用省着花。
其次,中断向量偏移。在boot中,中断向量是从0x0000 0000开始,当从boot跳转到APP时,中断向量需要偏移到APP的起始位置。我的APP是从sector 4开始的,所以中断向量的地址0x0000 4000。当从APP跳转回boot后,中断向量还要偏移到0x0000 0000。(一开始我没有这样做,以至于跳转回来后中断总是有问题)(这个现象通过在线调试是可以看到的,调试真是个有用的工具,但关键是要学会调试,这个也很重要)

LPC1768 Flash的编程
手册中有具体的说明,照做就可以了,主要注意下面几个坑:
1、扇区准备和擦除以扇区为单位。
2、擦除和写扇区前需要准备扇区。
3、写扇区时的buffer需要以字对齐。(我在调试中一开始总是写扇区不成功,后来设置成4字节对齐后就OK了。)

KEIL设置中踩过的坑:
1、扇区分配,在Debug菜单下使用JLink调试,需要设置FlashDownload地址区域。
2、针对APP和boot在Target菜单中要设置IROM1的Start和Size
3、生成bin文件,在User菜单中设置:C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output ../OBJ/VAUApp.bin ./Objects/VAU-E_SD@A020E.axf

APP形成bin编译时的坑:
需要把startup_LPC17xx.s文件中CRP_Key部分的语句
;                AREA    |.ARM.__at_0x02FC|, CODE, READONLY
;CRP_Key         DCD     0xFFFFFFFF
注释掉,否则编译不能成功。
我在网上的一个博文中看到的,后来想再找这篇文章就找不到了,还好记得了这个桥段,否则真不知道要怎么才能编过。

LPC1768 IAP相关推荐

  1. LPC1768 IAP(一)

    LPC1768 IAP (一) 一,iap编程时,把程序分为两段进行下载的知识点: 1.一段程序下载到flash后,在flash里面的存储结构是: 0x00000     堆栈的地址 0x00004  ...

  2. LPC1768 IAP写入bin格式程序不能启动的解决办法

    在为LPC1768做一个CAN总线在线升级功能的时候,使用IAP功能,将KEIL转换生成的bin文件写入lpc1768内部flash的起始地址,然后跳转到这个位置启动.自动跳转时能够正常启动,但是一复 ...

  3. LPC1768学习笔记

    LPC1768学习笔记:IAP升级 1.需求:通过串口给主机升级,主机的通信串口与升级串口相同 2.方法:要完成APP与IAP程序的切换判断,我们需要一个flag_update单独标识地址的,当fla ...

  4. 电子产品如何使用IAP方式升级程序

    目录 1.ICP.ISP和IAP的概念 2.IAP升级程序的原理 3.IAP升级程序的流程 4.IAR环境下IAP的实现 4.1.BootLoader程序设计 4.2.User Application ...

  5. LPC1768基本输入输出GPIO使用

    LPC1788通用IO口的控制包含了一些基本的组件,比如设置推挽输出,开漏输出,上拉电阻等,我们今天来看看. 首先使用GPIO要打开GPIO的系统时钟   LPC_SC->PCONP |= (1 ...

  6. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!...

    为什么80%的码农都做不了架构师?>>>    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghim ...

  7. iOS快速上手应用内购(IAP)附Demo

    前言:最近项目中接触到内购,本文主要介绍如何开发应用内购(In App Purchase),有一些是根据实际需求做的考虑,有不同的见解欢迎留言指教~本文demo:https://github.com/ ...

  8. IAP的原理和stm8的IAP

    一.引出(IAP的原理和stm8上实现IAP的问题) 具有IAP功能的单片机,程序可以分为两部分:IAP和APP.APP是用来实现真正功能的程序,而IAP是用来远程重新编程APP的程序.单片机上电时会 ...

  9. 单片机程序下载方式ISP、IAP

    一般只能通过三种方式下载程序到单片机中:1.JTAG    2.ISP    3.IAP 1.JTAG 要使用JTAG方式下载程序,不管是使用J-LINK.ULINK.ST-LINK,只需要把单片机上 ...

最新文章

  1. mysql读写分离(MySQL Proxy 安装和使用)
  2. 数据库连接池技术详解【吐血整理,疯狂推荐】
  3. python可视化添加文本_python Matplotlib基础--如何添加文本和标注
  4. linux yun nginx,Linux - CentOS 7 通过Yum源安装 Nginx
  5. 【Android】No resource found that matches the given name 'Theme.Sherlock.Light.NoActionBar'
  6. c# mysql 连接串_c# – 如何形成一个正确的MySQL连接字符串?
  7. java网络爬虫基础学习(二)
  8. linux opencl安装方法,如何在Ubuntu上安装libOpenCL.so
  9. 请求图片链接,为什么有的图片直接展示,有的图片就直接进行下载?
  10. 英菲克I5M_I6M_I7M_I10M-晶晨S805处理器-当贝纯净桌面-线刷固件包
  11. GBin1分享:25个超酷手绘插图的网站设计
  12. 【技术知识】SVAC 2.0安全技术浅析
  13. 格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序“[25024] Console1.exe”已退出,返回值为 0 (0x0)。
  14. HTML jQuery实现点赞功能(模仿CSDN的样式)
  15. 吉首大学2019年程序设计竞赛(重现赛)B——干物妹小埋(树状数组+二分)
  16. AAAI-2020 Neural Cognitive Diagnosis for Intelligent Education Systems
  17. Nginx教程(2)
  18. linux操作系统相关常用问题总结
  19. 支付宝账单的背后,大数据时代“芳华”隐现
  20. C89和C99标准比较

热门文章

  1. 中点圆c语言程序,[图形学] 画圆(基于中点算法)
  2. 零中频数字接收机原理
  3. HTML+CSS+JavaScript+Ajax+ECharts实现疫情实时监控大屏-2设计与实现
  4. apm性能监控系统,字节跳动Android三面凉凉,再不刷题就晚了!
  5. 螃蟹WiFi驱动中的Band Steering功能
  6. 笔记本更换固态硬盘的教程
  7. 免费PDF下载网站 Free Pdf Download Engine
  8. 翻译管理协作翻译平台-crowdin
  9. 巴比特MatPool运营NEO节点,2019年必定是 Staking 经济元年
  10. 厘摩(centimorgan,cM)到底是啥鬼