主机环境:Windows 10 64bit
开发环境:MDK 5.23
目标板:LPC54114
之前在NXP社区得到一块LPC54114的板卡,是由万利制作的,LPC54114是一款双核MCU,包含了一颗M4主核和一颗M0+从核,利用该板卡学习了一下双核MCU的开发流程,板卡中提供了一颗W25P80FLASH,之前拥有的板卡都没有挂外部FLASH,刚好之前利用LPC54608学习TouchGFX时可以把图片资源下载到外部FLASH中,因此借此机会来学习一下如何把数据下载到外部FLASH。
平时烧录代码我们都是烧录到MCU内部的FLASH中,如下图:
可以看到下载的时片上256KB的FLASH,该算法文件是由DFP包提供的,具体可以在keil5的安装目录下找到,如下:
加载到内部FLASH的算法有了,但加载到外部FLASH的算法还没得。keil5中提供了LPC54608板卡的外部FLASH算法,LPC54114的外部FLASH算法就需要我们自己实现了,而且我们的板卡不是NXP官方的板卡,更不可能提供外部FLASH的加载算法了。。。
进入到keil的FLASH目录,如下:
拷贝LPC5460x_MT25QL128文件夹到LPC54114_W25P80文件夹,并把其中有关信息全部替换成LPC54114相关信息。keil中提供了FlashOS.h头文件,定义了烧录到外部FLASH的相关接口,很简单,如下:
这就是本次我们需要实现的相关接口,修改的关键文件只有两个:FlashDev.c以及FlashPrg.c,首先看FlashDev.c文件,该文件定义了外部Flash的相关信息,经过简单修改就可以使用了,如下:
- structconst
- #endif
- long
- char
- struct
- voidvoid
- intvoidsize_tbool
- if
- return
- intvoid
- return
- /*
- intlonglonglong
- return
- /*
- intlong
- return
- /*
- intvoid
- return
- /*
- intlong
- return
- /*
- intlonglongchar
- return
- /*
- intlonglongchar
- return
- longlonglongchar
- int
- for
- if
- return
- return
下面就来测试下该算法文件是否起作用,在LPC54114的SDK中的polling_flash工程中加入一段测试数据,如下:
- const
- {'N','X','P','I','C'
下载该代码,本以为就此成功了,结果弹出一个框框,说无法加载FLASH编程算法,
MDK中的输出信息如下:Insufficient RAM for Flash Algorithms !,百度搜索了一下说是为该算法分配的RAM空间小了,默认的是0x1000,4KB大小,这里加大了已被改成了8KB,如下:
再次下载,很顺畅地下载成功了,赶紧打开串口助手查看测试结果:
成功地从外部FLASH读取到了我们定义的‘NXPIC’字符,测试成功!大家一起来测试一下吧!
工程文件:http://download.csdn.net/download/key123zhangxing/9956278