- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ADS高级应用,ads应用详解,ads1115应用电路,ads7828应用,ads830应用电路,ads7843linux应用,ads1110应用电路,ads1230应用,ads1248应用电路,ads1246应用
ADS默认的标准C库 ADS默认的存储器映射 在默认的情况下,我们链接、定位、运行在0x8000 heap 被直接放置在数据区的上面 堆栈的基地址是通过调试环境从C库函数的Startup Code 里读取出来的。 ARMulator = from configuration file (peripherals.ami) default = 0Multi-ICE = from debugger internal variable $top_of_memory default = 0x80000 应用程序启动 __main copy code and data zero uninitialized data 重定向C库函数 (1) 你可以使用适合你目标板运行的驱动来替换标准C库中的设备驱动。 Eg: printf( ) 可打印到LCD上,而不是打印控制台上 重定向C库函数(2) 要重定向C库函数,简单的办法是使用你自己的可执行的semihosting SWIs来代替原来的C库函数,从而来满足你的系统要求 比如说, the printf()系列函数(sprintf()除外) 都会调用fputc(). 在默认情况下fputc()的执行使用了semihosting SWI. 用下面的语句来代替: extern void sendchar(char *ch);int fputc(int ch, FILE *f){ /* e.g. write a character to an LCD */ char tempch = ch; sendchar(tempch); return ch;} 可查看在ADS Embedded example目录下的retarget.c,可看到更多的重定向例子 你可以确定有不在连接时使用semihosting SWI 的吗?…... 消除C库函数中的semi hosting 为了确保在连接时没有函数使用了semi hosting SWIs ,你可以在程序中加入下面的句子: #pragma import(__use_no_semihosting_swi) 如果在程序中仍然使用了semihosting ,编译时将会报错: Error: Symbol __semihosting_swi_guard multiply defined 修改: 如果使用 (check -verbose linker output for occurrences of I use_ semihosting_ swi), 那么连接器将会把那些使用了smeihosting 的程序列出来, 然后: 提供你自己可运行的功能函数。 在ADS 1.2 编译器和库函数手册, 表4-2给出了所有使用了semihosting的C库函数。 注意: 连接器在用户自己的应用代码中不会出现任何有关 semihosting SWI使用的报告。 分散加载(Scatterloading) 在一个实际应用当中,你可能并不想在0x8000处开始运行。 大多数嵌入式系统都有存储器设备,他们的地址空间是在整个存储器映射中交叉出现的。 分散加载提供了一种把你的代码和数据放在不同的存储器定位上的办法 分散加载定义了两种类型的存储器区域。 Load 区: - 在reset/load时保留了应用程序的代码和数据 (典型应用为 ROM). Execution 区 – 在程序执行的同时保留了程序的代码和数据。在应用程序启动 期间,每个load区都可创建一个或多个可执行区。 分散加载了的应用把详细的存储器映射保存在一个描述文件中,作为一个参数给armlink使用 eg: armlink program.o -scatter scatter.scf -o program.axf 分散加载(简单例子) Scatter 描述文件 通配符(*)语法允许简单的对CODE 和DATA 进行分组 链接器放置规则 在每个可执行区,链接器通过一些基本的规则来放置CODE 和DATA 基本的排序方法是通过属性来安排的: RO 领先于RW ,RW 领先于ZI 有相同的属性时,CODE 在DATA之前放置。 更多的排序方法决定于: 输入的组名按字母排序, 在ARMLINK命令行中指定的顺序。 eg: armlink file1.o file2.o … 在SCATTOR 文件中的对象排序 为了把特定的CODE 和DATA 放在指定的地址上,你可以不考虑标准的放置规则 使用+FIRST 和 +LAST ,直接把第一个和最后一个对象放在可执行区。 图例:把VECTOR表放在区的开始。 ROOT区 LOAD
您可能关注的文档
- 2014届高三数学一轮复习(基础知识+小题全取+考点通关+课时检测):9.1分类加法计数原理和分步乘法计数原理.doc
- 2014届高考物理一轮课时知能训练:实验6验证机械能守恒定律.doc
- 2014届高三毕业班理综选择题每周一练6.doc
- 2014届高考语文百日备考策.doc
- 2014年第二次质量预测九年级英语分析材料.doc
- 2014年考前预测(教研员).doc
- 2014年二级建造师《建筑实务》考点.doc
- 2014年长宁区初三物理一模试卷及答案.doc
- 2014年高二普通高中学业水平测试模拟试题.doc
- 2014生物学考.doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)