日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式硬件

介紹了uc 操作系統(tǒng)的內(nèi)核結(jié)構(gòu)以及設(shè)備驅(qū)動編程的基本原理,并對CAN 總線的嵌入式系統(tǒng)進行了硬件設(shè)計及軟件驅(qū)動編程,提出CAN 總線技術(shù)應(yīng)用于嵌入式系統(tǒng)的一種方案。

1 引言

早期應(yīng)用于八位軟件設(shè)計的嵌入式系統(tǒng)主要為前后臺系統(tǒng)(或超循環(huán)系統(tǒng)),程序大約在幾千行以內(nèi),由兩部分組成,即其應(yīng)用程序是一個無限的循環(huán),循環(huán)中調(diào)用函數(shù)完成相應(yīng)的操作,屬于后臺行為;其中斷服務(wù)程序處理異步事件,屬于前臺行為.隨著嵌入式系統(tǒng)功能越來越龐雜,如友好的人機界面、網(wǎng)絡(luò)化、遠程監(jiān)控等.各種任務(wù)的優(yōu)先級不同,傳統(tǒng)的設(shè)計方法無法完成,程序長達數(shù)萬行,程序員必須同繁瑣的底層硬件打交道,這樣效率低下.電子技術(shù)的發(fā)展為嵌入式微處理器提供了更多的外設(shè),通用的如串口、并口、以太網(wǎng)口、現(xiàn)場總線、USB口等.基于免費自由軟件發(fā)展而來的嵌入式系統(tǒng)uc,是一種免費的嵌入式操作系統(tǒng).uc系統(tǒng)具有內(nèi)核小、效率高、源碼開放、性能穩(wěn)定、大量的開發(fā)工具、良好的開發(fā)環(huán)境等特點,并且各種應(yīng)用程序豐富,是進行嵌入式系統(tǒng)開發(fā)的最優(yōu)秀工具之一.

2 uclinux操作系統(tǒng)簡介

uclinux 系統(tǒng)主要由用戶進程、系統(tǒng)調(diào)用接口、uclinux 內(nèi)核、硬件控制器等四部分組成.用戶進程是用戶根據(jù)自己的設(shè)計和功能要求開發(fā)的應(yīng)用程序,通過調(diào)用系統(tǒng)的功能函數(shù)來實現(xiàn)系統(tǒng)功能;系統(tǒng)調(diào)用接口通過系統(tǒng)調(diào)用實現(xiàn)用戶與系統(tǒng)內(nèi)核的接口,這些調(diào)用和服務(wù)也可以看成是系統(tǒng)內(nèi)核的一部分;uclinux 內(nèi)核是操作系統(tǒng)的靈魂,它抽象了許多硬件細節(jié),將所有的硬件抽象成統(tǒng)一的虛擬接口,使程序可以以一種統(tǒng)一的方式進行數(shù)據(jù)處理,它主要包括基于優(yōu)先級的進程調(diào)度、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)接口、進程間通訊等五部分;硬件控制器則包含了系統(tǒng)需要的所有可能的物理設(shè)備.以上四個部分之間的每個子系統(tǒng)都只能跟鄰近的系統(tǒng)進行通信。

uclinux 的設(shè)備管理系統(tǒng)是嵌入式操作系統(tǒng)的重要組成部分,它可以分為:下層、與設(shè)備相關(guān)的,即所謂的設(shè)備驅(qū)動程序,直接與相應(yīng)的設(shè)備打交道,并向上提供一組訪問接口;以及上層、與設(shè)備無關(guān),根據(jù)輸入輸出請求,通過特定設(shè)備驅(qū)動提供的接口,與設(shè)備進行通信.如通用的串口、網(wǎng)卡等驅(qū)動程序在uclinux 中都可以找到.

3 uclinux驅(qū)動編程原理

uclinux嵌入式系統(tǒng)不能象一樣動態(tài)加載驅(qū)動程序模塊,而只能同內(nèi)核一起編譯,與應(yīng)用程序、驅(qū)動程序一起固化到可擦寫的上,驅(qū)動程序長駐內(nèi)存,是靜態(tài)驅(qū)動程序.uclinux系統(tǒng)根據(jù)設(shè)備性質(zhì)的不同,將設(shè)備分為四種類型:字符設(shè)備()、塊設(shè)備()、網(wǎng)絡(luò)接口(net)和設(shè)備驅(qū)動程序模塊.在下載的uclinux源代碼包中,可以在uclinux/linux/drivers目錄下面看到通用設(shè)備如,,net, , , 等.系統(tǒng)對于每個設(shè)備都對應(yīng)一個主設(shè)備號和一個次設(shè)備號,不同的設(shè)備可以對應(yīng)相同的主設(shè)備號,應(yīng)用程序訪問設(shè)備通過不同的次設(shè)備號來識別和區(qū)別設(shè)備.在系統(tǒng)/dev目錄下通過輸入ls -l命令可以查到系統(tǒng)已注冊的設(shè)備,因此編寫新的驅(qū)動程序時必須向系統(tǒng)注冊

