在调试程序过程中,经常需要将一部分的Flash用来保存数据,而不希望在下载用户应用程序的过程中修改这段数据。下面在CodeWarrior 10.6环境下,以K64FN1M0为例,使用Jlink为调试工具,说明如何实现这一过程。 MK64FN1M0 MCU包含1M大小的Flash,在工程中将Flash分成2个区域,如下是CodeWarrior链接文件(.ld)中对flash分区的描述。
其中m_text为代码段,用于存储加载的代码,而m_text2中存储的数据内容需要被保持,不能擦除。下面给出在CW10.6中实现这一功能的具体步骤,共分为两个大步。 Ø 创建TargetTasks o 在CW10.6的编辑环境中显示选项卡Target Tasks. 可以在菜单栏Window->ShowView->other中添加Target Tasks,然后选择在弹出的菜单中选择Debug->TargetTasks. o 在TargetTasks视图中,选择“Import” file:///C:/Users/B50031/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg,然后选择目标芯片的flash(.xml)文件。本例中选择MK64FN1M0.xml文件,这样在右侧的列表中能看到“MK64FN1M0”。
o 双击任务名,在“FlashProgrammer Actions”视图中,可以看到两个选项“Erase”和“Program and Verify”。
o 默认Erase功能时先擦除全部的Flash,因此需要取消“Erase”功能。添加“Program and Verify”选项。 o 双击“Programand Verify”选项,在弹出的对话框中,勾选“Erasesectors before program”选项。虽然不需要擦除所有的Flash,但需要编程的Flash还是要先擦除的。
o 另外勾选“Restrictto Addresses in this Range”选项,然后指定需要编程的Flash地址范围。在该范围外的数据/代码内容都将会被保留(不会被擦除或更改)。最后,点击“UpdateProgram Action”按钮来更新上述设置。 Ø 修改Debug配置 o 这里调试使用JLink工具为例,依次选择“Debugger”和“Download”选项卡。 o 默认情况下,执行标准下载“StandardDownload”,所有的Flash都将被擦除。这里取消“Standard Download”,勾选“ExecuteTasks”。 o 点击右旁的“Add”按钮添加第一大步中创建的K64F1M012任务。 o 最后点击“Debug”按钮,应用程序程序将按照上述设置加载到Flash中,未被指定编程的区域将被保留,而不会被擦除。其结果可在Memory视图中查看。 上述步骤主要描述加载应用程序过程中保护特定的存储区代码不被擦写。本文中使用的是Segger-JLink ,使用其他调试工具,如P&E Multilink 和USB TAP 也是一样,有任何问题请联系 b44516@freescale.com (by Hanson He---IMM FAEChina)
在CW10.6中对指定 Flash存储区域进行编程.pdf
(420.3 KB)
|