第一篇:基于ARM的指紋識別門禁系統(tǒng)設(shè)計(jì)
HUBEI NORMAL UNIVERSITY
嵌入式課程設(shè)計(jì)報告
課題: 指紋識別門禁系統(tǒng)設(shè)計(jì)
姓名: 萬苗
學(xué)號: 20*** 院系: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
班級: 1303班
導(dǎo)師: 曹杉杉
第 1 / 23頁 基于ARM的指紋識別門禁系統(tǒng)設(shè)計(jì)
【摘 要】 本設(shè)計(jì)介紹了基于ARM的指紋識別門禁系統(tǒng)的軟硬件設(shè)計(jì)。其中硬件主要是Intel 公司基于Xscale內(nèi)核的PXA255處理器和美國豪威公司的CMOS圖像傳感器FPS200。軟件設(shè)計(jì)包括系統(tǒng)初始化, 指紋處理識別, 電控鎖控制部分等。經(jīng)過實(shí)際測試該系統(tǒng)工作穩(wěn)定可靠, 達(dá)到了設(shè)計(jì)目的。
【關(guān)鍵詞】 ARM 門禁系統(tǒng) 指紋識別 TCP/IP 圖像
一、門禁系統(tǒng)概述
門禁系統(tǒng)(Access Contro l System), 又稱出入口控制系統(tǒng),是為保障人們生活、工作及財產(chǎn)安全, 對重要通道的出入口進(jìn)行管理與控制的系統(tǒng)。隨著技術(shù)的發(fā)展, 門禁系統(tǒng)已經(jīng)從傳統(tǒng)的卡式門禁系統(tǒng)發(fā)展到今天的生物特征識別門禁系統(tǒng)。生物特征識別門禁系統(tǒng)是以人體生物特征作為辨識條件的指紋比對、掌紋比對、語音比對等。這些生理特征相同的概率達(dá)到數(shù)十億分之一,因此具有無法仿冒與借用、不怕遺失、不用攜帶、不會遺忘,有著個體特征獨(dú)特性、唯一性、安全性的特點(diǎn),適用于高度機(jī)密性場所的安全保護(hù)。其中指紋識別發(fā)展最早, 使用也最廣泛。并逐漸與網(wǎng)絡(luò)集成。
二、PXA 255處理器和指紋傳感器FPS200簡介
本系統(tǒng)采用Intel 公司基于Xscale 內(nèi)核的PXA255處理器。Xscale微架構(gòu)采用ARMV 5TE ISA 兼容指令集(浮點(diǎn)指令集除外),它以ARM 核為中心,在其周圍擴(kuò)展了指令和數(shù)據(jù)內(nèi)存管理(Inst ruct ion andDataM emo ryM anagement Unit), 指令、數(shù)據(jù)和微小數(shù)據(jù)高速緩(Instruction,Data and Mini-DataCache),寫緩沖、全緩沖、掛起緩沖和分支目標(biāo)緩沖,電源管理單元, 性能監(jiān)測單元, 調(diào)試和JTAG 單元以及協(xié)處理器接口、MAC 協(xié)處理器、核心存儲總線等。FPS系列CMOS圖像傳感器芯片是美國豪威公司的產(chǎn)品。FPS200是高度集成的彩色攝像芯片, 可帶1/4鏡頭。支持多種格式, 內(nèi)設(shè)的SCCB(Serial Camera Cont ro lBus)串行控制總線接口, 提供簡單控制方式。通過該接口, 我們可以對FPS200芯片內(nèi)部所有寄存器值進(jìn)行修改, 從而完成對FPS200的控制, 包括色彩飽和度的調(diào)整、gamma 校正等等。該芯片最高能達(dá)到每秒鐘30幀的傳輸速率, 并且用戶可以控制圖像質(zhì)量, 可以根據(jù)自己的需要選擇合適的圖像質(zhì)量。另外FPS200內(nèi)置了640×480
第 2 / 23頁 分辨率的鏡像陣列,A/D轉(zhuǎn)換器, 并支持外部水平、垂直同步輸入格式, 數(shù)字視頻輸出、增益 控制、黑平衡和白平衡等在內(nèi)的控制寄存器功能模塊。其內(nèi)部框圖如圖1:
圖1 FPS200內(nèi)部結(jié)構(gòu)框圖
第 3 / 23頁
三、系統(tǒng)硬件設(shè)計(jì)
1、結(jié)構(gòu)框圖
系統(tǒng)的硬件架構(gòu)原理框圖如圖2所示,本系統(tǒng)主要實(shí)現(xiàn)指紋的識別、處理、特征模板提取、結(jié)果顯示,以及完成個人身份識別/注冊功能。主要由ARM9處理、VGA控制及結(jié)果顯示等模塊組成。
第 4 / 23頁
2、指紋識別模塊
指紋識別模塊核心部分為FPS200傳感芯片,該芯片是一種觸摸式CMOS傳感器件,其傳感區(qū)域?yàn)?.28cm×1.50cm,500dpi分辨率,內(nèi)置有8位ADC,且有微處理器總線、SPI總線三種接口模式。其通過改變電容陣列的參數(shù)值可在一秒鐘內(nèi)掃描多副指紋圖像便自動選擇最好的一幅。本指紋防盜系統(tǒng)采用了傳感器的USB模式傳感器的數(shù)據(jù)線直接與STR912x芯片擴(kuò)展口相接。
第 5 / 23頁 指紋采集電路的原理圖如圖4所示,其工作原理為:PXA255處理器通過I2C總線設(shè)置FPS200的寄存器,系統(tǒng)開GPIO72(VSYNC)的中斷使能并檢測中斷,當(dāng)GPIO72(V SYNC)中斷到來以后,打開GPIO73(HREF)中斷使能,關(guān)閉其它的中斷使能。當(dāng)GPIO73(HREF)中斷到來以后, 打開GPIO74(PCLK)中斷使能, 關(guān)閉其它中斷。每當(dāng)GPIO74(PCLK)中斷到來, 就將GPI2Obuffer 里的GPIO64~GPIO71數(shù)據(jù)采集出來, 保存到imgbuf數(shù)組中去。重復(fù)這一步一直到采滿382×240 次為止。將imgbuf按照每隔320 個元素就舍棄62個元素進(jìn)行處理,這樣得到的數(shù)據(jù)就是320×240 大小的灰度指紋圖像。
圖4 指紋采集電路原理圖
第 6 / 23頁
3、數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊主要完成指紋識別的整個處理過程,包括指紋圖像軟化、方向圖提取、圖像增強(qiáng)、二值化、圖像濾波、圖像細(xì)化等。該模塊采用了TMS320VC5402,使用FLASH和SDRAM分別作ARM處理器的程序存儲器。TMS320VC5402是16位定點(diǎn)DSP,采用改進(jìn)的哈佛結(jié)構(gòu)適應(yīng)遠(yuǎn)程通信等實(shí)時嵌入式的需要。為了提高速度,本文對一些核心的算法進(jìn)行了優(yōu)化。
4、全局邏輯控制單元
系統(tǒng)中大多數(shù)外圍器件與DSP 的握手信號都是通過可編程邏輯器件來完成的,CPLD電路設(shè)計(jì)按其所實(shí)現(xiàn)的功能可分為DSP尋址空間和芯片讀寫信號兩個模塊,其中DSP尋址空間模塊根據(jù)DSP輸出的控制信號和數(shù)據(jù)空間選擇信號分時尋址SRAM和FLASH兩個存儲體。
四、系統(tǒng)軟件設(shè)計(jì)
指紋識別系統(tǒng)的主程序流程圖如圖5所示。目標(biāo)板上電后對整個識別系統(tǒng)進(jìn)行初始化操作,包括DSP系統(tǒng)的初始化和目標(biāo)板上外設(shè)的初始化,對他們進(jìn)行參數(shù)設(shè)置。初始化完成后開始檢測指紋傳感器上是否有手指,如果有則進(jìn)行指紋圖像的識別識別完成后就對著枚指紋圖像進(jìn)行預(yù)處理工作,在預(yù)處理的前端,對識別進(jìn)來的這枚指紋進(jìn)行質(zhì)量評估,以判斷是否需要繼續(xù)進(jìn)行指紋圖像的預(yù)處理工作,若指紋質(zhì)量比較好則繼續(xù)進(jìn)行預(yù)處理和數(shù)據(jù)上傳;如果圖像的質(zhì)量很差,則作廢這枚指紋數(shù)據(jù)。
指紋圖像的識別是在中斷程序中開始的,當(dāng)指紋傳感器上沒有手指時,系統(tǒng)將進(jìn)入省電模式,通過指紋傳感器FPS200的手指自動檢測中斷來喚醒系統(tǒng),并進(jìn)行一次指紋圖像識別、預(yù)處理和數(shù)據(jù)上傳。指紋登記個數(shù)≥3000枚。系統(tǒng)設(shè)計(jì)完成后,可脫機(jī)值守工作。122×32點(diǎn)陣LCD實(shí)時顯示時鐘、操作狀態(tài),并具有15鍵操作鍵盤,可獨(dú)立完成建檔及查詢功能。系統(tǒng)核查指紋1:N與1:1兩種方式兼容,提供RS232/R485、RJ45接口支持局域網(wǎng)連接。
第 7 / 23頁
五、結(jié)論及心得體會
本次設(shè)計(jì)主要介紹了基于ARM的指紋識別門禁系統(tǒng)的軟硬件設(shè)計(jì)。ARM體系結(jié)構(gòu)有豐富的接口, 在門禁、監(jiān)控等領(lǐng)域正發(fā)揮越來越重要的作用, 面向可集成, 可擴(kuò)展, 可移植的特定嵌入式系統(tǒng)越來越多的出現(xiàn)在工程領(lǐng)域。隨著性價比的提高和軟件開發(fā)的成熟,ARM 在嵌入式領(lǐng)域的應(yīng)用會越來越廣泛。本文從指紋識別的可靠性及速度上考慮, 在門禁系統(tǒng)中以ARM 微處理器做控制器,充分利用了其高速的運(yùn)算處理能力。
通過此次課程設(shè)計(jì),我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)嵌入式更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。
第 8 / 23頁
六、程序代碼:
//fps200.h #ifndef _FPS200_H_ #define _FPS200_H_ #define ROW_NUM 300 #define COL_NUM 256 #define FPS200_IOCRESET _IO(FPS200_IOC_MAGIC)#define FPS_RAH 0x00 #define FPS_RAL 0x01 #define FPS_CAL 0x02 #define FPS_REH 0x03 #define FPS_REL 0x04 #define FPS_CEL 0x05 #define FPS_DTR 0x06 #define FPS_DTR_TIME 0x70 #define FPS_DCR 0x07 #define FPS_DCR_CURRENT 0x6 #define FPS_CTRLA 0x08 #define FPS_CTRL_ASM_ARCH_EP7211_HA_GETSUB 0x04 #define FPS_CTRLA_GETIMG 0x02 #define FPS_CTRLA_GETROW 0x01 #define FPS_CTRLA_AINSEL 0x08 #define FPS_CTRLB 0x09 #define FPS_CTRLB_MODE 0xC0 #define FPS_CTRLB_RDY 0x20 #define FPS_CTRLB_AFDEN 0x08 #define FPS_CTRLB_AUTOINCEN 0x04 #define FPS_CTRLB_XTALSEL 0x02 #define FPS_CTRLB_ENABLE 0x01
第 9 / 23頁 #define FPS_CTRLC 0x0A #define FPS_SRA_ASM_ARCH_EP7211_H 0x0B #define FPS_SRA_GETSUB 0x04 #define FPS_SRA_GETIMG 0x02 #define FPS_SRA_GETROW 0x01 #define FPS_PGC 0x0C #define FPS_PGC_VALUE 0x4//0xb #define FPS_ICR 0x0D #define FPS_ICR_IP1_RISE 0x80 #define FPS_ICR_IP0_RISE 0x40 #define FPS_ICR_IT1_LEVEL 0x20 #define FPS_ICR_IT0_LEVEL 0x10 #define FPS_ICR_IM1 0x08 #define FPS_ICR_IM0 0x04 #define FPS_ICR_IE1 0x02 #define FPS_ICR_IE0 0x01 #define FPS_ISR 0x0E #define FPS_ISR_CLRINT 0x01 #define FPS_THR 0x0F #define FPS_THR_THV 0x40 #define FPS_THR_THC 0x09 #define FPS_CIDH 0x10 #define FPS_CIDL 0x11 #define FPS_TST 0x12 #include
第 10 / 23頁 # define PDEBUG(fmt, args...)fprintf(stderr, fmt, ##args)# endif #else # define PDEBUG(fmt, args...)
/* 不調(diào)試*/ #endif #undef PDEBUGG #define PDEBUGG(fmt, args...)
調(diào)試*/ /* 設(shè)備結(jié)構(gòu)類型 */ typedef struct FPS200_Dev { unsigned char flag;void *data;} FPS200_Dev;
/* 用于 ioctl */ #define FPS200_IOC_MAGIC 'k' /* * S代表 “Set” through a ptr * G代表 “Get”: reply by setting through a pointer * C代表 “Check” */ #define FPS200_IOCSDTR _IOC(_IOC_WRITE, FPS200_IOC_MAGIC, 1, 1)#define FPS200_IOCSDCR _IOC(_IOC_WRITE, FPS200_IOC_MAGIC, 2, 1)#define FPS200_IOCSPGC _IOC(_IOC_WRITE, FPS200_IOC_MAGIC, 3, 1)#define FPS200_IOCGDTR _IOC(_IOC_READ, FPS200_IOC_MAGIC, 4, 1)#define FPS200_IOCGDCR _IOC(_IOC_READ, FPS200_IOC_MAGIC, 5, 1)#define FPS200_IOCGPGC _IOC(_IOC_READ, FPS200_IOC_MAGIC, 6, 1)#define FPS200_IOCFCAP _IOC(_IOC_READ, FPS200_IOC_MAGIC,7, 4)
第 11 / 23頁
不
/* #define FPS200_IOCGDATA _IOC(_IOC_READ, FPS200_IOC_MAGIC, 8, 4)#define FPS200_IOCEINT _IOC(_IOC_NONE, FPS200_IOC_MAGIC, 9, 0)#define FPS200_IOCDINT _IOC(_IOC_NONE, FPS200_IOC_MAGIC, 10, 0)#define FPS200_IOCCINT _IOC(_IOC_READ, FPS200_IOC_MAGIC, 11, 1)#define FPS200_IOCCRDY _IOC(_IOC_READ, FPS200_IOC_MAGIC, 12, 1)#define FPS200_IOCCLR _IOC(_IOC_NONE, FPS200_IOC_MAGIC, 13, 0)#define FPS200_IOC_MAXNR 13 int fps200_open(struct inode *inode, struct file *filp);int fps200_release(struct inode *inode, struct file *filp);int fps200_ioctl(struct inode *inode, struct file *filp,unsigned int cmd, unsigned long arg);void fps_get_image();#endif /* _FPS200_H_ */ //fps200.c #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif #include
*/ #include
*/ #include
everything...*/ #include
#include
#include
第 12 / 23頁
/* printk()/* kmalloc()
/* error codes */ /* size_t */
/* #include
/* udelay()*/ #include
/* ioremap(), iounmap()*/ #include
local definitions */ #define FPS200_VR 0xfd000000 #define FPS_INDEX(*(volatile unsigned char *)FPS200_VR)#define FPS_DATA(*(volatile unsigned char *)(FPS200_VR+1))#define FPS200_MAJOR 240 #define FPS200_NR_DEVS 0 #define FPS200_IRQ IRQ_EINT2
#define FPS200_DATASIZE 76800 int fps200_major = FPS200_MAJOR;int fps200_nr_devs = FPS200_NR_DEVS;
fps200 devices(no use here)*/ MODULE_PARM(fps200_major,“i”);MODULE_PARM(fps200_nr_devs,“i”);MODULE_AUTHOR(“Nankai Unversity 5-304”);MODULE_LICENSE(“GPL”);struct file_operations fps200_fops = { open: fps200_open, ioctl: fps200_ioctl, release: fps200_release };struct file_operations *fps200_fop_array[]={
第 13 / 23頁
/*
// irq = 6
/* number of bare &fps200_fops,/* type 0 */
/* add more later */ };#define FPS200_MAX_TYPE 0 FPS200_Dev *fps200_device;void fps200_interrupt(int irq, void *dev_id, struct pt_regs *regs){ disable_irq(irq);//fps_get_image();fps200_device->flag = 1;} void fps_get_image(void){ int i = 0;int j = 0;FPS_INDEX = FPS_CTRLA;FPS_DATA = FPS_CTRLA_GETIMG;for(i=0;i<300;i++){
FPS_INDEX = FPS_CTRLB;
while(!(FPS_CTRLB_RDY&FPS_DATA)){udelay(1);};
for(j=0;j<256;j++){
FPS_INDEX = FPS_CTRLB;
while(!(FPS_CTRLB_RDY&FPS_DATA)){udelay(1);};
FPS_INDEX = FPS_CTRLA;
*((unsigned char *)(fps200_device->data+i*256+j))=FPS_DATA;
} } } int fps200_open(struct inode *inode, struct file *filp){ MOD_INC_USE_COUNT;
第 14 / 23頁 return(0);} int fps200_release(struct inode *inode, struct file *filp){ MOD_DEC_USE_COUNT;return(0);} int fps200_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg){ int err = 0;int ret = 0;unsigned char tmp;if(_IOC_TYPE(cmd)!= FPS200_IOC_MAGIC)return-ENOTTY;if(_IOC_NR(cmd)> FPS200_IOC_MAXNR)return-ENOTTY;if(_IOC_DIR(cmd)& _IOC_READ)err = verify_area(VERIFY_WRITE,(void *)arg, _IOC_SIZE(cmd));else if(_IOC_DIR(cmd)& _IOC_WRITE)err = verify_area(VERIFY_READ,(void *)arg, _IOC_SIZE(cmd));if(err)return err;switch(cmd){ case FPS200_IOCSDTR:
ret = __get_user(tmp,(unsigned char *)arg);
if(tmp > 0x7f)
tmp = 0x7f;
FPS_INDEX = FPS_DTR;
第 15 / 23頁
FPS_DATA = tmp;
break;case FPS200_IOCSDCR:
ret = __get_user(tmp,(unsigned char *)arg);
if(tmp > 0x1f)
tmp = 0x1f;
FPS_INDEX = FPS_DCR;
FPS_DATA = tmp;
break;case FPS200_IOCSPGC:
ret = __get_user(tmp,(unsigned char *)arg);
if(tmp > 0x0f)
tmp = 0x0f;
FPS_INDEX = FPS_PGC;
FPS_DATA = tmp;
break;case FPS200_IOCGDTR:
FPS_INDEX = FPS_DTR;
tmp = FPS_DATA;
ret = __put_user(tmp,(unsigned char *)arg);
break;case FPS200_IOCGDCR:
FPS_INDEX = FPS_DCR;
tmp = FPS_DATA;
ret = __put_user(tmp,(unsigned char *)arg);
break;case FPS200_IOCGPGC:
FPS_INDEX = FPS_PGC;
tmp = FPS_DATA;
ret = __put_user(tmp,(unsigned char *)arg);
break;case FPS200_IOCEINT:
第 16 / 23頁
enable_irq(FPS200_IRQ);
break;case FPS200_IOCDINT:
disable_irq(FPS200_IRQ);
break;case FPS200_IOCFCAP:
fps_get_image();case FPS200_IOCGDATA:
copy_to_user((void *)arg, fps200_device->data,F(xiàn)PS200_DATASIZE);
ret = 0;
fps200_device->flag = 0;
break;case FPS200_IOCCLR:
memset(fps200_device->data, 0, FPS200_DATASIZE);
fps200_device->flag = 0;
break;case FPS200_IOCCINT:
if(((clps_readw(INTSR1))&0x40)== 0)
{
udelay(100);
if(((clps_readw(INTSR1))&0x40)== 0)
ret = __put_user(0x01,(unsigned char *)arg);
else
ret = __put_user(0x0,(unsigned char *)arg);}
else
ret = __put_user(0x0,(unsigned char *)arg);
break;case FPS200_IOCCRDY:
ret = __put_user(fps200_device->flag,(unsigned char
*)arg);
第 17 / 23頁
break;default: return-ENOTTY;} return ret;} static int __init fps200_init_module(void){ int result;char tmp;if((result = check_region(FPS200_VR,2))){ printk(“<1> can't get I/O port address n”);return(result);} if(!request_region(FPS200_VR,2,“fps200”))return-EBUSY;SET_MODULE_OWNER(&fps200_fops);result = register_chrdev(fps200_major, “fps200”,&fps200_fops);if(result < 0){ printk(“<1>fps200: can't get major %dn”,fps200_major);return result;} if(fps200_major == 0)fps200_major = result;
/* read chip id first, if not equal 0x20xx, print error*/ FPS_INDEX = FPS_CIDH;tmp = FPS_DATA;if(tmp!= 0x20){
第 18 / 23頁
/* dynamic */ printk(“<1>wrong chip ID, insmod fail.n”);return-EIO;} /* row auto inc.inner 12MHz vibrator.no low-power state*/ FPS_INDEX = FPS_CTRLB;FPS_DATA =(FPS_CTRLB_AFDEN|FPS_CTRLB_AUTOINCEN|FPS_CTRLB_ENABLE);
/* 等待30us */ udelay(35);
// 使時延大于 30us
/* 中斷 */ FPS_INDEX = FPS_ICR;FPS_DATA =(FPS_ICR_IE0|FPS_ICR_IT0_LEVEL);FPS_INDEX = FPS_THR;FPS_DATA =(FPS_THR_THV | FPS_THR_THC);
/* DTR, DCR, PGC */ FPS_INDEX = FPS_DTR;FPS_DATA = 0x23;FPS_INDEX = FPS_DCR;FPS_DATA = 0x1;FPS_INDEX = FPS_PGC;FPS_DATA = 0;
/* other initial */ FPS_INDEX = FPS_RAL;
// raw 地址
FPS_DATA = 0;FPS_INDEX = FPS_RAH;FPS_DATA = 0;FPS_INDEX = FPS_REL;FPS_DATA = 0;FPS_INDEX = FPS_REH;
第 19 / 23頁 FPS_DATA = 0;FPS_INDEX = FPS_CAL;
// column 地址
FPS_DATA = 0;FPS_INDEX = FPS_CEL;FPS_DATA = 0;FPS_INDEX = FPS_CTRLC;FPS_DATA = 0;FPS_INDEX = FPS_CTRLA;FPS_DATA = 0;// clear FPS_CTRLA_AINSEL
if(result){ printk(“<1>can't get assigned irq.n”);return-EIO;} fps200_device = kmalloc(sizeof(FPS200_Dev), GFP_KERNEL);if(!fps200_device){ FPS_INDEX = FPS_CTRLB;FPS_DATA = 0;return-ENOMEM;} memset(fps200_device, 0, sizeof(FPS200_Dev));fps200_device->data = kmalloc(FPS200_DATASIZE, GFP_KERNEL);if(!fps200_device){ FPS_INDEX = FPS_CTRLB;FPS_DATA = 0;
第 20 / 23頁
設(shè)置 irq */ /* kfree(fps200_device);return-ENOMEM;} memset(fps200_device->data, 0, FPS200_DATASIZE);
/* 設(shè)置 irq */ result = request_irq(FPS200_IRQ, fps200_interrupt, SA_INTERRUPT, “fps200”, NULL);return(0);} static void __exit fps200_cleanup_module(void){ kfree(fps200_device->data);kfree(fps200_device);FPS_INDEX = FPS_CTRLB;FPS_DATA = 0;release_region(FPS200_VR,2);free_irq(FPS200_IRQ, NULL);unregister_chrdev(fps200_major, “fps200”);} module_init(fps200_init_module);module_exit(fps200_cleanup_module);//main.c void main(void){ BYTE temp;WORD port = 1001;LocalMACAddr[0]=0x52;LocalMACAddr[1]=0x54;LocalMACAddr[2]=0x4c;LocalMACAddr[3]=0x30;LocalMACAddr[4]=0x2e;
第 21 / 23頁 LocalMACAddr[5]=0x2f;LocalIPAddress = 0xc0a8020d;/* 本地地址192.168.2.14*/ ServerIPAddress = 0xc0a8020e;/* 目的地址192.168.2.13*/
/*初始化 */ SerialInitial();MemInitial();NetInInitial();RTLInitial();
Start8019();InterruptInitial();
// 建立一個ARP包
p[0] =0xff;p[1] =0xff;p[2] =0xff;p[3] = 0xff;p[4] = 0xff;p[5] = 0xff;p[6] = 0x52;p[7] =0x54;p[8] =0x4c;p[9] =0x30;p[10] =0x2e;p[11] =0x2f;p[12] = 0x08;p[13] = 0x06;p[14] = 0x00;p[15] = 0x01;p[16] = 0x08;p[17] = 0x00;p[18] = 0x06;
第 22 / 23頁 p[19] = 0x04;p[20] = 0x00;p[21] = 0x01;
// 發(fā)送ARP包
RTLSendPacket(p,60);while(1);
#ifdef DEBUG printf(“n-------bigine-------”);#endif
/* 處理 */ TCPBind(port);if(TCPConnect(ServerIPAddress,1001)== TRUE){
while(UserFunc());}
/* 延時 */ for(temp;temp<255;temp++);#ifdef DEBUG printf(“n run over!”);#endif
/* 存儲 */ Stop8019();while(1);}
第 23 / 23頁
第二篇:基于ARM的指紋識別門禁系統(tǒng)設(shè)計(jì)_圖文.
課程設(shè)計(jì)任務(wù)書
學(xué)生姓名: 廖年強(qiáng) 專業(yè)班級: 06自動化
指導(dǎo)教師: 謝川 工作單位: 重慶工商大學(xué) 計(jì)信學(xué)院
題 目: 基于ARM的指紋識別門禁系統(tǒng)設(shè)計(jì)
已知技術(shù)參數(shù)和設(shè)計(jì)要求:
1、硬件主要選擇基于Xscale內(nèi)核的PXA255處理器;
2、傳感器為美國豪威公司的CMOS圖像傳感器FPS200;
3、設(shè)計(jì)系統(tǒng)的硬件和軟件部分;
4、硬件包括指紋識別模塊、數(shù)據(jù)處理模塊等;
5、軟件部分包括系統(tǒng)初始化, 指紋處理識別, 電控鎖控制部分等;
6、以小組為單位完成本任務(wù),每個小組最多5人;
要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求)
1、完成元器件選型,設(shè)計(jì)硬件電路,并提供protel電路圖;
2、設(shè)計(jì)中給出最小系統(tǒng)的電路圖擴(kuò)展相應(yīng)的電路,并根據(jù)要求最終形成一個完整的電路圖,并完成所有源代碼;
3、每個組員完成不少于3000字的課程設(shè)計(jì)報告且報告內(nèi)容不同。
4、課題指標(biāo)從學(xué)生實(shí)際出發(fā),難易適中,經(jīng)過努力都能夠完成任務(wù),并有所收獲。
時間安排:2009~2010學(xué)年第一學(xué)期17~18周 指導(dǎo)教師簽名: 年 月 日 教研室主任簽名: 年 月 日
重慶工商大學(xué)課程設(shè)計(jì)成績評定表
學(xué)院:計(jì)信學(xué)院 班級:06自動化2班 學(xué)生姓名:廖年強(qiáng) 學(xué)號:2006003921
優(yōu)秀
項(xiàng)目 分值
(100>x≥90 參考標(biāo)準(zhǔn) 參考標(biāo)準(zhǔn) 參考標(biāo)準(zhǔn)
(90>x≥80 參考標(biāo)準(zhǔn)
(80>x≥70(70>x≥60 參考標(biāo)準(zhǔn)
良好
中等
及格
不及格(x<60
評分
學(xué)習(xí)態(tài)度 15 學(xué)習(xí)態(tài)度認(rèn)真,科學(xué)作風(fēng)嚴(yán)謹(jǐn),嚴(yán)格保證設(shè)計(jì)時間并按任務(wù)書中規(guī)定的進(jìn)度開展各項(xiàng)工作 學(xué)習(xí)態(tài)度比較認(rèn)真,科學(xué)作風(fēng)良好,能按期圓滿完成任務(wù)書規(guī)定的任務(wù) 學(xué)習(xí)態(tài)度尚好,遵守組織紀(jì)律,基本保證設(shè)計(jì)時間,按期完成各項(xiàng)工作
學(xué)習(xí)態(tài)度尚可,能遵守組織紀(jì)律,能按期完成任務(wù)
學(xué)習(xí)馬虎,紀(jì)律渙散,工作作風(fēng)不
嚴(yán)謹(jǐn),不能保證設(shè)計(jì)時間和進(jìn)度
技術(shù)水平與實(shí)際能力 25 設(shè)計(jì)合理、理論分析與計(jì)算正確,實(shí)驗(yàn)數(shù)據(jù)準(zhǔn)確,有很強(qiáng)的實(shí)際動手能力、經(jīng)濟(jì)分析能力和計(jì)算機(jī)應(yīng)用能力,文獻(xiàn)查閱能力強(qiáng)、引用合設(shè)計(jì)合理、理論分析與計(jì)算正確,實(shí)驗(yàn)數(shù)據(jù)比較準(zhǔn)確,有較強(qiáng)的實(shí)際動手能力、經(jīng)濟(jì)分析能力和計(jì)算機(jī)應(yīng)用能力,設(shè)計(jì)合理,理論分析與計(jì)算基本正確,實(shí)驗(yàn)數(shù)據(jù)比較準(zhǔn)確,有一定的實(shí)際動手能力,主要文獻(xiàn)引用、調(diào)查調(diào)研比設(shè)計(jì)不合理,理論
設(shè)計(jì)基本合分析與計(jì)理,理論分算有原則析與計(jì)算無錯誤,實(shí) 大錯,實(shí)驗(yàn)驗(yàn)數(shù)據(jù)不數(shù)據(jù)無大錯 可靠,實(shí)
際動手能力差,文獻(xiàn)引用、理、調(diào)查調(diào)研文獻(xiàn)引用、非常合理、可調(diào)查調(diào)研比信 較合理、可
信
較可信
調(diào)查調(diào)研有較大的問題
創(chuàng)新 10
有較大改進(jìn)有重大改進(jìn)或
或新穎的見獨(dú)特見解,有
解,實(shí)用性一定實(shí)用價值
尚可
有一定改進(jìn)
有一定見解 觀念陳舊
或新的見解
論文(計(jì)算書、圖紙50 撰寫質(zhì)量 結(jié)構(gòu)嚴(yán)謹(jǐn),邏輯性強(qiáng),層次清晰,語言準(zhǔn)確,文字流暢,完全符合規(guī)范化要求,書寫工整或用計(jì)算機(jī)打印成文;圖紙非常工整、清晰
結(jié)構(gòu)合理,符合邏輯,文章層次分明,語言準(zhǔn)確,文字流暢,符合規(guī)范化要求,書寫工整或用計(jì)算機(jī)打印成文;圖紙工整、清晰
結(jié)構(gòu)合理,層次較為分明,文理通順,基本達(dá)到規(guī)范化要求,書寫比較工整;圖紙比較工整、清晰
結(jié)構(gòu)基本合理,邏輯基本清楚,文字尚通順,勉強(qiáng)達(dá)到規(guī)范化要求;圖紙比較工整
內(nèi)容空泛,結(jié)構(gòu)混亂,文字表達(dá)不清,錯別字較多,達(dá)不到規(guī)范化要求;圖紙不工整或不清晰
指導(dǎo)教師評定成績:
指導(dǎo)教師簽名: 年 月 日
基于ARM的指紋識別門禁系統(tǒng)設(shè)計(jì)
計(jì)信學(xué)院 06自動化2班 廖年強(qiáng) 2006003921 【摘 要】 本設(shè)計(jì)介紹了基于ARM的指紋識別門禁系統(tǒng)的軟硬件設(shè)計(jì)。其中硬件主要是Intel 公司基于Xscale內(nèi)核的PXA255處理器和美國豪威公司的CMOS圖像傳感器FPS200。軟件設(shè)計(jì)包括系統(tǒng)初始化, 指紋處理識別, 電控鎖控制部分等。經(jīng)過實(shí)際測試該系統(tǒng)工作穩(wěn)定可靠, 達(dá)到了設(shè)計(jì)目的。
【關(guān)鍵詞】 ARM 門禁系統(tǒng) 指紋識別 TCP/IP 圖像
一、門禁系統(tǒng)概述
門禁系統(tǒng)(Access Contro l System , 又稱出入口控制系統(tǒng),是為保障人們生活、工作及財產(chǎn)安全, 對重要通道的出入口進(jìn)行管理與控制的系統(tǒng)。隨著技術(shù)的發(fā)展, 門禁系統(tǒng)已經(jīng)從傳統(tǒng)的卡式門禁系統(tǒng)發(fā)展到今天的生物特征識別門禁系統(tǒng)。生物特征識別門禁系統(tǒng)是以人體生物特征作為辨識條件的指紋比對、掌紋比對、語音比對等。這些生理特征相同的概率達(dá)到數(shù)十億分之一,因此具有無法仿冒與借用、不怕遺失、不用攜帶、不會遺忘,有著個體特征獨(dú)特性、唯一性、安全性的特點(diǎn),適用于高度機(jī)密性場所的安全保護(hù)。其中指紋識別發(fā)展最早, 使用也最廣泛。并逐漸與網(wǎng)絡(luò)集成。
二、PXA 255處理器和指紋傳感器FPS200簡介
本系統(tǒng)采用Intel 公司基于Xscale 內(nèi)核的PXA255處理器。Xscale微架構(gòu)采用ARMV 5TE ISA 兼容指令集(浮點(diǎn)指令集除外,它以ARM 核為中心,在其周圍擴(kuò)展了指令和數(shù)據(jù)內(nèi)存管理(Inst ruct ion andDataM emo ryM anagement Unit, 指令、數(shù)據(jù)和微小數(shù)據(jù)高速緩(Instruction,Data and Mini-DataCache,寫緩沖、全緩沖、掛起緩沖和分支目標(biāo)緩沖,電源管理單元, 性能監(jiān)測單元, 調(diào)試和JTAG 單元以及協(xié)處理器接口、MAC 協(xié)處理器、核心存儲總線等。FPS系列CMOS圖像傳感器芯片是美國豪威公司的產(chǎn)品。FPS200是高度集成的彩色攝像芯片, 可帶1/4鏡頭。支持多種格式, 內(nèi)設(shè)的SCCB(Serial Camera Cont ro lBus 串行控制總線接口, 提供簡單控制方式。通過該接口, 我們可以對FPS200芯片內(nèi)部所有寄存器值進(jìn)行修改, 從而完成對FPS200的控制, 包括色彩飽和度的調(diào)整、gamma 校正等等。該芯片最高能達(dá)到每秒鐘30幀的傳輸速率, 并且用戶可以控制圖像質(zhì)量, 可以根據(jù)自己的需要選擇合適的圖像質(zhì)量。另外FPS200內(nèi)置了640×480分辨率的鏡像陣列,A/D轉(zhuǎn)換器, 并支持外部水平、垂直同步輸入格式, 數(shù)字視頻輸出、增益
控制、黑平衡和白平衡等在內(nèi)的控制寄存器功能模塊。其內(nèi)部框圖如圖1。
圖1 FPS200內(nèi)部結(jié)構(gòu)框圖
三、系統(tǒng)硬件設(shè)計(jì)
1、結(jié)構(gòu)框圖
系統(tǒng)的硬件架構(gòu)原理框圖如圖2所示,本系統(tǒng)主要實(shí)現(xiàn)指紋的識別、處理、特征模板提取、圖2 系統(tǒng)硬件結(jié)構(gòu)圖
結(jié)果顯示,以及完成個人身份識別/注冊功能。主要由ARM9處理、VGA控制及結(jié)果顯示等模塊組成。
2、指紋識別模塊
指紋識別模塊核心部分為FPS200傳感芯片,該芯片是一種觸摸式CMOS傳感器件,其傳感區(qū)域?yàn)?.28cm×1.50cm,500dpi分辨率,內(nèi)置有8位ADC,且有微處理器總線、SPI總線三種接口模式。其通過改變電容陣列的參數(shù)值可在一秒鐘內(nèi)掃描多副指紋圖像便自動選擇最好的一幅。本指紋防盜系統(tǒng)采用了傳感器的USB模式傳感器的數(shù)據(jù)線直接與STR912x芯片擴(kuò)展口相接,對FPS200圖像傳感器進(jìn)行初始化控制和圖像讀取。指紋傳感電路如圖3所示。
圖3 指紋傳感電路
指紋采集電路的原理圖如圖4所示,其工作原理為:PXA255處理器通過I2C總線設(shè)置FPS200的寄存器,系統(tǒng)開GPIO72(VSYNC的中斷使能并檢測中斷,當(dāng)GPIO72(V SYNC 中斷到來以后,打開GPIO73(HREF中斷使能,關(guān)閉其它的中斷使能。當(dāng)GPIO73(HREF中斷到來以后, 打開GPIO74(PCLK中斷使能, 關(guān)閉其它中斷。每當(dāng)GPIO74(PCLK中斷到來, 就將GPI2Obuffer 里的GPIO64~GPIO71數(shù)據(jù)采集出來, 保存到imgbuf數(shù)組中去。重復(fù)這一步一直到采滿382×240 次為止。將imgbuf按照每隔320 個元素就舍棄62個元素進(jìn)行處理,這樣得到的數(shù)據(jù)就是320×240 大小的灰度指紋圖像。
圖4 指紋采集電路原理圖
3、數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊主要完成指紋識別的整個處理過程,包括指紋圖像軟化、方向圖提取、圖像增強(qiáng)、二值化、圖像濾波、圖像細(xì)化等。該模塊采用了TMS320VC5402,使用FLASH和SDRAM分別作ARM處理器的程序存儲器。TMS320VC5402是16位定點(diǎn)DSP,采用改進(jìn)的哈佛結(jié)構(gòu)適應(yīng)遠(yuǎn)程通信等實(shí)時嵌入式的需要。為了提高速度,本文對一些核心的算法進(jìn)行了優(yōu)化。
4、全局邏輯控制單元
系統(tǒng)中大多數(shù)外圍器件與DSP 的握手信號都是通過可編程邏輯器件來完成的,CPLD電路設(shè)計(jì)按其所實(shí)現(xiàn)的功能可分為DSP尋址空間和芯片讀寫信號兩個模塊,其中DSP尋址空間模塊根據(jù)DSP輸出的控制信號和數(shù)據(jù)空間選擇信號分時尋址SRAM和FLASH兩個存儲體。
四、系統(tǒng)軟件設(shè)計(jì)
指紋識別系統(tǒng)的主程序流程圖如圖5所示。目標(biāo)板上電后對整個識別系統(tǒng)進(jìn)行初始化操作,包括DSP系統(tǒng)的初始化和目標(biāo)板上外設(shè)的初始化,對他們進(jìn)行參數(shù)設(shè)置。初始化完成后開始檢測指紋傳感器上是否有手指,如果有則進(jìn)行指紋圖像的識別識別完成后就對著枚指紋圖像進(jìn)行預(yù)處理工作,在預(yù)處理的前端,對識別進(jìn)來的這枚指紋進(jìn)行質(zhì)量評估,以判斷是否需要繼續(xù)進(jìn)行指紋圖像的預(yù)處理工作,若指紋質(zhì)量比較好則繼續(xù)進(jìn)行預(yù)處理和數(shù)據(jù)上傳;如果圖像的質(zhì)量很差,則作廢這枚指紋數(shù)據(jù)。
指紋圖像的識別是在中斷程序中開始的,當(dāng)指紋傳感器上沒有手指時,系統(tǒng)將進(jìn)入省電模式,通過指紋傳感器FPS200的手指自動檢測中斷來喚醒系統(tǒng),并進(jìn)行一次指紋圖像識別、預(yù)處理和數(shù)據(jù)上傳。指紋登記個數(shù)≥3000枚。
圖5 軟件流程圖
系統(tǒng)設(shè)計(jì)完成后,可脫機(jī)值守工作。122×32點(diǎn)陣LCD實(shí)時顯示時鐘、操作狀態(tài),并具有15鍵操作鍵盤,可獨(dú)立完成建檔及查詢功能。系統(tǒng)核查指紋1:N與1:1兩種方式兼容,提供RS232/R485、RJ45接口支持局域網(wǎng)連接。
五、結(jié)論及心得體會
本次設(shè)計(jì)主要介紹了基于ARM的指紋識別門禁系統(tǒng)的軟硬件設(shè)計(jì)。ARM體系結(jié)構(gòu)有豐富的接口, 在門禁、監(jiān)控等領(lǐng)域正發(fā)揮越來越重要的作用, 面向可集成, 可擴(kuò)展, 可移植的特定嵌入式系統(tǒng)越來越多的出現(xiàn)在工程領(lǐng)域。隨著性價比的提高和軟件開發(fā)的成熟,ARM 在嵌入式領(lǐng)域的應(yīng)用會越來越廣泛。本文從指紋識別的可靠性及速度上考慮, 在門禁系統(tǒng)中以ARM 微處理器做控制器,充分利用了其高速的運(yùn)算處理能力。
通過此次課程設(shè)計(jì),我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)嵌入式更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。
附:程序代碼:
//fps200.h #ifndef _FPS200_H_ #define _FPS200_H_
#define ROW_NUM 300
#define COL_NUM 256
#define FPS200_IOCRESET _IO(FPS200_IOC_MAGIC
#define FPS_RAH 0x00
#define FPS_RAL 0x01
#define FPS_CAL 0x02
#define FPS_REH 0x03
#define FPS_REL 0x04
#define FPS_CEL 0x05
#define FPS_DTR 0x06
#define FPS_DTR_TIME 0x70
#define FPS_DCR 0x07
#define FPS_DCR_CURRENT 0x6
#define FPS_CTRLA 0x08
#define FPS_CTRL_ASM_ARCH_EP7211_HA_GETSUB 0x04
#define FPS_CTRLA_GETIMG 0x02
#define FPS_CTRLA_GETROW 0x01
#define FPS_CTRLA_AINSEL 0x08
#define FPS_CTRLB 0x09
#define FPS_CTRLB_MODE 0xC0
#define FPS_CTRLB_RDY 0x20
#define FPS_CTRLB_AFDEN 0x08
#define FPS_CTRLB_AUTOINCEN 0x04
#define FPS_CTRLB_XTALSEL 0x02
#define FPS_CTRLB_ENABLE 0x01
#define FPS_CTRLC 0x0A
#define FPS_SRA_ASM_ARCH_EP7211_H 0x0B
#define FPS_SRA_GETSUB 0x04
#define FPS_SRA_GETIMG 0x02
#define FPS_SRA_GETROW 0x01
#define FPS_PGC 0x0C
#define FPS_PGC_VALUE 0x4//0xb
#define FPS_ICR 0x0D
#define FPS_ICR_IP1_RISE 0x80
#define FPS_ICR_IP0_RISE 0x40
#define FPS_ICR_IT1_LEVEL 0x20
#define FPS_ICR_IT0_LEVEL 0x10
#define FPS_ICR_IM1 0x08
#define FPS_ICR_IM0 0x04
#define FPS_ICR_IE1 0x02
#define FPS_ICR_IE0 0x01
#define FPS_ISR 0x0E
#define FPS_ISR_CLRINT 0x01
#define FPS_THR 0x0F
#define FPS_THR_THV 0x40
#define FPS_THR_THC 0x09
#define FPS_CIDH 0x10
#define FPS_CIDL 0x11
#define FPS_TST 0x12
#include
#undef PDEBUG
#ifdef fps200_DEBUG
# ifdef __KERNEL__
/* 調(diào)試的內(nèi)核空間*/
# define PDEBUG(fmt, args...printk(KERN_DEBUG“fps200: ” fmt, ## args # else
/* 用戶空間 */
# define PDEBUG(fmt, args...fprintf(stderr, fmt, ##args # endif #else
# define PDEBUG(fmt, args...調(diào)試*/
不
/*
#endif
#undef PDEBUGG
#define PDEBUGG(fmt, args.../*不調(diào)試*/
/* 設(shè)備結(jié)構(gòu)類型 */
typedef struct FPS200_Dev {
unsigned char flag;
void *data;
} FPS200_Dev;
/* 用于 ioctl */
#define FPS200_IOC_MAGIC 'k'
/*
* S代表 “Set” through a ptr
* G代表 “Get”: reply by setting through a pointer
* C代表 “Check” */
#define FPS200_IOCSDTR _IOC(_IOC_WRITE, FPS200_IOC_MAGIC, 1, 1
#define FPS200_IOCSDCR _IOC(_IOC_WRITE, FPS200_IOC_MAGIC, 2, 1
#define FPS200_IOCSPGC _IOC(_IOC_WRITE, FPS200_IOC_MAGIC, 3, 1
#define FPS200_IOCGDTR _IOC(_IOC_READ, FPS200_IOC_MAGIC, 4, 1
#define FPS200_IOCGDCR _IOC(_IOC_READ, FPS200_IOC_MAGIC, 5, 1
#define FPS200_IOCGPGC _IOC(_IOC_READ, FPS200_IOC_MAGIC, 6, 1
#define FPS200_IOCFCAP _IOC(_IOC_READ, FPS200_IOC_MAGIC,7, 4
#define FPS200_IOCGDATA _IOC(_IOC_READ, FPS200_IOC_MAGIC, 8, 4
#define FPS200_IOCEINT _IOC(_IOC_NONE, FPS200_IOC_MAGIC, 9, 0
#define FPS200_IOCDINT _IOC(_IOC_NONE, FPS200_IOC_MAGIC, 10, 0
#define FPS200_IOCCINT _IOC(_IOC_READ, FPS200_IOC_MAGIC, 11, 1
#define FPS200_IOCCRDY _IOC(_IOC_READ, FPS200_IOC_MAGIC, 12, 1
#define FPS200_IOCCLR _IOC(_IOC_NONE, FPS200_IOC_MAGIC, 13, 0
#define FPS200_IOC_MAXNR 13
int fps200_open(struct inode *inode, struct file *filp;
int fps200_release(struct inode *inode, struct file *filp;
int fps200_ioctl(struct inode *inode, struct file *filp,unsigned int cmd, unsigned long arg;
void fps_get_image(;
#endif /* _FPS200_H_ */
//fps200.c #ifndef __KERNEL__
# define __KERNEL__ #endif
#ifndef MODULE
# define MODULE #endif
#include
#include
#include
/* printk(*/
#include
#include
#include
#include
#include
#include
#include
iounmap(*/
#include
#include
#include
/* kmalloc(*/
/* everything...*/ /* size_t */ /* udelay(*/
/* ioremap(,/* error codes */
#include
#include
#include “fps200.h”
/* local definitions */
#define FPS200_VR 0xfd000000
#define FPS_INDEX(*(volatile unsigned char *FPS200_VR
#define FPS_DATA(*(volatile unsigned char *(FPS200_VR+1
#define FPS200_MAJOR 240
#define FPS200_NR_DEVS 0
#define FPS200_IRQ IRQ_EINT2
#define FPS200_DATASIZE 76800
int fps200_major = FPS200_MAJOR;
int fps200_nr_devs = FPS200_NR_DEVS;
fps200 devices(no use here */
// irq = 6
/* number of bare
MODULE_PARM(fps200_major,“i”;
MODULE_PARM(fps200_nr_devs,“i”;
MODULE_AUTHOR(“Nankai Unversity 5-304”;
MODULE_LICENSE(“GPL”;
struct file_operations fps200_fops = {
open: fps200_open,ioctl: fps200_ioctl,release: fps200_release };
struct file_operations *fps200_fop_array[]={
&fps200_fops,/* type 0 */
/* add more later */ };
#define FPS200_MAX_TYPE 0
FPS200_Dev *fps200_device;
void fps200_interrupt(int irq, void *dev_id, struct pt_regs *regs {
disable_irq(irq;
//fps_get_image(;
fps200_device->flag = 1;}
void fps_get_image(void {
int i = 0;
int j = 0;
FPS_INDEX = FPS_CTRLA;
FPS_DATA = FPS_CTRLA_GETIMG;
for(i=0;i<300;i++ {
FPS_INDEX = FPS_CTRLB;
while(!(FPS_CTRLB_RDY&FPS_DATA{udelay(1;};
for(j=0;j<256;j++ {
FPS_INDEX = FPS_CTRLB;
while(!(FPS_CTRLB_RDY&FPS_DATA{udelay(1;};
FPS_INDEX = FPS_CTRLA;
*((unsigned char *(fps200_device->data+i*256+j=FPS_DATA;
}
} }
int fps200_open(struct inode *inode, struct file *filp {
MOD_INC_USE_COUNT;
return(0;
}
int fps200_release(struct inode *inode, struct file *filp {
MOD_DEC_USE_COUNT;
return(0;}
int fps200_ioctl(struct inode *inode, struct file *filp,unsigned int cmd, unsigned long arg {
int err = 0;
int ret = 0;
unsigned char tmp;
if(_IOC_TYPE(cmd!= FPS200_IOC_MAGIC
return-ENOTTY;
if(_IOC_NR(cmd > FPS200_IOC_MAXNR
return-ENOTTY;
if(_IOC_DIR(cmd & _IOC_READ
err = verify_area(VERIFY_WRITE,(void *arg,_IOC_SIZE(cmd;
else if(_IOC_DIR(cmd & _IOC_WRITE
err = verify_area(VERIFY_READ,(void *arg,_IOC_SIZE(cmd;
if(err
return err;
switch(cmd
{
case FPS200_IOCSDTR:
ret = __get_user(tmp,(unsigned char *arg;
if(tmp > 0x7f
tmp = 0x7f;
FPS_INDEX = FPS_DTR;
FPS_DATA = tmp;
break;
case FPS200_IOCSDCR:
ret = __get_user(tmp,(unsigned char *arg;
if(tmp > 0x1f
tmp = 0x1f;
FPS_INDEX = FPS_DCR;
FPS_DATA = tmp;
break;
case FPS200_IOCSPGC:
ret = __get_user(tmp,(unsigned char *arg;
if(tmp > 0x0f
tmp = 0x0f;
FPS_INDEX = FPS_PGC;
FPS_DATA = tmp;
break;
case FPS200_IOCGDTR:
FPS_INDEX = FPS_DTR;
tmp = FPS_DATA;
ret = __put_user(tmp,(unsigned char *arg;
break;
case FPS200_IOCGDCR:
FPS_INDEX = FPS_DCR;
tmp = FPS_DATA;
ret = __put_user(tmp,(unsigned char *arg;
break;
case FPS200_IOCGPGC:
FPS_INDEX = FPS_PGC;
tmp = FPS_DATA;
ret = __put_user(tmp,(unsigned char *arg;
break;
case FPS200_IOCEINT:
enable_irq(FPS200_IRQ;
break;
case FPS200_IOCDINT:
disable_irq(FPS200_IRQ;
break;
case FPS200_IOCFCAP:
fps_get_image(;
case FPS200_IOCGDATA:
copy_to_user((void *arg, fps200_device->data,F(xiàn)PS200_DATASIZE;
ret = 0;
fps200_device->flag = 0;
break;
case FPS200_IOCCLR:
memset(fps200_device->data, 0, FPS200_DATASIZE;
fps200_device->flag = 0;
break;
case FPS200_IOCCINT:
if(((clps_readw(INTSR1&0x40 == 0
{
udelay(100;
if(((clps_readw(INTSR1&0x40 == 0
ret = __put_user(0x01,(unsigned char *arg;
else
ret = __put_user(0x0,(unsigned char *arg;
}
else
ret = __put_user(0x0,(unsigned char *arg;
break;
case FPS200_IOCCRDY:
ret = __put_user(fps200_device->flag,(unsigned char
*arg;
break;
default:
return-ENOTTY;
}
return ret;}
static int __init fps200_init_module(void {
int result;
char tmp;
if((result = check_region(FPS200_VR,2
{
printk(“<1> can't get I/O port address n”;
return(result;
}
if(!request_region(FPS200_VR,2,“fps200”
return-EBUSY;
SET_MODULE_OWNER(&fps200_fops;
result = register_chrdev(fps200_major, “fps200”,&fps200_fops;
if(result < 0
{
printk(“<1>fps200: can't get major %dn”,fps200_major;
return result;
}
if(fps200_major == 0
fps200_major = result;
/* read chip id first, if not equal 0x20xx, print error*/
FPS_INDEX = FPS_CIDH;
tmp = FPS_DATA;
if(tmp!= 0x20
{
printk(“<1>wrong chip ID, insmod fail.n”;
/* dynamic */
return-EIO;
}
/* row auto inc.inner 12MHz vibrator.no low-power state*/ FPS_INDEX = FPS_CTRLB;
FPS_DATA =(FPS_CTRLB_AFDEN|FPS_CTRLB_AUTOINCEN|FPS_CTRLB_ENABLE;
/* 等待30us */
udelay(35;
// 使時延大于 30us
/* 中斷 */
FPS_INDEX = FPS_ICR;
FPS_DATA =(FPS_ICR_IE0|FPS_ICR_IT0_LEVEL;
FPS_INDEX = FPS_THR;
FPS_DATA =(FPS_THR_THV | FPS_THR_THC;
/* DTR, DCR, PGC */
FPS_INDEX = FPS_DTR;
FPS_DATA = 0x23;
FPS_INDEX = FPS_DCR;
FPS_DATA = 0x1;
FPS_INDEX = FPS_PGC;
FPS_DATA = 0;
FPS_INDEX = FPS_RAL;
// raw 地址
FPS_DATA = 0;
FPS_INDEX = FPS_RAH;
FPS_DATA = 0;
FPS_INDEX = FPS_REL;
FPS_DATA = 0;
FPS_INDEX = FPS_REH;
/* other initial */
FPS_DATA = 0;
FPS_INDEX = FPS_CAL;
// column 地址
FPS_DATA = 0;
FPS_INDEX = FPS_CEL;
FPS_DATA = 0;
FPS_INDEX = FPS_CTRLC;
FPS_DATA = 0;
FPS_INDEX = FPS_CTRLA;
FPS_DATA = 0;// clear FPS_CTRLA_AINSEL
if(result
{
printk(“<1>can't get assigned irq.n”;
設(shè)置 irq */ /*
return-EIO;
}
fps200_device = kmalloc(sizeof(FPS200_Dev,GFP_KERNEL;
if(!fps200_device
{
FPS_INDEX = FPS_CTRLB;
FPS_DATA = 0;
return-ENOMEM;
}
memset(fps200_device, 0, sizeof(FPS200_Dev;
fps200_device->data = kmalloc(FPS200_DATASIZE,GFP_KERNEL;
if(!fps200_device
{
FPS_INDEX = FPS_CTRLB;
FPS_DATA = 0;
kfree(fps200_device;
return-ENOMEM;
}
memset(fps200_device->data, 0, FPS200_DATASIZE;
result = request_irq(FPS200_IRQ, fps200_interrupt,SA_INTERRUPT, “fps200”, NULL;
return(0;}
static void __exit fps200_cleanup_module(void {
設(shè)置 irq */
/*
kfree(fps200_device->data;
kfree(fps200_device;
FPS_INDEX = FPS_CTRLB;
FPS_DATA = 0;
release_region(FPS200_VR,2;
free_irq(FPS200_IRQ, NULL;
unregister_chrdev(fps200_major, “fps200”;}
module_init(fps200_init_module;
module_exit(fps200_cleanup_module;//main.c void main(void {
BYTE temp;
WORD port = 1001;
LocalMACAddr[0]=0x52;
LocalMACAddr[1]=0x54;
LocalMACAddr[2]=0x4c;
LocalMACAddr[3]=0x30;
LocalMACAddr[4]=0x2e;
LocalMACAddr[5]=0x2f;
LocalIPAddress = 0xc0a8020d;/* 本地地址192.168.2.14*/
ServerIPAddress = 0xc0a8020e;/* 目的地址192.168.2.13*/
/*初始化 */
SerialInitial(;
MemInitial(;
NetInInitial(;
RTLInitial(;
Start8019(;
InterruptInitial(;
// 建立一個ARP包
p[0] =0xff;
p[1] =0xff;
p[2] =0xff;
p[3] = 0xff;
p[4] = 0xff;
p[5] = 0xff;
p[6] = 0x52;
p[7] =0x54;
p[8] =0x4c;
p[9] =0x30;
p[10] =0x2e;
p[11] =0x2f;
p[12] = 0x08;
p[13] = 0x06;
p[14] = 0x00;
p[15] = 0x01;
p[16] = 0x08;
p[17] = 0x00;
p[18] = 0x06;
p[19] = 0x04;
p[20] = 0x00;
p[21] = 0x01;
// 發(fā)送ARP包
RTLSendPacket(p,60;
while(1;
#ifdef DEBUG
printf(“n-------bigine-------”;#endif
/* 處理 */
TCPBind(port;
if(TCPConnect(ServerIPAddress,1001 == TRUE
{
while(UserFunc(;
}
/* 延時 */
for(temp;temp<255;temp++;
#ifdef DEBUG
printf(“n run over!”;#endif
Stop8019(;
while(1;}
/* 存儲 */
第三篇:基于ARM的IP網(wǎng)絡(luò)電話系統(tǒng)設(shè)計(jì).
海思工作室
杭州匯文教育咨詢有限公司 ——VoIP電話方案投標(biāo)書 海思工作室
海思工作室 VoIP電話方案投標(biāo)書 目 錄
一、公司介紹以及項(xiàng)目綜述...........................................................................................................1 1.1 公司介紹..........................................................................................................................1 1.2 公司在本項(xiàng)目中的優(yōu)勢..................................................................................................2 1.3 VoIP簡述.........................................................................................................................2
二、項(xiàng)目技術(shù)方案...........................................................................................................................3 2.1 系統(tǒng)框架..........................................................................................................................3 2.2 項(xiàng)目目標(biāo)..........................................................................................................................4 2.2.1 系統(tǒng)實(shí)現(xiàn)基本功能...............................................................................................4 2.2.2 系統(tǒng)實(shí)現(xiàn)拓展功能...............................................................................................4 2.3 技術(shù)路線..........................................................................................................................4 2.3.1 VoIP電話基本傳輸過程......................................................................................4 2.3.2 VoIP電話的關(guān)鍵技術(shù)..........................................................................................5 2.3.3 嵌入式VoIP終端軟件的設(shè)計(jì)和實(shí)現(xiàn).................................................................6 2.4 使用與維護(hù)......................................................................................................................7 2.4.1 維護(hù)簡介...............................................................................................................7 2.4.2 承諾與服務(wù)...........................................................................................................8
三、項(xiàng)目管理方案...........................................................................................................................8 3.1 項(xiàng)目計(jì)劃成熟度..............................................................................................................8
3.1.1 整體管理...............................................................................................................8 3.1.2 溝通管理...............................................................................................................9 3.1.3 項(xiàng)目的狀態(tài)周報制度.........................................................................................10 3.2 質(zhì)量控制管理................................................................................................................10 3.2.1 質(zhì)量基本規(guī)劃.....................................................................................................10 3.2.2 質(zhì)量保證.............................................................................................................11 3.2.3 質(zhì)量檢查.............................................................................................................11 3.3 配置管理........................................................................................................................11 3.4 風(fēng)險控制........................................................................................................................11
四、項(xiàng)目實(shí)施.................................................................................................................................12 4.1 實(shí)施計(jì)劃........................................................................................................................12 4.2 所需的資源列表............................................................................................................12 4.2.1 硬件資源.............................................................................................................12 4.2.2 人力資源.............................................................................................................13 4.2.3 軟件資源.............................................................................................................13 4.3 項(xiàng)目報價........................................................................................................................13 Happy、Strive、Solidarity 0
海思工作室 VoIP電話方案投標(biāo)書 VoIP電話方案投標(biāo)書
首先,感謝杭州匯文教育咨詢有限公司的關(guān)注,以及提供我們參與此次項(xiàng)目的機(jī)會,讓我們工作室的學(xué)員們能夠更好地積累實(shí)戰(zhàn)經(jīng)驗(yàn),為踏上社會之路做充分的準(zhǔn)備。冀望于此次接觸機(jī)會及交流過程,能夠成為中國計(jì)量學(xué)院和杭州匯文教育咨詢有限公司打開雙方合作之門的良好基石。
在調(diào)查和理解VoIP電話項(xiàng)目的目標(biāo),以及對VoIP電話相關(guān)背景分析的基礎(chǔ)上,我們撰寫本文。旨在向杭州匯文教育咨詢有限公司介紹我們對此項(xiàng)目的思路及相關(guān)建議,且展示海思工作室在此次項(xiàng)目上的計(jì)劃與執(zhí)行能力。
一、公司介紹以及項(xiàng)目綜述 1.1 公司介紹
本公司全稱:海思工作室。公司成立于2010年3日12日,位于風(fēng)景秀麗的西子湖畔。海思是HSS(Happy、Strive、Solidarity)的諧音,代表著快樂、奮斗以及團(tuán)結(jié)的精神。海思的成員一致把這個作為心中的理念。
公司目前擁有12名人員,人員結(jié)構(gòu)分配合理。其中包括CEO&PM、CTO&SE、PJM&CFO、人事執(zhí)行經(jīng)理、客戶代表、軟件工程師、測試工程師等。其中公司里的不少精英在電子領(lǐng)域方面取得了許多獎項(xiàng),因此本公司擅長有關(guān)電子產(chǎn)品的開發(fā),目前專業(yè)從事于一些嵌入式產(chǎn)品的技術(shù)研究和開發(fā)。公司設(shè)有兩個技術(shù)團(tuán)隊(duì),分別進(jìn)行2個項(xiàng)目工程。團(tuán)隊(duì)成員各司其職,分工明確,工作嚴(yán)謹(jǐn)。公司成員從大一開始就已經(jīng)學(xué)習(xí)掌握C語言知識,距今已近三年,因此底蘊(yùn)深厚,對于C語言和嵌入式也是非常了解。部分成員在校期間曾獲多次獎學(xué)金和各類獎項(xiàng)。我們竭盡所能把一切資源投在產(chǎn)品開發(fā)上,力求高效、質(zhì)優(yōu)、價廉、款佳。面對任何機(jī)遇與挑戰(zhàn),我們正以飽滿的熱情,堅(jiān)定不移的信心,在嵌入式的道路上闊步前進(jìn)。以一流的人才,一流的管理,一流的的服務(wù),立足中國,面向世界,與您攜手并肩,共創(chuàng)美好的明天。
我們的理想和目標(biāo)是:生產(chǎn)出讓客戶滿意的產(chǎn)品。Happy、Strive、Solidarity 1
海思工作室 VoIP電話方案投標(biāo)書 1.2 VoIP簡述
VoIP又稱IP電話或IP網(wǎng)絡(luò)電話,是Voice over IP的縮寫。VoIP是建立在IP技術(shù)上的分組化、數(shù)字化語音傳輸技術(shù)。其基本原理是:通過語音壓縮算法對語音數(shù)據(jù)進(jìn)行壓縮編碼處理,然后把這些語音數(shù)據(jù)按IP等相關(guān)協(xié)議進(jìn)行打包,經(jīng)過IP網(wǎng)絡(luò)把數(shù)據(jù)包傳輸?shù)浇邮盏?,再把這些語音數(shù)據(jù)包串起來,經(jīng)過解碼解壓處理后,恢復(fù)成原來的語音信號,從而達(dá)到由IP網(wǎng)絡(luò)傳送語音的目的。VoIP系統(tǒng)把傳統(tǒng)電話的模擬信號轉(zhuǎn)換成計(jì)算機(jī)可聯(lián)入因特網(wǎng)傳送的IP數(shù)據(jù)包,同時也將收到的IP數(shù)據(jù)包轉(zhuǎn)換成聲音的模擬電信號。作為ngn(下一代網(wǎng)絡(luò))中的重要組成部
分,VoIP是面向未來、可持續(xù)發(fā)展的語音解決方案,可以為商業(yè)和家庭用戶提供質(zhì)優(yōu)價廉的IP語音服務(wù)。隨著ngn網(wǎng)絡(luò)技術(shù)的快速發(fā)展,VoIP的通信量也已得到快速增長,并以其低廉的價格優(yōu)勢迅速占有市場。VoIP最大的優(yōu)勢是能廣泛地采用Internet和全球IP互連的環(huán)境,提供比傳統(tǒng)業(yè)務(wù)更多、更好的服務(wù)。因此目前VoIP網(wǎng)絡(luò)電話在市場上有很大的潛力可以挖掘。VoIP電話的特點(diǎn):
帶寬和設(shè)備的使用率高。通信費(fèi)用低。易融于商業(yè)應(yīng)用。
1.3 公司在本項(xiàng)目中的優(yōu)勢
在研發(fā)VoIP網(wǎng)絡(luò)電話方面,我公司有著得天獨(dú)厚的優(yōu)勢。不少成員在有關(guān)方面有著深入的研究并獲得過許多獎項(xiàng),并且我們有過開發(fā)類似此類項(xiàng)目的先例。此項(xiàng)目,在Linux下比較容易實(shí)現(xiàn),而我公司成員對Linux上的一些操作比較熟悉。同時在配置S2440開發(fā)板內(nèi)部設(shè)置方面,公司成員有比較強(qiáng)的設(shè)計(jì)能力。我們所有的成員都學(xué)過計(jì)算機(jī)網(wǎng)絡(luò)和數(shù)據(jù)通信與網(wǎng)絡(luò)課程等有關(guān)方面的課程,在制作VoIP網(wǎng)絡(luò)電話方面有著豐富的經(jīng)驗(yàn),另外,我公司的CTO,他在電子競賽方面取得了驕人的成績,獲得了學(xué)校的三等獎。他本人也對此項(xiàng)目有著很大的信心。因此在技術(shù)的運(yùn)用上我公司有比較大的優(yōu)勢。此外,公司的一些成員同時還在參與另外一個類似的項(xiàng)目,客戶完全可以對我們的操作能力放心。我們承諾用性價比高的材料制作項(xiàng)目,因此在質(zhì)量方面客戶可以完全放心。同時,我 Happy、Strive、Solidarity 2
們將對客戶給出最適合的價位和周到的售后服務(wù)工作,盡一切可能滿足客戶,讓客戶滿意。所以我們深信我們能夠在這個項(xiàng)目比其他公司取得更理想的成果,令客戶滿意。
二、項(xiàng)目技術(shù)方案 2.1 系統(tǒng)框架
當(dāng)一端的PC機(jī)通過軟件形式的IP電話進(jìn)行通話時,另一端可以是軟件形式的IP電話,也可以是傳統(tǒng)的電話。但是傳統(tǒng)電話必須通過一個語音網(wǎng)關(guān),來將數(shù)字信號轉(zhuǎn)換成模擬信號。本方案是采用軟件形式的IP電話進(jìn)行通信。即通過兩塊開發(fā)板實(shí)現(xiàn)簡單的通話。
系統(tǒng)環(huán)境框圖如圖1所示,其中應(yīng)用服務(wù)器(Application server)是用來存放IP電話機(jī)的應(yīng)用和配置文件,當(dāng)一方的IP電話用戶需要讀取一些數(shù)據(jù)庫中的信息時,就會到應(yīng)用服務(wù)器中來查找。MCU(Multipoint Control Unit)是用
圖1 系統(tǒng)環(huán)境框圖 電話 Happy、Strive、Solidarity 3 海思工作室 VoIP電話方案投標(biāo)書
2.2 項(xiàng)目目標(biāo)
2.2.1 系統(tǒng)實(shí)現(xiàn)基本功能
1.輸入對方的IP地址和自己希望對方看到自己的昵稱。2.可以撥號、掛斷、暫停、聲音調(diào)整等功能。3.可以進(jìn)行順暢地通話。
4.可進(jìn)行新用戶的注冊并把注冊信息存儲于服務(wù)器。2.2.2 系統(tǒng)實(shí)現(xiàn)拓展功能
1.PC端軟件形式的IP電話撥打普通電話。2.客戶端可對好友進(jìn)行增、刪、改、查操作。3.客戶端可實(shí)現(xiàn)文本短信功能。4.客戶端可實(shí)現(xiàn)來電顯示功能。5.客戶端之間可實(shí)現(xiàn)視頻聊天。6.實(shí)現(xiàn)呼叫詳細(xì)記錄功能。7.實(shí)現(xiàn)多人同時通話。2.3 技術(shù)路線
2.3.1 VoIP電話基本傳輸過程
語音信號在IP網(wǎng)絡(luò)上傳送之前要經(jīng)過從模擬信號到數(shù)字信號的轉(zhuǎn)換、語音壓縮算法對語音數(shù)據(jù)進(jìn)行壓縮編碼處理、數(shù)字語音封裝成IP數(shù)據(jù)報、IP數(shù)據(jù)報通過網(wǎng)絡(luò)傳送、IP分組解包、解碼解壓處理和數(shù)字語音還原到模擬信號等過程。整個過程如圖2所示。
圖2 VoIP的數(shù)據(jù)處理流程圖 Happy、Strive、Solidarity 4
海思工作室 VoIP電話方案投標(biāo)書 2.3.2 VoIP電話的關(guān)鍵技術(shù)
傳統(tǒng)的IP網(wǎng)絡(luò)主要是用來傳輸數(shù)據(jù)業(yè)務(wù),采用的是盡力而為的、無連接的技術(shù),因此沒有服務(wù)質(zhì)量保證,存在分組丟失、失序到達(dá)和時延抖動等情況。數(shù)據(jù)業(yè)務(wù)對此要求不高,但話音屬于實(shí)時業(yè)務(wù),對時序、時延等有嚴(yán)格的要求。因此必須采取特殊措施來保障一定的業(yè)務(wù)質(zhì)量。VoIP電話的關(guān)鍵技術(shù)包括:信令技術(shù)、編碼技術(shù)、實(shí)時傳輸技術(shù)以及網(wǎng)絡(luò)傳輸技術(shù)等。信令技術(shù)
信令技術(shù)保證電話呼叫的順利實(shí)現(xiàn)和語音質(zhì)量,目前IP電話中比較流行的是H.323、會話發(fā)起協(xié)議(SIP)、MEGACO和MGCP。SIP是建立VoIP連接的IETF標(biāo)準(zhǔn)。SIP是一種應(yīng)用層控制協(xié)議,用于和一個或多個參與者創(chuàng)建、修改和終止會話。SIP的結(jié)構(gòu)與HTTP(客戶-服務(wù)器協(xié)議)相似??蛻魴C(jī)發(fā)出請求,并發(fā)送給服務(wù)器,服務(wù)器處理這些請求后給客戶機(jī)發(fā)送一個響應(yīng)。該請求與響應(yīng)形成一次事務(wù)。本方案采用SIP協(xié)議。編碼技術(shù)
話音壓縮編碼技術(shù)是VoIP電話技術(shù)的一個重要組成部分。目前,主要的編碼技術(shù)有G.711、G.726、G.728、G.729、G.723.1、iLBC等。其中G.729可將經(jīng)過采樣的64kbit/s話音以幾乎不失真的質(zhì)量壓縮至8kbit/s。由于在分組交換網(wǎng)絡(luò)中,業(yè)務(wù)質(zhì)量不能得到很好保證,因而需要話音的編碼具有一定的靈活性,即編碼速率、編碼尺度的可變可適應(yīng)性。G.729是8kbit/s的話音編碼標(biāo)準(zhǔn),現(xiàn)在的工作范圍擴(kuò)展至6.4~11.8kbit/s。G723.1采用5.3和6.3Kbit/s雙速率話音編碼,其話音質(zhì)量好,但是處理時延較大,它是目前已標(biāo)準(zhǔn)化的最低速率的話音編碼算法。G.711采用64kbit/sPCM語音編碼技術(shù),經(jīng)過G.711編碼后的語音已經(jīng)可以在公共電話網(wǎng)上或PBX上作為數(shù)字語音傳輸。本方案選用G.711編碼技術(shù)。實(shí)時傳輸技術(shù)
實(shí)時傳輸技術(shù)主要是采用實(shí)時傳輸協(xié)議RTP。RTP是提供端到端的包括音頻在內(nèi)的實(shí)時數(shù)據(jù)傳送的協(xié)議。RTP包括數(shù)據(jù)和控制兩部分,后者叫RTCP。RTP提供了時間標(biāo)簽和控制不同數(shù)據(jù)流同步特性的機(jī)制,可以讓接收端重組發(fā)送端的數(shù)據(jù)包,可以提供接收端到多點(diǎn)發(fā)送組的服務(wù)質(zhì)量反饋。Happy、Strive、Solidarity 5
海思工作室 VoIP電話方案投標(biāo)書 服務(wù)質(zhì)量(QoS)保證技術(shù)
VoIP電話中主要采用資源預(yù)留協(xié)議(RSVP)以及進(jìn)行服務(wù)質(zhì)量監(jiān)控的實(shí)時傳輸控制協(xié)議RTCP來避免網(wǎng)絡(luò)擁塞,保障通話質(zhì)量。網(wǎng)絡(luò)傳輸技術(shù)
VoIP電話中網(wǎng)絡(luò)傳輸技術(shù)主要是TCP和UDP,此外還包括網(wǎng)關(guān)互聯(lián)技術(shù)、路由選擇技術(shù)、網(wǎng)絡(luò)管理技術(shù)以及安全認(rèn)證和計(jì)費(fèi)技術(shù)等。由于實(shí)時傳輸協(xié)議RTP提供具有實(shí)時特征的、端到端的數(shù)據(jù)傳輸業(yè)務(wù),因此VoIP電話中可用UDP和RTP來傳送話音數(shù)據(jù)。在RTP報頭中包含裝載數(shù)據(jù)的標(biāo)識符、序列號、時間以及傳送監(jiān)
視等,通常RTP協(xié)議數(shù)據(jù)單元是用UDP分組來承載,而且為了盡量減少時延,話音凈荷通常都很短。IP、UDP和RTP報頭都按最小長度計(jì)算。VoIP話音分組開銷很大,采用RTP協(xié)議的VoIP電話格式,在這種方式中將多路話音插入話音數(shù)據(jù)段中,這樣提高了傳輸效率。
此外,靜音檢測技術(shù)和回聲消除技術(shù)也是VoIP電話中十分關(guān)鍵的技術(shù)。靜音檢測技術(shù)可有效剔除靜默信號,從而使話音信號的占用帶寬進(jìn)一步降低到3.5kbit/s左右;回聲消除技術(shù)主要利用數(shù)字濾波器技術(shù)來消除對通話質(zhì)量影響很大回聲干擾,保證通話質(zhì)量。
2.3.3 嵌入式VoIP終端軟件的設(shè)計(jì)和實(shí)現(xiàn)
嵌入式VoIP終端軟件主要指系統(tǒng)層次結(jié)構(gòu)中協(xié)議棧和用戶程序兩個層次。協(xié)議棧層擔(dān)負(fù)SIP消息解析,UAS和UAC事務(wù)處理,多媒體流傳輸?shù)热蝿?wù)。主要包括SIP模塊、RTP模塊和語音處理模塊三個模塊。SIP模塊
系統(tǒng)選用了開源協(xié)議棧oSIP。oSIP主要包括三個模塊:解析器模塊、狀態(tài)機(jī)模塊和工具模塊。解析器模塊:該模塊主要完成對SIP消息(INVITE、ACK、OPTIONS、CANCEL、BYE、REGISTER消息)結(jié)構(gòu)剖析、SDP消息結(jié)構(gòu)剖析以及URI結(jié)構(gòu)的剖析。此外,該模塊還可以解析一部分SIP頭域。狀態(tài)機(jī)模塊:SIP中是以事務(wù)為單位來描述各種請求和響應(yīng)的交互過程的。該模塊主要完成對某個SIP事務(wù)(注冊過程、呼叫過程等)狀態(tài)的記錄,并在特定狀態(tài)下觸發(fā)相應(yīng) Happy、Strive、Solidarity 6
海思工作室 VoIP電話方案投標(biāo)書 的時間或回調(diào)函數(shù)?;卣{(diào)函數(shù)為上層應(yīng)用程序控制SIP會話提供了豐富的接口。工具模塊:該模塊為可選項(xiàng),主要提供一些處理SDP協(xié)商及會話等的一些工具。RTP模塊
本系統(tǒng)的RTP模塊采用開源的RTP協(xié)議棧oRTP,利用該協(xié)議??梢暂^方便的實(shí)現(xiàn)對實(shí)時媒體的傳輸和控制,如對本地待發(fā)數(shù)據(jù)的RTP封裝,對接收到的RTP包拆包以及通過對網(wǎng)絡(luò)RTCP監(jiān)測,適當(dāng)?shù)恼{(diào)整本地的編解碼器策略。語音處理模塊
語音處理模塊的工作是完成語音信號的采集、編碼、解碼和回放,分為語音數(shù)據(jù)發(fā)送和語音數(shù)據(jù)接收兩個部分。語音數(shù)據(jù)發(fā)送的過程為:通過編解碼芯片完成語音信號的脈沖編碼調(diào)制(PCM),將模擬信號轉(zhuǎn)化成數(shù)字信號;采用選定的編碼標(biāo)
準(zhǔn)對數(shù)字信號進(jìn)行壓縮編碼;加上RTP頭和其它頭部字段,封裝數(shù)據(jù)包送到UDP協(xié)議層傳輸,完成音頻信號的發(fā)送。2.4 使用與維護(hù) 2.4.1 維護(hù)簡介 軟件系統(tǒng)的維護(hù)
提供每臺機(jī)器操作系統(tǒng)的安裝與配置,另外,還提供使用過程中的技術(shù)支持和應(yīng)用培訓(xùn)工作。前者是每個軟件項(xiàng)目都必須具備的,后者在實(shí)際操作中,管理人員的培訓(xùn)有利于系統(tǒng)的穩(wěn)定運(yùn)行。數(shù)據(jù)備份
數(shù)據(jù)備份工作的關(guān)鍵是制度的建立,除了技術(shù)上的要求外,數(shù)據(jù)備份的流程、所使用的介質(zhì)、備份的周期、檔案的管理等都必須形成一整套的制度和規(guī)定。人員培訓(xùn)
系統(tǒng)的使用和管理是否恰當(dāng),直接影響系統(tǒng)運(yùn)行的穩(wěn)定性。因此系統(tǒng)維護(hù)工作還包括對管理人員、使用人員的培訓(xùn)。培訓(xùn)應(yīng)針對不同對象采用不同的培訓(xùn)方法和內(nèi)容,其目的是讓管理人員能及時發(fā)現(xiàn)問題,排除簡單故障;使用人員能按操作流程和規(guī)章使用網(wǎng)絡(luò)。Happy、Strive、Solidarity 7
海思工作室 VoIP電話方案投標(biāo)書 2.4.2 承諾與服務(wù) 文檔提供承諾
項(xiàng)目系統(tǒng)在開發(fā)、安裝、發(fā)布后,并且經(jīng)過客戶驗(yàn)收后,向客戶提交符合國家軟件開發(fā)標(biāo)準(zhǔn)的有關(guān)文檔。文檔清單如下: 《項(xiàng)目需求文檔》 《用戶使用手冊》 《客戶培訓(xùn)文檔》 維護(hù)承諾
項(xiàng)目系統(tǒng)在開發(fā)、安裝、發(fā)布后: 第一年提供免費(fèi)維護(hù)支持。第二年開始有償維護(hù)支持。系統(tǒng)安裝
項(xiàng)目系統(tǒng)在開發(fā)完成后,在硬件到位的前提下負(fù)責(zé)軟件的安裝調(diào)試。安裝承諾:免費(fèi)提供系統(tǒng)安裝、使用、技術(shù)培訓(xùn)和維護(hù)的資料及介質(zhì)。服務(wù)響應(yīng)承諾 無論軟件發(fā)生何種故障(不可抗拒因素及自然災(zāi)害出外),我們承諾在4 小時內(nèi)做出反應(yīng),24小時內(nèi)完成修復(fù)。平時提供7*24小時的技術(shù)支持承諾。
三、項(xiàng)目管理方案 3.1 項(xiàng)目計(jì)劃成熟度 3.1.1 整體管理
項(xiàng)目的整體管理是做一個項(xiàng)目之前一個比較重要的過程,它包括了項(xiàng)目計(jì)劃的制定和項(xiàng)目計(jì)劃的執(zhí)行。在項(xiàng)目的計(jì)劃制定中,我們小組每個人都行動起來,去找資料,整體的了解這個項(xiàng)目,把一些有關(guān)的信息都羅列出來,然后大家一起再進(jìn)行刷選、一起討論,把整體的一個思路搞清楚。Happy、Strive、Solidarity 8
海思工作室 VoIP電話方案投標(biāo)書 3.1.2 溝通管理 項(xiàng)目會議制定(1)定期的會議
會議的目標(biāo):溝通項(xiàng)目狀態(tài),提出項(xiàng)目問題、風(fēng)險和依賴條件;協(xié)調(diào)項(xiàng)目資源; 對項(xiàng)目提出建議,問題的解決方法,行動計(jì)劃。會議的時間:每周周日下午6點(diǎn)。
參加人員:甲乙兩方的項(xiàng)目經(jīng)理,和各自項(xiàng)目經(jīng)理制定的幾個工作人員。
主要內(nèi)容:更新項(xiàng)目狀態(tài),包括:項(xiàng)目的狀態(tài)信息,時間進(jìn)度表;問題,風(fēng)險,技術(shù)和管理;對提出的問題的討論和決定計(jì)劃;甲乙雙方做會議記錄,并討論下一步行動計(jì)劃。(2)不定期的會議
會議的目標(biāo):使項(xiàng)目全體人員明確目前項(xiàng)目的狀態(tài)、問題、解決方法。會議的時間:根據(jù)實(shí)際情況需要確定。
參加人員:全體項(xiàng)目人員。
會議內(nèi)容:項(xiàng)目狀態(tài),存在的問題及解決方法;下階段項(xiàng)目計(jì)劃。(3)重大問題匯報會議
會議的目標(biāo):匯報項(xiàng)目進(jìn)行中發(fā)現(xiàn)的重大問題,討論并決定采取的方案。會議的時間:出現(xiàn)重大情況時。
參加人員:問題發(fā)起人,全體的項(xiàng)目人員。
會議的內(nèi)容:匯報項(xiàng)目出現(xiàn)的重大問題,找出解決方案,制定計(jì)劃。(4)項(xiàng)目內(nèi)部討論
會議的目標(biāo):對項(xiàng)目組內(nèi)部遇到的問題進(jìn)行討論,找出解決方案,并討論決定采 取何行動。
會議的時間:根據(jù)開發(fā)的進(jìn)程和狀態(tài)。參加人員:所有有關(guān)該項(xiàng)目的人員。
會議內(nèi)容:討論出現(xiàn)的各種相關(guān)問題,找出解決方案,決定行動計(jì)劃。溝通手段(1)開會或直接交談
Happy、Strive、Solidarity 9
海思工作室 VoIP電話方案投標(biāo)書
按需要組織會議進(jìn)行溝通,或直接找相關(guān)的人進(jìn)行討論,注意記錄溝通和討論結(jié)果,重要問題討論必須有書面會議記錄。(2)電話或電話會議
通過電話的方式進(jìn)行信息溝通。對比較重要的事情,需要包括開發(fā)地點(diǎn)以外的人員,則需要利用電話會議的方式進(jìn)行討論,溝通。(3)電子郵件
建立項(xiàng)目組電子郵件系統(tǒng)及與外界聯(lián)系的電子郵件系統(tǒng)。3.1.3 項(xiàng)目的狀態(tài)周報制度
項(xiàng)目的各組人員每周寫下周報,包括的內(nèi)容:上一周所完成的內(nèi)容,這周計(jì)劃將要完成的內(nèi)容。每一組統(tǒng)一上交到已方的項(xiàng)目經(jīng)理處,再有乙方項(xiàng)目經(jīng)理在每周的定期會議上提交給甲方的項(xiàng)目經(jīng)理。甲方項(xiàng)目經(jīng)理根據(jù)周報情況,做總結(jié)形成項(xiàng)目組的狀態(tài)周報,記錄在案。3.2 質(zhì)量控制管理 3.2.1 質(zhì)量基本規(guī)劃
(1)質(zhì)量目標(biāo):針對VoIP電話,保證100%的滿足項(xiàng)目的需求,并做到正確性和精確性,用戶滿意度達(dá)90%以上,甲乙雙方應(yīng)針對項(xiàng)目的質(zhì)量目標(biāo)進(jìn)行質(zhì)量管理。
(2)質(zhì)量管理原則: 1客戶滿足優(yōu)先?!?2開發(fā)人員的責(zé)任?!?3持續(xù)的改進(jìn)?!?4可進(jìn)行維護(hù)的?!?/p>
(3)質(zhì)量保證計(jì)劃:合同生效后,甲乙雙方應(yīng)在質(zhì)量方針、質(zhì)量目標(biāo)、質(zhì)量原則及項(xiàng)目范圍等的前提下建立質(zhì)量保證計(jì)劃,明確相關(guān)干系人質(zhì)量管理職責(zé)、項(xiàng)目質(zhì)量管理任務(wù)的定義與責(zé)任人、需遵守的制度、規(guī)程、規(guī)范與標(biāo)準(zhǔn)、質(zhì)量控制的方法、工具、記錄與跟蹤等,便以此為基礎(chǔ),有效地開展質(zhì)量管理活動。(4)測試要求:在初步的測試當(dāng)中,產(chǎn)品通過甲乙雙方的認(rèn)同。在進(jìn)一步的改 Happy、Strive、Solidarity 10
海思工作室 VoIP電話方案投標(biāo)書 進(jìn)后,要通過評審及試用戶的肯定。3.2.2 質(zhì)量保證
(1)規(guī)則的指導(dǎo):雙方項(xiàng)目經(jīng)理組織各自的項(xiàng)目人員做有關(guān)制度、規(guī)程、標(biāo)準(zhǔn)等等的指導(dǎo)。
(2)文檔的管理:每期的文檔要有統(tǒng)一且有序的文檔標(biāo)號,所有的文檔必須經(jīng)項(xiàng)目經(jīng)理或質(zhì)量保證人員的審核通過,正式提交件必須經(jīng)過相關(guān)評審認(rèn)可。雙方必須明確文檔的存儲人員。
(3)問題跟蹤:乙方負(fù)責(zé)指定專人對項(xiàng)目實(shí)施過程中出現(xiàn)的問題與缺陷進(jìn)行跟蹤解決,每周出具相關(guān)統(tǒng)計(jì)信息。
(4)質(zhì)量匯報:雙方項(xiàng)目經(jīng)理應(yīng)本著實(shí)事求是的原則,向雙方管理層及時準(zhǔn)確地匯報項(xiàng)目情況,保證項(xiàng)目的可視性。3.2.3 質(zhì)量檢查
甲乙雙方應(yīng)就項(xiàng)目進(jìn)展情況定期進(jìn)行質(zhì)量檢查工作,保證項(xiàng)目按既定計(jì)劃,保證質(zhì)量地實(shí)施。乙方應(yīng)配合甲方有關(guān)項(xiàng)目管理部門進(jìn)行質(zhì)量檢查,并及時根據(jù)檢查結(jié)果,進(jìn)行跟蹤解決。3.3 配置管理
配置庫分為文檔庫和代碼庫。文檔庫管理項(xiàng)目的所有有關(guān)文檔,代碼庫就管理項(xiàng)目中的所有代碼。配置庫按照項(xiàng)目的進(jìn)行階段,有序的存放。經(jīng)測試和審核,配
置庫統(tǒng)一由甲方管理,不得向任何無關(guān)人員透露,也不得對任何項(xiàng)進(jìn)行任何的更改。
3.4 風(fēng)險控制
做什么項(xiàng)目都存在風(fēng)險,所以我們不保證一定不存在風(fēng)險,但盡可能的把風(fēng)險降至最低。我們的目標(biāo)是實(shí)現(xiàn)項(xiàng)目的需求,但對我們而言,剛接受做一個項(xiàng)目,可以說存在難度,不管是技術(shù)上,還是管理上…我們盡自己最大的努力去完成它。當(dāng)我們發(fā)現(xiàn)問題及時的討論并找出解決方案,從自個方面尋找資料、信息,每一次都進(jìn)行組內(nèi)溝通和交流,力爭把項(xiàng)目做的好,降低項(xiàng)目的風(fēng)險程度。Happy、Strive、Solidarity 11
海思工作室 VoIP電話方案投標(biāo)書
四、項(xiàng)目實(shí)施 4.1 實(shí)施計(jì)劃
詳見附件:VoIP.mpp。4.2 所需的資源列表 4.2.1 硬件資源
1、兩塊 S2440 嵌入式開發(fā)板
(1)S3C2440A:32bit ARM920T內(nèi)核,標(biāo)稱工作頻率:400MHz(2)系統(tǒng)時鐘:內(nèi)部PLL產(chǎn)生400MHz CPU內(nèi)核工作頻率,外部總線頻率:100~133MHz(3)100MHz以太網(wǎng)控制器(4)音頻輸入輸出接口(5)觸摸屏(6)5V電源
Happy、Strive、Solidarity 12
海思工作室 VoIP電話方案投標(biāo)書
(7)支持的操作系統(tǒng):WINCE /Linux
2、PC機(jī)(1)CPU(2)內(nèi)存
(3)硬盤
(4)網(wǎng)卡:普通以太網(wǎng)卡一塊或無線以太網(wǎng)卡一塊(IEEE 802.11g、IEEE 802.11b網(wǎng)絡(luò)標(biāo)準(zhǔn))(5)顯示器
(6)普通鍵盤/鼠標(biāo)一個
3、兩個攝像頭
4、兩個耳麥(耳機(jī)+麥克)
5、兩根網(wǎng)線 4.2.2 人力資源
1、相關(guān)專業(yè)的研發(fā)人員
2、資深專家的技術(shù)指導(dǎo)(如有需要)
3、檢測人員 4.2.3 軟件資源
1、LINUX系統(tǒng)開發(fā)平臺
2、語音壓縮編碼、語音解碼
3、視頻壓縮編碼、視頻解碼
4、INTERNET接入環(huán)境
4.3 項(xiàng)目報價
Happy、Strive、Solidarity 13
海思工作室 VoIP電話方案投標(biāo)書 Happy、Strive、Solidarity 14
第四篇:嵌入式系統(tǒng)ARM實(shí)驗(yàn)報告
南京郵電大學(xué)通信與信息工程學(xué)院
實(shí)驗(yàn)報告
實(shí)驗(yàn)名稱:實(shí)驗(yàn)一基于ADS開發(fā)環(huán)境的設(shè)計(jì)
實(shí)驗(yàn)二嵌入式Linux交叉開發(fā)環(huán)境的建立 實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)
課程名稱嵌入式系統(tǒng)B
班級學(xué)號B13010711 姓名馬俊民
開課時間 2015/2016學(xué)年第1學(xué)期
實(shí)驗(yàn)一基于ADS開發(fā)環(huán)境的程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1、學(xué)習(xí)ADS開發(fā)環(huán)境的使用;
2、學(xué)習(xí)和掌握ADS環(huán)境下的匯編語言及C語言程序設(shè)計(jì);
3、學(xué)習(xí)和掌握匯編語言及C語言的混合編程方法。
二、實(shí)驗(yàn)內(nèi)容
1、編寫和調(diào)試匯編語言程序;
2、編寫和調(diào)試C語言程序;
3、編寫和調(diào)試匯編語言及C語言的混合程序;
4、編寫程序測試多寄存器傳送指令的用法。
三、實(shí)驗(yàn)原理
ADS全稱為ARM Developer Suite,是ARM公司推出的新一代ARM集成開發(fā)工具。現(xiàn)在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于無操作系統(tǒng)的ARM系統(tǒng)開發(fā),是對裸機(jī)(可理解成一個高級單片機(jī))的開發(fā)。ADS具有極佳的測試環(huán)境和良好的偵錯功能,它可使硬件開發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設(shè)計(jì)打基礎(chǔ),為BootLoader的編寫和調(diào)試打基礎(chǔ)。
1.ADS軟件的組成
ADS由命令行開發(fā)工具、ARM運(yùn)行時庫、GUI開發(fā)環(huán)境(CodeWarrior和AXD)、實(shí)用程序、支持軟件等組成。
2.GUI開發(fā)環(huán)境
ADS GUI開發(fā)環(huán)境包含CodeWarrior和AXD兩種,其中Code Warrior是集成開發(fā)工具,而AXD是調(diào)試工具。
使用匯編語言進(jìn)行編程簡單、方便,適用于初始化硬件代碼、啟動代碼等。匯編語言具有一些相同的基本特征:
1.一條指令一行。
2.使用標(biāo)號(label)給內(nèi)存單元提供名稱,從第一列開始書寫。3.指令必須從第二列或能區(qū)分標(biāo)號的地方開始書寫。4.注釋必須跟在指定的注釋字符后面,一直書寫到行尾。
在ARM匯編程序中,每個段必須以AREA作為段的開始,以碰到下一個AREA作為該段的結(jié)束,段名必須唯一。程序的開始和結(jié)束需以ENTRY和END來標(biāo)識。嵌入式C語言設(shè)計(jì)是利用基本的C語言知識,面向嵌入式工程實(shí)際應(yīng)用進(jìn)行程序設(shè)計(jì)。為了使單獨(dú)編譯的C語言程序和匯編程序之間能夠相互調(diào)用,必須為子程序之間的調(diào)用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。
四、實(shí)驗(yàn)過程與關(guān)鍵代碼分析
1.創(chuàng)建項(xiàng)目工程
在File菜單中選擇New命令,打開一個新建工程對話框。在Project選項(xiàng)卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項(xiàng)目名稱,點(diǎn)擊確定。彈出工程窗口。
選擇File菜單中的New命令,選擇File標(biāo)簽頁,在File name文本框中輸入要創(chuàng)建的文件名。匯編程序以.s結(jié)尾,c程序以.c結(jié)尾。在Location文本框中指定文件的存放位置,選中Add to Project,在Targets中選中DebugRel,單擊確定關(guān)閉窗口。
2.用匯編語言設(shè)計(jì)程序?qū)崿F(xiàn)10的階乘
AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在這個程序中,我們首先對R0和R1賦值,將R0作為一個變量,而R1作為一個存貯階乘值的寄存器。在每進(jìn)行一次乘法之后,將R0減1。同時在做完減法后進(jìn)行判斷,如果此時R0大于1,則返回繼續(xù)乘法,否則結(jié)束程序,輸出結(jié)果。
3.用調(diào)用子程序的方法實(shí)現(xiàn)1!+2!+3!+?+10!,代碼如下: asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1 LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2, R2, #1
CMP R2, R3
BNE LOOP
NOP
NOP
MOV PC, LR
END
PROGC.c #include
int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)
res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在這個程序中,主程序由c語言完成作求和,子程序由匯編語言寫成作階乘。
5.實(shí)現(xiàn)字符串的逆序復(fù)制TEXT1=“HELLO”=>TEXT2=“OLLEH”
AREA invstring, CODE, READONLY start
ADR R1,TEXT1
ADR R2,TEXT2
MOV R3, #0 LOOP
LDRB R0,[R1], #1
ADD R3,R3,#1
CMP R0,#0
BNE LOOP
SUB R1,R1,#2
LOOP1
LDRB R0,[R1], #-1
STRB R0,[R2], #1
SUB R3,R3, #1
CMP R3,#1
BNE LOOP1
MOV R5,#&55
TEXT1
TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END
五、實(shí)驗(yàn)小結(jié)
在這次實(shí)驗(yàn)中,學(xué)會了如何使用匯編程序進(jìn)行編程。對匯編程序編程一些基本的要求有了一定的了解,學(xué)習(xí)了C語言的語法和在其中調(diào)用匯編程序的方法。學(xué)會了利用CodeWarrior IDE開發(fā)C和ARM匯編代碼。學(xué)會了在AXD中進(jìn)行代碼調(diào)試的方法和過程,對AXD的調(diào)試有初步的了解。,實(shí)驗(yàn)二嵌入式Linux交叉開發(fā)環(huán)境的建立
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握嵌入式Linux交叉開發(fā)環(huán)境的建立方法
2、學(xué)習(xí)和掌握Linux常用命令
3、學(xué)習(xí)和掌握vi編輯器的使用
二、實(shí)驗(yàn)內(nèi)容
1、搭建嵌入式Linux交叉開發(fā)環(huán)境
2、熟悉Linux的常用命令
3、熟悉vi編輯器的常用命令
三、實(shí)驗(yàn)原理
Linux系統(tǒng)是UNIX系統(tǒng)的分支,是UNIX的微機(jī)版。Linux具有異常豐富的驅(qū)動程序資源,支持各種主流的硬件設(shè)備與技術(shù)。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,這些功能包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進(jìn)程間通信、對稱所處理器、多用戶支持等。
Vi編輯器是所有UNIX和Linux下的標(biāo)準(zhǔn)編輯器。它包含3種工作模式。嵌入式系統(tǒng)是專用的計(jì)算機(jī)系統(tǒng),它對系統(tǒng)的功能、可靠性、成本、體積、功耗等有嚴(yán)格的要求。大部分嵌入式系統(tǒng)沒有大容量存儲設(shè)備,一般不能安裝大型開發(fā)軟件,系統(tǒng)的開發(fā)需要采用交叉開發(fā)模式。
四、實(shí)驗(yàn)過程與關(guān)鍵代碼分析
實(shí)驗(yàn)用的是UP-NetARM2410-S試驗(yàn)箱,里面配有三星的芯片S3c2410X。打開電腦上VMWare軟件,在Windows系統(tǒng)下啟動虛擬機(jī)里的Linux系統(tǒng)。接著需要
1.宿主機(jī)的環(huán)境搭建
下載并運(yùn)行VMWare,根據(jù)向?qū)?chuàng)建一臺新虛擬機(jī)并選擇Linux作為客戶操作系統(tǒng),再根據(jù)向?qū)О惭bRedHat Linux 9.0。
2.虛擬機(jī)中啟動Linux操作系統(tǒng)
使用root登陸,用戶名為root,密碼為123456。之后對共享文件設(shè)置進(jìn)行調(diào)整:打開settings界面,打開shared folders功能,同時將路徑設(shè)置到有課前下載的軟件的目錄下。
3.開發(fā)工具軟件的安裝(1)安裝gcc 打開Linux后,打開終端窗口,在共享的目錄下找到install.sh并運(yùn)行,命令如下: ls./ install.sh 安裝程序?qū)⒆詣咏?arm2410s目錄,并將所有的開發(fā)軟件包安裝到/arm2410s 目錄下,同時自動配置編譯環(huán)境,建立合適的符號鏈接。安裝完成后在目錄/opt/host/armv4l/bin/下應(yīng)該能看到主編譯器。(2)配置PATH路徑
vi.bash.profile 將里面PATH變量改為PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盤后執(zhí)行
source.bash_profile 以后armv4l-unknown-linux-gcc將被自動搜索到
4.宿主機(jī)上的開發(fā)環(huán)境配置(1)配置IP地址
ifconfig eth0 192.168.0.121 命令配置了宿主機(jī)的IP地址。然后打開網(wǎng)絡(luò)配置窗口,重新探測MAC地址。重新激活。(2)關(guān)閉防火墻
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“安全級別”→打開“安全級別配置”窗口,選擇“無防火墻選項(xiàng)?!保?)配置NFS。
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“服務(wù)”,在“服務(wù)配置”窗口中勾選nfs,單擊“開始”(4)NFS設(shè)置
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“NFS服務(wù)器”,打開“NFS服務(wù)器配置”窗口,設(shè)置NFS共享。
然后在NFS服務(wù)器中增加主機(jī)IP地址的鏈接許可和目錄。完成配置。
5.目標(biāo)機(jī)的信息輸出
Windows系統(tǒng)下,“開始”→“所有程序”→“附件”→“通訊”→“超級終端”,新建一個通信終端。區(qū)號、電話號碼隨意輸入。設(shè)置每秒位數(shù)為“115200”,數(shù)據(jù)位為“8”,無奇偶校驗(yàn),停止位為“1”,無數(shù)據(jù)流控制。單擊“確定”。
6.程序的運(yùn)行
打開超級終端,啟動Linux,屏幕顯示:
[/mnt/yaffs] 在超級終端上執(zhí)行掛載命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后可執(zhí)行程序。
五、實(shí)驗(yàn)小結(jié)
在這次實(shí)驗(yàn)中,學(xué)會建立Linux交叉開發(fā)環(huán)境,學(xué)會了ls和vi,cd等常用的Linux命令,并掌握了Vi編輯器的使用方法。同時知道了如何在搭建失敗時尋找錯誤進(jìn)行排錯。
實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法
2、學(xué)會編寫Makefile文件
二、實(shí)驗(yàn)內(nèi)容
1、熟悉嵌入式教學(xué)實(shí)驗(yàn)箱的使用
2、編寫C程序和Makefile文件
3、編譯程序產(chǎn)生可執(zhí)行程序
4、完成主機(jī)的掛載和程序的執(zhí)行
三、實(shí)驗(yàn)原理
在嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法有一下幾個步驟:
1.編寫源程序
2.編寫Makefile文件 3.編譯程序
4.運(yùn)行和調(diào)試程序
5.將生產(chǎn)的可執(zhí)行文件加入文件系統(tǒng)。
前三個步驟在宿主機(jī)上完成,后面的步驟在目標(biāo)機(jī)上完成。
四、實(shí)驗(yàn)過程與關(guān)鍵代碼分析
1.建立工作目錄
mkdir hello cd hello
2.編寫源程序
用vi編輯器編輯Hello.c文件
vi Hello.c 在Vi中輸入源程序如下:
#include
printf(“hello world n”);}
3.編寫Makefile文件
vi Makefile 在vi中編輯Makefile文件如下:
CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:
-rm –f $(EXEC)*.elf *.gdb *.o
4.編譯程序
在hello目錄下運(yùn)行“make”來編譯程序。
make clean
make 編譯成功后,生成可執(zhí)行文件Hello.o。
5.下載調(diào)試
在宿主機(jī)上啟動nfs服務(wù),并將/arms2410s設(shè)置為共享目錄。接下來啟動超級終端,建立通訊,掛載。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后,進(jìn)入/mnt/nfs,再進(jìn)入/mnt/nfs/hello,直接運(yùn)行剛剛編譯生成的可執(zhí)行文件Hello.o,查看運(yùn)行結(jié)果
cd hello./hello 可以看見“Hello world”
只需要掛載一次便可,只要實(shí)驗(yàn)箱沒有重啟,就可以一直保持連接。反復(fù)修改、編譯、調(diào)試,直至程序調(diào)試通過。
6.可執(zhí)行文件加入文件系統(tǒng)
程序調(diào)試通過后,可以把可執(zhí)行文件拖放到usr/bin目錄下,然后使用mkcramfs制作工具生成新的文件系統(tǒng)。當(dāng)系統(tǒng)啟動后,就可以在相應(yīng)目錄下執(zhí)行可執(zhí)行程序hello.五、實(shí)驗(yàn)小結(jié) 在這次實(shí)驗(yàn)中,學(xué)會了在嵌入式Linux環(huán)境下設(shè)計(jì)程序。同時知道了如何對目標(biāo)機(jī)進(jìn)行掛載。以及如何在發(fā)現(xiàn)掛載不成功尋找錯誤進(jìn)行修改。另外在編譯文件時需要注意的也都有所了解。
實(shí)驗(yàn)四多線程程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?、2、二、實(shí)驗(yàn)內(nèi)容1、2、3、4、三、實(shí)驗(yàn)原理
四、實(shí)驗(yàn)過程與關(guān)鍵代碼分析
五、實(shí)驗(yàn)小結(jié)
3+
第五篇:門禁系統(tǒng)管理制度
長春農(nóng)村商業(yè)銀行股份有限公司
門禁系統(tǒng)管理制度
第一章 總則
第一條
為規(guī)范長春農(nóng)村商業(yè)銀行股份有限公司(以下簡稱“本行”)安全保衛(wèi)工作,有效防止盜竊、搶劫、詐騙、破壞和治安災(zāi)害事故,維護(hù)正常的工作秩序,根據(jù)公安部、中國人民銀行、銀監(jiān)部門的有關(guān)要求,結(jié)合本行實(shí)際,本行特安裝了門禁管理系統(tǒng)。
第二條
本行門禁管理系統(tǒng)屬感應(yīng)式卡出入管理控制系統(tǒng)(簡稱門禁系統(tǒng)),具有對門戶出入控制、實(shí)時監(jiān)控、保安防盜報警等多種功能,它主要方便內(nèi)部員工或住戶出入,杜絕外來人員隨意進(jìn)出,既方便了內(nèi)部管理,又增強(qiáng)了內(nèi)部的保安。
第二章 門禁系統(tǒng)管理人員
第三條
本辦法所稱門禁系統(tǒng)管理人員,是指總行科技部門禁系統(tǒng)專門管理人員。系統(tǒng)管理人員應(yīng)當(dāng)遵紀(jì)守法、政治過硬、業(yè)務(wù)精通、恪盡職守。違反國家法律、法規(guī)和受到行政處分的人員,不得從事系統(tǒng)管理工作。系統(tǒng)管理人員變動,應(yīng)向上級科技管理部門備案。系統(tǒng)管理人員應(yīng)定期接受政治思想教育、職業(yè)道德教育、安全保密教育。第三章 門禁信息數(shù)據(jù)管理權(quán)限分配
第四條
門禁管理系統(tǒng)由科技部專人管理權(quán)限 第五條
門禁卡是實(shí)名發(fā)卡制,根據(jù)各部門的需求實(shí)際情況,有人事部門,安全保衛(wèi)部門監(jiān)督發(fā)卡。(詳情見門禁卡管理制度)
第六條
門禁系統(tǒng)由科技部分為專人管理,設(shè)置AB崗。門禁卡權(quán)限由各部門經(jīng)理簽發(fā),由人事部門,安全保衛(wèi)部門監(jiān)督,科技部發(fā)卡。
第四章
門禁系統(tǒng)使用情況記錄及管理
第七條
門禁系統(tǒng)在實(shí)時監(jiān)控界面可以實(shí)時的顯示出當(dāng)前門禁工作的情況,包括成員進(jìn)出信息、門狀態(tài)、報警信息。門禁系統(tǒng)的監(jiān)控流水記錄,保留三個月。(詳見OCS7.1門禁系統(tǒng)說明書)
第八條
主要有三大部分組成:文字監(jiān)控、緊急門區(qū)、電子圖監(jiān)控。
(一)文字監(jiān)控:以文字的形式實(shí)時顯示監(jiān)控記錄,包括:刷卡信息(含進(jìn)/出信息)、門狀態(tài)信息、緊急信息。
(二)緊急門區(qū):通過設(shè)置可以對相應(yīng)門區(qū)下的所有房門進(jìn)行緊急開/關(guān)門、緊急取消等操作。
(三)電子圖監(jiān)控:以電子圖的形式實(shí)時顯示監(jiān)控信息,并可以對房門進(jìn)行相應(yīng)的控制管理。
第五章 門禁系統(tǒng)控制及應(yīng)急措施 第九條
門禁監(jiān)控
門禁系統(tǒng)有可以實(shí)現(xiàn)實(shí)時監(jiān)控。(詳見OCS7.1門禁系統(tǒng)說明書),第十條
門禁系統(tǒng)中常用報警參數(shù)有:火警、防盜、強(qiáng)行進(jìn)入、門超時報警、水位檢測報警、煤氣檢測報警、防撬報警、讀卡機(jī)斷網(wǎng)。
(一)火警、防盜、水位檢測、煤氣檢測報警:在門禁系統(tǒng)中提供了報警信息的接口,需要外圍設(shè)備的支持,門禁控制器接收到外圍檢測設(shè)備產(chǎn)生的信號,控制器響應(yīng)這個觸發(fā)信號后,馬上進(jìn)行處理。例如產(chǎn)生火警后,控制器會自動開門,防盜警會自動關(guān)門等。設(shè)置:控制器內(nèi)置8個TTL輸入點(diǎn),在軟件中把相應(yīng)的輸入點(diǎn)設(shè)置為對應(yīng)的報警功能即可。
(二)讀卡器斷網(wǎng)報警:當(dāng)讀卡器和門禁控制器失去聯(lián)系,控制器會發(fā)生報警,紅色指示
燈閃爍,同時軟件監(jiān)控時會發(fā)出警示,提醒操作員及時處理。
(三)門超時報警,需要安裝門磁設(shè)備,如果在設(shè)置的時間內(nèi),房門沒有關(guān)上,控制器就會產(chǎn)生報警,紅色指示燈閃爍,同時軟件監(jiān)控時會發(fā)出警示,提醒操作員及時處理。
第六章、附則
第十一條 本辦法由長春農(nóng)村商業(yè)銀行股份有限公司負(fù)責(zé)制訂、解釋和修改。第十二條 本辦法自發(fā)布之日起執(zhí)行