在RealView MDK中使用J-Link对STM32F130ZET6外部Nor Flash烧写的方法
- 格式:pdf
- 大小:249.49 KB
- 文档页数:4
在KeiluVision4MDK下配置开发STM32F103Z完整教程环境搭建:1、安装 Keil uVision4 MDK略2、安装 J-Link安装 Setup_JLinkARM_V4501.exe 驱动时,会弹出【SEGGER J-Link DLL Updater V4.501 】对话框,不要选择 Keil 直接点击OK即可,因为Keil对⽀持M3内核SW接⼝采⽤了JL2CM3.dll 这个⽂件,该⽂件的版本号是和该⽬录下Jlink驱动版本号配套的,不要擅⾃改变他们,否则不能使⽤。
建⽴⼯程:1、在桌⾯上建⽴⼀个⽂件夹【MyStm32】⽂件夹2、在【MyStm32】⽂件夹下建⽴【USER】、【FWlib】、【CMSIS】、【Output】、【Listing】⽂件夹。
【USER】:存放⽤户⾃定义的应⽤程序【FWlib】:存放库⽂件【CMSIS】:存放M3系列单⽚机通⽤的⽂件【Output】:存放编译器编译后输出的⽂件【Listing】:编译器编译过程中产⽣的⽂件3、将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 的【inc】跟【src】这两个⽂件夹拷贝到【FWlib】。
【inc】、【src】⽚上外设驱动的源⽂件和头⽂件。
4、\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c 、system_stm32f10x.c 拷贝到【USER】stm32f10x_conf.h:配置⽂件stm32f10x_it.h、stm32f10x_it.c:中断函数⽂件。
system_stm32f10x.c:ARM公司提供的符合CMSIS标准的库⽂件5、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup的【arm】⽂件夹的拷贝到 MyStm32\CMSIS\startup。
1、打开“开始”-“所有程序”-SEGGER-JLink ARM v4.14c-J Flash ARM
2、打开“Option”—》“Project settings…”,进行烧写前的必要设置,如下图:
在“General”页,选择“USB”,如下图:
在“Target Interface”页,选择“JTAG”,JTAG速度设置为“Auto selection”,如下图
在“CPU”页,选择开发板的CPU型号:ST STM32F103VB,如下图:
“FLASH”页不用设置,默认设置就可以了。
在“Production”页,我们把“Start application”选上,则在下载成功之后,程序会自动运行。
在设置完成后,我们点击“应用”和“确定”退出。
在JLINK软件界面左边,将显示烧写信息,如下图:
我们点击“Target”—》“Connect”,开始连接目标板:
连接成功会有提示信息,如下边的状态拦:
接着,我们在“File”—》“open”中打开烧录的HEX文件,如图:
加载完成后,选择“Target”—》“Auto”或者快捷键“F7”进行自动烧录:
烧写成功!如下图:
烧写成功之后,JLINK自动断开与开发板的连接。
我们可以看到,程序已经在开发板上运行了!。
JLINK及KEIL MDK使用手册概述本章对 JLINK 驱动程序的安装、使用和对 RealViewMDK (Keil μVision3)集成开发环境安装及其集成开发环境的基本使用和设置进行了介绍。
3.1、安装JLINK仿真器驱动程序JLINK仿真器驱动程序可以从付带光盘或 SEGGER网站/pub/jlink/Setup_JLinkARM_V402c.zip获取最新的安装文件(目前最新安装版本为 Software and documentation pack V4.02c [7177 kb]),下载完成后双击执行,出现如图 3.1所示的安装界面,根据界面安装向导的提示,完成JLINK仿真器驱动程序的安装。
假设安装在 D:\SEGGER目录下。
图3.1按Yes出现下图界面图3.2 按Next继续下一步操作图3.3选择安装目录后按Next继续下一步图3.4如果你还在以前装了IAR的集成开发环境将出现下面图3.5的提示,提示你选择更新IAR 下的JLINK仿真器的动态链接库文件,一般选上后按OK完成JLINK仿真器的安装。
图3.53.2、如何使用JLINK仿真器软件3.2.1、使用J-FLASH ARM 烧写程序到芯片FLASH运行J-FLASHARM 出现图3.6图3.6 进行烧写前的必要设置如:图3.7图3.7选择MINI-STM32开发板的CPU型号,选择完成后按确定退出设置。
图3.8设置完成后左边显示烧写信息图3.9连接目标板,连上后会有提示信息,见下边的状态拦。
图3.10连接成功后如图3.11图3.11接着File->open打开烧录文件,如图3.12图3.12加载完成后选择Target->Auto或快捷键F7进行自动烧录。
图3.13烧写状态,图3.14图3.14 烧写成功,图3.15图3.15关于J-FLASH ARM更详细的操作请参阅JLINK的用户手册。
3.2.2、使用J-Link command设置和查看相关调试信息J-Link command包含了所有设置和查看相关调试信息的命令,J-Link command基于命令行输入方式。
最近一段时间一直在学习STM32和ucos的移植,使用的开发环境是keil u4版本。
仿真器是80元买的jlink。
在学习了STM32固件库和ucos内核与移植相关的程序之后,写了一个流水灯程序,准备下载到板子上看看情况。
哪知程序还没有下进去,在debug时,keil的错误提示到:Error: Flash download failed-"Cortex-M3"感觉这么错误很普遍,也是初学者常常遇到的错误,下面我就将这个错误产生的原因和解决方法赘述一下:错误产生的原因和分析,解决。
首先,我们看到提示信息是有关flash的,那么我们来查看一下STM32F103XB的数据手册关于这部分的描述(我使用的芯片是STM32F103RB,有128kflash。
)知道了原来flash在此芯片中的地址是从0x0800 0000到0x0801 FFFF 这段,也就是说这段存储空间是用来存储程序。
而在STM32芯片方面,它又有一个规则,那就是芯片启动的方式,如果你把程序下载到了flash中,那么在复位芯片之前或者通电之前,要将boot0,boot1两个引脚拉到高电平,这样在启动时,芯片初始化之后,运行程序代码才是从flash地址开始执行的。
于是,我们来查看一下keil中仿真器的设置,是不是正确,设置的选项在keil软件的project-options for target中的Utilities中,先来查看下仿真器是否选对,然后点settings,弹出如下菜单:查看一下programming Algorism 下的flash地址是否正确,如果不正确则会引起开始那个错误的提示信息,如果正确还是出现那个错误,那么按照官方给的解决方法是,删除现有的flash地址,重新配置一下,记得要选对芯片型号和地址空间。
配置好之后点击OK退出。
然后再查看一下Target中的地址,是否跟你重新添加的一致,如果一致,那么点OK退出。
KEIL下使用Jlink调试STM32 核心模块开发板大家知道,之前在Keil下可以通过RDI方式使用全功能版Jlink来调试LPC2000、STR912等很多芯片的,不过唯独是无法用Jlink 的RDI方式来调试STM32系列,因为在Jlink RDI Configuration 中的Flash设置中没有STM32芯片的选项,如下图所示。
在Keil宣布支持Jlink后的MDK3.22版本中开始直接支持Jlink了,这对大家来说无疑是一个好消息,因为在Keil中可以直接像使用Ulink2一样使用Jlink了。
不过经过测试好像还存在一些bug,测试情况详见:/bbs/viewthread.php?tid=8933&extra=page%3D3最主要的问题就是:添加下载算法不能一一对应,完全是乱的,如下图所示:后来经过awake兄弟的指导和帮助终于搞定了,在这里对awake兄弟表示感谢。
这个问题在Keil的官方网站给出了答案,详见:/support/docs/3410.htm 下面就给出具体解决方法,很简单,只需两步,复制三个文件即可:1、安装Jlink的最新驱动,本文安装的是V3.88版本,最新的驱动可以从segger官方网站下载:/download_jlink.html。
安装完成后,打开C:\Program Files\SEGGER\JLinkARM_V388目录(默认安装目录),如下图所示,复制JLinkARM.dll和JLinkRDI.dll两个文件到Keil的安装目录:\Keil\ARM\Segger下,替换以前的文件,如下所示:2、从keil网站下载JLTAgdi.dll文件也复制到:\Keil\ARM\Segger目录下,添加完成后如下图所示:完成上面两步后,现在我们打开Keil软件来进行一个验证。
任意打开一个STM32的程序,本文打开时Keil自带的USBMem例程,在:\Keil\ARM\Boards\Keil\MCBSTM32\USBMem目录下。
使用Keil MDK以及标准外设库创建STM32工程1.1 使用Keil MDK以及标准外设库创建STM32工程通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。
本节就介绍怎样利用Keil MDK 开发环境和标准外设库来搭建自己的工程。
建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。
1.1.1 开发工具与开发环境1. 软件版本本节所使用Keil MDK 为目前的最新版V4.21,具体版本信息如图5-6所示。
其他版本差别不大,读者可以根据自己使用的版本进行操作或者从Keil的官网下载新版本。
使用的标准外设库为目前最新的V3.5版本。
使用的开发调试工具为JLINK-V8,使用的驱动版本为V4.08l。
图5-6 MDK详细版本信息2. 建立工程目录首先先建立一个用于存放工程的文件夹,此处命名为STM32,在文件夹下分别建立LIB、USER、MDK三个文件夹,分别用于存放标准外设库文件、用户程序文件、工程目录。
在MDK 文件夹下建立List、Obj两个文件夹,分别用于存放在编译过程中产生的临时文件和输出文件。
接下来拷贝标准外设库和相应的文件到工程目录中,首先拷贝STM32F10x_StdPeriph_Li b_V3.5.0\Libraries文件夹下的两个文件夹CMSIS和STM32F10x_StdPeriph_Driver到刚刚新建的STM32\LIB目录下,接下来拷贝用户编写程序的程序文件,此文件可以从标准外设库自带的例程中拷贝,这里从STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Exam ples\ADC\3ADCs_DMA目录下拷贝main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it. h四个文件,这四个文件是在编程的时候用户往往需要根据实际需求进行修改的。
J-LINK J-FLASH 下载STM32单片机程序使用教程-V1.0 2023.05.09Introduction本教程用于演示如何使用JLINK V9配套J-FLASH软件烧写更新MCU程序的教程1. 安装提供的 JLINK驱动程序。
JLink_Windows_V722a.rar。
全程默认安装,只能安装在C盘,不可安装于其它盘。
安装驱动完成后,将JLINK V9仿真器上USB口插上电脑,系统会自动识别仿真器。
JLINK下载口使用专用接口扩展板上1.25间距 4PIN连接线与目标板上J5 连接器 SWD下载口进行连接。
然后目标板上电。
JLINK STLINK SWD转接板需要使用配套专用的转接板,如果是其它转接板需要根据转接接口的信号定义与板子SWD信号进行连接。
2. 安装完成在电脑开始菜单找到SEGGER-J-LINK V7.22f文件夹,点击打开 J-Flash V7.22点击 create a new project.(使用后可以在软件菜单File保存这个烧写工程,后续直接打开使用即可)选择Target interface 为 SWD 。
点击Target Device后面按钮,在弹出芯片Device中输入STM32L431. 在弹出菜单列表中选择STM32L431RC 。
然后点击OK点击 file, 点击File/Open data file, 选择要下载的程序(格式为.hex)点击软件target -contact 软件连接目标板如果连接成功,下方信息栏目会显示Connected successfully如果连接失败, 请确认目标板已上电,或重新插拔连接线与JLINK USB连接线。
或关闭J-FALSH软件重新连接。
点击Target- Manual Programming -Program & Verify,即可开始下载程序。
如果芯片有读写保护或下载失败,可以点击先Unsecure Chip(解除保护)再点击Erase Chip(擦除芯片),然后再烧重新烧写程序。
IAR下用JLINK调试STM32心得IAR开发环境下使用JLINK来调试STM32芯片是一种常见的调试方法。
以下是我在实际使用中总结的一些经验和心得。
首先,在使用JLINK进行调试之前,我们需要按照JLINK提供的说明书正确连接好硬件设备。
通常,我们需要将JLINK与STM32芯片之间连接好,并确保连接的正确性。
此外,我们还需将JTAG/SWD接口正确地连接到STM32的相应引脚上。
接下来,在IAR环境下进行配置。
在打开IAR工程之前,我们需要确保IAR和JLINK驱动软件已经正确地安装到电脑上。
然后,我们可以打开IAR并打开相关的工程文件,然后进入调试模式。
在调试模式下,我们需要在IAR的"Options"菜单中选择"Debugger"选项。
在"Driver"栏中,我们需要选择使用JLINK进行调试。
在"Setup"选项卡下,我们可以进一步配置JLINK的一些参数,比如连接速度和复位方式等。
根据实际需求,我们可以对这些参数进行相应的调整。
在调试过程中,我们可以使用IAR提供的各种调试工具来观察和分析程序的运行状态。
比如,我们可以使用"Watch"窗口来监视变量的值,或者使用"Memory"窗口来查看内存的内容等。
此外,我们还可以使用"Breakpoints"来设置断点,使程序在特定的位置停止执行,方便我们进行代码的调试和分析。
从实践中,我发现在使用JLINK调试STM32时,一些常见的问题可能会出现。
比如,由于硬件连接出错或者参数配置不当,导致与JLINK的连接失败。
此时,我们需要仔细检查硬件连接,并重新配置JLINK的参数。
另外,有时候程序可能会卡死或者出现异常,导致调试失败。
这时,我们可以使用IAR提供的复位工具来重新启动STM32芯片,然后重新开始调试。
STM32 入门系列教程如何使用MDK+J-Link调试(2010-04-18)在芯达STM32入门系列教程之三《如何使用J-Flash调试》中,我们提到要进行STM32的程序调试,一般由三种方法:1(1)使用SEGGERJ-Flash(J-Link)下载程序到闪存中运行;2(2)使用串口ISP来下载HEX文件到CPU中运行;(3)J-Link+MDK组合,来在线调试程序(可下载、调试)。
本期教程将讲述如何在芯达STM32开发板上使用J-Link+MDK组合进行调试及下载HEX文件。
MDK(KeilforARM)的软件安装,请参考教程《如何安装RealViewMDK软件》。
安装完并激活MDK后会出现如下图标:在双击启动MDK之前,我们需要进行设备的连接操作。
步骤一进行设备连接操作,此步骤与J-Flash下载时的操作是一样的。
将芯达STM开发板的JTAG口(开发板面朝上,最顶端有一个JTAG20pin的插口),与J-LinkV8仿真器的输出排线连接,J-Link另一头的USB插口则插在电脑的USB口上。
这时,J-Link的指示灯开始闪烁,并保持“点亮”的状态。
注意1:大家购买J-Link仿真器的时候,JTAG接口要求是标准的20pin的2.54间距的针座。
否则需要转接卡进行JTAG接口的转换。
注意2:在红绿LED灯的附近的2个短路帽都应该插上,以保证BOOT1和BOOT0都是接地的,此时选中闪存存储器启动方式。
步骤二进入PC的桌面,点击上图左边的图标:KeiluVision3,进入如下MDK主界面,这时候编辑区内什么都没有。
打开一个工程文件,如下图所示:这里截取了一部分的图,点击“Project�OpenProject ,打开一个对话框。
在芯达STM32光盘里,找到例程目录,随意找一个工程。
笔者这里选择了GPIO-LED例程。
点击 打开 后,MDK编辑区出现了代码窗口,左边的工程项目区出现了代码目录树。
Jlink在MDK下使⽤J-link_J-trace模式开发STM32的说明Jlink V7在MDK下使⽤J-link/J-trace 模式开发STM32的说明说句实话,STM32的官⽅程序库⽤起来真是有点⿇烦,绕来绕去的,初学者很容易犯迷糊。
求⼈不如靠⾃⼰啊,经过⼀晚上的摸索,终于⾃⼰在MDK开发环境下建⽴了⾃⼰的⼯程,⾛马灯也跑起来了,呵呵呵....开发环境:STM32F103RB(128K Flash 20K RAM)+MDK3.40PRC+JLINK V70.驱动安装安装Segger jlink V4.02驱动,安装在c:\Program Files\SEGGER\JLinkARM_V402插上jlink V7,可⾃动安装上驱动。
执⾏J-link command,查看版本。
如果已经连上⽬标板,可显⽰⽬标处理器信息。
也可以使⽤mdk中的驱动,在c:\keil\ARM\Segger\USBdriver1.建⽴MDK⼯程(1)选择STM32F103RB 并加⼊STARTUP⽂件,这⼀步就不⽤细说了吧,⽤过keil的⼈都会。
(2)⼯程中选择Options for target ‘xxx’,选择器件STM32F103RB(3) 配置Jlink:按照下图配置即可时钟改成1MHz以上,也是可以的,⽐如2MHz,明显编程速度会快些。
需要试验最⾼时钟速率。
这样,⼀个可以⽤Jlink调试的MDK⼯程就建⽴好了,接下来我们加⼊我们的C⽂件就可以开始调试了。
2 编写程序C⽂件源码如下:#define GPIOC_CRL (*((unsigned int *)(0x40011000)))#define GPIOC_BSRR (*((unsigned int *)(0x40011010)))#define GPIOC_BRR (*((unsigned int *)(0x40011014)))#define RCC_APB2ENR (*((unsigned int *)(0x40021018)))void delay(void){unsigned int i;for(i = 0; i < 0xffff; ++i);}int main(void){{RCC_APB2ENR |=(1<<2); //使能PORTA时钟GPIOA_CRL = 0x44444422;//PA0,1配置为输出while(1){GPIOA_BSRR |= BIT0;GPIOA_BRR |= BIT0;delay();GPIOA_BRR |= BIT0;GPIOA_BSRR |= BIT1;delay();}}如此,⼀个简单的⾛马灯程序就完成了,⽐起官⽅库,容易理解多了,呵呵。
J-Link -OB 在MDK-ARM设置使用教程(V1.1)该文档描述如何使用J-Link OB 在MDK_ARM环境下设置使用下载程序和调试程序。
演示环境:操作系统:window7硬件调试下载器:J-Link- OB程序编程环境:MDK_ARM V4.60调试下载器连接方式:SWD目标板系统:STM32F103C8T6最小系板(ST)目标板的供电方式:由J-Link调试下载器供电设置步骤:1、单击Project中Option for Target‘XXX’或使用快捷键Alt+F7或单击工具栏中的相应的图标打开配置选项2、选择Debug选项卡,选择J-Link/J-Trace Cortex选项然后单击旁边的settings按钮,进入Cortex JLink/JTrace Target Driver Setup设置,在Debug选项卡中Port中选择SW方式在Flash Download中Programming Algorithm 中添加相应的算法,这里是以STM32F103C8单片机做的实例,选择STM32F10x Med-density Flash On-chip Flash 128k 算法,点击Add点击OK退出。
3、在Utilities选项卡中选择Use Target for FlashProgramming选择工具J-Link/J-Trace Cortex单击OK退出。
下载步骤1、编译相应的程序,确认程序没有错误后2、单击load下载程序,下载完成后会提示调试步骤:1、单击调试图标进入调试模式。
2、进入调试模式后,读者可以根据自己的需要进行有步骤的调试。
如何使用Jink 调试 Mini IMU为了方便用户调试姿态解算程序,Mini IMU 提供了SWD 调试接口。
它只需要4个引脚就可以仿真和调试STM32F 的程序。
以下是接口的定义Mini IMU 的SWD 调试接口U U A R 电源极负极+电源正5LEDJlink 仿真器的接口SWD Jlink 仿真器J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。
配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9/ARM11内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。
Jlink 是分版本的,只有Jlink V6 或者更高版本的Jlink 才支持SWD 接口目前市面上的大都是Jlink V8版本,这是完美支持SWD 调试的注意:SWD 数据SWD 时钟目标板电压目标板GND只需连接其中一个就可Mini Jlink 与模块的连线图如下Mini Jlink 的应用Mini Jlink 功能:1.支持SWD调试,支持STM32F系列单片机的仿真2.只需要三条线,就可以进行芯片的下载程序和仿真操作 大大减少IO连接3.兼容 JLink的SWD调试部分。
特别提示:Mini Jlink 并不向目标板提供电源,在编程和仿真时,目标板必须自行连接电源Jlink 与 Mini IMU 的SWD接口连接MDK 软件的调试设置在此,我们以开篇第一个工程为例,讲解如何使用Jlink调试 Mini IMU。
1.打开之前创建的工程经过以上的设置,Jlink已经可以和MDK相认了。
下载程序:在程序编译完成后,如果没有错误。
那么就可以将程序下载到目标芯片中运行了。
由于我们设置了当下载完成后立即运行程序。
在出现 Application running ... 之后,程序就已经在目标芯片中运行看看运行效果吧、开启仿真!----仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。
STM32库函数编程、KeliMDK、stm32f103zet6catalogue0. Cortex-M3地址空间1. 基于标准外设库的软件开发2. 基于固件库实现串⼝输出(发送)程序3. 红外接收实验4. 深⼊分析流⽔灯例程5. GPIO再举例之按键实验6. 串⼝通信(USART)7. 库函数开发通⽤流程⼩结8. DMA传输⽅式9. STM32 ADC10. SysTick(系统滴答定时器)11. STM32定时器0. Cortex-M3地址空间0x1: MDK中三种linker之间的区别1. 采⽤Target对话框中的RAM和ROM地址采⽤此⽅式,需在Linker选项卡中勾选Use Memory Layout from Target Dialog选项(选中这⼀项实际上是默认在Target中对Flash和RAM的地址配置,编译链接时会产⽣⼀个默认的脚本⽂件),并且在Target中设置好RAM、ROM地址。
MDK会根据Target选项中设定的RAM和ROM地址⾃动加载⽣成⼀个加载⽂件。
最后链接器会根据此⽂件中的信息对⽬标⽂件进⾏链接,⽣成axf镜像⽂件STM32是通过同⼀个连续的地址空间来寻址⽚上ROM和⽚外RAM2. 直接通过Linker选项卡中的R/O Base和R/W Base来设定链接信息接器最后可根据此处指定的地址信息进⾏链接,链接的⽂件应该是顺序存放了,最多RO和RW分开。
此时需要注意的是应将Use Memory Layout from Target Diaglog前的勾去掉,且保证Scatter File⼀栏中未包含分散加载⽂件,并且要在Misc controls中设定镜像⽂件的⼊⼝点3. 直接采⽤分散加载⽂件Relevant Link:/mybelief321/article/details/8947424/thread-17087-1-1.html1. 基于标准外设库的软件开发0x1: STM32标准外设库概述STM32标准外设库之前的版本也称固件函数库或简称固件库(即操作⽚外固件的代码集合),是⼀个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
在RealView MDK中使用J-Link对STM32F130ZET6外部Nor Flash烧写的方法by 314forever
文章中以STM32F103ZET6外接SST39VF6401B为例,在红牛实验板上操作成功。
图例中用到的地址需要根据你自己的情况作相应调整。
新建一个工作目录。
将x:\Keil\ARM\Flash\STM32F10x\下的所有文件拷进来,将x:\Keil\ARM\Flash\SST39x640x\下的FlashPrg.c文件拷进来并覆盖同名文件,将x:\Keil\ARM\Flash\下的FlashOS.h文件拷进来。
如果你使用的Nor Flash 不在MDK自带驱动的范围内,那么需要根据FlashPrg.c文件自行编写相关函数
打开工程STM32Fx,在FlashDev.c中添加如下代码,有关这段代码请参考x:\Keil\ARM\Flash\SST39x640x\FlashDev.c
修改FlashDev.c和FlashPrg.c中的头文件引用
在目标属性中修改宏定义和输出文件
编译此工程,将得到的STM32F10x_NOR.FLM文件拷入x:\Keil\ARM\Flash\文件夹中。
然后在MDK的Flash下载设置中就出现了NOR Flash的选项
这样我们就得到了MDK对Nor Flash的接口文件,接下来是如何在工程中将数据弄到Nor Flash上。
新建工程,将要烧入Nor Flash中的数据单独存放在一个文件中
然后自定义分散加载文件
在这里把数据定义到Nor Flash中,注意地址要根据你自己的情况来设置
在程序中要对数据进行使用,否则编译后未用到的数据可能会被优化掉
编译结果
添加Flash烧写算法,MDK会根据不同的地址采用不同的算法
设置初始化操作文件,文件中的Bank初始化要根据你的情况来调整
点击Load就可以把程序和数据分别烧入STM32和Nor Flash中,在烧写过程中可以看到最下方进度条中对不同地址烧写的情况(这个图始终截不到合适的)
以后程序中就可以使用Nor Flash中的数据了
如此操作后数据文件也就没什么用了,可以从工程中删除,同时还要修改分散加载文件(不改也没什问题,但是会有烦人的警告)
用这个方法只能对Nor Flash进行写,没法读。
我还尝试过在J-Flash中自定义初始化的方法来对Nor Flash进行操作,结果总是提示
不知道为什么。
不知道有没有大侠用这种方法成功过(44B0用类似的方法是可以的)。
另外,使用相同的办法理论上应该可以对NAND Flash烧写,不过我对NAND Flash的基本操作还没掌握,你要是有兴趣不妨尝试一下。