现场升级方案:LPC1788采用U盘方式进行程序IAP升级功能的实现

本文详细介绍了如何使用NXP LPC1788通过U盘进行固件IAP升级。通过KEIL软件,将bin文件读取到U盘,然后利用LPC1788的USB主机初始化和文件系统功能,读取bin文件并写入到指定的FLASH区域,实现程序更新。主要涉及USB引脚配置、主机初始化、文件读取及IAP功能实现。
摘要由CSDN通过智能技术生成
现场升级方案:LPC1788采用U盘方式进行程序IAP升级功能的实现
闲来无事,总结一下前段时间做过的U盘升级项目。一个新手的成长之路在于善于总结,生活也是一样扯远了,我准备了两个软件环境,一个带操作系统(UCOS)的,另一个裸机版的。随后我会附上两个程序代码。U盘升级可以分为两部分代码:U盘读取bin文件和IAP功能两部分。大概说一下实现过程,具体IAP网上都玩坏了。

硬件环境:NXP 1788

软件环境:KEIL

实现过程:上面说了我准备了两个程序,就用裸机版的代码说一下实现流程。带操作系统的原理都是一样的。只是多创建几个任务而已。USB_HOST实现IAP升级,总的思路就是:复制bin文件到U盘->目标板断电,插上U盘->目标板上电,进入升级->运行升级程序。其实可以更具体,比如说设置升级标志或者按键。

拿到一个程序先从main开始,直接贴代码,说一大堆废话有什么用。

 

int main()
{
  int32_t  rc;
 uint32_t  numBlks,blkSize;
 uint8_t inquiryResult[INQUIRY_LENGTH];

   SystemInit();              

   UART_Init(57600);         
   Host_Init();              
    rc =Host_EnumDev();      
    if (rc ==OK) {
  
       rc = MS_Init( &blkSize, &numBlks, inquiryResult );
       if (rc == OK) {
           rc = FAT_Init();  
           if (rc == OK) {
               Bin_Read();   
           } else {
               return (0);
           }
       } else {
           return (0);
       }
    } else{       
       return (0);
    }
   while(1);
}

下面分模块说一下, 前面的硬件初始化函数很简单,USB设备枚举和FAT文件系统NXP官网上都有,只需改硬件接口,Host_Init函数如下:

void  Host_Init(void)
{
 uint32_t HostBaseAddr;

   LPC_SC->PCONP   |=0x80000000;
   LPC_USB->OTGClkCtrl   =0x00000019; 
    while((LPC_USB->OTGClkSt & 0x00000019) != 0x19);
 
 LPC_USB->StCtrl =0x1; 

  LPC_IOCON->P0_29 &= ~(0x07UL << 0);
   LPC_IOCON->P0_30 &= ~(0x07UL << 0);
   LPC_IOCON->P1_28 &= ~(0x07UL << 0);
   LPC_IOCON->P1_29 &= ~(0x07UL << 0);

   LPC_IOCON->P0_29 |= 0x01UL <<0;                                   
   LPC_IOCON->P0_30 |= 0x01UL <<0;                                   
   LPC_IOCON->P1_28 |= 0x01UL <<0;                                   
   LPC_IOCON->P1_29 |= 0x01UL <<0;                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值