999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux內核修改的車載監控系統實時性研究

2010-04-12 00:00:00梁中華,吳曉云,馮興樂
現代電子技術 2010年15期

摘 要:針對以往車載監控系統存在較大延時的缺點,設計一種實時寬帶車載監控系統。該系統通過在32位ARM微處理器中選用可搶占內核和O(1)調度器的Linux 2.6.13 操作系統,以直接修改Linux 內核的方式,從線程化中斷、自旋鎖可搶占兩方面提高系統的實時響應性。測試表明,此系統的數據傳輸實時性和帶寬可以滿足車載監控的要求。

關鍵詞:Linux; ARM微處理器; 線程化中斷; 自旋鎖; 實時響應性

中圖分類號:TN919; TP914文獻標識碼:A

文章編號:1004-373X(2010)15-0173-04

Real-time Vehicle Monitoring System Based on Linux Kernel Modification

LIANG Zhong-hua1,WU Xiao-yun1, FENG Xing-le1,2

(1. School of Information Engineering, Chang’an University, Xi’an 710064, China; 2. Xi’an Research Institute of Navigation Technology, Xi’an 710068, China)

Abstract: A real-time wide-band vehicle monitoring system was designed in view of the long time delay of former vehicle monitoring system. The Linux2.6.13 kernel of O(1) scheduler and preemption in the 32 bits ARM microprocessor is selected. In order to improve real-time responsiveness, the kernel is modified directly by means of threaded interrupt and preemptive spin lock. It is demonstrated that the real-time performance and the band width of this system can satisfy the request of vehicle monitoring system.

Keywords: Linux; ARM microprocessor; threaded interrupt; preemptive spin lock; real-time responsiveness

0 引 言

隨著信息化社會和公路交通的快速發展,車載監控系統已廣泛應用于物流、公交、客運等方面,監控內容也由單純的位置信息轉變為實時在線的多媒體信息,這對系統的實時處理能力和傳輸帶寬提出了更高的要求,選用高性能的嵌入式CPU成為目前高端車載監控系統的發展趨勢,其中選擇嵌入式操作系統又成為影響傳輸效率和實時性的重要因素。目前主流的商用實時嵌入式操作系統(如QNX ,VxWorks 和pSOS 等)由于價格昂貴、技術保密的特點而限制了它的廣泛應用。而Linux操作系統具有開放代碼,易于移植的優點,但由于其設計初衷是實現多任務/多用戶功能,強調各任務共享資源的公平性,采用非搶占式的調度方法,所以無法滿足實時系統的需求[1]。為了使Linux適應實時系統的要求,許多文獻從內核構架、調度機制和搶占能力等方面對現有的Linux操作系統進行改良。文獻[2]提出在Linux內核中插入搶占點的辦法提高實時性,但該方法需要在很多模塊中插入搶占點,實現復雜度很高;另外,若缺乏有效的機制保證搶占前后內核狀態的一致性,特別是搶占點的插入位置選擇不當可能使整個系統崩潰。文獻[3]提出在Linux 內核基礎上增加實時內核的雙內核方式,該方法雖然實現了硬實時,但舍棄了Linux 固有的穩定性、可靠性、支持多種架構的優點,并且需要針對實時內核重新編寫驅動程序。

本文以提高車載監控系統的實時性為出發點,通過線程化中斷、自旋鎖可搶占兩方面對Linux內核進行修改,以基于ARM9內核的友善之臂mini2440開發平臺,結合高性能的GPS模塊和寬帶GPRS通訊模塊,設計了實時寬帶車載監控系統,可以實現圖像、聲音、位置信息和報警等多任務的快速切換和高效隊列管理,提高了系統的實時性。

1 車載監控系統的整體結構

車載監控系統的結構框圖如圖1所示。主要包括信息采集模塊、數據處理模塊、通信傳輸模塊和監控中心4部分。

車載監控系統的工作原理如下:

GPS模塊采集位置信息,攝像頭采集監控圖像,這些數據經串口傳送到ARM控制器,經數據處理后,將位置信息顯示于終端顯示器,并通過GPRS無線通信模塊將位置信息和多媒體數據發送到監控中心,存儲到車輛監控數據庫??蛻艨梢灾苯釉L問監控中心,查看具體的監控圖像和聲音信息,實現對監控車輛的位置查詢、跟蹤、調度、控制指令,若車載終端遇到緊急情況,可以通過自動或人工方式把位置坐標或報警信息迅速傳給監控中心,進行應急處理。

