stm32+djyos下串列埠緩衝區配置
就這行簡單程式碼:
write(UartFd,DataBuf,100);
執行時間有時候長,有時候短,直接影響了後續程式碼的執行,why?
進一步瞭解到,使用者傳送資料,是間歇式的,連續發完一組資料後,會間歇比較長的一段時間,每組資料,會分好多次write傳送,總共大概幾百位元組。
帶著這個問題,我們來談談通訊緩衝區,顧名思義,緩衝區是用來調和CPU執行速度和通訊埠速度的,緩衝區設定不足,緩衝作用就會打折扣,設定過大,則浪費記憶體空間。該使用者使用stm32f767+djyos,地球人都知道,stm32f767跑起來有多快,而串列埠通訊有多慢,使用者的問題,其實就是緩衝區設定的問題。
djyos的串列埠裝置,都有一個環形緩衝區,write時,如果buffer有空閒空間,則把資料copy到buffer中,然後返回;如果buffer沒有空間,則阻塞等待buffer空閒。write函式執行時間,與呼叫時buffer是否有足夠的空間有關,由於使用者傳送的間歇性,只要buffer能夠容納一組資料就不會有問題。開啟djyos的圖形化配置介面,檢查其工程配置,果然發現其傳送緩衝區只配置了128位元組,改成512後,問題解決。
歡迎轉載,轉載註明出處。
相關文章
- STM32串列埠DMA接收雙緩衝串列埠
- Java NIO:緩衝區Java
- stdio流緩衝區
- Linux 命令 管道 緩衝區Linux
- Java NIO 之緩衝區Java
- Java整數緩衝區Java
- Unity深度緩衝區指令Unity
- MySQL 配置InnoDB變更緩衝MySql
- PHP的輸出緩衝區PHP
- Node.js Buffer(緩衝區)Node.js
- Java NIO 之 Buffer(緩衝區)Java
- 緩衝區溢位實驗
- JavaScript WebGL 幀緩衝區物件JavaScriptWeb物件
- 緩衝區溢位攻擊
- Nginx代理緩衝 proxy_buffering 配置Nginx
- PHP 輸出緩衝區應用PHP
- 8、Node.js Buffer(緩衝區)Node.js
- 緩衝區溢位小程式分析
- Java-NIO之Buffer(緩衝區)Java
- 《Lua-in-ConTeXt》10:緩衝區魔法Context
- Redis效能篇(五)Redis緩衝區Redis
- Linux下串列埠監視Linux串列埠
- C語言清空輸入緩衝區C語言
- 初識Netty原理 (二)——ByteBuf緩衝區Netty
- MySQL中讀頁緩衝區buffer poolMySql
- 緩衝管理
- Wgpu圖文詳解(03)緩衝區BufferGPU
- Redis緩衝區溢位及解決方案Redis
- oscp-緩衝區溢位(持續更新)
- 虛擬串列埠工具和串列埠除錯工具詳解 - 附下載地址串列埠除錯
- 安卓下的串列埠測試安卓串列埠
- ROS環境下串列埠通訊ROS串列埠
- 我竟然意外的懂了什麼是“緩衝區”
- IO流上:概述、字元流、緩衝區(java基礎)字元Java
- Nio再學習之NIO的buffer緩衝區
- pwntools緩衝區溢位與棧沒對齊
- 輸出緩衝
- STM32F072從零配置工程-串列埠USART配置串列埠