作者:GWD 時間:2019.7.9
一、課程内容:
摘要:首先引入了GPIO、協定類、記憶體類外設的概念。重點講解了CPU和記憶體控制器如何發送片選信号給記憶體類外設,以及記憶體範圍的概念。
1、問:CPU可以控制的外設有哪些種類?
答:

2、問:CPU如何發出時序信号給外設?
答:首先寫入資料給相關的寄存器,也就是相應外設的初始化。CPU會根據資料選擇不同的子產品發出不同的協定電平信号。GPIO和協定類接口,CPU發出的資料都是給内部控制器的,不會輸出到外設中,但是記憶體類控制器例外。
3、問:記憶體類裝置怎麼避免互相影響呢?
答:利用片選信号
4、問:怎麼發出片選信号?
答:程式發出資料給CPU,CPU會把位址資料發送給記憶體管理器,記憶體管理器會根據位址所處的位址範圍選擇不同的子產品發出不同的協定電平信号。GPIO和協定類接口,CPU發出的資料都是給内部控制器的,不會輸出到外設中,但是記憶體類控制器例外。
5、問:S3C2440的位址範圍是怎麼劃分的?
答: CPU雖然是32位的但是尋址能力是1GB,把這1GB劃分了8塊,每塊128MB。0x08000000=134217728=128M
例如:當CPU發出0x38000000-0x4000000位址時候ngcs7片選信号低電平
6、問:為什麼尋址線最多是27條而不是32條,不應該是32位的位址麼?
答:原因如下,第一、确實是32位的CPU,CPU也發出了32位位址,但是根據手冊知道記憶體控制器最大的位址是0x40000000也就是1GB大小,若按照32位尋址是4GB大小,是以記憶體管理能力是不足的,隻能僞32位的位址進行尋址,記憶體管理器尋址實際上是要比32位低的;第二、若直接1GB進行尋址的話,片選信号就沒辦法發出了,所有的記憶體類外設都一次尋到了無法分别發出片選信号了。是以把這1GB分成了8份每一份128MB,然後根據記憶體控制器發出的不同位址選擇相應的128MB區域。記憶體控制器128MB位一個單元,2的20次方是1MB,2^7是128是以記憶體控制器需要 27條位址線輸出到外設上尋址第三、記憶體類外設最大就是128M記憶體,然後被選中的晶片再根據位址線選擇内部的小空間。
二、學習要點(無)
三、代碼(無)