你好
在使用 mwasmeppc.exe 编译汇编文件时,我遇到了一个问题、这是错误信息:
* 编译 s -> o
*
### mwasmeppc.exe Assembler:
# File: .\output\obj\cstartup.s
# ---------------------------------
# 88: e_and2i.
# Error: ^^^^^^^^
# 当前目标处理器的指令不合法
### mwasmeppc.exe 汇编器:
# 99: sub r4,r3
# 错误: ^^^^^
# 简化助记符子的参数不足
### mwasmeppc.exe 汇编器:
# 114: e_or2i r31,0x4002
# Error: ^^^^^^
# 对于当前目标处理器,指令不合法
某些命令( e_and2i.sub e_or2i)无法识别,但该文件 cstartup.s 可与其他编译器(Greenhills、Windriver 等)配合使用。
CodeWarrior 版本: 适用于 MPC55xxMPC56xx v2.10。
MCU: XPC560XB
CPU 类型为 -proc Zen
我不知道是我错过了一些编译器选项,还是我需要包含一些编译器文件?
顺祝商祺!
思佳
这是一个有趣的问题!这可能与 CodeWarrior 处理旧版汇编指令或项目设置的方式有关。您可以尝试查看编译器配置,检查是否正确设置了所有汇编路径。要更清楚地了解此类程序或法律文件细节,您可以访问迈阿密戴德在线案例,获取有关结构化流程和案件处理的参考式见解。有时,重温文档标准有助于有效确定缺失的配置。
如果 CodeWarrior 不支持某些工具或功能(如汇编器),就会很麻烦。要获得有关相关规则和合规性的更多指导或验证,刑事法庭数据等资源有时可以提供有用的参考点。探索替代方法或支持模块可确保开发工作更加顺利。随时了解制约因素有助于防止意外错误并简化编码项目。
嗨,思佳、
我已将"答案" 贴到您的另一个主题上。请检查。
此致,
Martin
嗨,马丁、
非常感谢。
我还有一个关于汇编代码的问题https://community.nxp.com/thread/434043你能看看吗?
顺祝商祺!
思佳
嗨,思佳、
请查看附件,我向您发送的是使用 CW 2.10 生成的一些项目的默认链接器文件。您可以将其作为链接文件的指南。
关于调试信息,这里有部分文档介绍了如何在 .elf 中添加调试信息锉刀希望能对您有所帮助。如果没有,请告诉我,我会尝试不同的解决方案。
-------------------------------------------------------------------------------
调试控制选项
-------------------------------------------------------------------------------
-g[dwarf] # 全局;套用;生成 DWARF 1.x 调试
# 信息;与"-sym dwarf-1,full "相同
-gdwarf-2 # 全局;套用;生成 DWARF 2.x 调试
# 信息;与"-sym dwarf-2,full" 相同
-sym 关键字[,...] # 全局;指定调试选项
off # 不生成调试信息;
# 默认值
on|dwarf-1 # 打开 DWARF 1.x 调试信息
dwarf-2 # 打开 DWARF 2.x 调试信息
-----------------------------------------------------------------------------------------------------
此致,
马丁
嗨,马丁、
我修改了 lcf 文件,现在项目可以生成地图和精灵了。
现在 lcf 文件仍然有一些错误,当我使用 Trace32 调试代码时,它找不到启动代码,我怎样才能将启动代码(__entry)定义为 0x0 地址?
另一个问题是,我只能在 Trace32 中看到汇编程序,您知道如何才能在 Trace32 中看到 c 文件吗?
顺祝商祺!
思佳
嗨,思佳、
MAP 文件看起来不完整。在连接项目时是否有任何错误?您是否能获得 .elf文件?您只共享了一个对象文件,因此我无法尝试链接。
因此,能否请您给我回信,最后能否请您分享您想链接到一起的所有对象文件?
此致,
Martin
嗨,马丁、
这些是 .o文件和地图文件。
顺祝商祺!
思佳
嗨,思佳、
能否请您分享一下生成的地图文件?为什么您认为地图文件不正确?
能否共享您试图链接的对象文件?
此致,
Martin
嗨,马丁、
我使用的是 mwldeppc。
顺祝商祺!
思佳
嗨,思佳、
您是使用 CodeWarrior IDE 还是 mwldeppc 命令行工具进行链接?
参考资料
Martin
您好,
这些是我使用的链接选项:
LINK_OPT += -proc=Zen #mcu 类型;通用
LINK_OPT += -char=unsigned #设置 "char "的符号;必须与编译器匹配。
LINK_OPT += -srec #生成扩展名为 .mot 的 S 记录文件
LINK_OPT += -map #生成地图文件
LINK_OPT += -code_merging=all,aggressive #代码合并优化
LINK_OPT += -far_near_addressing #启用远近寻址优化
LINK_OPT += -vle_enhance_merging #启用 VLE 增强代码合并优化功能
LINK_OPT += -vle_bl_opt
LINK_OPT += -abi eabi
LINK_OPT += -gdwarf-2
LINK_OPT += -nostdlib
LINK_OPT += -m __entry
顺祝商祺!
思佳
您好,
好的,但现在我无法生成正确的 .Map 文件,是否需要添加一些链接选项?或 .o文件不好吗?
这是生成的地图文件的一部分:
__入口的链接地图
代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\Platforms_ConTest_RamNoInit.o
代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\main.o
代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\板.o
…
顺祝商祺!
思佳
嗨,思佳、
是的,你完全可以使用自己的启动程序,而不是 CodeWarrior 启动文件。
此致,
Martin
您好,
感谢您的解决方案,现在我又遇到了一个关于启动代码的问题:
CodeWarrior 有自己的启动文件__start.c and __ppc_eabi_init.c、
我能用自己的启动代码代替这两个文件吗?
CodeWarrior 版本:适用于 MPC55xxMPC56xx v2.10。
MCU: XPC560XB
顺祝商祺!
思佳
嗨,思佳、
我看到了一些不一致的地方,可能是你要编译的代码中存在的问题:
1) 指令e_and2i和e_or2i是 VLE,而sub是 BookE。在使用mwasmeppc.exe 时,不可能在一个文件中编译两种指令。
2) 指令子程序必须有三个参数。
有几种解决方案:
1) 最好的办法是用 se_sub 代替 sub 指令,se_sub 是 VLE 指令,需要 2 个参数。不要忘记使用 -vle 选项编译文件。
2) 可以用 BookE 指令替换 VLE 指令,并在子指令中添加第三个参数。
看看附件,我给你发了 bookE 和 VLE 参考手册,其中详细描述了所有说明。
如果您有任何其他问题,请随时给我回信。
此致,
Martin
当 CodeWarrior 抛出汇编程序错误时,尤其是当语法中的所有内容似乎都正确时,会令人沮丧。有时,问题会归结为配置或指令丢失,因此仔细检查项目设置会有所帮助。最近,我在研究文档准确性时遇到了里士满法律服务公司,它提醒我,可靠的参考资料在故障排除中是多么重要。希望分享这样的经验能帮助其他人更快地摆脱困境。
我在尝试使用 CodeWarrior 中的汇编程序时也遇到了同样的问题,这让我非常沮丧。对于任何需要可靠法院信息的人来说,威尔公共记录都是查询备案和案件详细信息的有用资源。它使某些法律问题的解决变得更加容易,而无需依赖零散的资料来源。如果您想快速查阅官方记录,绝对值得一试。