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

[复制链接]

该用户从未签到

5

主题

41

帖子

0

注册会员

Rank: 2

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

我的这个内核是ARM Cortex M0+,这个区别很大吗
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-15 10:37:11 | 显示全部楼层
本帖最后由 小恩GG 于 2016-4-15 10:45 编辑
我娘她女儿真萌 发表于 2016-4-15 10:24
我的这个内核是ARM Cortex M0+,这个区别很大吗

主要是不同系列的芯片,用的寄存器名称不一样。
如果是KE的话,那么需要判断的寄存器是SIM_SRSID[POR],这个在对应的reference manual 可以看到。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

41

帖子

0

注册会员

Rank: 2

积分
198
最后登录
2017-4-18
 楼主| 发表于 2016-4-15 10:41:48 | 显示全部楼层
小恩GG 发表于 2016-4-15 10:37
主要是不同系列的芯片,用的寄存器名称不一样。
如果是KE的话,那么需要判断的寄存器是SIM_SRSID,这个在 ...

恩,我已经改动过了,十分感谢
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-15 10:44:36 | 显示全部楼层
我娘她女儿真萌 发表于 2016-4-15 10:22
你好,我其实想实现的是,部分未初始化的全局变量在非上电复位的情况下不会清0,部分未初始化的全局变量 ...

如果这样,那你参考下这篇经验分享:
https://www.nxpic.org.cn/module/forum/thread-580565-1-1.html
指定变量的地址试试,然后判断不是上电复位拷贝RAM的时候,不拷贝相应的ROM地址。
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.5]常住居民I

    5

    主题

    422

    帖子

    1

    高级会员

    Rank: 4

    积分
    983
    最后登录
    2024-10-22
    发表于 2016-4-15 10:45:49 | 显示全部楼层
    在不想初始化的变量定义之前,放上:

    #pragma DATA_SEG bss
    int non_initialize_varible;

    bss段是你链接器配置文件中定义的专门用来存放未初始化变量的段,你看一下这个配置文件中,此段名是否是bss这个名字。
    1.jpg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 10:58:16 | 显示全部楼层
    dongshan_1949 发表于 2016-4-15 10:45
    在不想初始化的变量定义之前,放上:

    #pragma DATA_SEG bss

    名字就是bss,
    #pragma DATA_SEG bss
    int non_initialize_varible;
    我的疑惑是在启动代码中,zero_fill_bss()已经将此未初始化的变量进行了清0操作,你的这种写法是将此变量放置在了bss段中。如果没有#pragma DATA_SEG bss,同样也是将此变量放在bss中的。

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 11:00:19 | 显示全部楼层
    dongshan_1949 发表于 2016-4-15 10:45
    在不想初始化的变量定义之前,放上:

    #pragma DATA_SEG bss

    我的想法是再次开辟一个指定的RAM区,分配一个数据段,此数据段在启动代码中没有清0操作,然后将变量定义在此数据段中
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 11:04:28 | 显示全部楼层
    dongshan_1949 发表于 2016-4-15 10:45
    在不想初始化的变量定义之前,放上:

    #pragma DATA_SEG bss

    按照层主的建议,进行编译,导致有编译警告,ignoring #pragma DATA_SEG bss [-Wunknown-pragmas]
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.5]常住居民I

    5

    主题

    422

    帖子

    1

    高级会员

    Rank: 4

    积分
    983
    最后登录
    2024-10-22
    发表于 2016-4-15 11:13:59 | 显示全部楼层
    我娘她女儿真萌 发表于 2016-4-15 11:04
    按照层主的建议,进行编译,导致有编译警告,ignoring #pragma DATA_SEG bss [-Wunknown-pragmas] ...

    我t很少用cw10.6,所说的只是一些想法,没实际操作过。
    你把段名改成.bss试试。
    如果bss段代码在启动代码中被清零,你可以把zero_fill_bss()去掉试试。
    如果你另外建立一个新段,,我觉得这种方法也可行,但操作细节有很多要考虑。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    198
    最后登录
    2017-4-18
     楼主| 发表于 2016-4-15 11:17:20 | 显示全部楼层
    dongshan_1949 发表于 2016-4-15 11:13
    我t很少用cw10.6,所说的只是一些想法,没实际操作过。
    你把段名改成.bss试试。
    如果bss段代码在启动代码 ...

    我的想法是未初始化的数据复位部分清0,部分不清0,所以不能完去掉zero_fill_bss。再开辟一个RAM区的话,很多细节问题,正是我想要问的
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 19:00 , Processed in 0.105351 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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