ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:45.50KB ,
资源ID:6768125      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/6768125.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(LPC23XX的程序移植.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

LPC23XX的程序移植.doc

1、关于LPC24XX的程序移植         近来单片机升级了,一下子进入32位时代,有点措手不及!还好,网络互相的现代,工程师不必从头开始,充分利用网络资源,加快开发进程。由于以前一直使用KEIL开发51单片机,使用方便,便于调试仿真。值得庆幸的是现在ARM型单片机也可以在KEIL中调试。可是网上大部分ARM实例是基于ADS的。直接移植过来就会一警告和错误。   为了加快开发进程,还是选择移植借鉴部分实用例程。具体解决问题方法如下: 新推出的KEIL版开发工具RVMDK与老版ADS在工具架构组成上有以下不同:ARM编译器版本、调试器、软件仿真、以及调试单元。    出现如下提示:

2、USBdma.h(128): warning:  #1-D: last line of file ends without a newline compiling USBDriver.c... USBHAL.h(40): warning:  #1-D: last line of file ends without a newline USBdma.h(128): warning:  #1-D: last line of file ends without a newline 提示:"文件结束了但没有空行"这个警告, 这是由RVMDK编译器产生的警告,所有程序文件最后一行必须有空行,也可

3、不去理它。在提示处按一下回车就行了。    Startup.s(214): warning: A1608W: MOV pc, instruction used, but BX is preferred Startup.s(258): warning: A1608W: MOV pc, instruction used, but BX is preferred 由于编译器版本的变化,对应的编译选项也有所变化。将options for target中asm标签页里面的Eenable ARM/Thumb interworking复选框去掉,就不产生这样的告警信

4、息啦,不过不知道这样做会影响什么! 也可以根据提示改为BX跳转。如果您的程序中存在ARM/Thumb指令相互调用的情况,那么使用BX指令能够返回到正确的处理器状态。而使用MOV指令则不能实现处理器状态的切换。所以keil编译器建议您使用BX指令。例如把MOV  PC, LR 改为BX  LR  。 fio_release.axf: Error: L6238E: startup.o(vectors) contains invalid call from '~PRES8' function to 'REQ8' function FIQ_Exception. fio_release.axf:

5、Error: L6238E: startup.o(vectors) contains invalid call from '~PRES8' function to 'REQ8' function TargetResetInit. 这是由于对目标文件进行链接时,ARM工具的连接器会严格检查各个文件(objects),判断它们是否复合ARM体系结构的ABI表准。由于RVCT与ADS编译链接工具所遵循的ARM ABI不同,所以将ADS的遗留工程直接移植到RVMDK并进行连接时,用户可能会遇到错误或者警告:新工具的ABI要求在函数调用时,系统必须保证堆栈指针8byte对齐,即每次进栈或者出栈的寄存器

6、数目必须为偶数。这是为了能够更加高效的使用STM与LDR指令对“double”或者“long long”类型的数据进行访问。而老的ARM开发工具ADS并没有考虑到新的ARM内核架构,其ABI对于堆栈的操作仅仅要求4byte对齐。所以当用户将在ADS中编译连接成功的工程代码移植到RVMDK上,或者将老的、ADS遗留的目标文件、库文件在新工具RVMDK中进行连接时,RVMDK的连接器就会报出以上的错误。 解决方法如下: 在每个汇编文件的开头,添加“PRESERVE8”指令。       AREA    vectors,CODE,READONLY之前加   PRESERVE8。 如下:

7、          AREA    vectors,CODE,READONLY                 改为:    PRESERVE8   AREA    vectors,CODE,READONLY 检查汇编源码中的指令,确保堆栈操作指令是8byte对其的。ADS的遗留代码一次性将5个寄存器压栈,由于ARM的指令寄存器宽度为32位,即4byte,显然5个寄存器入栈之后,堆栈指针不能够满足64位,8byte对齐。为了解决这种情况,我们可以将另外一个并不需要压栈的寄存器,R12,同时压栈,这样当6个32位寄存器进栈之后,堆栈就能满足64位对齐了。 如: STMFD   SP!

8、 {R0-R3, LR}改为:STMFD   SP!, {R0-R3, R12,LR} 好了通过以简单的更改,程序通过了。由于接触时间太短,分享的只是解决方法,详细部分还不太清楚。希望共同讨论! Linker Error: L6238E: foo.o(.text) contains invalid call from '~PRES8' function to 'REQ8' 默认分类 2008-07-11 14:42:21 阅读86 评论0   字号:大中小 订阅 Linker Error: L6238E: foo.o(.text) contains invali

9、d call from '~PRES8' function to 'REQ8' function foobar Applies to: Assembler, Linker, RealView Developer Kit (RVDK) for OKI , RealView Developer Suite (RVDS) 2.0, RealView Developer Suite (RVDS) 2.1, RealView Developer Suite (RVDS) 2.2, RealView Development Suite (RVDS) 3.0, RealView Development S

10、uite (RVDS) 3.1 This RVDS/RVCT linker error is given where a stack alignment conflict is detected in object code. The "ABI for the ARM Architecture" demands that code maintains 8-byte stack alignment at its interfaces. This allows efficient use of LDRD and STRD instructions (in ARM Architecture 5T

11、E and later) to access 8-byte-aligned "double" and "long long" data types. Symbols like '~PRES8' and 'REQ8' are "Build Attributes" of the objects. · PRES8 means the object PREServes 8-byte alignment of the stack. · ~PRES8 means the object does NOT preserve 8-byte alignment of the stack (~ meani

12、ng NOT). · REQ8 means the object REQuires 8-byte alignment of the stack. This link error typically occurs in two cases: · where assembler code (that does not preserve 8-byte stack alignment) calls compiled C/C++ code (that requires 8-byte stack alignment), and · when attempting to link legacy

13、 SDT/ADS objects with RVCT 2.x objects. Legacy SDT/ADS objects that do not have these attributes are treated as '~PRES8', even if they do actually happen to preserve 8-byte alignment. For example: Error: L6238E: foo.o(.text) contains invalid call from '~PRES8' function to 'REQ8' function foobar T

14、his means that there is a function in the object foo.o (in the section named .text) that does not preserve 8-byte stack alignment, but which is trying to call function foobar that requires 8-byte stack alignment. A similar warning that may be encountered, where the address of an external symbol is

15、being referred to, is: Warning: L6306W: '~PRES8' section foo.o(.text) should not use the address of 'REQ8' function foobar Solutions There are two possible approaches to dealing with this issue: 1) If you have access to all your source code and are allowed to rebuild it In this case you should

