《MCU灵活软件包启动文件说明.docx》由会员分享,可在线阅读,更多相关《MCU灵活软件包启动文件说明.docx(11页珍藏版)》请在第壹文秘上搜索。
1、现在很多MCU都配套有软件包,不再像以前那样从零(汇编、寄存器)开始了。而本文给大家描述的瑞萨MCU也是通过灵活软件包(FSP)进行快速初始化外设,下面就给大家讲讲FSP灵活软件包那些重要的内容。FSP介绍FSP:F1.exib1.eSoftwarePackage,即瑞萨MCU的软件包,类似于Kei1.MDK中需要安装的软件包(Kei1.STM32F1xx,DFP.2.4.0.pack).瑞萨灵活软件包(FSP)是一个灵活配置的软件包,旨在提供易于使用、可扩展、高质量的嵌入式系统设计软件.它适用于RA系列的MCU,提供了统一直观的API,并有详细的解释和例程应用,可以按照客户不同的需求自动生成
2、相应驱动程序.启动文件说明启动文件是程序上电发位后执行的第一个程序。它一般包括如下几个:1.初始化堆栈2.使能FPU3.定位中断向*友九配置系统时钟5.启HC0RTEX-M33栈篇视器6.初始化。语言运行环境7.初始化变量SysiomCoreC1.ock.这个变量存放的是处理潺时钟的频率8.初始化用于触发NY1.C中断的E1.C(事件琏按控制)9.BSP初始化初始化堆栈初始化堆栈1、栈区(Stack)一种喉序数据结构,满足后进先出原则.由陶译器自动分配择放,存放函数的参数值,局部变量的值等。栈特别方便用来保存/恢g调用现场.在函数被调用时,其参数也会被压入发起调用的进程栈中,并待到调用结束后,
3、函数的返回值也会被存放回栈中,如果函数调用时,如果函数参数和局部变St较多,寄存器放不下,则需要适当增加栈区的大小。2、堆区(heap)通常由程序员手动分配,使用ma1.1.oc和free进行分配和择放.注意,使用完需及时择放(free),否则容易造成内存泄漏。3、c2Studio中堆栈的设JK宏BSP一CFG_STACK_MAIN_BYTES可以在FSPConfiguration的mBSPoW性栏中的RACOmmOn中通过修改Mainstacksize”设置,默认为IKB(0x400Byte)宏BSPFG_HEAP_BYTES可以在FSPConfiguration的BSP帐性栏中的RACom
4、mon”中通过修改“Heapsize”设置,/认为IKB(OX400Byte).如下图所示.*Prob1.emsOComo1.eProperties9SmartBroWWfCSrnartM4nu1.ar*Detug三CMateBkxkProtectionSettings(BPS)Pcffnam(BkxkProtectionSettings(PSPS)S1.AftupCnU(ksize0x400幡的大小Hwpwe(byte)(MOOG的大小MCUVymV)3300PrmeefcheckingErwb1.edAWeHFapReturnFSPJRR.ASSfRDONError1.ogNoError1
5、.ogCkxkRrgktnotRcwV1.cduringSudUPDtMbkdMainOi1.Ut1.tinStutpCintZisX1.A1.1.4c1.y.QvoidMaset9Mand1.ar(void)1.n1.1.1.1.yatvausingB5P./f7tmXnKf1C4X1u*rafUc4tio./M1.n()jwi1.(1)(ytntin1.t*/入口函数调用系统初始化/SMICoMexM15fi,i0IXMHt*tt*W*uw113oaFo-1Mmav.1.vit4B-*w1.*emw一,一.m4iWMDWwa/UK-MMMZM-4M*初始化处理If时”频率R.k1.R.Mg
6、E-CX3Ia1.AcS2_tIOrAI1.E”K-,n_rtij:-mr3-wwr.io.rwrt.rrsw.orrwr1f1.HM3KMN0ivw.xjmjrs_cry5CT,Md1.f/三ft*rae1.KnfC-KM.E3-VHVTt*-RXrIRMFte91.trF0tctCah1.(AS/MAffcTKT3三m*1.tyMK(,4&rI1.BSJHm53fJ*KVW5MyIWTCIrW始化E1.C事件It发NV1.C中断/像行得定BSPK初始化.设有的话am为空.系统函数初始化内存函数分配通过e2studio打开MemoryUsage,可以看到各段的定义.名称.起止地址,占用容敬大
7、小、对齐方式等。也可以通过打开工程文件夹be2studioDebug*.map文件.这里对常用的段名做个说明I.bss通常是指用来存放程序中未初始化的或者初始值为。的全局变量的一块内存区域,BSS是英文B1.ockStartedbySymbo1.的简称。BSS段属于静态内存分配。.data,数据段(datasegment)通常是指用来存放程序中已初始化的全同变量的一块内存区域,数据段属于蟀态内存分配。码段:代码段(codesegmenttetsegment)通常是指用未存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就己经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量例如字符串常盘等.内存函数分配