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

基于Linux的USB集成下載工具的設(shè)計(jì)和實(shí)現(xiàn)

2014-12-13 18:38:18聶濤
現(xiàn)代電子技術(shù) 2014年23期

聶濤

摘 ?要: 針對(duì)嵌入式軟件開(kāi)發(fā)采用交叉開(kāi)發(fā)模型,需要頻繁把程序從宿主機(jī)下載到目標(biāo)機(jī)的要求,研究設(shè)計(jì)基于Linux的USB集成下載工具。根據(jù)USB協(xié)議,開(kāi)發(fā)Linux系統(tǒng)的USB驅(qū)動(dòng)模塊,基于USB驅(qū)動(dòng)模塊,設(shè)計(jì)出Linux文件下載程序。該工具運(yùn)行于Linux系統(tǒng),并利用TQ2440,OK6410,TQ210開(kāi)發(fā)板進(jìn)行測(cè)試。測(cè)試結(jié)果表明,該工具可以支持2440系列、6410系列、210系列的ARM開(kāi)發(fā)板,并具有很好的擴(kuò)展性和移植性。

關(guān)鍵詞: USB驅(qū)動(dòng); 下載工具; Linux; ARM

中圖分類(lèi)號(hào): TN915?34;TP311.1 ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ?文章編號(hào): 1004?373X(2014)23?0087?04

Design and implementation of USB download tool based on Linux

NIE Tao

(School of Physical Electronics, University of Electronic Science and Technology of China, Chengdu 610054, China )

Abstract : The development of embedded system needs frequent software download and update, so the USB integrated download tool based on the Linux is designed. The USB driver module of Linux system was developed based on the USB protocol, and then the download process for Linux files was designed based on the USB driver module. The tool was tested on TQ2440, OK6410 and TQ210 embedded development platforms. The test results show that it can support the embedded development platforms of 2440 series, 6410 series and 210 series. It has perfect expansibility and portability.

Keywords: USB driver; download tool; Linux; ARM

0 ?引 ?言

隨著數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)不斷的發(fā)展,嵌入式系統(tǒng)以體積小、功耗低、可靠性高、性能強(qiáng)以及基于面向具體行業(yè)應(yīng)用等突出特點(diǎn), 目前已經(jīng)廣泛地滲透到國(guó)防、農(nóng)業(yè)、消費(fèi)電子、教育、信息家電、工業(yè)控制、網(wǎng)絡(luò)通信等各個(gè)領(lǐng)域,對(duì)于各行各業(yè)的產(chǎn)品升級(jí)、技術(shù)提升、生產(chǎn)效率提高等方面都起到了非常重要的推動(dòng)作用[1]。目前,嵌入式處理器的類(lèi)型主要有ARM、MIPS、SC?400、PowerPC等系列產(chǎn)品。其中,采用ARM核的嵌入式處理器已廣泛應(yīng)用于消費(fèi)類(lèi)電子產(chǎn)品、工業(yè)控制、網(wǎng)絡(luò)通信系統(tǒng)以及無(wú)線系統(tǒng)的各個(gè)領(lǐng)域。ARM核嵌入式處理器約占嵌入式處理器75%以上的市場(chǎng)份額,對(duì)于ARM芯片的嵌入式系統(tǒng)開(kāi)發(fā)一般采取交叉開(kāi)發(fā)模型。所謂交叉開(kāi)發(fā)模型就是在嵌入式開(kāi)發(fā)過(guò)程中有宿主機(jī)和目標(biāo)機(jī)的角色之分,宿主機(jī)是編寫(xiě)、編譯、鏈接嵌入式軟件的計(jì)算機(jī),目標(biāo)機(jī)則是運(yùn)行嵌入式軟件的硬件平臺(tái)。嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中,需要頻繁的從宿主機(jī)上下載程序來(lái)更新目標(biāo)機(jī)的程序,因此需要簡(jiǎn)單、高效、方便的下載方式。這樣不僅能提高嵌入式系統(tǒng)的開(kāi)發(fā)效率,而且還可以縮短嵌入式產(chǎn)品的上市時(shí)間。

