
系統平台: ARMv4
kernel 版本: 2.6.21
前家公司的嵌入式產品系統架構沒有很大,所以不需要很大容量的flash;
又該SOC上面沒有NOR or NAND flash的controller,所以只能使用SPI Flash
做為存放zImage以及相關DATA之用。
最早的時候是公司其他同仁利用字元驅動+IOCTL的方式來讀寫SPI Flash,
後來想要能夠套用本來Linux就有的MTD架構,於是乎就抱持著研究的精神
來研究一下相關的東西XD。
那時候google出來有用的訊息不太多,後來偶然發現新一點的kernel 2.6.28裡面
有一個支援 SPI flash 的驅動程式 m25p80.c,於是乎我就把它搬進來2.6.21,
然後再做了一點小修改,如此一來就支援 Linux 本來用來讀取flash的MTD架構,
更白話的說就是可以支援MTD partition切割以及利用mtd-utils等工具來讀寫flash了。
下圖是整個的架構圖,可以看到user-space發出讀寫命令開始,整個架構會牽扯到
MTD跟SPI兩大模組,MTD core 與SPI core 方面kernel 已經幫我們準備好了,
我們要做的就是修改/新增m25p80.c 與SOC上面的SPI controller 驅動程式。