該設(shè)備.在uclinux系統(tǒng)中,通過register_chrdev函數(shù)實現(xiàn)注冊.

uclinux系統(tǒng)將所有硬件抽象成虛擬的文件系統(tǒng),所有的字符設(shè)備、塊設(shè)備都支持文件操作接口,因此可以對這種虛擬的設(shè)備文件系統(tǒng)進行文件操作.通常對設(shè)備文件進行的操作有、、write、等,即打開、讀、寫、釋放文件.每一個設(shè)備驅(qū)動程序?qū)嵸|(zhì)上是用來完成特定任務(wù)的一組函數(shù)集. 驅(qū)動程序擁有一個稱為fileoperation 的數(shù)據(jù)結(jié)構(gòu),其中包含指向驅(qū)動程序內(nèi)部大多數(shù)函數(shù)的指針.引導(dǎo)系統(tǒng)時,內(nèi)核調(diào)用每一個驅(qū)動程序的初始化函數(shù),將驅(qū)動程序的主設(shè)備號以及程序內(nèi)部的函數(shù)地址結(jié)構(gòu)的指針傳輸給內(nèi)核.這樣,內(nèi)核就能通過設(shè)備驅(qū)動程序的主設(shè)備號索引訪問驅(qū)動程序內(nèi)部的子程序,完成打開、讀、寫等操作.程序員經(jīng)常面臨的一項工作就是為系統(tǒng)的新設(shè)備編寫驅(qū)動程序.

在控制系統(tǒng)中,為了便于數(shù)據(jù)通訊,在底層常采用現(xiàn)場總線,目前CAN總線廣泛應(yīng)用于過程工業(yè)、機械工業(yè)、紡織機械、農(nóng)用機械、機器人、數(shù)控機床、醫(yī)療器械及等領(lǐng)域,下面介紹CAN總線應(yīng)用于嵌入式系統(tǒng)的驅(qū)動編程.

4 CAN 總線的性能特點

CAN( Area )即控制器局域網(wǎng)絡(luò).CAN 總線目前已形成國際標準 version2.0.該技術(shù)規(guī)范包括A 和B 兩部分.2.0A 給出了CAN 報文標準格式,而2.0B 給了出廠標準和擴展兩種格式.CAN 總線是應(yīng)用最廣泛的現(xiàn)場總線之一,CAN為多主方式工作,網(wǎng)絡(luò)上任一節(jié)點均可在任意時刻主動地向網(wǎng)絡(luò)上節(jié)點發(fā)送信息,而不分主從,通信方式靈活,且無需站地址等節(jié)點信息;CAN 網(wǎng)絡(luò)上的節(jié)點信息分成不同的優(yōu)先級,可滿足不同的實時要求;CAN 采用非破壞性總線仲裁技術(shù),當多個節(jié)點同時向總線發(fā)送信息時,優(yōu)先級較低的節(jié)點會主動地退出發(fā)送,而最高優(yōu)先級的節(jié)點可不受影響地繼續(xù)傳輸數(shù)據(jù);CAN 只需通過報文濾波即可實現(xiàn)點對點、一點對多點及全局廣播等幾種方式傳送接收數(shù)據(jù),無需專門的“調(diào)度”,CAN 的直接通信距離最遠可達10km(速率5kbps 以下);通信速率最高可達1Mbps(此時通信距離最長為40m).CAN 上的節(jié)點數(shù)主要取決于總線驅(qū)動電路,目前可達110個;采用短幀結(jié)構(gòu),傳輸時間短,受干擾概率低,具有極好的檢錯效果;CAN 的通信介質(zhì)可為雙絞線、同軸或光纖等.CAN 總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性.

5 CAN總線的嵌入式系統(tǒng)硬件設(shè)計