當(dāng)前嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中下載程序的方式有很多不足和缺點(diǎn),尤其下載軟件不能同時(shí)支持幾個(gè)系列ARM處理器的開(kāi)發(fā)板,并且下載軟件十分不穩(wěn)定,非常依賴于下載軟件的特定運(yùn)行環(huán)境,嚴(yán)重影響了嵌入式系統(tǒng)的開(kāi)發(fā)效率,因此需要開(kāi)發(fā)一款新的下載軟件,來(lái)適應(yīng)嵌入式系統(tǒng)開(kāi)發(fā)的需要。本文在研究分析 USB 接口協(xié)議與 Linux系統(tǒng)驅(qū)動(dòng)的基礎(chǔ)上,開(kāi)發(fā)設(shè)計(jì)了一款基于USB接口的嵌入式集成下載工具。該工具可以穩(wěn)定運(yùn)行于Linux系統(tǒng)上,并且同時(shí)支持ARM9處理器2440系列開(kāi)發(fā)板、ARM11處理器6410系列開(kāi)發(fā)板、ARM Cortex?A8處理器210系列開(kāi)發(fā)板,能夠勝任不同階段的下載任務(wù),而且軟件具有很好的穩(wěn)定性、可移植性和擴(kuò)展性[2?5]。

1 ?USB驅(qū)動(dòng)設(shè)計(jì)

Linux操作系統(tǒng)把設(shè)備看作成文件來(lái)處理,這類(lèi)文件稱作設(shè)備文件,存放在Linux的dev目錄下, Linux系統(tǒng)通過(guò)對(duì)這些設(shè)備文件的操作來(lái)控制硬件設(shè)備[6]。同樣,USB驅(qū)動(dòng)程序也會(huì)為USB設(shè)備創(chuàng)建設(shè)備文件。USB驅(qū)動(dòng)程序是USB芯片和Linux系統(tǒng)內(nèi)核之間的接口,為應(yīng)用程序屏蔽了USB硬件設(shè)備的細(xì)節(jié),應(yīng)用程序可以通過(guò)USB設(shè)備文件的操作來(lái)實(shí)現(xiàn)對(duì)USB設(shè)備的控制與數(shù)據(jù)的讀/寫(xiě)。USB驅(qū)動(dòng)程序設(shè)計(jì)主要分為兩個(gè)模塊,分別為USB設(shè)備注冊(cè)和USB設(shè)備注銷(xiāo)。USB設(shè)備驅(qū)動(dòng)程序在注冊(cè)和銷(xiāo)毀時(shí)侯需要用到一個(gè)結(jié)構(gòu)體struct usb_driver。這個(gè)結(jié)構(gòu)體需要在驅(qū)動(dòng)程序中完成編寫(xiě),包括許多變量和回調(diào)函數(shù),它向USB核心代碼描述了USB驅(qū)動(dòng)程序的功能。

static struct usb_driver secbulk_driver= {

.name= "secbulk", ?//驅(qū)動(dòng)程序的名字

.probe= secbulk_probe, //探測(cè)函數(shù)

.disconnect= secbulk_disconnect, ?//斷開(kāi)函數(shù)

.id_table= secbulk_table, ?//驅(qū)動(dòng)程序所支持的設(shè)備列表

.supports_autosuspend=0,

};

調(diào)用以struct usb_driver結(jié)構(gòu)體指針作為參數(shù)的usb_register_driver函數(shù),將struct usb_driver結(jié)構(gòu)體指針注冊(cè)到 USB核心。USB驅(qū)動(dòng)程序的注冊(cè)代碼如下:

static int __init secbulk_init(void)

{

int result;

printk(KERN_INFO "secbulk:secbulk loaded\n");

/*把該驅(qū)動(dòng)程序注冊(cè)到USB子系統(tǒng)*/

result = usb_register(&;secbulk_driver);

if (result)

printk(KERN_ERR "secbulk:usb_register failed: %d",result);

return result;

}

