首页 > 代码库 > NVRAM 简介(Xv6-JOS /kern/kclock.c 简要分析)

NVRAM 简介(Xv6-JOS /kern/kclock.c 简要分析)

NVRAM 简介


问题的引出,在kclock.c看到如下的代码,之前做过CMOS时间信息读取的练习,但是还是会奇怪,怎么会去IO_RTC+1地址处读东西呢?



看看何方神圣调用了这两个函数


这里传入了参数NVRAM_BASELO以及NVRAM_EXTLO,这什么东东

在pmap.c里面可以找到相关定义,然后感觉有些晕菜啊~




究竟inb都在RTC里面读了些神马,还是去看MC146818芯片的datasheet才会知道


我们常遇到或者读取的会是右边部分的CMOS时间信息

注意MC_NVRAM_START 的定义就是0xe(由kclock.h可知),So ... 我们看到这里50byte 的user RAM起始地址就是14(0xe)



但是看i386_memory_detect()

会觉得很奇怪, 物理内存的多少会写到RTC芯片的RAM里面去么?有待Linuxers 讨论~


update:2014.10.08


以前看CSAPP只知道RAM分两种——SRAM和DRAM,这两种都会因为掉电而丢失信息是volatile

而像EPPROM,FLASH之类就不会因为掉电丢失信息.


                  RAM is normally associated with volatile types of memory (such asDRAM memory modules), where stored information is lost if the power is removed, although many efforts have been made to develop non-volatile RAM chips  —— wikipedia.




WTK....我一直琢磨NVRAM是什么,咋么是这么个简写. non-volatile RAM


至于RAM里面储存什么信息,那是之前就订好的事情了,关于为什么NVRAM_BASELO等是如前图所示那样定义的,这方面的资料很少(本人没有找到,如有高手路过恳请指导)




NVRAM 简介(Xv6-JOS /kern/kclock.c 简要分析)