利用LPC2148的SD卡实现系统升级的模块设计

4.4 程序实现跳转到任意行代码段执行

现以下例来说明这段程序,如果程序跳转到绝对地址为0xFFFF0执行,代码如下:

typedef void(*run)();//定义一个无参数,无返回类型的函数指针类型

run address=(run)0xFFFFO;//定义一个函数指针,指向跳转的位置

address()://调用函数

在上述应用程序中,根本没有看到任何一个函数实体,但是却执行了函数调用;实际上它起到了”软重肩“的作用,跳转到CPU启动后第一条要执行的指令位置,即实现了程序的跳转。

5、结语

该设计方案以LPC2148为核心,通过SD卡驱动、FAT32文件系统、IAP功能和程序跳转实现了系统升级的模块设计,并用于实际开发中。该设计增强了系统维护,缩短了产品的开发周期。节约了大量的人力、财力,增加了与用户的交流力度。与传统设计相比。在开发时间、成本和灵活性等方面都占有优势性。该设计已经调试成功,并作为一个功能模块用于某电子产品上,在产品需要增加新功能和维护系统稳定方面起到了巨大的作用。要注意的是,该程序设计是在Keil下编译通过的,生成的HEX文件不能直接放入SD卡中,因为该文件与通过ISP烧写Flash的文件不一样,要作一定的修改。另外,该方案不仅能用于系统升级,也能用于为程序补丁和写入数据等,也可用于ARM9.因此该设计方案具有广泛的应用前景。

责任编辑:gt

关于嵌入式技术就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查