使用 a d s 1 . 2 进行嵌入式软件开发( 上)

使用 a d s 1 . 2 进行嵌入式软件开发( 上)

ID:27722742

大小:391.50 KB

页数:6页

时间:2018-12-05

使用 a d s 1 . 2 进行嵌入式软件开发( 上)_第1页
使用 a d s 1 . 2 进行嵌入式软件开发( 上)_第2页
使用 a d s 1 . 2 进行嵌入式软件开发( 上)_第3页
使用 a d s 1 . 2 进行嵌入式软件开发( 上)_第4页
使用 a d s 1 . 2 进行嵌入式软件开发( 上)_第5页
资源描述:

《使用 a d s 1 . 2 进行嵌入式软件开发( 上)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式系统■美国ARM公司使用ADS1.2进行嵌入式软件开发(上)概述�在主程序执行前,嵌入式应门术语叫Semihosting。Semihosting嵌入式应用程序通常都是在样用程序必须先完成系统的初始化。通过一组软件中断(SWI)指令来实机环境下调试与开发的,这种环境一个完整的初始化包括用户的启动现。如图1所示,当一个Semihosting与最终产品之间并不完全相同。因执行代码和ADS中C库函数的初始软中断被执行时,调试系统先识别此,在系统调试阶段就考虑应用程化过程。这个SWI请求,然后挂起正在运行序在最终目标硬件中的运行情况是的程序,调用Semihosting的服务,非常重要的。缺

2、省的工程项目设置完成后再恢复原来的程序执行。因本文旨在讨论如何将一个开刚开始一个嵌入式应用软件开此,主机执行的任务对于程序来说发/调试环境下的嵌入式应用程序发时,ADS用户可能并不完全清楚是透明的。转移到最终独立运行的目标系统中目标硬件的一些参数指标。比如有�C语言库函数结构去,并提到了ARMADS1.2开发工关外设、存储器地址分布,甚至处从概念上来讲,C语言库函数具包的一些功能特性及其在这个过理器类型等一些细节,可能还没有可以被分成两部分,一是ANSIC语程中所起到的作用。最终确定。为了在所有这些细节全言规范本身的一部分,一是只受某使用ADS开发嵌入式程序时,部就绪前就能进行软件开发

3、,ADS一特定ANSIC层次支持的函数,需要着重考虑以下几个问题:工具有一套程序构建和调试的缺省如图2所示。�与硬件相关的C语言库函数设置。了解这套缺省的工程项目设其中一些ANSIC的功能是由的使用;置方法,对于掌握最终的移植步骤主机调试环境调用驱动程序级的函�某些C语言库函数使用了调试非常有好处。数完成的。例如,ADS的库函数环境中的资源,要把这些使用的资ADS1.2C语言函数库printf()把输出信息输出到调试器的源重定向到目标系统中的硬件上来;�Semihosting控制台窗口,这个功能通过调用�可执行映象文件的存储器映在ADS的C语言函数库中,某__sys_write()实现

4、,__sys_write()执射必须根据目标硬件的存储器分布些ANSIC的功能是由主机的调试行了一个把字符串输出到主机控制进行裁剪;环境来提供的,这套机制有一个专台的Semihosting软中断服务程序。602003.4电子设计应用www.eaw.com.cn嵌入式系统缺省的存储器映射连接器布局规则能。缺省的ADS初始化过程如图5如果用户在程序编译时没有指连接器对代码和数据在存储器所示。定映象的存储器映射分布,ADS将系统中的分配,遵循一套规则,如总体上,初始化过程可以分成为生成的目标代码和数据分配一个图4所示。两部分来看:缺省的存储器映射图,如图3所示。映象首先按照属性以RO-RW-

5、�_main负责设置运行映像存储�目标印象被连接至地址ZI的次序进行排列,在同一种属性器映射;0x8000,存储和执行区域都位于该里面代码先于数据。然后连接器将�_rt_entry负责库函数的初始化。地址开始的空间。RO(只读)部分放输入段根据名字的字母顺序进行排_main完成代码和数据的复制,在前面,接着是RW(读写)部分,最列,输入段的名字与汇编代码里面并把ZI数据区清零。这一步只有当后是ZI(零初始化)部分。的块名字指示一致(在汇编程序中代码和数据区在存储和运行时处于�在ZI部分之上紧跟着HEAP,用AREA关键字)。在输入段中,来不同的存储器位置时才有意义。接所以HEAP的确切

6、地址要在连接时自不同对象的代码和数据放置次序着_main跳进_rt_entry,进行STACK才能确定。与在连接器命令行中指定的对象文和HEAP等的初始化。最后_rt_entry�STACK的基地址是在应用程件次序一致。跳进应用程序的入口main()。当应序启动时由一个Semihosting操作提在需要灵活分配代码和数据放用程序执行完时,_rt_entry又将控供。这项Semihosting操作返回的地置位置的情况下,建议用户不要简制权交还给调试器。址值视不同调试环境而定:单地依靠这些规则。后面会介绍一函数main()在ADS中有特殊的�ARMulator返回配置文件种如何控制代码和数

7、据布局的机制意义。当一个程序工程项目中存在peripherals.ami中的设置值;缺省为Scatterloading。main()时,连接器会把_main和0x08000000。启动应用程序_rt_entry中的初始化代码连接进来;�Multi-ICE返回的是调试器内大多数嵌入式系统在进入应用如果没有main()函数,初始化过程部变量$top_of_memory的值;缺省主程序之前有一个初始化的过程,就不会被连接,结果就会导致一些为0x000

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

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

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