新闻中心

EEPW首页>嵌入式系统>设计应用> 设计基于NXP LPC2000的次级启动加载程序用于代码升级

设计基于NXP LPC2000的次级启动加载程序用于代码升级

作者: 时间:2011-03-27 来源:电子产品世界 收藏

  定义系统参数:在调用IAP命令前,有一些参数必须事先设置好,这包括系统时钟、IAP调用的入口地址、存放输入参数和输出参数的变量。

本文引用地址://m.amcfsurvey.com/article/118092.htm

  选择扇区:在对任何扇区进行擦除或编程前,必须选择(准备)这些扇区,当然,也可以一次选择多个扇区。

  擦除扇区:在对闪存的指定扇区进行编程前,必须先擦除这些扇区。如果这些扇区已经被擦除,则不必再擦除了。可以一次对多个扇区进行擦除。

  编程扇区:在这个阶段,数据将被从SRAM写入闪存中的指定地址。这里有几个要特别注意的地方:

  ● 只能将位于片内SRAM内的数据写入片内闪存;

  ● 位于片内闪存的写入地址必须是256字节对齐;

  ● 片内SRAM必须位于局部总线(Local Bus),这就意味着有两块SRAM区域(供USB和以太网使用)内的数据不能被直接写入闪存;

  ● 一次写入的字节数必须是256、512、1024或者4096。

  数据校验:用户不必自己写程序每次对写入的数据进行检查,而是可以直接调用一个数据校验的IAP命令。

  IAP过程中的中断

  在擦除和编程操作过程中,片内闪存是不可访问的,当用户程序启动执行时,用户闪存区域的中断向量有效。在调用擦除和编程的IAP命令前,用户应当关闭中断或者确保中断向量表在SRAM中有效并且中断处理函数也位于SM中。

  IAP使用的RAM

  IAP命令使用片内SM最顶端的32字节空间。最多使用128字节的栈空间(位于用户分配的栈内),且为向下生长方式。

和用户应用程序设计

  每次上电或者复位后,将会被运行,通过串口打印出一些选项,用户可以选择继续执行应用程序或者更新程序。

  次级启动加载程序位于内部闪存中从扇区0开始的若干个扇区内,这些扇区不能和用户应用程序占用的扇区重叠。

  另外,由于主程序运行在ARM模式,而IAP运行在THUMB模式,因此必须做相应配置使得次级启动加载程序里支持ARM和THUMB模式并存。



评论


相关推荐

技术专区

关闭