USB驅(qū)動(dòng)程序卸載時(shí),調(diào)用usb_deregister_driver函數(shù)將struct usb_driver結(jié)構(gòu)體從內(nèi)核中注銷(xiāo)。執(zhí)行該函數(shù)時(shí),調(diào)用斷開(kāi)函數(shù)把當(dāng)前綁定到該USB驅(qū)動(dòng)程序上的所有USB接口都斷開(kāi)。USB驅(qū)動(dòng)程序的注銷(xiāo)代碼如下:

static void __exit secbulk_exit(void)

{

/*把驅(qū)動(dòng)程序從USB子系統(tǒng)注銷(xiāo)*/

usb_deregister(&;secbulk_driver);

printk(KERN_INFO"secbulk:secbulk unloaded\n");

}

1.1 ?驅(qū)動(dòng)程序支持的設(shè)備列表

struct usb_device_id *id_table是指向struct usb_device_id表的結(jié)構(gòu)體指針,該表包含了該USB設(shè)備驅(qū)動(dòng)支持的所有不同類(lèi)型的USB設(shè)備。增加對(duì)USB設(shè)備的支持,需要在該表中添加USB設(shè)備制造商ID和產(chǎn)品ID。因此在secbulk_table表中添加2440系列開(kāi)發(fā)板、6410系列開(kāi)發(fā)板、210系列開(kāi)發(fā)板的USB設(shè)備制造商和產(chǎn)品的ID:

static struct usb_device_id secbulk_table[]=

{

{ USB_DEVICE(0x5345, 0x1234)}, //2440系列

{ USB_DEVICE(0x04e8, 0x1234)}, //6410系列

{ USB_DEVICE(0x18d1, 0x1234)}, //210系列

};

1.2 ?探測(cè)函數(shù)

int(*probe)(struct usb_interface * intf, const struct usb_device_id *id )是USB驅(qū)動(dòng)程序中的探測(cè)函數(shù)的指針。當(dāng)一個(gè)USB設(shè)備被安裝并且USB核心認(rèn)定該USB驅(qū)動(dòng)程序應(yīng)該處理時(shí),探測(cè)函數(shù)才會(huì)被調(diào)用。探測(cè)函數(shù)需要檢查傳遞給它的USB設(shè)備信息,然后確定驅(qū)動(dòng)程序是否適合該設(shè)備[7]。當(dāng)驅(qū)動(dòng)程序確定適合設(shè)備時(shí),探測(cè)函數(shù)會(huì)調(diào)用usb_register_dev函數(shù)來(lái)把USB設(shè)備注冊(cè)到USB核心。usb_register_dev函數(shù)有struct usb_interfac指針和struct usb_class_driver結(jié)構(gòu)的指針兩個(gè)參數(shù)。struct usb_class_driver結(jié)構(gòu)體包含描述設(shè)備的名稱、指派次設(shè)備號(hào)的開(kāi)始值和設(shè)備相關(guān)操作的結(jié)構(gòu)體的指針等成員變量。以下是probe函數(shù)下的探測(cè)部分代碼:

for(i=0; i <; iface_desc?>;desc.bNumEndpoints; i++)

{

endpoint=&;(iface_desc->;endpoint[i].desc);

if(!dev->;bulk_out_endpointAddr&;&;usb_endpoint_is_bulk_out(endpoint))

{

/*該驅(qū)動(dòng)不支持此設(shè)備*/

printk(KERN_INFO"secbulk:bulkout endpoint found!\n");

dev->;bulk_out_endpointAddr=endpoint->;bEndpointAddress;

break;

}

}if(!(dev->;bulk_out_endpointAddr))

{

ret = -EBUSY; goto error;

}

/*注冊(cè)設(shè)備*/

ret=usb_register_dev(interface,&;secbulk_class);

if(ret)

{

/*某些情況造成我們不能注冊(cè)該驅(qū)動(dòng)程序*/

printk(KERN_ERR"secbulk: usb_register_dev failed?。躰");

return ret;

}

struct usb_class_driver結(jié)構(gòu)體的初始化代碼如下:

