主題 : uboot可以從2g mlc啟動內核了完成了ecc校驗(等這一刻很久了) 復制鏈接 | 瀏覽器收藏 | 打印
:)
級別: 圣騎士
UID: 61588
精華: 5
發帖: 250
金錢: 1500 兩
威望: 300 點
貢獻值: 5 點
綜合積分: 600 分
注冊時間: 2012-01-02
最后登錄: 2018-03-05
樓主  發表于: 2013-08-25 13:59

 uboot可以從2g mlc啟動內核了完成了ecc校驗(等這一刻很久了)

管理提醒: 本帖被 xoom 執行加亮操作(2013-08-25)
算算弄這個的時候是6月份,7月份工作變動,就放下了,沒有弄這個了。工作內容不是太忙了,又想起來了我的tiny210v2-uboot還不能從NandFlash啟動內核,實在是很不爽,就決定這個周末要搞出來!每次要做一個東西的時候,會全心關注,誰也不搭理!調試,printf打印,打印機打印,對比,分析。像著了魔一樣,現在距離周末過完還有幾個小時,我可以好好的整理我的代碼,我會把此時正在調試的代碼原封不動的push到github上,過程要比結果重要的多。



這里簡單說下怎么使用:
啟動這個,還先基于Superboot的燒寫,然后來根據它產生的校驗碼來做uboot拷貝內核時候的校驗
Step1

Step2: setenv machid 0xd8a
Step3:nand read 21000000 400000 500000
Step4:crc32 21000000 496248 20000000
Step5:go 21000000

bin文件:
本部分內容設定了隱藏,需要回復后才能看到



再說一句就整理代碼去了,這里要感謝壇子里邊的 mhjong 還有github上的wb0330。在BL1代碼發出之后,給出了很多指導和意見!交流明白了很多東西,才能有勇氣去研究啟動內核和燒寫yaffs。

