原创 linux 內核網絡驅動

Linux內核網絡驅動屬於iso的第二層,數據鏈路層 ,其中sk_buff在數據包的收發中起關鍵性作用,作爲數據的載體,經由每一層其數據區域都在變化,關於sk_buff相關資料,以下幾篇很不錯,主要講解sk_buff的結構以及在每一層的變

原创 Socket緩衝區大小修改與系統設置

  每個Socket在Linux中都映射爲一個文件,並與內核中兩個緩衝區(讀緩衝區、寫緩衝區)相關聯。 或者說,每個Socket擁有兩個內核緩衝區。 有時,我們需要修改緩衝區的內核限制的最大值,使其符合我們的實際需求。 一、系統設置

原创 Linux dma api

linux下的DMA驅動框架drivers\dma\dmaengine.c文件內,在linux下編寫DMA的設備驅動一般步驟如下。 申請DMA通道 struct dma_chan *dma_request_channel(dma_cap

原创 填坑之串口接受數據不完整包的解決辦法

通過串口收發包時,遇到了一個包多次才接收完整的問題,猜測是串口的接收buffer大小的問題,這種問題採取的是拼包的形式解決,代碼看起來略微繞,主要是申請了一定大小的buffer,外加兩個指針實現。代碼如下: #include <libl

原创 C語言在子函數中調用malloc申請內存

#include <stdio.h>                                                                                                   #

原创 Linux下DMA驅動api 以及測試實列

 dmaengine framwork主要分爲兩部分:DMA controller 和DMA engine API。涉及內核相關文檔:Documentation/damengine目錄、Documentation/devicetree/b

原创 RK3399 設備樹獲取子結點信息

驅動測試代碼: #include <linux/kernel.h> #include <linux/gpio.h> #include <linux/init.h> #include <linux/module.h>  #include <

原创 tcp udp多連接,可以創建多個服務器,單播、廣播、組播

思路如下:  部分結構體定義如下: struct pakege{ unsigned short port; unsigned short ipi_port; unsigned int data_len; unsigned in

原创 C語言中的聯合體 (記錄)

在C語言中,一種和結構體非常類似的語法,叫做共用體(Union),它的定義格式爲: union 共用體名{     成員列表 }; 結構體和共用體的區別在於:結構體的各個成員會佔用不同的內存,互相之間沒有影響;而共用體的所有成員佔用同一段

原创 FDC2214代碼(基於430-f5529的,基於stm32103的)-CCS

上次比賽(2018年全國電子設計競賽-四川賽區)時調試時的代碼 說明:此次懶得介紹代碼,網上一大把,話不多說,自己研究 只發鏈接:https://pan.baidu.com/s/1i9aPGTpqcisR-Q4b_IllNA 源碼說明:

原创 Linux I2C驅動--用戶態驅動簡單示例

1. Linux內核支持I2C通用設備驅動(用戶態驅動:由應用層實現對硬件的控制可以稱之爲用戶態驅動),實現文件位於drivers/i2c/i2c-dev.c,設備文件爲/dev/i2c-0   2. I2C通用設備驅動以字符設備註冊進