查看: 7471|回复: 24

[CodeWarrior] CW10.6中如何实现RAM区复位不清0

[复制链接]

该用户从未签到

5

主题

41

帖子

0

注册会员

Rank: 2

积分
198
最后登录
2017-4-18
发表于 2016-4-14 08:53:57 | 显示全部楼层 |阅读模式
各位大神,我想实现某些全局变量在复位的时候不被清0,这个CW10.6中应该如何设置,如何开辟一个特定的区域来保存这些全局变量,谢谢!
我知道答案 目前已有24人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2019-10-22 10:33
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    5

    主题

    422

    帖子

    1

    高级会员

    Rank: 4

    积分
    983
    最后登录
    2024-10-22
    发表于 2016-4-14 10:53:20 | 显示全部楼层
    楼主有license吗。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-14 15:49:39 | 显示全部楼层

    没有,这个有关系吗
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-14 17:07:32 | 显示全部楼层
    问题描述不清楚,我再次描述一下,就是定义一些全局变量,除上电复位之外,其他复位不会清0这些全局变量
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24903
    最后登录
    2025-7-22
    发表于 2016-4-15 09:46:42 | 显示全部楼层
    楼主你好!
    你找下启动代码,会发现有一些拷贝flash数据到RAM的地方。
    你在那段代码前面加一个条件:if( ( RCM_SRS0 & RCM_SRS0_POR_MASK) == RCM_SRS0_POR_MASK  )
    这样,只有上电复位的时候,才刷新全局变量,后面软件复位就会保持最新的全局变量数据。
    Codewarrior 应该在__arm_start.c中,你试下。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 10:05:58 | 显示全部楼层
    小恩GG 发表于 2016-4-15 09:46
    楼主你好!
    你找下启动代码,会发现有一些拷贝flash数据到RAM的地方。
    你在那段代码前面加一个条件:if( (  ...


                    我找了一下启动代码,发现Flash拷贝到RAM区的时候,也有一个条件,但是这个条件具体是什么意思,我没有理解,如果再加上你给出的条件,这两个条件是与的关系,我的理解对吗?
            源代码:if (__S_romp != 0L)

                                    __copy_rom_sections_to_ram();
            修改后的源代码::if ((__S_romp != 0L)&&( ( RCM_SRS0 & RCM_SRS0_POR_MASK) == RCM_SRS0_POR_MASK  ))

                                    __copy_rom_sections_to_ram();
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 10:09:55 | 显示全部楼层
    我娘她女儿真萌 发表于 2016-4-15 10:05
    我找了一下启动代码,发现Flash拷贝到RAM区的时候,也有一个条件,但是这个条件具体是什么意思,我没 ...

    咱们可能用的MCU是不一样的,所以我想问的就是你的这个条件其实就是判断复位源是否是上电复位,如果是上电复位,条件成立,如果不是上电复位,条件不成立?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24903
    最后登录
    2025-7-22
    发表于 2016-4-15 10:18:17 | 显示全部楼层
    我娘她女儿真萌 发表于 2016-4-15 10:09
    咱们可能用的MCU是不一样的,所以我想问的就是你的这个条件其实就是判断复位源是否是上电复位,如果是上 ...

    我用的芯片是Kinetis K系列的,不知道你用的是什么芯片,这个版块是针对ARM cortexM 内核的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 10:22:12 | 显示全部楼层
    小恩GG 发表于 2016-4-15 09:46
    楼主你好!
    你找下启动代码,会发现有一些拷贝flash数据到RAM的地方。
    你在那段代码前面加一个条件:if( (  ...

    你好,我其实想实现的是,部分未初始化的全局变量在非上电复位的情况下不会清0,部分未初始化的全局变量在所有复位的情况下都会清0.
    层主实现的是所有的未初始化的全局变量只要是非上电复位的情况下就不会清0.
    像DZ60芯片的PRM文件中就可以把RAM分为几部分,一个是复位清0区,一个是复位不清0区。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 10:23:01 | 显示全部楼层
    小恩GG 发表于 2016-4-15 10:18
    我用的芯片是Kinetis K系列的,不知道你用的是什么芯片,这个版块是针对ARM cortexM 内核的。
    ...

    我用的是Kinetis E系列的,KEA128
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 18:58 , Processed in 0.101695 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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