static struct usb_class_driver secbulk_class = {

.name = "secbulk%d", ?//設(shè)備名字

.fops = &;secbulk_fops, ?//設(shè)備相關(guān)操作結(jié)構(gòu)體指針

.minor_base= 100, ? //此設(shè)備號(hào)開(kāi)始值

};

static struct file_operations結(jié)構(gòu)體的初始化代碼如下:

static struct file_operations secbulk_fops = {.owner = THIS_MODULE,

.read = secbulk_read, ?//讀操作

.write = secbulk_write, ?//寫(xiě)操作

.open = secbulk_open, ?//打開(kāi)

.release= secbulk_release, ?//釋放

};

1.3 ?斷開(kāi)函數(shù)

void(*disconnect)(struct usb_interface *intf)是USB驅(qū)動(dòng)程序的斷開(kāi)函數(shù)的函數(shù)指針。當(dāng)struct usb_interface結(jié)構(gòu)體從Linux系統(tǒng)中移除或者USB驅(qū)動(dòng)程序從USB核心中卸載時(shí),USB核心將會(huì)調(diào)用該函數(shù)做相關(guān)的清理工作[8]。secbulk_disconnect斷開(kāi)函數(shù)代碼如下:

static void secbulk_disconnect(struct usb_interface *interface)

{

struct secbulk_dev *dev = NULL;

printk(KERN_INFO"secbulk:secbulk disconnected?。躰");

/*防止競(jìng)爭(zhēng)*/

dev = usb_get_intfdata(interface);

if( NULL != dev )

kfree(dev);

/*返回次設(shè)備號(hào)*/

usb_deregister_dev(interface, &;secbulk_class);

}

最后,將USB驅(qū)動(dòng)程序編譯成驅(qū)動(dòng)模塊,并加載到Linux系統(tǒng)中。

2 ?Linux下載程序設(shè)計(jì)

Linux系統(tǒng)成功加載USB驅(qū)動(dòng)模塊后,會(huì)在Linux系統(tǒng)的dev目錄下生成USB的設(shè)備文件,通過(guò)操作USB的設(shè)備文件可以操作USB設(shè)備[9?10]。所以Linux系統(tǒng)和目標(biāo)機(jī)ARM數(shù)據(jù)傳輸必須通過(guò)USB的設(shè)備文件進(jìn)行,數(shù)據(jù)傳輸過(guò)程如下:首先打開(kāi)USB設(shè)備文件,通過(guò)USB設(shè)備文件把數(shù)據(jù)寫(xiě)入目標(biāo)機(jī)ARM的內(nèi)存中;目標(biāo)機(jī)ARM接收數(shù)據(jù)后,會(huì)產(chǎn)生USB中斷,把數(shù)據(jù)從ARM的內(nèi)存中讀入ARM的NAND FLASH中。根據(jù)Linux系統(tǒng)和目標(biāo)機(jī)ARM數(shù)據(jù)傳輸過(guò)程設(shè)計(jì)Liunx下載程序。Linux下載程序流程圖如圖1所示。

Linux下載程序核心代碼如下:

printf("Start Sending data...\n");

size_tremain_size= file_stat.st_size+10;

size_t block_size = 512;

size_t written = 0;

/*從內(nèi)存中寫(xiě)入ARM內(nèi)存中*/

while(remain_size >; 0) {

size_t to_write = remain_size >; block_size ? block_size:remain_size;

size_t real_write = write(fd_dev, file_buffer+written, to_write);

if( to_write != real_write) {

printf(" write ?/dev/secbulk0 failed! ?to_write = %u real_write = %u \n" , to_write ,real_write );

return 1;

}

remain_size -= to_write;

written += to_write;

printf("\rSent %lu%% \t %u bytes !", written*100/(file_stat.st_size+10), ?written);

fflush(stdout);

}

最后,利用GCC編譯器把Linux下載程序編譯成下載軟件。運(yùn)行Linux下載軟件,傳遞文件名并指定下載內(nèi)存地址的參數(shù)就可以把文件寫(xiě)入ARM目標(biāo)機(jī)的NAND FLASH中。

<;E:\2014年23期\2014年23期\Image\19t1.tif>;

圖1 Linux下載程序流程圖

