如何在Keil下烧写STM32的外部Flash(M29W128)_第1页
如何在Keil下烧写STM32的外部Flash(M29W128)_第2页
如何在Keil下烧写STM32的外部Flash(M29W128)_第3页
如何在Keil下烧写STM32的外部Flash(M29W128)_第4页
如何在Keil下烧写STM32的外部Flash(M29W128)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如何在Keil下烧写STM32的外部Flash (M29W128 )(东南大学自动化学院,? ? ? ? ? , 20111220 )准备烧写算法IXKe订单片机开发平台是根据预先设定好的F lash烧写算法将用户程序烧到单片 机的Flash内部的,那么由于这个算法是固定的,我么往往不关心,所以我们对 其原理不是很r解,实际上,我们都知道耍将程序烧进去,需要在程选项中选 择对应的单片机型号,如下图所示。Options for Target STM32F10x 512vDevice | Target Output | Listing | User | C O+ | Asm | Lirker De

2、bug | utilitiesCortexM Target Driver SetupRAM faAlaocthmDebug | Tiv<p Flash DownloadProcrammmg AlgaithmDttaiptbnI n“;“G” A J JQDoinlomd rurction-LORD Erase Full Chip & Prngrcm Erase Sectors 7 VeiifyDo not Erase RfttandRimSat |(h20000000 Size: SS00Add Flash Programming AlgorithmDesertionJeice

3、lypeDevce Size | 八NUCIxx 4kB Rash DataOn-chip Flash4kNUC1xx4k8 Hash LUUnship 卜 lash4kRC28Fb4UJ3x Dual FlashExt. Flash 32 btlbMS29JL032H BOT FlashExt. Fldi 16-bi4MG29JL032H TOP FishExt. Flaoh 16 bt4MSTM32M29W1280F FhchExt. Flach 16 bt1GMSTM22F18 XL&n"y Fl砒hOxhip Fh«hIMSTM32F10k Med-ders

4、itv FlashOn-ohip Flash128k1STM32F10k Low-density Fla;hOn-chip Flash16kSTM32F1 Ok Hghnsity FlashOn-chip Flash512kSTM32F1 Ok Correctvity Lin.On-chip Flash256ksrMJZHUx MAP64SH Ha .txt.Fla$hSPItSMM29DW1280F FlashExt. Flash 16-bt16MSTM32F10k Hash OptionsOn-diip Flesh16TMFMSOrW” 12OkD FlhOn Jiip Fhsh12

5、87;.TMFM33OFYx25Gk8 FlachOn<hip Flash25Q.STM32FlCxNCCancel这个过程就是准备Flash的烧写算法,选中了某个单片机型号,就确定了其 使用的Flash特征(16bits? , sectorsize等),那么这些算法藏在什么地方呢。这止E 算法就藏在keil安装的根冃录下:XKeilARMlash冃下,该冃录下有很多的文 件夹,每个文件夹里有对应的工程,每个工程都是某种型号单片机的Flash烧写 算法,他们具体的内容不同,但是具有统一的接口,以便被keil调用。现在我们耍烧写STM32的外部Nor Flash,所以我们耍新建一个算法,先

6、将其 中的一个STM32的文件夹拷肌 这样町以出接修改算法,而其他的设置不变。拷 贝完毕后,修改文件夹名字以便区别,然后打开工程,修改程序。1)修改FlasliDev.C文件stmet FlashDevice const FlasliDevice =FLASH_DRJTRS,/ Driver Version, do not modify!"STM32M29W1280F Flash",/ Device NameEXT16BIT,/ Device Type0x64000000,/ Device Start Address0x01000000,/ Device Size ill

7、Bytes (16MB)1024,/ Prograniniing Page Size0,/ Reserved、must be 0OxFF,/ Initial Content of Erased Memoiy100,/ Program Page Timeout 100 mSec3000,/ Erase Sector Timeout 3000 mSec0x20000. 0x000000,/ Sector Size 128kB (128 Sectors)SECTOR_END;农中彩色不是是需耍根据试剂情况修改的,本例中Nor Flash在STM32F103的 地址映射中,其首地址是0x6400000

8、0,且Nor Flash为16位模式,大小位16M (字 节),Sector大小是128k«该算法将其命令为STM32M29W1280F Flash,以后在工 程选项中选择它即可。2)修改FlashPrg.C文件在keil的Flash目录下,有其它的16bit Flash烧写算法例了,建议接将其 拷貝过來,大同小异,这电需要你对Flash的擦除,编程很熟悉,修改对应的命 令字即可,如果不熟悉,可以下载数据手册,按照数据手册上的命令字进行修改, 这里需耍注意两点。Nor Flash是16位还是8位模式,一定要搞淸楚,尤其是在发送命令和写数据 时。Nor Flash是挂在FSMC总线上的

9、,该算法耍有FSMC总线的初始化,且在初始 化函数里。即int Init (unsigned long adr, unsigned long elk, unsigned long fnc)base_adr 二 adr;FSMC_NOR_Init0;return (0);3)编译工程由丁该工程是从别的地方拷贝过來的,需耍修改输出文件名,将其命名为 STM32F10X128. FLM,如下图。编译工程后,会将该文件拷贝到Flash目录下,这 样一个新的Flash烧写算法诞生了。Options for Target STM32F10x 5121Device Target | Output | Lis

10、ting User | C/C+ | Asm | Linker | Debug | Utilities |Hun User Progami Betore lompilation of a C/C*-+hie 厂 Run tt1:r Runtt2:厂 DOS16r DO515厂 R 4H tt1 :厂 Runtt2:厂 DOS16r DOS16Run User Prgam* fter Buld/Febuid7 Run tt1:ndexe/C 8pySM32F1C<512曲 $TM32F1O>N3R12£FLM厂 RunttZ:P Dccp When Complete厂 Sb

11、rtDctuggng厂 DO516厂 DO516Defaults准备烧写数据最好将要烧'与的数据单独放在一个c文件里,不放也没关系,只是n己要很淸楚哪 些文件的数据需要烧到Nor Flash里。例如,本例的将数据放在WEB.C中,编译后数据放 在web. o里。烧写数据1)选择烧写算法如上图,烧写算法共两种一部分将程序烧到片内Flash, 一部分将数据烧到片外Flasho2)指定烧写内容Options for Target RT Thread STM32f区Device Target Outpir | Listing User | C/C+ | Asm Linker | Debug U

12、tilitiesR/0 E ase |0<08000000R/W Ea$e |0<20000000dijabfe Warrings:I U$e Memoy Layout from I arget Dialog 厂 MaK© RW Sectiont Positiofdndependent 厂 Ma<e RO Sectons Position Independent 厂 Don't Search Stan card Libraries V R :>oNJaiT Condtionc AtErrcrtScatterFilepobfxruFfcad-5ln32.

13、5ctEdit.MisccortrolsLinker -epu Cortex-M2 * o -librarji_lip=microlib -bict" :birthcad-?tm22 ct1'入contro -autoat -sunmarystden -irro $ummary$ize$ -map -xref -cdlgreph -syrrbokstring£OK m:elDefaultsHelp如上图,选择使用Scatter文件。点击Edit.做如下修改,增加彩色部分,即将web. c文件烧到外部FlashoLR_IROM1 0x08000000 0x00080000; load region size_regionER_IR0Ml 0x08000000 0x00080000; load address = execution address*. o (RESET, +First)*(InRootS$Sections).ANY (+R0)RW_IRAM1 0x20000000 0x00010000; RW data.ANY (+RW +ZI)LR_IR0M2 0x61000000 0x000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论