关于LPC1768的IAP随笔

发布者:DreamyEclipse最新更新时间:2018-06-27 来源: eefocus关键字:LPC1768  IAP随笔 手机看文章 扫描二维码
随时随地手机看文章

单片机的程序需要自升级,现在的IAP程序大多数的做法都是,上电先启动一个小程序,我们称之为boot程序,然后该程序会和其它的控制器或者PC进行交互,一般有串口方式,通过交互通信口将新的程序发送给MCU,由MCU对FLASH进行自编程,完成后断电或者重启即可,整个升级工作完成。

本例结合LPC1768的IAP来讨论程序的转移。从之前的博客《关于LPC1768的存储地址、运行地址、向量地址》可以知道,MCU上电后,总是从0x00000000地址开始运行程序。那么boot程序往往也是从0地址开始运行。boot程序本质上也是一段普通的应用的程序,之所以叫boot程序,是因为该程序的功能主要是供引导和升级用,MCU真正要实现用的功能的程序我们称之为user程序。boot程序和user程序都是独立的程序,两个程序之间几乎没有管理和数据共享。当不需要做iap的时候,可以省略掉boot程序。如下图1和图2对比了单独的user程序和添加了boot程序之后的效果。

      

           图1 user                                   图2 boot+user

再回顾一下boot程序的流程:



boot转移到user的程序如下:



这里func定义为一个函数指针:typedef void (* func)(void);参考本论坛的“强制地址跳转”


关键字:LPC1768  IAP随笔 引用地址:关于LPC1768的IAP随笔

上一篇:LPC1768PWM实验
下一篇:LPC1768 IAP写入bin格式程序不能启动的解决办法

推荐阅读最新更新时间:2024-03-16 16:07

LPC1768之看门狗
[单片机]
<font color='red'>LPC1768</font>之看门狗
LPC1768之外部中断
/************************************************************************************* * main.c: the main file * NXP -- LPC1768 * * * Author : light * Date : 2012-4-22 * * Email : lightwu@hotmail.com ************************************************************************************
[单片机]
USB自定义HID设备实现-LPC1768
首先在之前鼠标的基础上修改设备描述符 #include usbdesc.h //usb标准设备描述符 const U8 USB_DeviceDescriptor = { USB_DEVICE_DESC_SIZE, //bLength字段。设备描述符的长度为18(0x12)字节 USB_DEVICE_DESCRIPTOR_TYPE, //bDescriptorType字段。设备描述符的编号为0x01 WBVAL(0x0110), //bcdUSB字段。这里设置版本为USB1.1,即0x0110。 0x00, //bDeviceClass字
[单片机]
LPC1768里的SPI驱动示例——基于SST25VF016B
这里有个坑,我的路虎开发板原理图上是AT45DB161这样的芯片,实际上丝印却是SST25VF016B,这两个器件都是存储设备,但是它们不是pin对pin的,这里大家需要注意下!!! /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : spi_flash.h * Author : MCD Application Team * Version : V2.0.3 * Date : 09/22/2008 * Description : Header
[单片机]
LPC1768之时钟
一锁相环和CPU时钟。 CPU时钟=锁相环0输出/CPU时钟配置寄存器的预分频值即:Fcpu=Fcco/CCLKCFG+1。锁相环可以把外部时钟倍频到较高频率,PLL0输出频率是: Fcco = (2xMxFin)/N; M=MSEL0+1,N=NSEL0+1。MSEL0和NSEL0分别是PLL0CFG_Val 的低字和高字。N值得取值范围是1~32,而M的取值是在较高的振荡器频率下(超过1MHz)允许范围是6~512。 得到PLL0输出值之后,在经过CPU时钟配置寄存器就可以得到CPU时钟。 在这个system_lpc17xx.c文件中,修改#define PLL0CFG_Val 0x00050063的宏定义值就可以了
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved