經過前面的學習,我們了解了驅動開發的框架,本章節將帶領大家實驗操作,寫最簡單的驅動-helloworld。
Linux 設備驅動會以內核模塊的形式出現,因為 linux 內核的整體架構就非常龐大,包含的組件也非常多,如果把所有的功能都編譯到 linux 內核中會使得內核非常臃腫,為了解決這個問題,更方便地新增和刪除功能,linux 提供了這樣的機制,這種機制被稱為模塊。為了大家對模塊有一個感性的認識,我們先來看一個最簡單的驅動-helloworld。
驅動分為四個部分:
? 頭文件
? 驅動模塊的入口函數和出口函數
? 聲明信息
? 功能實現
我們在 windows 上面新建一個 helloworld.c 文件,這里使用 sourceinsight 來編輯文件,大家也可以用其他編譯器來編寫程序。
第一步 包含頭文件
#include //包含宏定義的頭文件
#include //包含初始化加載模塊的頭文件
第二步 驅動模塊的入口函數和出口函數
module_init();
module_exit();
第三步 聲明模塊擁有開源許可證
MODULE_LICENSE('GPL');
第四步 功能實現:內核模塊加載的時候打印 hello world! ,內核模塊卸載的時候打印 gooodbye!
注意:內核打印函數不能用 printf,因為內核沒有辦法使用 C 語言庫。
static int hello_init(void){
printk('hello world! n');
return 0;
}
static void hello_exit(void){
printk('gooodbye! n');
}
完整的一個最簡單的 Linux 內核模塊,如下圖所示:
此時,我們需要有一個感性認識,代碼中的某些陌生元素都是 linux 內核為了字符設備定義的,以實現驅動與內核接口而定義的。Linux 對各類設備的驅動都定義了類似的數據結構和函數。
核心板參數
尺寸:38mm*42mm
PCB:6層
CPU:iMX6ULL ARM Cortex-A7架構 單核
iMX6ULL 商業級 內存:512M 存儲:8G EMMC
iMX6ULL 工業級 內存:256M 存儲:512M FLASH
工作電壓:5V~16V 電壓供電
系統支持:Linux-QT系統;Ubuntu core系統;Youcto系統;Buildroot系統;
商業級運行溫度:-20℃ ~ +80℃
工業級運行溫度:-40℃ ~ +80℃
引腳間距:1.27mm
引角擴展:i.MX6功能全部引出,146PIN腳
連接方式:郵票孔
底板參數
尺寸:12*19cm
PCB:2層
POWER:5V~16V電壓供電
SWITCH:電源開關
EEPROM 存儲:256字節,掉電后數據不丟失
4G模塊:1個 全網通 (選配)
WIFI藍牙模塊:WIFI/藍牙二合一模塊,工作頻段 2.4GHz,支持 IEEE802.11bgn 等標準,支持藍牙 4.0 協議。
LVDS接口:1路(一個是標準HDMI 座(CON3),另一個是 30pin 的 FPC 座(J18), 兩個接口實際上是同一路 LVDS 信號,用來連接迅為電子的 LVDS 屏幕)
RGB接口:1路
CAN:2 路 CAN 總線接口
RS485:1 路 RS485 總線接口
MIC:支持錄音輸入
PHONE:支持耳機輸出
USB OTG:1路
USB HOST:2路
USB-UART:1路
mini HDMI:1個(一路標準MINI-HDMI 接口,i.MX6ULL處理器本身沒有支持HDMI,通過一個 RGB 轉 HDMI 的芯片擴展出HDMI接口,通過該接口來連接HDMI顯示器。 )
網口:2路百兆以太網,RJ45 接口
TF卡槽:1個標準TF卡接口
SIM卡槽:1個標準SIM卡接口
T&H接口:溫濕度傳感器接口
TTL/RS485接口:TTL/RS485接口二選一
BUZZER:1個蜂鳴器
IRDA:1個紅外一體化接收頭
ADC電位器:支持
DIP SWITCH:8位撥碼開關
JTAG:1個(可以通過下載/調試器來調試 i.MX6ULL 處理器)
CAMERA接口:1個 支持500萬攝像頭
TTL串口接口:20PIN (gpio引出:兩個ad,一個spi,一路ttl。一路i2c,5個gpio,5v,3.3v電源)
GPIO接口:20PIN(包括:兩路ADC,一路SPI,5個GPIO,一路TTL串口,一路I2C接口。)
重力加速度傳感器:支持
紅外接收模塊:支持
光環境傳感器:支持
實時時鐘:斷電后系統時間不丟失
LED:2個
按鍵:3個
上一篇:迅為imx6ull開發板移植Debian文件系統
下一篇:最后一頁
推薦閱讀最新更新時間:2025-04-11 16:45




設計資源 培訓 開發板 精華推薦
- 用于移動應用的多輸出、序列可選電源控制器的典型應用
- MIKROE-2812,用于 STM32 Shield 的 mikromedia 7
- LT1076CQ-5 5V 降壓型開關穩壓器的典型應用電路
- LT3973EDD-5 5V 降壓轉換器的典型應用
- 使用 MaxLinear, Inc 的 AS2815AR-2.5 的參考設計
- CH341A-Flash-Programmer
- 華為-諾基亞SFP模塊燒錄
- 使用 Analog Devices 的 LTC4076 的參考設計
- 基于L6472的完全集成式步進電機驅動器
- 使用 NXP Semiconductors 的 MCIMX515DJM8C 的參考設計