本設(shè)計選用公司的作為嵌入式系統(tǒng)的微處理器芯片,該處理器是16/32位微處理控制器,內(nèi)含由ARM公司設(shè)計的16/32位 處理器核,適用于價格及功耗敏感的場合.除內(nèi)核外,該微處理器的片內(nèi)外圍功能模塊包括:2個帶緩沖描述符的通道;2個通道;2個GDMA通道;2個32位器及可編程I/O口.CAN控制器選用公司的,該芯片與電氣兼容,帶64字節(jié)先進先出()堆棧,兼容協(xié)議CAN2.0B,支持11位和29位識別碼,位速率可達1Mbps,時鐘頻率,芯片內(nèi)含寄存器,可由用戶配置CAN總線波特率,設(shè)置驗收屏蔽標識碼,可配置系統(tǒng)為PeliCAN 模式或BasicCAN模式,出錯告警等.

該系統(tǒng)采用作為收發(fā)器,其硬件連線如圖(1)所示.AD0~AD7與的p0~p7連線,/cs接p12,ALE接p13,/RD接p14,/wr接p15,/int接XINTREQ0.

圖1 硬件連線

6 驅(qū)動軟件設(shè)計

圖2 CAN總線初始化框圖

本設(shè)計中,CAN總線驅(qū)動程序是作為一個模塊放在linux/deriver//文件夾里面,軟件流程如圖(2)所示,其設(shè)計詳細介紹如下.

模塊首先對引用的庫函數(shù)進行申明,并且定義:

#define IOPMOD (*(volatile unsigned *)0x3ff5000)

#define IOTA (*(volatile unsigned *)0x3ff5008)

#define IOPCON (*(volatile unsigned *)0x3ff5004)

#define EXTDBWTH(*(volatile unsigned *)0x3ff5

#define SYSCFG(*(volatile unsigned *)0x

主要有以下幾個模塊:

void can_(void)

{

SYSCFG =SYSCFG & 0x0fffffffd;

EXTDBWTH =EXTDBWTH& 0x00ff0ff;

IOPMOD=0xf0ff;

IOTA=0x6000; 寄存器地址0,MOD寄存器

IOTA= IO_PDATA&0xdfff; ALE=0 配置MOD寄存器

IOPDATA= IO_PDATA|0x3f; ; 復(fù)位模式、使能

IOPDATA=0x6006; ;寄存器地址6,總線器0寄存器

IOPDATA=IO_PDATA&0xdfff; ALE=0配置寄存器

IOPDATA= IO_PDATA|0x3f; 跳轉(zhuǎn)寬度、波特率設(shè)置

……;配置總線器1、驗收代碼寄存器等

IOPDATA=0x6000; 寄存器地址0,MOD寄存器

IOPDATA=IO_PDATA&0xdfff; ALE=0配置MOD寄存器

IOPDATA= IO_PDATA&0xfe;寫復(fù)位位,進入工作模式

result = register_chrdev(254,can,&can_fops);申請主設(shè)備號

if (result<0) {

printk(KERN_WARNING CAN:can’t getmajor , result);

return result;

}

在該驅(qū)動程序中,定義結(jié)構(gòu)變量can_fops為應(yīng)用程序訪問內(nèi)核的接口:

static struct file_operations can_fops = {

: can_,

write: can_write,

: can_,

: can_,

}; 

static int can_release(struct inode *inode, struct file *file)

{

MOD_DEC_USE_COUNT; ;用戶減計數(shù)

Return 0;

}

static int can_open(struct inode *inode,struct file *file)

{

Scull_Dev *dev;

Int num = NUM(inode->i_rdev); 設(shè)備號

Int type = TYPE(inode->i_rdev); 設(shè)備類型

If (num>=scull_nr_devs) return -ENODEV;

dev = &scull_devices[num];

flip->private_data = dev;

MOD_INC_USE_COUNT; 用戶數(shù)人工計數(shù)

IOPCON=0x16; //xIRQ0

disable_irq(INT_can);

if(request_irq(INT_can, &can_rx,

SA_INTERRUPT, can rx isr,can)) {

printk(s3c4510-can: Cant get irq %dn,

INT_sja1000);

return -EAGAIN;

}

printk(can has get irq 0n);

enable_irq(INT_can);

…… ; 配置SJA1000內(nèi)部中斷及屏蔽寄存器

return 0;

}

7 結(jié)束語

本文介紹了CAN總線在嵌入式系統(tǒng)中的驅(qū)動編程,對CAN總線技術(shù)在嵌入式系統(tǒng)中的應(yīng)用進行了探索.本設(shè)計已在通信用遠程中應(yīng)用.

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