USB论坛
直播中

吕钢格

9年用户 1075经验值
私信 关注
[问答]

使用keil5编译CY68013A的程序时出现报错的原因?

当我使用keil5编译CY68013A的程序时,报出以下错误信息。 生成IIC文件的命令如下。 如果代码较小,比如小于8K不会报错,可以生成I2C文件。
问题1:根据文档AN45197:Using the Hex2bix Conversion Utility,hex2bix可以通过使用-M命令来改变生成的IIC文件的大小。 大小如何设置,比如9KB或者12KB? 能否提供具体的设置示例?
问题2:造成这个错误的原因是什么,如何解决。
期待你的答复!
------------------------------- keil5 对 cy68013a 编译的错误打印---------------
程序大小:数据=76.6 xdata=4487 代码=8360
从“cmosRdSlv”创建十六进制文件...
用户命令#1:C:CypressUSBCY3684_EZ-USB_FX2LP_DVK1.1Binhex2bix -i -f 0xC2 -m 12K -o cmosRdSlv.iic cmosRdSlv.hex
Intel Hex 文件到 EZ-USB 二进制文件转换实用程序
版权所有 (c) 2012-2013,Cypress Semiconductor Inc.
错误:输入图像对于输出文件大小来说太大。 地址 = 0x43,长度 = 0x3。
-----------------------------hextoi2c 命令--------------------------------------
C:赛普拉斯USBCY3684_EZ-USB_FX2LP_DVK1.1Binhex2bix -i -f 0xC2 -o cmosRdSlv.iic cmosRdSlv.hex

回帖(1)

李波

2025-5-15 17:36:17

针对您在使用Keil5编译CY68013A程序时遇到的问题,以下是逐步解答和解决方案:




问题1:如何通过-M参数设置IIC文件大小?


根据文档AN45197hex2bix工具的-M参数用于指定生成的IIC文件的总容量(以字节为单位),需以十六进制格式表示。具体示例如下:


示例1:生成9KB的IIC文件



  • 计算容量:9KB = 9×1024 = 9216字节 → 十六进制为 0x2400

  • 命令格式
    hex2bix -M 0x2400 -i input.hex -o output.iic


示例2:生成12KB的IIC文件



  • 计算容量:12KB = 12×1024 = 12288字节 → 十六进制为 0x3000

  • 命令格式
    hex2bix -M 0x3000 -i input.hex -o output.iic


注意事项



  1. 格式要求:必须使用十六进制前缀 0x(例如 -M 0x3000)。

  2. 对齐规则:容量需对齐到芯片的Flash块大小(通常为512字节或1KB)。

  3. 版本兼容性:确保使用的hex2bix版本支持-M参数。




问题2:编译错误原因及解决方案


错误根源分析



  • 默认容量限制hex2bix默认生成的IIC文件大小为8KB(即0x2000)。当代码超过此限制时,转换工具会因无法自动扩展容量而报错。

  • Keil链接器配置:若Keil工程的代码段(CODE)未正确扩展到目标容量(如12KB),编译生成的Hex文件可能无法适配-M参数指定的容量。


解决方案




  1. 调整Hex2bix的容量参数
    在生成IIC文件时,显式指定目标容量。例如:


    hex2bix -M 0x3000 -i project.hex -o firmware.iic



  2. 修改Keil链接器配置



    • 打开Keil工程,进入 Options for TargetBL51 Locate 选项卡。

    • Code Range 中设置代码段范围为 0x00000x2FFF(对应12KB):
      Code Range: 0x0000-0x2FFF

    • 重新编译工程,确保代码大小不超过目标容量。




  3. 验证代码优化



    • 检查代码中是否存在冗余或未使用的函数。

    • 启用Keil的代码优化选项(Options for TargetC51 → 优化级别设置为 8: Reuse Common Entry Code)。




  4. 检查内存模型



    • Options for TargetTarget 中,选择 Large: variables in XDATA 确保内存模型支持大代码段。






附加建议



  • Hex2bix日志验证:执行转换命令后,观察是否有警告或错误提示(如地址溢出)。

  • 芯片手册核对:确认CY68013A的Flash物理容量是否支持目标IIC文件大小(例如是否支持12KB)。

  • 工具链更新:确保Keil C51编译器、Hex2bix均为最新版本。




通过上述步骤,您应能解决因代码容量超限导致的IIC文件生成错误。如果仍有问题,请提供完整的错误日志以便进一步分析。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分