高通msm8937的BLSP學習

1.基礎概念

(1)   Bus Access Module (BAM),總線訪問模塊

BAM is used to move data to/from the peripheral buffers.

(2)   BAM Low-Speed Peripheral (BLSP),低速接口的總線訪問模塊

(3)   QUP:Qualcomm Universal Peripheral,高通統一的外設

 

2.Msm8937 BLSP

BLSP是高通對於低速接口的一種管理方式,8937 平臺含有兩個BLSP(BAM Low-Speed Peripheral) 塊,對應於12個BLSP端口。 每一個BLSP塊含有最多六個Qualcomm Universal Peripheral (QUP)和六個UART cores、其中SPI和IC2核心集成到一個名字爲QUP核心,並且共享同一個FIFO,而UART_DM單獨集成並有自己的FIFO,所有的這3個core共享同一個總線接口,也就是對外共用相同的I/O接口,比如:

但是對於只使用兩個UART引腳的UART_DM,比如只用到GPIO_4(TX)和GPIO_5(RX),也是使用兩個引腳的I2C接口這時也可以同時使用:

通過相關手冊查詢到每個外設屬於BLSP多少。

 

3. 確認我們使用的I2C對應哪個BLSP和QUP

比如我們採用SDA---GPIO6,SCL---GPIO7,

(1)   到msm8937-pinctrl.dsti確認GPIO6和GPIO7對應設備樹中是哪組I2C

其實從上圖可知道是第1個BLSP的第2個QUDP,但我們從設備樹上找到相關的

(2)   通過i2c_2_active找到msm8937.dtsi下有引用

這裏可知是採用BLSP1的QUP2,I2C核基準地址是0x78b6000

(3)   Lk部分確定所用的I2C對應的BLSP和QUP

來看bootable\bootloader\lk\platform\msm_shared\include\blsp_qup.h下的定義

從這裏可以看出QUP是從QUP_ID_0開始,那麼我們的使用的GPIO6和GPIO7的I2C對應QUP_ID_1,使用示例如下:

4. QUP基地址和IRQs

BLSP routes the following interrupts from its subcores:

BAM_IRQ – Indicates that a BAM operation has completed

PERIPHERAL_IRQ – Driven by UART or QUP; shared at the peripheral level for status updates and errors of the peripheral; a status register in the peripheral core allows software to distinguish between interrupt sources

 

參考:

高通無人機8074 BLSP接口說明

http://huaqianlee.github.io/2016/04/27/Uav/Qualcomm-uav-blsp-port/

高通APQ8074 spi 接口配置

https://blog.csdn.net/jumper511/article/details/25622833

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章