linux驅動學習筆記4

2021-06-29 08:20:10 字數 1170 閱讀 9322

led驅動

1.框架

2.完善硬體驅動:

a.看原理圖

b.看2440手冊

c.寫**:對映虛擬位址

3.ioremap

void * __ioremap(unsigned

long phys_addr, unsigned

long size, unsigned

long flags)

void *ioremap(unsigned

long phys_addr, unsigned

long size)

入口: phys_addr:要對映的起始的io位址;

size:要對映的空間的大小;

flags:要對映的io空間的和許可權有關的標誌;

phys_addr:是要對映的實體地址,

size:是要對映的長度.

4.ioummap(*gpfcon)

5.copy_to_user( to, &from, sizeof(from))

to:使用者空間函式 (可以是陣列)

from:核心空間函式(可以是陣列)

sizeof(from):核心空間要傳遞的陣列的長度

6.copy_from_user(&from , to , sizeof(to) )

to:使用者空間函式 (可以是陣列)

from:核心空間函式(可以是陣列)

sizeof(from):核心空間要傳遞的陣列的長度

成功返回0,

失敗返回失敗數目。

7.運算子優先順序:

各種運算子的優先順序,至今我都沒有記住,也沒有打算去記這些繁瑣的東西

那麼我是怎麼解決運算子的優先順序問題的呢?

a.讓表示式盡量簡單,這樣在同乙個表示式中的運算子就比較少了,我只需要記住小學時候學習的乘除高於加減,基本上就不會遇到運算子的優先順序的問題了

b.使用括號明確地表達運算順序,不依賴於運算子的預設優先順序,如果需要調整運算順序,用括號明確表達。比如,!a&&b,我就不知道到底是先計算!還是先計算&&,但是有了括號,我想讓他先先計算!就先計算!——(!a)&&b,想讓他先計算&&就先計算&&——!(a&&b),根本用不著去記那些讓人頭疼的運算子優先順序

呃,至少,位運算(bitwise operator)一定要條件反射般加上括號

linux驅動學習筆記

1.先從最簡單的例子開始 include include module license dual bsd gpl static int hello init void printk kern alert hello,world n return 0 static void hello exit vo...

linux驅動學習筆記(linux驅動標頭檔案說明)

include 是在linux 2.6.29 include linux下面尋找原始檔。include 是在linux 2.6.29 arch arm include asm下面尋找原始檔。include 是在linux 2.6.29 arch arm mach s3c2410 include ma...

linux驅動學習筆記(linux驅動標頭檔案說明)

include 是在linux 2.6.29 include linux下面尋找原始檔。include 是在linux 2.6.29 arch arm include asm下面尋找原始檔。include 是在linux 2.6.29 arch arm mach s3c2410 include ma...