嵌入式作業系統 BSP架構實現

2021-08-18 08:38:54 字數 2229 閱讀 6017

在嵌入式系統中為了對外設進行統一管理,本文設計了一種簡易的裝置驅動管理架構。

一、基本概念

所謂裝置驅動管理架構是指使用陣列索引的方式對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 硬實時嵌...