實現功能
主控(amlogic a113x)串列埠和mcu(stm32) 進行串列埠通訊,實現資料的傳輸,由stm32控制燈效.看似簡單的乙個雙方對接功能,還是走了不少彎路的.
串列埠dts配置
//amlogic a113x引腳編號
gpioz_8 -> i2c_sck_b/uart_tx_ao_b
gpioz_9 -> i2c_sda_b/uart_rx_ao_b
根據引腳功能中uart_rx_ao_b和dts中的serial2 = &uart_ao_b對應
aliases ;
uart_ao_b: serial@4000 ;
//串列埠正常載入之後,會顯示
ls /dev/ttys0
ttys0 ttys1 ttys2 ttys3
mcu進行通訊
首先呼叫a方提供的動態庫, 通過file *so
發現是mips格式,而a113x需要的是
file ***.so
***.so: elf 32-bit lsb shared object, arm, eabi5 version 1 (sysv), dynamically linked, buildid[sha1]=2a8193fca2caa7fcb9f62120f8bd34152a38ee9b, not stripped
寫了乙個小的測試程式,驗證的動態庫,如下 :
arm-linux-***/g++ -w -wall -o2 -g -std=c++11 -wl,-rpat=.-o *** ***.cpp -l . -l***x -lpthread
a方提供的mcu程式使用c++ 11實現,這點還是值得學習的
除錯
發現led沒有反應,這個時候只能單獨測試, 通過pc的串列埠驗證,也不行,只能排查硬體.
意外發現mcu和主控的 rx / tx接反了, 修改後正常.
經驗說明專案的手板什麼低階的硬體錯誤都可以犯, 還是要靜下心來分析問題,解決問題
這次的坑:
功放iic通訊不成功, 功放iic sda scl 短路導致
串列埠和外設通訊不成功, rx/tx接反
4 串列埠驅動
1 初始化gpio的模式和速度 2 配置中斷優先順序分組 3 串列埠初始化 4 串列埠服務函式編寫 我是分割線 一 gpio初始化 gpio埠設定 gpio inittypedef gpio initstructure rcc apb2periphclockcmd rcc apb2periph gp...
Linux串列埠驅動程式 6 串列埠驅動實現
在linux驅動開發中,一般都不會從0開始寫,我們做的更多的是移植和修改,有時候還需要對驅動程式進行優化。當然具備移植 修改驅動能力的基礎是能夠讀懂驅動程式,同時需要對這個驅動程式的核心功能非常了解。接下來開始編寫傳送中斷處理程式和接收中斷處理程式的 1.傳送中斷處理程式的設計 傳送中斷處理程式 s...
國嵌攻略 132 串列埠驅動實現
如何開發linux驅動程式 一般情況下都會有現成的驅動程式,不需要從零開始開發驅動程式。所以linux驅動開發主要分為兩個步驟 1.讀得懂驅動程式 2.寫的了核心功能。傳送中斷處理程式 傳送中斷處理函式在 drivers serial samsung.c的s3c24xx serial tx char...