本發(fā)明公開一種通過u-boot快速調(diào)試ddr內(nèi)存顆粒的方法,涉及內(nèi)存調(diào)試的相關(guān)技術(shù)領(lǐng)域。
背景技術(shù):
ddr是雙倍速率同步動態(tài)隨機存儲器。嚴(yán)格的說ddr應(yīng)該叫ddrsdram,人們習(xí)慣稱為ddr,是同步動態(tài)隨機存取的存儲器。ddr內(nèi)存是在sdram內(nèi)存基礎(chǔ)上發(fā)展而來的,仍然沿用sdram生產(chǎn)體系,因此對于內(nèi)存廠商而言,只需對制造普通sdram的設(shè)備稍加改進,即可實現(xiàn)ddr內(nèi)存的生產(chǎn),可有效的降低成本。
u-boot,全稱universalbootloader,是基于gpl條款的開放源碼項目,是gpl下資源代碼最完整的一個通用bootloader;在目前通過u-boot進行ddr內(nèi)存貼片顆粒調(diào)試的方法主要是通過編寫參數(shù)并進行計算再進行調(diào)試,這種方法需要通過對照數(shù)據(jù)手冊進行計算,容易出現(xiàn)誤差且比較慢,不能夠直觀的進行調(diào)試,在需要符合jedec標(biāo)準(zhǔn)的spd數(shù)據(jù)時無法直接通過jedec進行參數(shù)調(diào)整。
本發(fā)明提供一種通過u-boot快速調(diào)試ddr內(nèi)存顆粒的方法,對u-boot中ddr初始化部分代碼進行了改進,在獲取spd信息時,使用調(diào)試人員編寫的spd數(shù)組替換程序通過i2c尋找板卡中的eeprom獲取spd信息,將通過i2c讀出spd信息的方法替換為spd數(shù)組,目的是為了提高調(diào)試速度,提供直觀的參數(shù)調(diào)整,能夠?qū)崿F(xiàn)快速直觀的調(diào)試u-boot中符合jedec標(biāo)準(zhǔn)的spd數(shù)據(jù)。
技術(shù)實現(xiàn)要素:
本發(fā)明針對提供一種通過u-boot快速調(diào)試ddr內(nèi)存顆粒的方法,有效的提高了新板卡開發(fā)初期ddr內(nèi)存貼片顆粒調(diào)試的難度,加快了調(diào)試速度。
本發(fā)明提出的具體方案是:
一種通過u-boot快速調(diào)試ddr內(nèi)存顆粒的方法:
對u-boot中ddr初始化部分代碼進行了修改,使在u-boot中ddr獲取spd信息部分,將編寫的spd數(shù)組覆蓋替換到spd指針?biāo)赶虻耐ㄟ^i2c讀取的eeprom中spd數(shù)據(jù)的保存位置,以便無需每次對eeprom進行燒寫,加快調(diào)試速度。
所述在spd數(shù)組中使用的spd數(shù)據(jù)為符合jedec標(biāo)準(zhǔn)的spd數(shù)據(jù),若非符合jedec標(biāo)準(zhǔn)的spd數(shù)據(jù)則根據(jù)標(biāo)準(zhǔn)重新編寫spd數(shù)據(jù),并根據(jù)需要更改覆蓋長度。
刪除u-boot中通過i2c讀取eeprom中的spd數(shù)據(jù)的功能,并加入延時udelay以滿足驅(qū)動時的時序要求。
所述u-boot中ddr初始化在u-boot的/driver/ddr/main.c中的get_spd位置。
將所述編寫的spd數(shù)組通過memcpy覆蓋替換到spd指針?biāo)赶虻耐ㄟ^i2c讀取的spd數(shù)據(jù)的保存位置。
本發(fā)明的有益之處是:
本發(fā)明提供一種通過u-boot快速調(diào)試ddr內(nèi)存顆粒的方法:
對u-boot中ddr初始化部分代碼進行了修改,使在u-boot中ddr獲取spd信息部分,將編寫的spd數(shù)組覆蓋替換到spd指針?biāo)赶虻耐ㄟ^i2c讀取的eeprom中spd數(shù)據(jù)的保存位置;通過本發(fā)明方法進行ddr初始化調(diào)試能夠直接使用根據(jù)jedec標(biāo)準(zhǔn)編輯的spd數(shù)據(jù),且數(shù)據(jù)是數(shù)組格式,無需轉(zhuǎn)碼,大幅簡化了調(diào)試流程,使調(diào)試人員可以直接調(diào)整spd數(shù)值而無需每次都對eeprom進行燒寫工作,加快了調(diào)試速度。
附圖說明
圖1本發(fā)明方法流程示意圖。
具體實施方式
本發(fā)明提供一種通過u-boot快速調(diào)試ddr內(nèi)存顆粒的方法:
對u-boot中ddr初始化部分代碼進行了修改,使在u-boot中ddr獲取spd信息部分,將編寫的spd數(shù)組覆蓋替換到spd指針?biāo)赶虻耐ㄟ^i2c讀取的eeprom中spd數(shù)據(jù)的保存位置,以便無需每次對eeprom進行燒寫,加快調(diào)試速度。
結(jié)合附圖對本發(fā)明做進一步說明。
利用本發(fā)明方法,在u-boot的/driver/ddr/main.c中的get_spd位置,將ret強制設(shè)置為0,將spd數(shù)據(jù)以16進制數(shù)組的形式保存入數(shù)組,即為編寫的spd數(shù)組,
再將該數(shù)組通過memcpy覆蓋到spd指針?biāo)赶虻耐ㄟ^i2c讀取的spd數(shù)據(jù)的保存位置,參考如下代碼示例:
上述方法應(yīng)用中,為了應(yīng)對時序要求,可以刪除u-boot中通過i2c讀取eeprom中的spd數(shù)據(jù)的功能,并加入延時udelay以滿足驅(qū)動時的時序要求;
同時,在數(shù)組中使用的spd數(shù)據(jù)為符合jedec標(biāo)準(zhǔn)的spd數(shù)據(jù),若非符合jedec標(biāo)準(zhǔn)的spd數(shù)據(jù)則可根據(jù)相關(guān)標(biāo)準(zhǔn)重新編寫spd數(shù)據(jù),并根據(jù)需要更改覆蓋長度。
利用本發(fā)明方法能夠直接使用spd數(shù)據(jù)進行編寫和ddr初始化調(diào)試,能夠簡單直觀的調(diào)整數(shù)據(jù),同時本發(fā)明方法不使用通過i2c獲取的eeprom中的spd數(shù)據(jù),在調(diào)試過程中無需反復(fù)燒寫eeprom,大幅節(jié)省了調(diào)試時間和成本。