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.

主站蜘蛛池模板: 好久久免费视频高清| 亚洲欧美日韩久久精品| 国产人人射| 九色视频一区| 新SSS无码手机在线观看| 国产一线在线| 麻豆精选在线| 亚洲午夜福利精品无码不卡| 国产精品女同一区三区五区| 综合成人国产| 欧美伊人色综合久久天天| 亚洲欧美综合在线观看| 日韩一级毛一欧美一国产| 久久99热66这里只有精品一| 久久国产亚洲偷自| 国产色网站| 国产裸舞福利在线视频合集| 天天操精品| 亚洲成人www| a级免费视频| 2020精品极品国产色在线观看| 97狠狠操| 亚洲区视频在线观看| 国产99精品视频| 中文字幕乱码二三区免费| 国产乱子伦无码精品小说| 片在线无码观看| 中文字幕啪啪| 色窝窝免费一区二区三区| 美女一区二区在线观看| 456亚洲人成高清在线| 欧洲高清无码在线| 亚洲妓女综合网995久久| 色偷偷av男人的天堂不卡| 在线va视频| 国产人免费人成免费视频| 99国产精品免费观看视频| 午夜人性色福利无码视频在线观看| 久久国产高清视频| 国产精品三级av及在线观看| 亚洲综合专区| a亚洲视频| 国产精女同一区二区三区久| 热99精品视频| 亚洲欧洲一区二区三区| 国产精品短篇二区| 97se亚洲| 精品福利视频网| 亚洲无线一二三四区男男| 伊人久久久久久久| 亚洲一区毛片| 中文字幕亚洲综久久2021| 99热这里只有免费国产精品| 免费国产不卡午夜福在线观看| 草草影院国产第一页| 91久久国产成人免费观看| a毛片免费在线观看| 国产无码网站在线观看| 国产欧美又粗又猛又爽老| 国产成人久久综合777777麻豆| 国产一在线| 亚洲欧美在线综合一区二区三区| 久久综合五月| 亚洲高清在线播放| 992Tv视频国产精品| 99在线免费播放| 亚洲欧美日韩视频一区| 精品综合久久久久久97超人该| 国产毛片片精品天天看视频| 91香蕉视频下载网站| 亚洲最猛黑人xxxx黑人猛交 | 免费AV在线播放观看18禁强制| 亚洲午夜久久久精品电影院| 色老头综合网| 久久久久亚洲AV成人人电影软件 | 无码网站免费观看| 亚洲精品欧美日本中文字幕| 小说 亚洲 无码 精品| 日本a∨在线观看| 亚洲高清中文字幕| 国产精品一线天| 亚洲无码高清一区|