




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式软件开发,嵌入式开发过程,“个人电脑软件”和独立的嵌入式应用。当程序员开始开发一个基于ARM的应用程序时,你可以使用ARM ADS来编写一个类似于“HELLOWORLD”的程序,并使用ARM monitor在评估板上对其进行调试。然而,当您将它移植到独立的嵌入式应用设备时,以下问题已经成为我们的首要考虑:在硬件环境中使用的C库函数的目标板上的存储器资源应用程序的初始化、议程、个人计算机软件的构造、标准C库函数到目标板定制映像到目标板重置的存储器映射以及深层存储器设备映像的初始化、映像的编译和调试的考虑、ADS默认标准C库函数、ANSIC、输入/输出、错误处理、堆栈计算机(intch,FILE * f)/*例如e.g.writeacharactertoanLCDSendchar(可以在ADSEmbeddedexample目录下的retarget.c中查看,还可以看到更多重定向示例。您确定在连接时不使用半主机服务吗?消除c库函数中的半宿主。为了确保连接时没有函数使用半宿主,您可以在程序中添加以下语句:# pragma import(_ _ use _ no _ semi hosting _ swi)如果程序中仍使用半宿主。错误:符号_ _ semi hosting _ swi _ guardmultipydefined modification :如果使用checked-verboselinkeroutputforaccurrencesofiase _ semi hosting _ swi,则连接器将列出使用smeihosting的程序,然后:提供可以运行的函数。在ADS1.2编译器和库函数手册中,表4-2显示了所有使用半托管的C库函数。请注意,连接器在用户自己的应用程序代码中不会有任何关于使用半主机服务的报告。议程,一个个人电脑软件建立自定义标准C库功能目标板自定义图像内存映射目标板重置和初始化深层内存图像考虑编译和调试图像,分散加载,在实际应用中,你可能不想开始运行在0 x8000。大多数嵌入式系统都有存储设备,它们的地址空间在整个内存映射中相交。分布式加载提供了一种将代码和数据放在不同内存位置的方法。分布式加载定义了两种类型的内存区域。加载区域:-应用程序的代码和数据(只读存储器是典型的应用程序)在复位/加载期间被保留。执行区-程序执行时保留程序的代码和数据。在应用程序启动期间,每个加载区域可以创建一个或多个可执行区域。分散加载的应用程序将详细的内存映射保存在描述文件中,并使用Eg: armlink程序。分散分散。超临界流体操作程序。AXF作为Armlink的参数,分散加载(简单示例)。只读代码和数据存储在只读存储器中。库函数初始化代码(在_main)初始化:个从只读存储器复制到随机存取存储器中的读写数据。分散描述文件。通配符(*)语法允许对代码和数据进行简单分组。EXEC_ROM0 x00000 x4000*(RO)和链接器放置规则。在每个可执行区域中,链接器通过一些基本规则放置代码和数据。基本的排序方法是通过属性在RW之前排列:RO。当RW在具有相同属性的ZI之前时,代码放在数据之前。更多的排序方法取决于:输入的组名按字母顺序排序,顺序在ARMLINK命令行中指定。Eg:armlinkfile1.ofile2.o.对SCATTOR文件中的对象进行排序。为了将特定的代码和数据放在指定的地址上,您可以在不考虑标准放置规则的情况下使用第一个和最后一个,并将第一个和最后一个对象直接放在可执行区域中。图例:将VECTOR表放在区域的开头。,LOAD _ ROM0 x 00000 x 4000 exec _ rom 0 x 00000 x 4000 vectors . o(first)file 1 . o(ro)file 2 . o(ro) : ,在可执行区域中,要在scattor文件中排序的对象对输出图像没有影响。链接器的标准放置规则仍然适用,ROOT区域,load _ rom0x 00000 x 4000;startaddressandlength EXEC _ ROM0 x 00000 x 4000;根(load=exec address) _ _ main . o(RO);复制代码*(区域$ $表);RO/RwadDescesToCopy *(z分段$ $表);ziAddressestozero RAM0 x 100000 x 8000 *(RO);同素异形体*(RW,ZI);Program variables,mustbeinarotoregion,outsideotoregion,根区域是一个可执行区域,其加载地址等于执行地址。根区的关键点,一个根区是一个可执行区,它的加载地址等于执行地址。每个分散描述文件必须包含至少一个根区域和至少以下内容:_ main。o-代码区域$Table包含复制代码/数据,而ZISection $ $ Table包含要复制的代码/数据的地址,该地址由链接器生成,而不是由目标文件生成。(所以*您必须使用)错误: l 6202 e : sectionregion $ $ tablecannotbeadtoonon-root region。错误: l 6202 e : sectionsection $ $ tablecannotbeaddatoon-rootr注:如果*(RO)位于根区域,则在此之前将自动放置的主应用程序的入口点必须放置在根区域。错误: l 6203e :入口点(0x 08000000)lies within on-rootegionexe _ flash。运行时内存管理,半主机支持,ansic,stackbldrr1,=0 x 88000。SB;R2未使用;r3not used (sl) movpc、lr、堆、堆栈、堆的受限地址不在单一模式下使用。堆栈的受限地址只有在软件堆栈检查权限时才有效。HB=0 x80000,SB=0 x88000,警告!使用分布式加载时,您必须执行_user_initial_stackHEAP()c库初始化代码中_ _ user _ initial _ StackHeap()的默认执行是将堆放在图像文件的RW/ZI数据段之后。使用图像$ $ rw $ $ base/图像$ $ zi $ $ base连接符号时,这些符号对于分散加载无效。在ADS1.1和早期版本的软件中:符号设置为0x0,HEAP位于此处!堆的并发使用,无论是直接使用(例如,与malloc()还是间接使用(由useofargc/argv使用),都可能会破坏向量表或其他代码。典型的结果是不可预测的程序在运行时出错。在ADS1.2:符号没有定义,应用程序不会联接:错误: l 6218 e : undefinedsymbolimage $ $ ZI $ $ Limit(referredfromsys _ stackheap。o ).议程,一个个人电脑软件的构造裁减标准C库函数到目标板定制图像的存储器映射到目标板复位和初始化深层次的存储器器映象考虑编译和调试图像、可转换表、区域矢量、代码、读取端口重置_处理程序;importotherexceptionhandlers, Entrybreset _ HandlerBuilded _ HandlerBSI _ HandlerPrefetch _ HandlerData _ HandlerNop;reserved vectorbirq _ HandlerFiq _ handlerwillfollowindediclyend,在使用分散加载优先时直接定位在0X0(或0 xffff 0000)ENTRY直接告诉链接器这是一个入口点,防止某些段被删除,中断向量表,初始化步骤,CLibrary,UserCode,_ _ main copy codeanddatazerouniinitializeddata,ImageEntryPoint,$ Sub $ $ main()enable cache-IntegratOrmControlRegCM _ CTL _ Regequ 0 x 100000 c;addressofcontrolregisteremap _ Bitequ0x 04;bit2sresmapbitofcm _ ctlentryorneset,analiasofROMisat0 x0,sojumptorealROM .LDRpc,=指令_2指令_ 2;remapbysetingremapbitofthecm _ ctlregisterlr 1,=CM_ctl_regLDRr0,R1或r0,r0,# Remap _ bitSTRr0,R1;RAMisnowat0 x0 .exceptionvectormustbecipedfromtoram(在_main中);从此处重置_句柄跟踪这个功能也可在有存储器管理单元时使用只读存储器/随机存取存储器的重定向,初始化栈的指针,- Amountofmemory(以字节为单位)已分配给pack slen _ FIQ _ Stackequ 256 Len _ IRQ _ Stackequ 256Offset _ FIQ _ IRQ _ StackeQu 0 Offset _ IRQ _ Stack Len _ FIQ _ StackReset _ HandlerDr 0,Stack _ baseliposatedbyscatter file输入每个模式的名称和地址#模式_ FIQ :或: _位:或: _位;非中断子空间,r0,#偏移_FIQ_StackMSRCPSR_c,#模式_ IRQ :或: I _ Bit :或: f _ BitNointerruptsSUBsp,r0,# Offset _ IRQ _ Stack;系统模式堆栈modestacksetuplastmsrcpsr _ c,#模式_ SYS :或:输入_位:或:输入_位;无中断子空间,r0,#偏移_系统_堆栈;SetupstacklimitifneededLDRr10,stack _ limitlocatedbyscatterfile,局部存储器设置,运行时的存储器必须在C库初始化前定义如果你使用的ARM7芯片还有公共管理大学/公共管理大学,它必须设置;只读存储器/随机存储器的重新映射必须完成中医(严格耦合记忆)如果有中医,典型的必须使能它。请注意:在中医使能之前,要屏蔽罗姆在躲藏打开之前要返回。在c库初始化代码运行之后,如果躲藏被使能,可以避免与躲藏相关的问题;扩展功能,系统初始化代码通常在进入主应用之前运行当然,resethandler不是一个适合使能中断和使能隐藏所地方。在resethandler最后应该放一个C运行库初始化代码例如。IMPORT_mainB_main我们可使用$Sub和$超级功能来包装符号外部无效$ Super $ $ main(无效);void $ Sub $ main(void) cache _ enable();/enablescachesint _ enable();/enablesinterruptssys _ to _ usr _ mode();/改变模式-参见下一张幻灯片$ Super $ $ main();/callsororiginalmain()相关描述可在广告1.2链路应用指南-4.4章查阅到你好。运行模式考虑,主应用程序运行在何种模式是要考虑的重要问题。用户模式(用户模式)是非特权模式(非特权模式)保护你的系统系统初始化代码只能运行在特权模式(privilegedmode)。需要执行特权操作比如:使能中断。如果你的应用要运行在管理模式,简单的在管理模式下退出你的resethandler就可。如果你想在用户模式下运行你的应用,你需在$Sub$main()改变为用户模式当然,_user_initial_stackheap()必须有权使用你的应用模式寄存器。解决办法是在系统模式里退出resethandler所有C库初始化代码有权使用用户寄存器,但是仍然可以执行特权操作。议程,个人电脑软件的建设削减了内存映射从标准的C库函数到目标板定制的图像到目标板重置和初始化的深层存储设备图像考虑编译和调试图像,跳远单板,只读存储器_加载0 x0000只读存储器_执行0x 0000 *(RO)随机存取存储器0 x 800000000 far func . o(RO)*(RW,ZI),/*主. C */int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 23090-12:2025 EN Information technology - Coded representation of immersive media - Part 12: MPEG immersive video
- 课件注册税务
- 不贪吃冷饮课件
- 公路安全生产培训
- 天使的身影课件
- 老师外出培训总结
- 计量综合知识培训
- 村庄写生创意课件
- 老年科医生核心能力培训大纲
- 幼儿手指操培训
- 2025年度集中供暖项目暖气设施安装及售后服务合同
- 护士医护人员职业安全防护培训
- 2025年四川省建筑安全员A证模拟试题(及答案)
- 莲山教学课件下载
- 大学生创新创业基础课件 第7章 创业与创业历程
- 班主任育人故事经验分享陪伴每一名学生慢慢成长模板
- 2025至2030中国漂白粉行业发展研究与产业战略规划分析评估报告
- 2025福建漳州闽投华阳发电有限公司招聘52人考试参考题库附答案解析
- 2025年事业单位招聘考试卫生类护理学专业知识试卷(护理文书)
- GB/T 45859-2025耐磨铸铁分类
- 监狱警察心理健康讲座
评论
0/150
提交评论