历史上的今天
今天是:2024年10月14日(星期一)
2019年10月14日 | LPC1768单片机串口IAP升级实例源码
2019-10-14 来源:eefocus
LPC1768 IAP升级方法 实例
测试说明:
本实验通过串口0对开发板进行IAP升级,本工程为引导程序,将开发板上的USB转串口连接到电脑
插上3.2寸彩屏模块,下载程序到开发板,彩屏显示按键功能:
INTO键:擦除应用程序
方向键 ok:进行IAP升级,等待串口接收应用程序
方向键 down:运行应用程序
方向键 up:显示菜单
当按下ok键等待串口接收应用程序时,电脑通过超级终端发送预先编译好的应用程序(BIN)格式
以1K Xmodem模式进行发送给开发板,开发板接收完成后显示 Updata Complete,按方向键down
开始执行应用程序
单片机源程序如下:
/*******************************************************************************
* Company: Wang Electronic Technology Co., Ltd.
******************************************************************************
* 文件名称:main.c
* 功能说明:IAP引导程序
* 版 本:V1.1
* 作 者:jeansonm
********************************************************************************
* 文件名称:
* 功能说明:
* 版 本:
* 更新作者:
* 日 期:
* 更新原因:
********************************************************************************/
#include "LPC17xx.h"
#include "lcd_bsp.h"
#include "xmodem1k.h"
#include "iap.h"
#include #define IMG_START_SECTOR 0x00010000 /* Sector 16 应用程序地址 */ #define IMG_END_SECTOR 0x00037FFF /* Sector 20 */ /* Function Prototype */ static uint32_t load_image(uint8_t *data, uint16_t length); /* Character array workspace for GLCD print functions */ #define MAX_STRING_SIZE 50 static uint8_t string[3][MAX_STRING_SIZE]; static uint32_t received_data = 0; /* State-machine variable to control application functionality */ enum state_machine { READY = 0, MENU, ERASE_FLASH, FLASH_IMG, SHOW }; enum state_machine cmd; /********************************************************************************************************* ** Function name: JMP_Boot ** Descriptions: 跳转到应用程序 ** input parameters: address 应用程序地址 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ __asm void JMP_Boot( uint32_t address ){ LDR SP, [R0] ;Load new stack pointer address LDR PC, [R0, #4] ;Load new program counter address } /********************************************************************************************************* ** Function name: Boot ** Descriptions: 跳转到应用程序 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void Boot( void ) { SCB->VTOR = IMG_START_SECTOR & 0x1FFFFF80; //修改中断向量表 JMP_Boot(IMG_START_SECTOR); } /********************************************************************************************************* ** Function name: Screen_Fresh ** Descriptions: 刷新显示 ** input parameters: p 显示信息 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void Screen_Fresh(char *p) { LCD_Clear(Black); LCD_DisplayString(0, 0, "Application MENU"); LCD_DisplayString(0, 16, "Press "INT0" to erase image"); LCD_DisplayString(0, 16*2, "Press "UP" to print menu"); LCD_DisplayString(0, 16*3, "Press "CENTER" to transfer image"); LCD_DisplayString(0, 16*4, "Press "DOWN" to display image"); LCD_DisplayString(0, 16*5, string[0]); LCD_DisplayString(0, 16*6, string[1]); LCD_DisplayString(0, 16*7, string[2]); LCD_DisplayString(0, 16*9, p); } int main(void) { uint32_t ints[4]; SystemClockUpdate(); LCD_BSP_Init(); //LCD初始化 LCD_Clear(Black); LCD_SetBackColor(Black); LCD_SetTextColor(White); cmd = MENU; while(1) { switch(cmd) { case READY: if (!(LPC_GPIO2->FIOPIN & (1<<10)))/* INT0 键 */ { Screen_Fresh("Erasing Images..."); cmd = ERASE_FLASH; } else if(!(LPC_GPIO1->FIOPIN & (1<<29)))/* 方向键 up 键 */ { cmd = MENU; } else if(!(LPC_GPIO1->FIOPIN & (1<<25)))/* 方向键 ok 键 */ { Screen_Fresh("Waiting for XMODEM Xfer..."); cmd = FLASH_IMG; } else if(!(LPC_GPIO1->FIOPIN & (1<<26)))/* 方向键 down 键 */ { Screen_Fresh("Execute program"); cmd = SHOW; } break; case MENU: /* 显示引导程序版本 */ if(u32IAP_ReadBootVersion (&ints[0], &ints[1]) == IAP_STA_CMD_SUCCESS) { snprintf((char *)string[0], MAX_STRING_SIZE, "Boot Code version %d.%d", ints[0], ints[1]);
下一篇:LPC1768 IAP升级方法
史海拾趣
|
我国首张5.1声道DVD质量样板试机碟由中国音像制品评价制作中心研制成功。 该试机碟采用DOBY AC-3和DTS两种解码方式。其主要内容包括5.1声道的基本概念、声频测试信号和重放系统校准程序、视频测试信号和重放系统校准程序,为该试机碟专 ...… 查看全部问答> |
|
下载网上的CMarkup类,在EVC下实现了XML文件的写入和读取,可是使用该类在VC6.0下编写的程序生成的xml文件下载到ppc2003中去读取不了,有没有人碰到类似的问题?难道EVC下的程序只能读取通过EVC编写并生成的XML文件吗?… 查看全部问答> |
|
比方说,我现在手头有100个nand要烧wince image(现在假定这100个nand都是完好的,质量perfect的),一种方法是一个一个用jtag烧,虽然笨一点,但肯定有效;但我想用nand拷贝的方式,就是用jtag烧写一个nand,然后用这个nand作为母片,然后克隆剩下的 ...… 查看全部问答> |
|
请问哪位XD有华邦W83L528D芯片的XP驱动和PDF文档? 或者什么型号的笔记本电脑用到这个芯片。 请问哪位XD有华邦W83L528D芯片的XP驱动和PDF文档? 或者什么型号的笔记本电脑用到这个芯片。… 查看全部问答> |
|
网卡芯片(如RTL8019或DM9000A等)有按MAC地址来自动过滤发来的数据包的功能吗?即:目的MAC地址与自已的MAC不相同的包不接收 网卡芯片(如RTL8019或DM9000A等)有按MAC地址来自动过滤发来的数据包的功能吗?即:目的MAC地址与自已的MAC不相同的包不接收。因为如果用单片机来控制网卡芯片,单片机本身速度比较慢内存也比较少,如果什么包都处理有可能来不及,内存也不够。我 ...… 查看全部问答> |
|
机电池的使用寿命是有限的,所以有时候手机还好好的,但电池已经很不经用了,这个时候,买一块新的手机电池就成为必须的了。作为一个手机用户,面对市场上泛滥成灾的假冒伪劣电池该如何选择呢?下面,笔者就教你几招,希望能帮助大家提高对手机电池 ...… 查看全部问答> |
|
C2000课程的PPT 下载链接https://www.eeworld.com.cn/whitepaper/show.php?itemid=546 大家可以有如下来查找课程的PPT 首先,进入活动的主页。 然后关注 参考资料 从中就可以找到对应课程的PPT… 查看全部问答> |




