arm嵌入式软件开发

arm嵌入式软件开发

ID:26226926

大小:827.87 KB

页数:49页

时间:2018-11-24

arm嵌入式软件开发_第1页
arm嵌入式软件开发_第2页
arm嵌入式软件开发_第3页
arm嵌入式软件开发_第4页
arm嵌入式软件开发_第5页
资源描述:

《arm嵌入式软件开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式软件开发嵌入式开发过程“PC软件”独立的嵌入式应用当程序员开始开发一个基于ARM应用的时候,你可以使用ARM的ADS编写类似于“HELLOWORLD”的程序,使用ARMulator或者在评估板上来调试,但当你把他移植到独立的嵌入式应用设备中时,下面这些问题就成为我们首要考虑的:硬件环境中所使用的C库函数目标板上的存储器资源应用程序的初始化议程PC软件的构造定制标准C库函数到目标板定制IMAGE的存储器映射到目标板复位和初始化深层次的存储器器映象考虑编译和调试IMAGEADS默认的标准C库ANS

2、ICinput/outputerrorhandlingstack&heapsetupotherSemihostingSupport应用程序调用的C库函数eg:fputc()设备驱动层使用semihostingSWI’seg:_sys_write()调试工具环境CLibraryDebugAgentC库函数功能是支持PC软件的,而目标板上的可执行软件则依赖相关的硬件资源;在ARM体系中,我们可以采用semihosting通过相应的驱动来进行调试。ADS默认的存储器映射在默认的情况下,我们链接、定位、运行

3、在0x8000heap被直接放置在数据区的上面堆栈的基地址是通过调试环境从C库函数的StartupCode里读取出来的。ARMulator=>fromconfigurationfile(peripherals.ami)default=0x08000000Multi-ICE=>fromdebuggerinternalvariable$top_of_memorydefault=0x80000RORWZI0x8000链接时确定由调试环境提供Heap(malloc,alloc)StackCLibraryUs

4、erCode应用程序启动__maincopycodeanddatazerouninitializeddata__rt_entrysetupapplicationstackandheapinitializelibraryfunctionscalltop-levelconstructors(C++)Exitfromapplicationmain()causesthelinkertopullinlibraryinitializationcode程序入口点Agenda一个PC软件的构造定制标准C库函数到目标

5、板定制IMAGE的存储器映射到目标板复位和初始化深层次的存储器器映象考虑编译和调试IMAGE重定向C库函数(1)SemihostingSupportANSICinput/output你可以使用适合你目标板运行的驱动来替换标准C库中的设备驱动。Eg:printf()可打印到LCD上,而不是打印控制台上input/outputANSICCLibraryUserCodeDebugAgentTargetHardwareRetarget重定向C库函数(2)要重定向C库函数,简单的办法是使用你自己的可执行的se

6、mihostingSWIs来代替原来的C库函数,从而来满足你的系统要求比如说,theprintf()系列函数(sprintf()除外)都会调用fputc().在默认情况下fputc()的执行使用了semihostingSWI.用下面的语句来代替:externvoidsendchar(char*ch);intfputc(intch,FILE*f) {/*e.g.writeacharactertoanLCD*/ chartempch=ch;sendchar(&tempch); returnch; }可查

7、看在ADSEmbeddedexample目录下的retarget.c,可看到更多的重定向例子你可以确定有不在连接时使用semihostingSWI的吗?…...消除C库函数中的semihosting为了确保在连接时没有函数使用了semihostingSWIs,你可以在程序中加入下面的句子:#pragmaimport(__use_no_semihosting_swi)如果在程序中仍然使用了semihosting,编译时将会报错:Error:Symbol__semihosting_swi_guardmu

8、ltiplydefined修改:如果使用(check-verboselinkeroutputforoccurrencesofIuse_semihosting_swi),那么连接器将会把那些使用了smeihosting的程序列出来,然后:提供你自己可运行的功能函数。在ADS1.2编译器和库函数手册,表4-2给出了所有使用了semihosting的C库函数。注意:连接器在用户自己的应用代码中不会出现任何有关semihostingSWI使用的报告。Agenda一个PC软件的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。