## Linux 核心專題: 錯誤更正碼 (ECC) 和應用 > 執行人: chihen0709 ## 任務說明 Error-Correcting Codes(ECC) 廣泛用於通訊傳輸,補正因為資料損壞、雜訊所導致的錯誤。本任務探討 ECC 原理,並分析 Linux 核心內部對於 ECC 的處理機制。 ### 錯誤更正碼 (ECC) 錯誤更正碼 (Error Correction codes,ECC) 常用通訊系統及資料儲存中,修正資料於傳輸、映射過程及儲存等過程所導致之錯誤。 過往人們談及通訊理論的時候,通常只著眼於物理手段使訊號更清楚如:增加天線、增強訊號強度,直至 Claude Shannon 於1948年發表之論文<通訊之數學原理> (A Mathematical Theory of Communication) 打破人們對於傳統通訊理論的認知,並奠定了如今數位通訊理論之基礎。 Shannon 的理論不僅顛覆了人們對於通訊系統改進的傳統觀點,更是以一己之力將通訊乃至資料的儲存、壓縮、傳輸,帶進全新的紀元,從而奠定資訊理論 (information theory) 這個學科的基礎。 ![image](https://hackmd.io/_uploads/ByGnIOtIC.png) :::danger 注意書寫規範: * 無論標題和內文中,漢字和英語字元之間要有空白字元 (對排版和文字搜尋有利) * 工程人員要避免說「感覺」這類不精準的話語 > 收到謝謝老師!(by chihen0709) ::: ## TODO: 檢視同儕的成果 > 檢視 [Linux 核心專題: 錯誤更正碼 (ECC) 介紹和實作考量](https://hackmd.io/@sysprog/HkxFLnvL0),確認其內容描述正確,若發現錯誤,則留言建議變更,並參與相關討論。 >1.可以介紹linear block code 和 convolution code 的差異 因為您是先介紹 SEC code,R-S code也是 BCH code 的一種形式感覺可以稍微講解 BCH code 的數學概念 因為對於 BCH code 來說 RS-code 是其的 Subset 都屬於 cyclic code的一種(也就是有限體) > >2.於 Error Correction Coding_ Mathematical Methods and Algorithms 此書中介紹 SEC code 中有提及 binary symmetric channel (BSC) 及 Gaussian model channel 進而引入 Hamming distance 及 Ham[ming weight 的概念 能否解講詳細一些 > >3.奇偶校驗矩陣對於 codeword 向量應該會有${H^T}$ c=0 >4. ## TODO: 理解 Documentation/core-api/librs.rst 用法 ## TODO: 準備 Linux kernel module 利用 librs 在實作核心模組前,我們必須先檢查 Kernel 是否編譯相關的 Reed-Solomon 模組: ```shell grep REED_SOLOMON /boot/config-$(uname -r) CONFIG_REED_SOLOMON=m CONFIG_REED_SOLOMON_ENC8=y] CONFIG_REED_SOLOMON_DEC8=y CONFIG_REED_SOLOMON_DEC16=y # CONFIG_REED_SOLOMON_TEST is not set ``` [Nandflashmodule](https://github.com/chihen0709/NANDRS) > 應用案例,可參照 MTD/NAND