明確相關(guān)基本概念
1)計算機系統(tǒng)包括硬件和軟件,硬件層面上僅僅包括兩類:CPU核和"外設"。
2)任何ARM處理器(例如三星的S5P6818)內(nèi)部包括兩部分:CPU核和各種硬件外設控制器。
例如:具體參見S5P6818芯片手冊SEC_S5P6818X完整版.pdf的P34
結(jié)論:S5P6818內(nèi)部包含了8個CPU核和各種硬件外設的控制器(LCD顯示屏控制器,Nandflash控制器,DDR內(nèi)存控制器,SD卡/TF卡/EMMC控制器,UART串口控制器等)
將來CPU核要想訪問某個外設,CPU必須通過對應的控制器來訪問具體的外設。
外設的控制器類似橋梁,控制器幫助CPU核間接訪問外設。
參見bt.bmp,根據(jù)此圖得到結(jié)論:
1.明確CPU核不允許直接訪問BT
2.CPU首先訪問UART控制器
3.UART控制器在訪問BT
3)CPU核功能:僅僅做數(shù)據(jù)運算,數(shù)據(jù)來自外設(例如BT或者內(nèi)存條)數(shù)據(jù)經(jīng)過CPU核的運算最終還是要回歸到外設。
"外設":提供數(shù)據(jù),除了CPU核以外的任何硬件,包括肉眼看得到的硬件(例如EMMC,內(nèi)存條)還包括肉眼看不到的硬件(各種處理器內(nèi)部集成的控制器)
結(jié)論:只要以上電,CPU核就和外設玩命時時刻刻的進行數(shù)據(jù)的交互 。
4)ARM處理器內(nèi)部集成的各種外設的控制器內(nèi)部同樣集成了一大堆的寄存器
“寄存器”:能夠暫存數(shù)據(jù)的硬件,掉電數(shù)據(jù)丟失,和內(nèi)存一模一樣。
并且這些一大堆的寄存器都有自己的物理地址。
注意:寄存器同樣也是外設
5)切記:CPU核訪問外設都是以地址指針的形式訪問
CPU核要想訪問某個外設,必須先獲取到這個外設的起始地址
6)CPU核訪問外設的具體流程
以CPU核給BT藍牙發(fā)送數(shù)據(jù)為例:
1.CPU核軟件上以地址指針的形式訪問UART控制器內(nèi)部的一大堆寄存器,本質(zhì)就是CPU核通過控制器內(nèi)部的寄存器間接給控制器發(fā)送控制命令
例如:某個UART控制器中寄存器的基地址為0xC002C000,寄存器的大小為4字節(jié)目標是向這個寄存器寫入命令數(shù)據(jù)0x55555555
*(unsigned long *)0xC002C000 = 0x55555555;
2.UART控制器一旦接收到CPU發(fā)送來的控制命令,UART控制器硬件上自動的操作處理器和BT之間的硬件連接線。
3.硬件連接線將來在自動影響外設BT
總結(jié):CPU核訪問外設的基本流程:
1.CPU核軟件上以地址指針的形式訪問外設對應的控制器內(nèi)部的寄存器,其實就是CPU核給控制器發(fā)送控制命令。
2.控制器一旦接收到了CPU核發(fā)送來的控制命令,控制器會自動操作之間的硬件連接信號線。
3.硬件連接信號線將來在自動影響操作外設。
切記:計算機中,CPU核和外設的硬件通信方式常見的有以下幾種:
GPIO通信方式/UART串口通信/I2C總線通信方式/SPI總線通信方式/1-Wire總線通信方式等。