圖1 車載監控系統結構框圖

車載監控系統的軟件工作主要包括基于嵌入式微處理器的Linux操作系統優化和車載監控應用軟件兩部分。其中應用軟件的主要功能包括:GPS數據的接收處理與傳輸,信令的接收、處理與傳輸,建立基于TCP/IP協議的GPRS數據傳輸與通信。操作系統的優化是影響系統實時性的重要因素,下面將重點闡述。

2 系統實時性分析

盡管Linux操作系統的設計初衷是實現多任務共享資源,但隨著Linux在實時控制系統中的應用,提高Linux實時性能也成為一個研究熱點。通常來講,影響Linux實時性能的因素主要包括中斷處理機制、定時器的時鐘精度、內核是否可被搶占、實時任務調度機制和調度算法等[4]。許多學者也在這些方面不斷改進Linux操作系統的實時性,例如本系統采用的Linux 2.6.13內核采用了可搶占式內核和高效的調度算法,在中斷響應和進程間調度切換時間等方面較以前的版本有明顯的改進[5],但是內核中仍有大量的不可搶占區域影響著系統的實時性能。

其中最主要的制約因素有兩點:

(1) 中斷處理。在標準的Linux系統中,中斷不可搶占,若系統一直處在中斷處理狀態,這樣再緊急的實時任務都無法運行。

(2) 自旋鎖。Linux 2.6內核普遍使用自旋鎖,在自旋鎖期間任務不能被搶占,這將增加搶占延遲。

具體到本文研究的車載監控系統,搶占式操作系統是根據優先級從高到低的順序依次調度任務。分別是:系統監視、鍵盤掃描、位置信息采集和GPRS通信。其中系統監視任務將按照預先設定的處理表監視并處理其他任務,并能在監視任務出現差錯時對其處理并恢復運行,提高系統運行的可靠性。位置信息采集部分放到定時器中斷程序中執行,根據預設的時間間隔采集經度、緯度等位置信息,存儲并更新地理信息緩沖區的內容;最后把位置信息按序存儲在非易失性數據存儲器SDRAM中。

由于車輛在行駛過程中速度很快,有些需要中斷常規的位置信息傳輸任務,而響應實時任務(例如緊急報警、事故處理、路線引導等),因此對系統的實時性提出了更高的要求。因此,本文從監控系統的實際需要出發,借鑒TimeSys Linux思路[6],從中斷處理和自旋鎖兩方面入手直接修改內核,采用線程化中斷,修改spinlock自旋鎖,以此保證及時響應車載系統中發生的緊急任務。

2.1 線程化中斷

線程化中斷的核心是將中斷當作一個線程進行處理,同時根據中斷是否緊急,又可分為實時線程化中斷和非實時線程化中斷兩種類型。在中斷初始化階段,線程化中斷與常規中斷的惟一區別在于:線程化中斷在內核初始化創建線程函數init()中調用init_hardirqs為每個中斷創建一個在內核空間執行的內核線程。具體來講,init_hardirqs()函數首先判斷irq_desc[]數組的0~223項中是否存在action不為空,且該項聲明可以被線程化(非IRQ_NODELAY)的項,若存在,則調用kthread_create()創建內核線程,并且喚醒該線程。

創建中斷內核線程的主要代碼如下:

for (i = 0; i < NR_IRQS; i++)

{

irq_desc_t *desc = irq_desc + i;

if (desc->action !(desc->status IRQ_NODELAY));

desc->thread = kthread_create(do_irqd,desc,″IRQ%d″,irq);

wake_up_process(desc->thread);

}

對于已被線程化的非緊急中斷,根據中斷號為其設置一定的靜態實時優先級和調度策略。中斷到來后,調用wake_up_process()函數喚醒中斷處理線程,比較該中斷線程和當前運行任務的優先級后作出調度決策,這樣就保證當前運行的高優先級實時任務不會受到非緊急中斷的影響;而在其他時刻內核線程將分別調用do_hardirq()函數和handle_IRQ_event()函數來判斷并響應需要處理的中斷。

可以看出:中斷線程化具有以下優點:

(1) 對于實時任務,由于分配了更高的優先級,而且在調度時無需在用戶空間和內核空間之間切換,使其運行更加高效。

