BIOS實戰之Memory配置
目前有SPD和SMIP兩種,現在主要配置SMIP,soft:BMP;需要修改的相關檔案smip.c
BGA:貼片式,Dimm:插槽,MemoryDown:貼片必須要用到的:
ch0 RankEnable-->ch0 Option,這些選項的配置看Memory Spec和Gen,其中Ch0_RankEnable:only for memorydown 這個和CS以及channel有關
RMT mode 執行邊緣檢驗模式,這個如果有問題說明很有可能是電路問題,這個功能開啟是給硬體做Debug用的,在巨集定義中,Set的值是不變的,option的值為0或者1,config可以是數字,字元,字串
smip.c的增刪改查:(待定)
DQ Mapping for CHO to CH3:
bit0~31對應的ch0、ch2為DQ 8~15,0~7,24~31,16~23
bit0~31對應的ch1、ch3為DQ 0~31
另外有關project.h這個檔案,一些基礎的資訊被收集在了project.h檔案中,其中有setup介面中main選項中的眾多子選項,其中包括bios vendor,bios version, build time等相關資訊,但是這個project.h這個檔案是在Build後生成的。
#ifdef CONFIG_ODM_PROJECT_ID
Status = GetMemSkuId (&MemSkuId);
if (EFI_ERROR (Status)) {
MemSkuId = 0x00;
}
DEBUG ((EFI_D_INFO, "=====================================================\n"));
// Bit3 Bit2========Bit1 Bit0
// ID3 ID2========ID1 ID0
//2G 0 0 Hynix----: 0 0
//4G 1 0 Samsung-: 1 0
//8G 0 1 Micron---: 0 1
// ID4,Bit4 0 DDR3L,1 LP4
MemSkuId &=0x0F;//now only for LP4
#if (CONFIG_ODM_PROJECT_ID == 0)
MemSkuId = 0x10;//DDR3L
#endif
DEBUG ((EFI_D_INFO, "Memory ID: 0x%2X\n", MemSkuId));
DEBUG ((EFI_D_INFO, "Memory Type: %s %s\n",MemMfg[MemSkuId&0x03],MemSize[((MemSkuId>>2)&0x03)]));
switch ((MemSkuId>>4)&0x01) {
case 0://for LP4
//Bit[4,3]=00 2G(Single Channel), 10 4G(Dual Channel), 01 8G(Dual Channel),11 4G(Single Channel)
switch ((MemSkuId>>2)&0x03) {//Memory Size
case 0x00://2G(Single Channel)8Gb
case 0x02://4G(Dual Channel)8Gb
DramConfig = &(DramConfigData->PlatformDram0);//8Gb Profile
DEBUG ((EFI_D_INFO, "Profile set to 0\n"));
break;
case 0x01://8G(Dual Channel)16Gb
case 0x03://4G(Single Channel)16Gb
DramConfig = &(DramConfigData->PlatformDram1);//16Gb Profile
DEBUG ((EFI_D_INFO, "Profile set to 1\n"));
break;
}
break;
case 1://For DDR3L
DramConfig = &(DramConfigData->PlatformDram5);
DEBUG ((EFI_D_INFO, "Profile set to 5, DDR3L\n"));
break;
}
Memory中channel,DIMM,rank,bank,cs,chip之間的聯絡:
一個channel對應一組記憶體控制器
相關文章
- ECS實戰之IPv6隧道配置
- 【面試實戰】# 併發程式設計之執行緒池配置實戰面試程式設計執行緒
- SYS-BIOS中malloc和Memory_alloc的區別iOS
- 外掛化之VirtualApk實戰一:專案配置APK
- Docker 實戰之 CentOS7 系統環境配置DockerCentOS
- 淺談RASP技術攻防之實戰[環境配置篇]
- 【GNU/Linux實戰手記之安裝配置篇】 (轉)Linux
- Hadoop2.7實戰v1.0之Flume1.6.0搭建(Http Source-->Memory Chanel --> Hdfs Sink)HadoopHTTP
- Java Out Of Memory解決之JAVA_OPTS引數說明與配置Java
- Storm實戰之WordCountORM
- Storm實戰之TopNORM
- Nuxt.js實戰和配置UXJS
- Linux Quota的配置實戰Linux
- Flink實戰(102):配置(一)管理配置
- 聯想筆記本win7系統通過BIOS中禁用Optane Memory的方法筆記Win7iOS
- 聯想筆記本win7系統透過BIOS中禁用Optane Memory的方法筆記Win7iOS
- shiro實戰系列(二)之入門實戰續
- R750配置raid_透過biosAIiOS
- kubebuilder實戰之七:webhookUIWebHook
- Django之MTV實戰(2)Django
- golang實戰之flag包Golang
- 機器學習實戰之開篇機器學習
- Flutter實戰之動畫實現篇Flutter動畫
- Flume NG 簡介及配置實戰
- Windows10開機之後進BIOSWindowsiOS
- 使用者系列之六:多使用者使用同一個配置檔案之實戰篇
- redis4.0之MEMORY命令詳解Redis
- Java 8 Stream之實戰篇Java
- helm實戰之開發Chart
- iOS動畫實戰之Lottie動畫iOS動畫
- YARN的Memory和CPU調優配置詳解Yarn
- Spring Boot 外部化配置實戰解析Spring Boot
- Dubbo使用Apollo作為配置中心實戰
- Spring Boot外部化配置實戰解析Spring Boot
- # Spring Boot 外部化配置實戰解析Spring Boot
- Nginx實戰(三) 日誌配置與切割Nginx
- Spring Boot自動配置原理、實戰Spring Boot
- 實戰 SQL Server 2005 映象配置SQLServer