16、rebuild all your objects/libraries using the latest version of the compilation tools. Note that if you have any assembler files, you will need to: i) check that all instructions preserve 8-byte stack alignment, and if necessary, correct them. e.g. change: STMFD sp!, {r0-r3, lr} ; push an odd numb

17、er of registers to: STMFD sp!, {r0-r3, r12, lr} ; push an even number of registers and: ii) add the PRESERVE8 directive to the top of each assembler file. e.g. change: AREA Init, CODE, READONLY to: PRESERVE8 AREA Init, CODE, READONLY (the PRES8 attribute applies to the whole object, not ju

18、st the code section). 2) If you cannot rebuild all of your source code If you have any legacy objects/libraries that cannot be rebuilt, either because you do not have the source code, or because the old objects must not be rebuilt (e.g. for qualification/certification reasons), then you must inspe

19、ct the legacy objects to check whether they preserve 8-byte alignment or not. Use "fromelf -c" to disassemble the object code. C/C++ code compiled with ADS 1.1 or later will normally preserve 8-byte alignment, but assembled code will not. If your objects do indeed preserve 8-byte alignment, then th

20、e linker error L6238E can be suppressed with the use of "--diag_suppress 6238" on the linker command line. By using this, you are effectively saying "I guarantee that these objects are PRES8". The linker warning L6306W is suppressible with "--diag_suppress 6306". If you are linking with legacy objects/libraries then you should also read the information on the option "--apcs /adsabi" in the FAQ entry "Are legacy ADS objects/libraries compatible with RVCT 2.0 ?".

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服