linux嵌入式系統開發之led開發---驅動篇
「小濤哥,你給我說說昨天那個led驅動吧,我知道咋用程式點亮它了,可是呼叫的是驅動,我就是乙個命令,感覺不知道究竟怎麼弄的..」小王央求道。
「這樣啊, 那也行,要不咱們這樣以後,就講一次應用,然後就講與之相關的驅動開發,趁著應用的熱度,順便把驅動學了…」我想想說。
「好好,那今天就開始昨天的那個led驅動程式開發吧…」
首先需要說明的是led裝置是個字元裝置,這就和咱們本部落格的linux裝置驅動開發裡的字元裝置驅動關聯起來了,不懂,就自己去看了,開始今天的重點內容.在mini24
1)引腳功能設為輸出。 2)要點亮led,令引腳輸出為0. 3)要熄滅led,令引腳輸出為1.
好了下邊,給出詳細的原始碼注釋:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define device_name "leds_control" /* 載入模式後,執行」cat /proc/devices」命令看到的裝置名稱 */
#define led_major 231 /* 主裝置號 */#define ioctl_led_on 0 /* 應用程式執行ioctl(fd, cmd, arg)時的第2個引數 */
#define ioctl_led_off 1
static
unsigned
long led_table = ;
static
unsigned
int led_cfg_table = ;
//應用程式對裝置檔案/dev/leds執行open(...)時,就會呼叫s3c2410_leds_open函式
static
int s3c2410_leds_open(struct inode *inode, struct file *file)
return 0;
} //應用程式對裝置檔案/dev/leds執行ioclt(...)時,就會呼叫s3c2410_leds_ioctl函式
static
int s3c2410_leds_ioctl(
struct inode *inode,
struct file *file,
unsigned
int cmd,
unsigned
long arg)
switch(cmd)
} //字元裝置驅動程式的核心,當應用程式操作裝置檔案時所呼叫的open、read、write等函式,最終會呼叫這個結構中指定的對應函式
static
struct file_operations s3c2410_leds_fops = ;
//執行「insmod s3c2410_leds.ko」命令時就會呼叫這個函式
static
int __init s3c2410_leds_init(void)
printk(device_name "initialized\n");
return 0;
}
//執行」rmmod s3c24xx_leds.ko」命令時就會呼叫這個函式小王,上面的**看清楚了嗎,那麼怎麼使用呢,使用方法有兩種(假設儲存為leds_control.c):static
void __exit s3c2410_leds_exit(void)
module_init(s3c2410_leds_init); /* 指定驅動程式的初始化函式和解除安裝函式 */
module_exit(s3c2410_leds_exit);
方法一:
將**放到內和drivers/char目錄下,在drivers/char/makefile中增加一行obj-m += leds_control.o,然後在核心根目錄下執行make modules,就可以生成模組drivers/char/leds_control.ko。
方法二:
直接在當前驅動原始碼目錄下,建立makefile檔案,內容如下:
cross=arm-linux-
#依賴的核心源**目錄,不一定是當前系統的,要是開發板系統原始碼的目錄
kerneldir = /opt/linux-2.6.32.2
pwd := $(shell pwd)
.phony:
modules clean
obj-m += leds_control.o
modules:
$(make) -c $(kerneldir) m=$(pwd) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.mod.c .tmp_versions
然後執行make,可以看到在當前目錄下也會生成leds_control.ko.
insmod ./leds_control.ko
mknod /dev/leds_control c 150 0
「嗯,我明白了,你這樣一說,我幾乎都明白了,led的前前後後的工作模式,不要和你說了,我也抓緊時間調調我的自己led驅動」小王嬌氣的說。
嵌入式Linux系統開發
對於嵌入式系統,大家都很熟悉吧 現在隨著網路的發展,嵌入式已經成為it最有發展前途的乙個行業,所以很多人都想著學習嵌入式。舉個列子吧 對於乙個新手來說,如果讓他完成一項linux的系統開發,對他而言難於上青天 在凌陽教育是這樣安排的一些課程 linux系統提供了許許多多的功能,作為乙個軟體開發人員我...
嵌入式Linux系統開發6
學習嵌入式系統就是學習使用者程式設計api 通過核心提供的服務實現相應的功能 c語言程式設計 無os 語法!1 linux系統構成劃分 使用者空間 核心空間。2 劃分空間的目的 保護核心空間不能被使用者空間隨便訪問。嵌入式linux c開發 會看使用說明書 使用者空間不能隨便訪問核心空間 3 使用者...
嵌入式系統開發流程
如果在乙個嵌入式系統中使用 linux技術開發 根據應用需求的不同有不同的配置開發方法,但是,一般情況下都需要經過如下的過程 配置開發主機,配置minicom,一般的引數為波特率115200 baud s,資料位8位,停止位為1,9,無奇偶校驗,軟體硬體流控設為無。在windows下的超級終端的配置...