3 ?測(cè)試結(jié)果

測(cè)試軟件的功能,需要利用硬件平臺(tái)。本文中Linux系統(tǒng)選用Redhat企業(yè)版6,嵌入式開(kāi)發(fā)平臺(tái)為2440系列的TQ2440、6410系列的OK6410、210系列的TQ210分別進(jìn)行測(cè)試。測(cè)試方法是將LED點(diǎn)燈程序通過(guò)Linux下載軟件下載到ARM開(kāi)發(fā)板的NAND FLASH中,下載完成后,將ARM開(kāi)發(fā)板撥到NAND FLASH啟動(dòng);如果ARM開(kāi)發(fā)板中的LED點(diǎn)亮,說(shuō)明USB驅(qū)動(dòng)程序和Linux下載程序是可行的。

TQ2440測(cè)試結(jié)果如圖2所示;OK6410測(cè)試結(jié)果如圖3所示;TQ210測(cè)試結(jié)果如圖4所示。

<;E:\2014年23期\2014年23期\Image\19t2.tif>;

圖2 TQ2440測(cè)試結(jié)果

<;E:\2014年23期\2014年23期\Image\19t3.tif>;

圖3 OK6410測(cè)試結(jié)果

<;E:\2014年23期\2014年23期\Image\19t4.tif>;

圖4 TQ210測(cè)試結(jié)果

4 ?結(jié) ?語(yǔ)

本文針對(duì)嵌入式系統(tǒng)交叉開(kāi)發(fā)模型中,需要頻繁從linux宿主機(jī)中下載程序到目標(biāo)機(jī)ARM更新程序的問(wèn)題,開(kāi)發(fā)和設(shè)計(jì)了一款基于USB的Liunx下載軟件。軟件解決了每個(gè)系列ARM開(kāi)發(fā)板單獨(dú)需要一款下載軟件的問(wèn)題,成功地實(shí)現(xiàn)了一款支持不同系列ARM開(kāi)發(fā)板的USB的Linux下載軟件。軟件特點(diǎn)是穩(wěn)定運(yùn)行于各個(gè)版本Linux系統(tǒng)之上,并且支持ARM9處理器2440系列開(kāi)發(fā)板、ARM11處理器6410系列開(kāi)發(fā)板、ARM Cortex?A8處理器210系列開(kāi)發(fā)板,實(shí)現(xiàn)下載功能。

參考文獻(xiàn)

[1] 王曉惠.基于ARM?Linux的交叉編譯環(huán)境的創(chuàng)建[J].電腦知識(shí)與技術(shù),2007(15):55?58.

[2] 姚振國(guó).基于嵌入式Linux的USB集成下載工具的設(shè)計(jì)與開(kāi)發(fā)[D].成都:電子科技大學(xué),2013.

[3] 王瓊.基于嵌入式Linux數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.

[4] 彭敏.基于ARM7的工業(yè)控制數(shù)據(jù)采集系統(tǒng)的研究[J].現(xiàn)代電子技術(shù),2011,34(2):12?14.

[5] 李麗宏,郝志剛.嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011(10):56?59.

[6] 寧玉玲,陳瓊,馬楊龍.Linux設(shè)備驅(qū)動(dòng)模型框架的分類(lèi)研究[J].現(xiàn)代電子技術(shù),2013,36(4):5?8.

[7] 魏永明,耿岳,鐘書(shū)毅.Linux設(shè)備驅(qū)動(dòng)程序[M].3版.北京:中國(guó)電力出版社,2006.

[8] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].2版.北京:人民郵電出版社,2002.

[9] 韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電大學(xué)出版社,2008.

[10] 楊水清.ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.

TQ2440測(cè)試結(jié)果如圖2所示;OK6410測(cè)試結(jié)果如圖3所示;TQ210測(cè)試結(jié)果如圖4所示。

<;E:\2014年23期\2014年23期\Image\19t2.tif>;

圖2 TQ2440測(cè)試結(jié)果

<;E:\2014年23期\2014年23期\Image\19t3.tif>;

圖3 OK6410測(cè)試結(jié)果