經過多次實驗用go來啟動zImage是不太穩定的,可以用bootm來啟動uImage是比較靠譜一些。(uboot代碼更新還會在這里:http://arm9home.net/read.php?tid-80476.html)

關鍵是driver/mtd/nand/s5pc1xx_nand.c這個文件和修改。這里邊有jsgood 或者liukun123移植的8bit的ecc校驗,說是用在slc上的,我在slc上測試,slc都沒有位翻轉過,不知道是怎么測試的NandFlash讀with 8bit ecc(代碼中如果有翻轉位并糾正了會打印出來的,試了10幾遍都沒有見到翻轉)。本來看著架構好一些,就想先將8bit 移植到mlc上,結果mlc翻轉了,8bit ecc卻沒有糾正,這是一個很奇怪的問題。因為這個費了一天的時間。最后決定自己實現。幾個小時有了進展。

要收工準備明天上班的內容了,把遺留的問題也寫一下:
1.對NandFlash的讀基本上和BL1上一樣,沒有做過多的判斷,空頁,壞塊都沒有判斷。(還好目前的NandFlash在kernel分區還沒有壞塊 
2.還不能燒寫yaffs,我還沒有做這方面的分析,也就沒有測試,開啟軟件ecc應該是可以的,這個是知道這一點,沒有深入。下周周末有時間再搞。
3.代碼還是有點不規范,有點不入流,再整理。
4.應試沒有第4了。

當時準備先實現8bitECC結果對比如下:



結果是似乎沒有做糾正。  

所以直接實現16bitECC了,不過開始也是這種情況,然后先定位是不是ecc校驗碼的問題,打印出來是沒有問題的,再最后發現有翻轉但是沒有檢測到
 
如圖中的1處一直是0,甚至會在上一個512Byte出現的翻轉,下一個512Byte才會說有翻轉,我開始注意NFECCSTAT_REG了,再讀數據手冊,看到這個是要手動清理的,
所以添加了2處內容,就可以準確的檢測翻轉位了。

還有一點,這次調試16bitECC要比以前好一些了,uboot中的很多東西都能用,特別把crc32都用上了,校驗的好不好,crc32一下。如果和原文件的crc校驗值完全一樣說明校驗成功。

還要客觀評價一下那個8bti的ecc校驗都沒有按照samsung要求的步驟寫,沒有讀了怎么都不能理解。
[ 此帖被kangear在2013-08-25 20:42重新編輯 ]
級別: 俠客
UID: 58655
精華: 0
發帖: 130
金錢: 645 兩
威望: 130 點
貢獻值: 0 點
綜合積分: 260 分
注冊時間: 2011-11-11
最后登錄: 2017-09-13
1樓  發表于: 2013-08-25 17:28
看看,,,,
級別: 風云使者
UID: 36096
精華: 3
發帖: 2536
金錢: 14075 兩
威望: 2815 點
貢獻值: 3 點
綜合積分: 5132 分
注冊時間: 2011-01-11
最后登錄: 2015-11-15
2樓  發表于: 2013-08-26 15:33
大神能給mini210s移植一個嗎。。。
極度缺錢,求捐贈……支付寶兼郵箱:[email protected]
:)
級別: 圣騎士
UID: 61588
精華: 5
發帖: 250
金錢: 1500 兩
威望: 300 點
貢獻值: 5 點
綜合積分: 600 分
注冊時間: 2012-01-02
最后登錄: 2018-03-05
3樓  發表于: 2013-08-26 23:10

 回 2樓(huhu2207) 的帖子

搜了一下mini210s的NandFlash,似乎也是2g MLC的。不知胡哥的Nand是什么型號的。如果頁大小也是8k,現在的代碼應該可以直接用上。我這邊關鍵是沒有辦法測試。

還有一點:現在友善的板子全部棄用MLC了,不知道這是一個什么征兆。
級別: 俠客
UID: 94357
精華: 0
發帖: 63
金錢: 320 兩
威望: 64 點
貢獻值: 0 點
綜合積分: 126 分
注冊時間: 2013-07-15
最后登錄: 2017-09-13
4樓  發表于: 2013-08-27 14:16
        
級別: 俠客
UID: 94357
精華: 0
發帖: 63
金錢: 320 兩
威望: 64 點
貢獻值: 0 點
綜合積分: 126 分
注冊時間: 2013-07-15
最后登錄: 2017-09-13
5樓  發表于: 2013-08-27 14:17
        
級別: 新手上路
UID: 73050
精華: 0
發帖: 47
金錢: 235 兩
威望: 47 點
貢獻值: 0 點
綜合積分: 94 分
注冊時間: 2012-07-03
最后登錄: 2014-09-05
6樓  發表于: 2013-08-28 15:30
新人循著前輩的研究學習中
級別: 俠客
UID: 8892
精華: 0
發帖: 88
金錢: 440 兩
威望: 88 點
貢獻值: 0 點
綜合積分: 176 分
注冊時間: 2009-09-09
最后登錄: 2019-04-07
7樓  發表于: 2013-08-28 19:08
首先非常感謝Kangear的代碼和帖子。我現在就是用你的U-Boot 代碼 用在 SLC flash上的。加上了對I2C, GPIO的操作。USB 一直沒有加成功。至于1Bit SLC HW ECC U-Boot 是否已經實現, Kernel 已經用了1Bit HWECC,感覺好像是有了,是否起作用還不清楚。
有如下 問題請教:
1,為什么U-Boot啟動好像比SuperBoot 慢?比lkmcu的版本也慢?
2,能否用SD卡上的U-Boot燒 NAND flash 上的U-Boot, Kernel 和 文件系統?SuperBoot 燒的位置固定,無法滿足需求。
3,如何看出Minitools燒的SuperBoot, KERNEL 是多少位HW ECC?

多謝
:)
級別: 圣騎士
UID: 61588
精華: 5
發帖: 250
金錢: 1500 兩
威望: 300 點
貢獻值: 5 點
綜合積分: 600 分
注冊時間: 2012-01-02
最后登錄: 2018-03-05
8樓  發表于: 2013-08-28 20:27

 回 7樓(fchen2) 的帖子

1.關于快慢的問題,要看你的flash是什么類型的mlc還是slc,如果是slc的,速度應該沒有什么差別的u-boot之間。如果用mlc的啟動速度和slc的啟動速度比,那是沒有辦法比的,mlc啟動是要校驗的,而slc不用。還有如果和superboot比,我只能說友善是一個團隊,我只是一個代碼散人,所以沒有人家優化的好。不過在《分析一下tiny210v2的16bitECC校驗(http://arm9home.net/read.php?tid-80271.html)》有人提出了U-boot中BL1優化方案,我在下邊也試了,可以再優化,這幾天再更新。
2.sd卡上當然可以了燒寫了。sd和nand的是一個bin文件。只是啟動時不一樣,后邊的都是一樣的。
3.怎么看出,這個沒有什么絕技 1看宣傳 2你可以用uboot從sd卡啟動后,用nand dump 400000 看內核在NandFlash中的數據信息結合s5pv210數據手冊就可以看出了。210里邊slc的用的8bit的,mlc用的16bit的。
級別: 新手上路
UID: 13281
精華: 0
發帖: 5
金錢: 25 兩
威望: 5 點
貢獻值: 0 點
綜合積分: 10 分
注冊時間: 2010-01-21
最后登錄: 2013-12-02
9樓  發表于: 2013-08-28 20:29
謝謝樓主的分享
現在在學習uboot中
鸟叔电子游戏