(2) 對于緊急中斷(比如時鐘中斷或緊急報警事件),內核保持原來的中斷處理方式,而不為其創建中斷線程,這樣就保證了緊急中斷的快速響應。

(3) 由于Linux 2.6內核采用復雜度為O(1)的調度機制,不會因為增加內核線程數而額外增加調度開銷。

2.2 自旋鎖改互斥鎖

由于Linux 2.6.13內核中使用了自旋鎖spinlock,存在大量的內核不可搶占的臨界區,嚴重影響系統的實時性,本系統用實時互斥鎖rt_mutex代替spinlock,以提高內核的實時性能。其結構體如下:

typede fstruct{

struct rt_mutex lock; /*實時互斥鎖*/

unsigned int break_lock;

} spinlock_t;

struct rt_mutex

{ …

raw_spinlock_t wait_lock;/*原來的spinlock_t*/

struct task_struct *owner;/*擁有該鎖的進程的信息*/

struct plist wait_list;/*優先級化的等待隊列*/

int owner_prio;/*擁有該鎖的進程的優先級 */

}

設置等待隊列優先級的目的是為了改善實時性,每次spinlock保持者釋放鎖時總是喚醒優先級最高的進程或線程,而喚醒的時間復雜度為O(1)。對于實時rt_mutex,如果當前任務優先級高,可以搶占該鎖,并且在新的鎖擁有者的task_struct結構中增加一項mutex_list_t*locks_held,用于記錄進程所擁有的互斥鎖的相關信息,包括從該互斥鎖繼承的優先級、互斥鎖的擁有者等,同時將鎖的先前擁有者添加到該鎖的等待隊列中;若不能獲得當前鎖,則把當前任務放到鎖的優先級等待隊列中,直到鎖的先前擁有者釋放該鎖,喚醒等待隊列中最高優先級的任務進入臨界區。結構類mutex_list_t 的定義如下:

typedef struct {

struct task_struct proc;/* 擁有鎖的進程*/

struct mutex_list_t *next, *prev; /* 隊列列表指針*/

struct mutex_t rt_mutex;/* 互斥鎖*/

unsigned long inherit_rt_priority; /* 該鎖繼承的實時優先級*/

unsigned long inherit_policy;/* 該鎖繼承的調度策略*/

} mutex_list_t;

另外,實時內核中的一些底層臨界區,比如調度器的運行隊列、硬件寄存器必須是不可搶占的,所以必須由不可搶占的自旋鎖保護[7]。函數映射結構PICK_OP是允許自旋鎖與互斥鎖共存的機制,但要在編譯階段將鎖轉化為合適的類型(rt_mutex或者spinlock):

#define TYPE_EQUAL(lock, type) builtin_types_compatible_p(typeof(lock), type *)

#define PICK_OP(type,optype,op,lock)

do {

if (TYPE_EQUAL(lock, type))

raw_optype_op((type *)(lock));

else if (TYPE_EQUAL(lock, spinlock_t))

spin_op((spinlock_t *)(lock));

else bad_spinlock_type();

} while (0)

#define spin_lock(lock) PICK_OP(raw_spinlock_t, spin,_lock,lock)

根據宏處理的結果,若鎖類型為spinlock_t,將運行函數_spin_lock;若鎖類型為raw_spinlock_t,將運行函數_raw_spin_lock。

3 試驗結果

為了提高實時性測試結果的有效性和可信度,本文采用軟硬件協同測試的思想[8],即在相同的系統硬件環境下,分別通過軟件編程和硬件輔助設備測試系統的實時性能,并比較分析其結果,以達到互相驗證和支持的目的。圖2和圖3分別是對采用標準的Linux 2.6.13和修改后的Linux 2.6.13,對位置信息和報警任務的響應時間進行5萬次測試后的響應時間對照圖,表1是平均響應時間的對比表。

圖2 位置信息響應時間

圖3 報警任務響應時間

表1 任務響應平均時間對比結果μs

位置信息報警信息

標準的2.6內核1 472203

修改后的2.6內核16013

以上測試結果表明,通過對實時Linux 2.6.13內核進行中斷線程化和互斥鎖的改進,監控系統的實時性提高了一個數量級。

4 結 語

通過線程化中斷和自旋鎖改為互斥鎖兩方面對Linux 內核進行改進,提高了基于ARM9的車載監控系統的實時性能。設計并完成了寬帶實時車載監控系統的樣機,能夠實時傳輸車輛位置數據和多媒體信息,解決了多任務并行處理的實時性問題。隨著3G網絡的建成和完善,研究基于3G網絡的超寬帶實時可視車載監控系統將是未來發展的方向。

