在嵌入式系統中為了對外設進行統一管理,本文設計了一種簡易的裝置驅動管理架構。
一、基本概念
所謂裝置驅動管理架構是指使用陣列索引的方式對soc片內外設進行統一的管理。
基本原理:
為每一種外設分配乙個裝置編號,功能函式通過裝置編號索引相應的裝置操作。
二、裝置驅動管理架構結構體
1、將soc片內外設進行編號
//裝置編號,靜態分配
#define device_spi 1
#define device_i2c 2
#define device_timer 3
//裝置最大數量
#define devicemaxnum 20
2、自定義裝置索引陣列表
typedef struct
u32(*pinit)();
u32(*pread)();
u32(*pwrite)();
u32(*piocontrol)();
}deviceregisterparam;
//裝置操作索引表
deviceregisterparamdeviceregisterlist[devicemaxnum];
3、裝置陣列索引表
三、bsp函式操作介面
1、裝置註冊
為了便於裝置管理,將所有裝置進行編號,並對外設掛接相應的操作函式
裝置註冊主要是將裝置操作函式(init\read\write\ioctl)掛接到裝置索引表deviceregisterlist[devicemaxnum]中相應的裝置號上;
deviceregister(int deviceid, deviceregisterparam* deviceregisterparam)
deviceregisterlist[deviceid].pinit= deviceregisterparam->pinit;
deviceregisterlist[deviceid].pread =deviceregisterparam-> pread;
deviceregisterlist[deviceid].pwrite = deviceregisterparam-> pwrite;
deviceregisterlist[deviceid].piocontrol = deviceregisterparam-> piocontrol;
2、裝置初始化
應用通過配置裝置的初始化引數,呼叫裝置初始化介面,進而呼叫具體的裝置初始化函式完成裝置初始化。
deviceinit(int deviceid, void * pdeviceinitparam)
deviceregisterlist[deviceid].pinit(pdeviceinitparam);
3、讀應用通過呼叫裝置資料讀取函式,將具體裝置的資料讀到指定的記憶體區域中。
deviceread(int deviceid, void * pdeviceinitparam)
if(device> devicemaxnum )
return false;
if(null== pdeviceinitparam )
return false;
deviceregisterlist[deviceid].pread(pdeviceinitparam);
4、寫devicewrite(int deviceid, void * pdeviceinitparam)
if(device> devicemaxnum )
return false;
if(null== pdeviceinitparam )
return false;
deviceregisterlist[deviceid].pwrite(pdeviceinitparam);
5、io控制
具體的控制命令由初始化引數傳遞。
deviceiocontrol(int deviceid, void * pdeviceinitparam)
if(device> devicemaxnum )
return false;
if(null== pdeviceinitparam )
return false;
deviceregisterlist[deviceid].piocontrol (pdeviceinitparam);
嵌入式Linux系統BSP簡介
華清遠見嵌入式學院 講師。嵌入式系統由硬體環境 嵌入式作業系統和應用程式組成,硬體環境是作業系統和應用程式執行的硬體平台,它隨應用的不同而有不同的要求。硬體平台的多樣性是嵌入式系統的主要特點,如何使嵌入式作業系統在不同的硬體平台上有效地執行,是嵌入式系統開發中需要解決的關鍵問題。解決的方法是在硬體平...
嵌入式Linux系統BSP簡介
嵌入式系統由硬體環境 嵌入式作業系統和應用程式組成,硬體環境是作業系統和應用程式執行的硬體平台,它隨應用的不同而有不同的要求。硬體平台的多樣性是嵌入式系統的主要特點,如何使嵌入式作業系統在不同的硬體平台上有效地執行,是嵌入式系統開發中需要解決的關鍵問題。解決的方法是在硬體平台和作業系統之間提供硬體相...
嵌入式作業系統概述
實時作業系統 rtos 設計成提供乙個對真實世界的事件的及時響應 timely response 出現在真實世界中的事件可能有乙個時間限制 deadline 在此期限之前,實時 嵌入式系統必須確保在有限時間內對此事件做出相應的響應。根據相應事件的時間限制,嵌入式實時作業系統可以分為兩類 1 硬實時嵌...