日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于 printk() 对 spi slave 内核驱动程序的性能影响

發布時間:2024/9/5 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于 printk() 对 spi slave 内核驱动程序的性能影响 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

調試 imx6 的 spi slave 內核驅動,前期調試總免不了得要追一下寄存器的設置,過程函數的調用。

采用了 printk() 打印語句。

?

1、采用的硬件方法是:

分析 imx6 spi slave 的各路引腳主要是 clk, cs, mosi, miso, gnd, vcc,連接至spi 主端(CC1110f32 MCU)

的各路對應引腳。對應如下:

?imx6 spi 從機cc1110f32 spi 主機
vccvcc
gndgnd
clk  clk
cscs
mosimosi
misomiso

2、采用的軟件方法是:

1)官方的補丁程序 https://community.freescale.com/docs/DOC-97380

2)不能直接打補丁,照著修改之后,參考spi datasheet 進行源碼分析,使用printk() 跟蹤數據流

3)確保主從端使用的 cpol, cpha, cs, sclk 的配置一致

?

3、最終結果:

spi slave 端只能正確接收從spi 主端發出的單個字節的數據,接收多個數據后數據發生丟字節情況。

在每個片選之間加 類似于

for (i=0; i < 10000; i++);

的延時后發現,當i < 10000時,多個字節數據接收正確,當 i < 5000 時,多個字節數據只接收了一半正確數據。

比如 0 1 2 3 4 5 6 7 8 9 在 i < 10000 時,spi slave 端接收到的是 0 1 2 3 4 5 6 7 8 9

在 i < 5000 時, spi slave 端接收到的是 0 2 4 6 8

在 i < 2000 時,spi slave 端接收到的甚至是 0 4 8

?

于是,將內核中的 printk() 去掉之后,發現只要在每次片選之間添加不到100us? 的延時,接收端即可正確接收

主spi 端發來的數據,而無數據丟失。

?

至此,得出一個結論:在涉及通訊類總線的調試時,前期在 printk() 的情況下進行單字節的發送接收是可以的。

一旦面臨快速發送接收的時候,printk() 這樣的調試語句將嚴重影響總線的性能,畢竟 printk() 占用了總線通信

時間。

?

轉載于:https://www.cnblogs.com/aqing1987/p/4423283.html

總結

以上是生活随笔為你收集整理的关于 printk() 对 spi slave 内核驱动程序的性能影响的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。