创客社区

 找回密码
 立即注册
搜索
查看: 601|回复: 0

[硬件] 树莓派上电内存初始化

[复制链接]

1

主题

1

帖子

5

积分

积分
5
发表于 2017-6-1 10:31:45 | 显示全部楼层 |阅读模式
         求助论坛的各位大神,本人目前对树莓派系统上电后内存的初始化比较感兴趣,所以做了一些实验。但是实验结果和我的认知有一些差别,固特来请教各位。我发现在通电情况下关机后立刻重启的话内存的大部分会被初始化为0xaa或0x55,但是据我所知Linux没有这种内存初始化的功能。然后如果是长时间断电再开机的话内存才会变成随机
         实验准备:
                      1.编写程序将物理内存映射到程序的实际内存,可以对内存进行读写操作,可以以16进制输出读到的内存信息。
         实验过程:
                      1.开机后读取物理内存地址0x5000000,长度128MB的数据,如果不是0xaa或0x55的话则打印。(0x55或0xaa)
                      2.开机后读取物理内存地址0x2BC00000,长度128MB的数据,如果不是0xaa或0x55的话则打印。(0x55或0xaa)
                      3.开机后读取物理内存地址0x5000000,长度4K的数据,对该区域写入4K长度的‘hello’,关机后立刻重启再读出此段内存数据。(两次读取到的数据都是0x55)
                      4. 开机后读取物理内存地址0x5000000,长度4K的数据,对该区域写入4K长度的‘hello’,使用reboot命令重启再读出此段内存数据。(第一次读取到的是0x55,第二次读取到的是'hello')
        实验分析:
                        首先我尝试了多个位置的内存读取操作,关机后立刻重启的话除了被使用的内存差不多都是0x55或0xaa,(二进制为0101和1010),感觉上像是内存测试数据。为了确认是软件控制的内存测试还是硬件控制的,我对4K内存先写入数据然后进行冷启动和热启动,观察内存区数据的变化。确认了在热启动后(使用reboot)我写入的数据还在内存里。这样的结果让我十分困惑,请问0xaa和0x55是在什么时候写入内存的,且目的是什么?


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|NXEZ 创客社区 ( 鄂ICP备11003621号-3

GMT+8, 2018-7-16 05:03 , Processed in 0.016651 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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