參考文獻

[1]王繼剛,顧國昌,徐立峰,等.強實時性Linux 內核的研究與設計[J].系統工程與電子技術, 2006, 28(12):1932-1935.

[2]WANG Yu-chung, LIU Kwei Jay. Some discussion on the low latency patch for Linux[D]. Berkeley: University of California, 2001.

[3]陳文星,張輝宜.嵌入式Linux的實時性改進技術[J].計算機技術與發展,2006,16(10):114-117.

[4]曾樹洪,劉衛國.Linux內核搶占的實現機制分析[J].惠州學院學報:自然科學版,2008:28(3):56-59.

[5]何克右,周彩貞.Linux 2.6進程調度機制的剖析[J].華中師范大學學報:自然科學版,2007,41(4):520-522.

[6]RAO M V Panduranga, SHET K Chandrashekar, BALAKRISHNA R,et.al. Development of scheduler for real time and embedded system domain[C]//22nd International Conference on Advanced Information Networking and Applications. [S.l.]: Workshops, 2008: 1-6.

[7]褚文奎,張鳳鳴,樊曉光.嵌入式Linux系統實時性能測試研究[J].系統工程與電子技術,2007,29(8):1386-1390.

[8]YANG Jian, CHEN Yu, WANG Hua-yong, et al. A Linux kernel with fixed interrupt latency for embedded real-time system[C]//Proceedings of the Second International Conference on Embedded Software and Systems. [S.l.]: [s.n.], 2005: 131-135.

[9]高婷,王曉楠.基于域的交通聯網監控模型研究[J].現代電子技術,2010,33(5):161-163,170.

主站蜘蛛池模板: 亚洲精品视频免费| 91美女视频在线| 日韩天堂网| 91小视频在线观看| 在线精品亚洲国产| 91成人免费观看| 亚洲日本中文综合在线| 日韩大片免费观看视频播放| 亚洲AV无码不卡无码| 亚洲综合18p| 亚洲精品视频在线观看视频| 高潮爽到爆的喷水女主播视频| 蜜臀AV在线播放| 亚洲福利一区二区三区| 香蕉久久国产超碰青草| 国产极品粉嫩小泬免费看| 国产菊爆视频在线观看| 毛片一级在线| 在线欧美国产| 91香蕉视频下载网站| 黄色在线网| 五月丁香伊人啪啪手机免费观看| 中文字幕在线免费看| 国产区精品高清在线观看| 国产成人一二三| 欧美在线伊人| 2021国产乱人伦在线播放| 国产精品hd在线播放| 亚洲日本中文字幕乱码中文| 伊人久久福利中文字幕| 亚洲精品成人片在线播放| 日韩高清一区 | 欧美日一级片| 亚洲区视频在线观看| 一本大道视频精品人妻| 91色爱欧美精品www| 日韩精品中文字幕一区三区| 亚洲天堂视频在线观看免费| 国产尤物视频在线| 国产精品福利在线观看无码卡| 熟妇人妻无乱码中文字幕真矢织江| 国产人妖视频一区在线观看| 日韩天堂网| 国产男人的天堂| 制服无码网站| 日韩高清无码免费| 欧美色综合网站| 看国产毛片| www.99在线观看| 欧美区国产区| 亚洲中文制服丝袜欧美精品| 日韩高清欧美| 一级爆乳无码av| 久久精品国产国语对白| 亚洲欧美另类视频| 在线va视频| 熟妇无码人妻| 国产乱子伦手机在线| 一本一道波多野结衣av黑人在线| 最新国产成人剧情在线播放| 久久精品91麻豆| 综合色在线| 久久精品人妻中文视频| 韩日免费小视频| 精品国产91爱| 米奇精品一区二区三区| 久热中文字幕在线观看| 免费人成网站在线高清| 亚洲天堂视频网站| 在线日韩一区二区| 日韩精品一区二区三区大桥未久| 最新国产高清在线| 国产福利不卡视频| 亚洲首页在线观看| 丰满人妻中出白浆| 天天色天天操综合网| 伊人中文网| 91亚洲精选| 天天色综网| 91精品综合| 国产乱子伦精品视频| 日韩成人免费网站|