原创 Linux驅動--併發控制
1、信號量 struct semaphore sem 定義信號量 void sema_init(struct semaphore *sem, int val)用於初始化設置信號量的值爲val void
原创 設備與驅動模型
第一步:初始化要註冊的結構 struct device xxx {bus type xxx bus_id xxx 設備名 pare
原创 運放基本應用
要圖,下次傳
原创 Linux驅動--Ioctl
第一步:定義命令(可以在頭文件中定義,也可以在驅動函數中定義),驅動自已定義,不是系統帶的 _IO(幻數(對應的一類設備),命令序號) 不帶參數 _IOR(幻數(對應的一類設備),命
原创 混雜設備
設備描述 struct miscdevice { int mimor; const char *name; ocnst struct file_operation; struct list_head list;
原创 Linux字符驅動--結構分析
1、aloc_cdev分配、init_cdev初始化、add_cdev設備註冊 2、三個結構體node、file_operation、file,前兩個在驅動中自已定義,最後一個在打開時內核幫你定義的(我覺得是)。 3、open打開時需要提
原创 電源相關總結
電源分開關電源和線性電源兩種 開關電源提供的電流大(幾安培),效率高,FPGA中適合給核電壓供電。 線性電源提供的電流小(500mA以下),紋波小,FPGA中適合給IO、輔助電壓供電。
原创 總線模型
總線描述 struct busy_type { struct bus_attribute, match, uevent,.... 總線屬性 struct busy_attribute { struct attribute at
原创 電源去耦
電源去耦:電源輸出一般用兩個電容旁路到地,靠近電源的那個有比較大的電容,旁路頻率比較小的交流噪聲,靠近用電芯片的一端用較小的電容,旁路掉芯片耦合進來的高頻噪聲。
原创 自動創建設備文件
用戶空間應用程序udev(mdev)驅動初始化代碼裏調用class_create爲設備創建一個class,在調用device_create創建class類中的一個設備驅動被加載時,udev(mdev)就會自動在/dev下創建相應的設備文件
原创 硬件訪問
除x86外,ARM均只有內存空間,沒有IO空間(區別在於不同的地址線) IO端口: 當一個寄存器或設備內存位於IO空間時,稱其爲IO端口 IO內存: 當一個寄存器或設備內存位於IO空間時,稱其爲IO內存 怎麼
原创 阻塞
阻塞 可以在打開文件時指定標誌file->flag爲O_NONBLOCK,則在沒有準備就緒就讀寫設備時返回-EAGAIN,而不會阻塞進程。 阻塞方式是文件讀寫操作的默認方式。 read中數據沒準備好時進行阻塞,並在write中寫完數據後改
原创 應用程序設計
1 linux中文件編程兩種方法:linux系統調用(依賴具體的操作系統)、C語言庫函數 庫函數方式訪問文件(2-1-1):庫函數獨立於操作系統;訪問文件的庫函數fopen fread fwrite fgetc fputc fprintf
原创 基於2.6.28.6內核的SPI驅動總結
參考: PowerPC+Linux2.6.25 平臺下的SPI驅動構架分析 1、SPI總體構架 SPI的驅動分爲三個層次:硬件抽象層、平臺依賴層和用戶接口層。 1.1、硬件抽象層(核心層) drivers/
原创 曾經的讀書記錄
《菜根譚》 欲做精金美玉的人品,定從烈火中煅來;思立掀天揭地的事功,須向薄冰上履過可見名爲招禍之本,欲乃散志之媒,學者不可不力爲掃除也學者動靜殊操、喧寂異趣,還是鍛鍊未熟,心神混淆故耳。須是操存涵養,定雲止水中,有鳶飛魚躍的景象;風狂雨驟