查看: 6756|回复: 9

[CodeWarrior] 求帮助,关于codewarrior工程设置

[复制链接]

该用户从未签到

9

主题

29

帖子

0

注册会员

Rank: 2

积分
73
最后登录
1970-1-1
发表于 2014-8-21 22:19:14 | 显示全部楼层 |阅读模式
我现在有一个工程里面有一个函数放在RAM里运行,用makefile环境编译通过后下载运行正常,调试观察PC指针运行正常

但是我用codewarrior新建工程后把makefile里的文件都添加进工程后,编译通过后下载,这个时候程序只要一执行这个在RAM里的函数就发生异常了,观察PC指针,PC跳到RAM后,再执行一步就死了。

这两种方法的代码是一样的,唯一有差的makefile的make环境和codewarrior的IDE环境有区别。

我想问下这种情况大概会是哪里有问题?和codewarrior的工程环境有没有关系,有的话工程环境该怎么设?

我知道答案 目前已有9人回答
回复

使用道具 举报

该用户从未签到

9

主题

29

帖子

0

注册会员

Rank: 2

积分
73
最后登录
1970-1-1
 楼主| 发表于 2014-8-21 22:20:14 | 显示全部楼层
对了,芯片是MPC560X系列,希望得到freescale工程师的支持
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

29

帖子

0

注册会员

Rank: 2

积分
73
最后登录
1970-1-1
 楼主| 发表于 2014-8-21 22:21:41 | 显示全部楼层
codewarrior版本2.1
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-8-26 10:49:55 | 显示全部楼层
    应该是拷贝到RAM的过程出了问题。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    705

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1745
    最后登录
    1970-1-1
    发表于 2014-9-1 10:39:09 | 显示全部楼层
    楼主,你拷贝RAM的代码是怎么写的呢?贴出来看看。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    73
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-2 16:30:45 | 显示全部楼层
    拷贝的时候是在main函数之前的,这段代码会用到库函数里面的信息

    拷贝代码里会用到 _rom_copy_info,这个结构体是库函数里面的,应该是工程在编译后生成相应的地址信息,我觉得拷贝代码肯定没错,错的应该是这个地址信息,但就是不知道为什么我搬进工程后,这个地址信息就不对了。

    C文件里:
    #  pragma push
    #  pragma section code_type ".xxx" ".xxx"

    void yyy(void)
    {
    }
    #  pragma pop
    LCF文件:
        _ramcode_start = .;
        .ramcode (VLECODE) LOAD(ROMADDR(.sdata) + SIZEOF(.sdata)) : {
            *(.xxx)                     
        }
        _ramcode_end = .;

    不知道这样的语法有没有错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    73
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-2 17:35:25 | 显示全部楼层
    还有我发现在编译的时候有warning,

    No linker command file input for section '.xxx' in file 'xxx.o'.
    Output section '.xxx' will be created.


    Overlap of the .magic section and .xxx section.


    Overlap of the .nmibase section and .xxx section.


    我是不是在lcf文件里还要对“.xxx”这个段指定一个rom的地址
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    802

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1763
    最后登录
    1970-1-1
    发表于 2014-9-3 10:59:55 | 显示全部楼层
    你是不是用错地址啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    73
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-3 11:43:18 | 显示全部楼层
    aaa999kk 发表于 2014-9-3 10:59
    你是不是用错地址啦

    _ramcode_start = .;
        .ramcode (VLECODE) LOAD(ROMADDR(.sdata) + SIZEOF(.sdata)) : {
            *(.xxx)                     
        }
        _ramcode_end = .;

    .xxx这一段是放在RAM里的啊,而.magic和.nmibase都是放在ROM的起始地址啊,但不知道为什么编译的时候会报overlap的警告,

    不过我有个问题是.xxx这一段我在LCF文件里是放RAM里的,那么编译器是如何确定这一段放在ROM的具体地址的?这段代码肯定事先要存在ROM里的啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-9-10 14:07:31 | 显示全部楼层
    zhenghuaqwe 发表于 2014-9-3 11:43
    _ramcode_start = .;
        .ramcode (VLECODE) LOAD(ROMADDR(.sdata) + SIZEOF(.sdata)) : {
            *(.x ...

    楼主CW的问题,可以到FAE版块去重新发个帖子,那里会有CW的相关工程师帮你解答。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-11 20:55 , Processed in 0.112281 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表