<;E:\2014年23期\2014年23期\Image\19t4.tif>;

圖4 TQ210測(cè)試結(jié)果

4 ?結(jié) ?語(yǔ)

本文針對(duì)嵌入式系統(tǒng)交叉開(kāi)發(fā)模型中,需要頻繁從linux宿主機(jī)中下載程序到目標(biāo)機(jī)ARM更新程序的問(wèn)題,開(kāi)發(fā)和設(shè)計(jì)了一款基于USB的Liunx下載軟件。軟件解決了每個(gè)系列ARM開(kāi)發(fā)板單獨(dú)需要一款下載軟件的問(wèn)題,成功地實(shí)現(xiàn)了一款支持不同系列ARM開(kāi)發(fā)板的USB的Linux下載軟件。軟件特點(diǎn)是穩(wěn)定運(yùn)行于各個(gè)版本Linux系統(tǒng)之上,并且支持ARM9處理器2440系列開(kāi)發(fā)板、ARM11處理器6410系列開(kāi)發(fā)板、ARM Cortex?A8處理器210系列開(kāi)發(fā)板,實(shí)現(xiàn)下載功能。

參考文獻(xiàn)

[1] 王曉惠.基于ARM?Linux的交叉編譯環(huán)境的創(chuàng)建[J].電腦知識(shí)與技術(shù),2007(15):55?58.

[2] 姚振國(guó).基于嵌入式Linux的USB集成下載工具的設(shè)計(jì)與開(kāi)發(fā)[D].成都:電子科技大學(xué),2013.

[3] 王瓊.基于嵌入式Linux數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.

[4] 彭敏.基于ARM7的工業(yè)控制數(shù)據(jù)采集系統(tǒng)的研究[J].現(xiàn)代電子技術(shù),2011,34(2):12?14.

[5] 李麗宏,郝志剛.嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011(10):56?59.

[6] 寧玉玲,陳瓊,馬楊龍.Linux設(shè)備驅(qū)動(dòng)模型框架的分類(lèi)研究[J].現(xiàn)代電子技術(shù),2013,36(4):5?8.

[7] 魏永明,耿岳,鐘書(shū)毅.Linux設(shè)備驅(qū)動(dòng)程序[M].3版.北京:中國(guó)電力出版社,2006.

[8] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].2版.北京:人民郵電出版社,2002.

[9] 韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電大學(xué)出版社,2008.

[10] 楊水清.ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.

TQ2440測(cè)試結(jié)果如圖2所示;OK6410測(cè)試結(jié)果如圖3所示;TQ210測(cè)試結(jié)果如圖4所示。

<;E:\2014年23期\2014年23期\Image\19t2.tif>;

圖2 TQ2440測(cè)試結(jié)果

<;E:\2014年23期\2014年23期\Image\19t3.tif>;

圖3 OK6410測(cè)試結(jié)果

<;E:\2014年23期\2014年23期\Image\19t4.tif>;

圖4 TQ210測(cè)試結(jié)果

4 ?結(jié) ?語(yǔ)

本文針對(duì)嵌入式系統(tǒng)交叉開(kāi)發(fā)模型中,需要頻繁從linux宿主機(jī)中下載程序到目標(biāo)機(jī)ARM更新程序的問(wèn)題,開(kāi)發(fā)和設(shè)計(jì)了一款基于USB的Liunx下載軟件。軟件解決了每個(gè)系列ARM開(kāi)發(fā)板單獨(dú)需要一款下載軟件的問(wèn)題,成功地實(shí)現(xiàn)了一款支持不同系列ARM開(kāi)發(fā)板的USB的Linux下載軟件。軟件特點(diǎn)是穩(wěn)定運(yùn)行于各個(gè)版本Linux系統(tǒng)之上,并且支持ARM9處理器2440系列開(kāi)發(fā)板、ARM11處理器6410系列開(kāi)發(fā)板、ARM Cortex?A8處理器210系列開(kāi)發(fā)板,實(shí)現(xiàn)下載功能。

參考文獻(xiàn)

