嵌入式系統(tǒng)已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡囊徊糠?,它們存在于我們的手機(jī)、家用電器、汽車、醫(yī)療設(shè)備等各個(gè)領(lǐng)域。而Linux操作系統(tǒng)在嵌入式領(lǐng)域中也占據(jù)著重要地位。本文將深入探討嵌入式Linux的特點(diǎn)和特性,以及如何學(xué)習(xí)這一領(lǐng)域,為有志于進(jìn)入嵌入式Linux開發(fā)的人提供指導(dǎo)。
摘要:基于Linux字符設(shè)備操作接口和各類串行總線的共,性,按照分層的思想,抽象出各種總線的統(tǒng)一接口。統(tǒng)一接口的應(yīng)用層API與底層的具體總線操作形式無(wú)關(guān),而且便于應(yīng)用系統(tǒng)的升級(jí)和移植。文中給出了一種多種串行總線統(tǒng)一接口的實(shí)現(xiàn)方法,并以ARM9為平臺(tái),以I2C、1-Wire、SPI為例,驗(yàn)證了新方法的可行,性。
通過(guò)一個(gè)最簡(jiǎn)單的LED驅(qū)動(dòng)實(shí)例來(lái)展示字符設(shè)備驅(qū)動(dòng)程序設(shè)計(jì),開發(fā)及測(cè)試的整個(gè)過(guò)程。1.實(shí)驗(yàn)?zāi)康模?)了解LED原理及其與S3C2410的接口電路設(shè)計(jì)。(2)了解S3C2410芯片的I/O端口配置方法。(3)通過(guò)S3C2410芯片的GPF4端
在自己的工作目錄下建立helloworld_driver.c#include#include//代碼遵守的license:BSDGPLMODULE_LICENSE("DualBSD/GPL");//代碼作者聲明MODULE_AUTHOR("bruce");//模塊初始化staticint__inithello_init(void){printk
1.查看用戶手冊(cè)led1、led2、led3、led4連接的分別是 GPK4、GPK5、GPK6、GPK72、查詢6410芯片手冊(cè)下面還需要3個(gè)步驟:1、設(shè)置GPIO為OUTPUT。將GPK4、GPK5、GPK6、GPK7設(shè)置為輸出output=0001 即GPKCON0的19:28都配置為
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口,它為應(yīng)用程序屏蔽硬件的細(xì)節(jié),一般來(lái)說(shuō),Linux的設(shè)備驅(qū)動(dòng)程序需要完成如下功能: ·設(shè)備初始化、釋放; ·提供各類設(shè)備服務(wù); ·負(fù)責(zé)內(nèi)核和設(shè)備之間的數(shù)據(jù)
《嵌入式Linux初級(jí)實(shí)驗(yàn)s3c2410》設(shè)備驅(qū)動(dòng)開發(fā)=硬件控制+內(nèi)核API+內(nèi)核驅(qū)動(dòng)框架1.設(shè)備驅(qū)動(dòng)和操作系統(tǒng)1.1無(wú)操作系統(tǒng)時(shí)的設(shè)備驅(qū)動(dòng)在沒(méi)有操作系統(tǒng)的情況下,設(shè)備驅(qū)動(dòng)的接口直接提交給應(yīng)用軟件工程師,應(yīng)用軟件沒(méi)有跨越
操作系統(tǒng)是通過(guò)各種驅(qū)動(dòng)程序來(lái)駕馭硬件設(shè)備的,它為用戶屏蔽了各種各樣的設(shè)備,驅(qū)動(dòng)硬件是操作系統(tǒng)最基本的功能,并且提供統(tǒng)一的操作方式。設(shè)備驅(qū)動(dòng)程序是內(nèi)核的一部分,硬件驅(qū)動(dòng)程序是操作系統(tǒng)最基本的組成部分,在Linux內(nèi)核源程序中也占有60%以上。因此,熟悉驅(qū)動(dòng)的編寫是很重要的。
設(shè)備驅(qū)動(dòng)程序可以使用模塊的方式動(dòng)態(tài)加載到內(nèi)核中去。加載模塊的方式與以往的應(yīng)用程序開發(fā)有很大的不同。以往在開發(fā)應(yīng)用程序時(shí)都有一個(gè)main()函數(shù)作為程序的入口點(diǎn),而在驅(qū)動(dòng)開發(fā)時(shí)卻沒(méi)有main()函數(shù),模塊在調(diào)用insmod命令時(shí)被加載,此時(shí)的入口點(diǎn)是init_module()函數(shù),通常在該函數(shù)中完成設(shè)備的注冊(cè)。
FS2410開發(fā)板的S3C2410處理器具有117個(gè)多功能通用I/O(GPIO)端口管腳,包括GPIO 8個(gè)端口組,分別為GPA(23個(gè)輸出端口)、GPB(11個(gè)輸入/輸出端口)、GPC(16個(gè)輸入/輸出端口)、GPD(16個(gè)輸入/輸出端口)、GPE(16個(gè)輸入/輸出端口)、GPF(8個(gè)輸入/輸出端口)、GPH(11個(gè)輸入/輸出端口)。
塊設(shè)備通常指一些需要以塊(如512字節(jié))的方式寫入的設(shè)備,如IDE硬盤、SCSI硬盤、光驅(qū)等。它的驅(qū)動(dòng)程序的編寫過(guò)程與字符型設(shè)備驅(qū)動(dòng)程序的編寫有很大的區(qū)別。
前面所講述的驅(qū)動(dòng)程序中都沒(méi)有涉及中斷處理,而實(shí)際上,有很多Linux的驅(qū)動(dòng)都是通過(guò)中斷的方式來(lái)進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個(gè)事件時(shí)通過(guò)中斷通知軟件進(jìn)行處理。中斷實(shí)現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢方式相比可以大大節(jié)省CPU資源的開銷。
LED和蜂鳴器是最簡(jiǎn)單的GPIO的應(yīng)用,都不需要任何外部輸入或控制。按鍵同樣使用GPIO接口,但按鍵本身需要外部的輸入,即在驅(qū)動(dòng)程序中要處理外部中斷。按鍵硬件驅(qū)動(dòng)原理圖如圖11-7所示。
該實(shí)驗(yàn)是編寫最簡(jiǎn)單的字符驅(qū)動(dòng)程序,這里的設(shè)備也就是一段內(nèi)存,實(shí)現(xiàn)簡(jiǎn)單的讀寫功能,并列出常用格式的Makefile以及驅(qū)動(dòng)的加載和卸載腳本。讀者可以熟悉字符設(shè)備驅(qū)動(dòng)的整個(gè)編寫流程。
本章主要介紹了嵌入式Linux設(shè)備驅(qū)動(dòng)程序的開發(fā)。首先介紹了設(shè)備驅(qū)動(dòng)程序的概念及Linux對(duì)設(shè)備驅(qū)動(dòng)的處理,這里要明確驅(qū)動(dòng)程序在Linux中的定位。
1 引言 虛擬儀器系統(tǒng)的硬件平臺(tái)由i/o接口設(shè)備和計(jì)算機(jī)構(gòu)成(如圖1所示),i/o接口設(shè)備是對(duì)外獲取信號(hào)的通道,為了能使計(jì)算機(jī)能夠?qū)/o接口設(shè)備有效地進(jìn)行控制,就要考慮系統(tǒng)中i/o接口設(shè)備的驅(qū)動(dòng)問(wèn)
一直以來(lái)寫linux驅(qū)動(dòng),都是按照固定格式,定義一個(gè)初始化和退出函數(shù),書上告訴我這兩個(gè)函數(shù)會(huì)被調(diào)用,至于為什么會(huì)被調(diào)用,在哪調(diào)用,一直不清楚。
一、驅(qū)動(dòng)的作用任何一個(gè)計(jì)算機(jī)系統(tǒng)的運(yùn)行都是系統(tǒng)中軟硬件協(xié)作的結(jié)果,沒(méi)有硬件的軟件是空中樓閣,而沒(méi)有軟件的硬件則只是一堆廢鐵。硬件是底層基礎(chǔ),是所有軟件得以運(yùn)行的
VxWorks是WindRiver公司開發(fā)的一種高性能的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),以其優(yōu)良的可靠性、開放性、實(shí)時(shí)性和易用性贏得了大量的客戶。VxWorks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣
VxBus是風(fēng)河公司新的設(shè)備驅(qū)動(dòng)程序架構(gòu),是VxWorks新增的特性,它是在VxWorks6.2及以后版本被增加到VxWorks中的。在以前的版本中,驅(qū)動(dòng)程序并沒(méi)有和工程配置集成到一起,如果