[1] 王曉惠.基于ARM?Linux的交叉編譯環(huán)境的創(chuàng)建[J].電腦知識(shí)與技術(shù),2007(15):55?58.

[2] 姚振國(guó).基于嵌入式Linux的USB集成下載工具的設(shè)計(jì)與開(kāi)發(fā)[D].成都:電子科技大學(xué),2013.

[3] 王瓊.基于嵌入式Linux數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.

[4] 彭敏.基于ARM7的工業(yè)控制數(shù)據(jù)采集系統(tǒng)的研究[J].現(xiàn)代電子技術(shù),2011,34(2):12?14.

[5] 李麗宏,郝志剛.嵌入式Linux的USB驅(qū)動(dòng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011(10):56?59.

[6] 寧玉玲,陳瓊,馬楊龍.Linux設(shè)備驅(qū)動(dòng)模型框架的分類(lèi)研究[J].現(xiàn)代電子技術(shù),2013,36(4):5?8.

[7] 魏永明,耿岳,鐘書(shū)毅.Linux設(shè)備驅(qū)動(dòng)程序[M].3版.北京:中國(guó)電力出版社,2006.

[8] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].2版.北京:人民郵電出版社,2002.

[9] 韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電大學(xué)出版社,2008.

[10] 楊水清.ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.

主站蜘蛛池模板: 欧美精品影院| 色婷婷成人网| 国产在线视频自拍| 国产精女同一区二区三区久| 国产成人亚洲无码淙合青草| 欧美一区二区人人喊爽| 2021天堂在线亚洲精品专区| 精品国产免费人成在线观看| 国产v欧美v日韩v综合精品| 日韩视频免费| 99草精品视频| 精品撒尿视频一区二区三区| 无码啪啪精品天堂浪潮av| 婷婷久久综合九色综合88| 欧美97欧美综合色伦图| 亚洲日本在线免费观看| 无码一区二区波多野结衣播放搜索| 97青青青国产在线播放| 亚洲三级色| 精品久久综合1区2区3区激情| 网友自拍视频精品区| 亚洲欧美色中文字幕| 亚州AV秘 一区二区三区| 中文字幕亚洲乱码熟女1区2区| 人妻出轨无码中文一区二区| 亚洲a级在线观看| 99re在线观看视频| 中文字幕日韩丝袜一区| 欧美啪啪一区| 99这里只有精品在线| 在线播放真实国产乱子伦| 视频国产精品丝袜第一页| 久久精品人人做人人爽97| 国产人成在线观看| 高清免费毛片| 亚洲色欲色欲www在线观看| 精品国产成人a在线观看| 亚洲高清中文字幕在线看不卡| 色哟哟国产精品| 网久久综合| 一本色道久久88亚洲综合| 91精品日韩人妻无码久久| 首页亚洲国产丝袜长腿综合| 2020久久国产综合精品swag| 亚洲日韩在线满18点击进入| 亚洲精品视频网| 色欲国产一区二区日韩欧美| 国产精品一线天| 1024你懂的国产精品| 免费看a毛片| 2020精品极品国产色在线观看| 天天色天天操综合网| 毛片在线播放网址| 亚洲国产日韩一区| 国产97视频在线| 国产亚洲精品自在久久不卡 | 国产精品任我爽爆在线播放6080 | 在线永久免费观看的毛片| 99精品视频在线观看免费播放| 国产在线精品99一区不卡| 成人福利视频网| 露脸国产精品自产在线播| 中文字幕天无码久久精品视频免费| 影音先锋亚洲无码| 污网站在线观看视频| 国产成人av一区二区三区| 麻豆精选在线| 三级欧美在线| 香蕉久久永久视频| 欧美一区二区人人喊爽| 色哟哟国产精品| 欧美在线视频不卡| 亚洲福利片无码最新在线播放 | 欧美一区二区三区欧美日韩亚洲| 欧美日韩亚洲综合在线观看| 免费人成又黄又爽的视频网站| 亚洲码一区二区三区| 日韩色图区| 在线观看91香蕉国产免费| 久久五月视频| 91精品国产综合久久香蕉922| 国产视频大全|