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

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]摘要:為了加快開發(fā)調試μClinux嵌入式系統(tǒng)的外部硬件設備,采用直接物理地址的設備訪問方法,在μClinux嵌入式系統(tǒng)中實現(xiàn)了外部硬件設備的快速訪問。使用地址映像,將

摘要:為了加快開發(fā)調試μClinux嵌入式系統(tǒng)的外部硬件設備,采用直接物理地址的設備訪問方法,在μClinux嵌入式系統(tǒng)中實現(xiàn)了外部硬件設備的快速訪問。使用地址映像,將設備的寄存器映像到處理器的內存空間統(tǒng)一編址,通過指針定義的地址操作函數(shù)對外設備進行訪問。該方法可以在μClinux操作系統(tǒng)支持的嵌入式系統(tǒng)的硬件環(huán)境中進行硬件外部設備的快速調試,避免了因等待外部硬件設備驅動程序的編寫而耽誤外部硬件調試的時間,從而加快外部硬件設備調試速度,提高硬件開發(fā)調試效率。 關鍵詞:方法 μClinux硬件 調試 快速 在傳感器網(wǎng)絡節(jié)點中,采用了基于Linux的嵌入式操作系統(tǒng)。開發(fā)基于Linux操作系統(tǒng)的嵌入式微處理器應用系統(tǒng),關鍵是Linux能夠訪問嵌入式處理器上擴展連接的外部設備。一旦能夠訪問連接的外部芯片設備,就可以靈活地在Linux上運行對嵌入式系統(tǒng)外部設備的有關訪問控制應用。 Linux在個人PC機上的設備驅動框架作了介紹。介紹了μClinux中訪問嵌入式系統(tǒng)外部設備的設備驅動方式的框架。不過對于設備驅動程序的操作函數(shù)的實現(xiàn)由于與具體的外設備硬件有關,沒有實現(xiàn)的具體統(tǒng)一方案。設備驅動方式采用通用的文件訪問方式操作設備,這給對硬件底層不了解的高層用戶的程序設計帶來了方便。但對于硬件的設計和調試人員來說,不了解底層硬件的操作就無法實現(xiàn)設備的訪問。硬件設計人員必須實現(xiàn)訪問函數(shù)的具體操作過程,以達到對外部擴展設備的訪問測試和靈活控制。也就是說,先要完成設備驅動程序,然后才能進行下一步的硬件設備調試。 編寫和實現(xiàn)設備驅動程序必須先了解和實現(xiàn)對設備底層的訪問,這是個復雜的過程。先要掌握處理器如何尋址外部設備、如何配置外部設備;再實現(xiàn)底層的地址訪問函數(shù);然后再編寫設備驅動程序的實現(xiàn)函數(shù),進而編寫設備驅動程序;將驅動程序編譯進Linux操作系統(tǒng)內核;最后在Linux系統(tǒng)中通過標準的設備訪問方式訪問外部設備。 采用設備驅動方式需要很多時間,以至于耽誤硬件設計調試的進程。另一方面,由于應用于嵌入式的Linux不支持動態(tài)的加載設備驅動模塊,只能將設備的模塊編譯進Linux內部,也就是要將設備驅動程序重新編譯進用于嵌入式的Linux內核中,為此采用驅動方式又增加了內核的代碼。 在μClinux操作系統(tǒng)中,可以采用直接物理地址訪問外部擴展設備,針對設備寄存器的地址單元進行讀寫操作,直接與硬件接觸,而且便于從最底層了解設備的操作,直接與硬件接觸,而且便于從最底層了解設備的工作方式,加快開發(fā)調試產品的速度。該方法僅僅修改少量的代碼,采用直接地址的訪問方式能夠快速完成對外設備的訪問測試。與設備驅動方式相比,重新編譯后使內核代碼增加較少。而在μClinux中要采用直接物理地址的外部設備訪問,需要修改啟動代碼,建立設備訪問函數(shù),需要一定技巧。本文以Motorola的ColdFire MCF5272嵌入式微處理器平臺為例,介紹了μClinux對外部設備的快速訪問方法。

1 存儲空間編址 對于μClinux來說,其設計是針對沒有MMU(Memory Manage Unit)的處理器,即μClinux不能使用處理器的虛擬內存管理技術,μClinux采用存儲器的分頁管理,系統(tǒng)在啟動時把實際存儲器進行分頁。在加載應用程序時程序分頁加載。但由于沒有MMU管理,實際上μClinux采用實存儲器管理策略。 ΜClinux系統(tǒng)對于內存的訪問是直接的,它對地址的訪問不需要經過MMU,而是直接送到地址線上輸出,所有程序中訪問的地址都是實際的物理地址。操作系統(tǒng)對內存空間沒有保護,各個進程實際上共享一個運行空間。 ΜClinux采用了實內存模式,各個內部段在物理內存(沒有虛存)層面都是連續(xù)的,其內存空間的地址映像如圖1。 根據(jù)內存空間是否獨立,可以將I/O空間的配置分為兩種:一種是I/O空間與內存空間相互獨立,這樣I/O空間的訪問需要使用專門的I/O函數(shù)如inb和 outb等。Intel CPU就使用這種方法。另一種是將I/O寄存器作為內存的一部分,即I/O寄存器與內存統(tǒng)一編址,這樣使用普通的內存訪問語句即可讀寫I/O寄存器。 Motorola 68K處理器就采用這種體系結構,處理器MCF5272也統(tǒng)一編址。即其RAM、FLASH和外設I/O均統(tǒng)一編址,沒有地址變換和內存保護。 2 快速設備訪問 在C語言中,用指針可以對內存地址單元進行直接訪問,因此在設計中可以采用指針對外部設備進行快速操作。 2.1 地址映像 為了訪問外部設備,首先應將外設的寄存器映像到MCF5272的內存,與內存統(tǒng)一編址。為此,需要修改相應代碼。 用于COLDFIRE MCF5272的嵌入式μClinux啟動代碼由兩部分組成: μClinux/linux/arch/m68knommu/platform/5272/MOTOROLA/crt0_rom.S μClinux/linux/arch/m68knommu/platform/5272/sysinit.c 其中crt0_rom.S由匯編寫成,完成CPU的初始化設置,這是整個軟件體系的最開始執(zhí)行的代碼入口,CPU一加電就跳到這里執(zhí)行;sysinit.c為C語言代碼,完成MCF5272的集成模塊SIM(如串口、時鐘、通用I/O等)、SDRAM、FLASH和其它外設接口、片選等的初始化設置。 MCF5272的片選CS0~CS7的寄存器CSBR0~CSBR7和CSOR0~CSOR7可將外設備寄存器的地址映像到內存儲空間,這樣可以采用對內存空間的訪問來達到訪問外部設備。其中寄存器CSBR指明了映像的內存起始地址、映像的內存容量、總線寬度等;寄存器CSOR用于配置訪問控制。片選 CS0用于啟動存儲器ROM(FLASH)。 在C語言文件sysinit.c中修改代碼以實現(xiàn)外設的寄存器映像功能。應用片選CS2實現(xiàn)的代碼如下: MCF5272_WR_CS_CSBR2(imm,0xffa00001);//寄存器內存開始地址:0xffa00000 MCF5272_WR_CS_CSOR2(imm,0xfff00014);//片選2 其中imm為無符號字符指針,代表了MCF5272系統(tǒng)集成模塊(SIM)中的寄存器地址。 2.2 實現(xiàn)訪問函數(shù) 通過修改啟動代碼,將外部設備的寄存器單元映像到內存單元后,就可以使用訪問內存的宏和指針快速訪問外部設備的寄存器。有兩類實現(xiàn)設備快速訪問的函數(shù)。 2.2.1 使用宏定義 (1)對設備的該函數(shù)read_register()實現(xiàn) #define read_register(IMM,OFFSET,SIZE)Mcf5272iord(IMMP,OFFSET,SIZE) (2)對設備的寫函數(shù)write_register()實現(xiàn) #define write_register(IMM,OFFSET,SIZE,DAT)Mcf5272iowr(IMMP,OFFSET,SIZE,DATA) 其中Mcf5272_iord和Mcf5272_iowr為宏。在sysinit.h中有下列宏定義: (a)用于計算地址的宏 #define Mcf5272_addr(IMM,OFFSET)((void *)%26;amp;((unsigned char *)IMMP[OFFSET])) 表示基地址為IMM,偏移地址為OFFSET的內存地址。宏返回物理地址。 (b)訪問內存的宏 #define Mcf5272_iord(IMMP,OFFSET,SIZE) (*(volatile uint ## SIZE *)(Mcf5272_addr)(IMMP,OFFSET))) #define Mcf5272_iowr(IMMP,OFFSET,SIZE,DATA) (*(volatile uint ## SIZE *)(Mcf5272_addr(IMMP,OFFSET))=(DATA)) 分別表示讀內存地址單元內容、將數(shù)據(jù)DATA寫入內存地址單元。地址單元的基地址為IMM,偏移地址為OFFSET。SIZE表示每次讀寫操作的數(shù)據(jù)度,取值可為8、16、32,分別表示每次操作8位、16位、32位的總線數(shù)據(jù)。[!--empirenews.page--]

2.2.2 采用指針直接定義 (1)對設備的讀函數(shù)inb()、inw()、inl()實現(xiàn) #define inb(addr)(*(volatile unsigned chart*)(addr)) #define inw(addr)(*(volatile unsignedshort*)(addr)) #define inl(addr)(*(volatile unsigned long*)(addr)) 分別是8位、16位、32位數(shù)據(jù)總線的讀函數(shù)。 (2)對設備的寫函數(shù)outb()、outw()、outl()實現(xiàn) #define outb(data,addr)((*(volatile unsigned char*)(addr))=(data)) #define outw(data,addr)((*(volatile unsigned short*)(addr))=(data)) #define outl(data,addr)((*(volatile unsigned short*)(addr))=(data)) #define outl(data,addr)((*(volatile unsigned long*)(addr))=(data)) 分別是8位、16位、32位數(shù)據(jù)總線的寫函數(shù)。 3 應用實驗 在筆者的傳感器網(wǎng)絡節(jié)點中(見圖2),外部設備芯片采用W99200F,它包含100多個寄存器。在芯片上電復位后,芯片寄存器的復位初始值在手冊中是已知的。根據(jù)訪問方式,它包含三類寄存器:只讀、只寫、可讀寫。W99200F芯片部分寄存器偏移地址及其復位初始化值如表1所示。 表1 W99200F芯片中部分寄存器及其初始化值 寄存器名偏移地址訪問方式數(shù)據(jù)寬度復位值 Vint_source 0x0d 只讀 8 0x40 Vbv_initial 0x18 讀寫 8 0x13 Vquality 0x19 讀寫 8 0x08 Vin_cntl 0x21 讀寫 8 0x0c Vsize_h 0x24 讀寫 8 0x2c 修改啟動代碼和實現(xiàn)訪問函數(shù),其中寄存器CSBR2指明了映像的內存起始地址、映像的內存容量、總線寬度等。重新編譯μClinux內核,并將生成的下載文件燒寫到FLASH中,重新上電在內核運行起來后(或者mount上宿主機硬盤手動啟動μClinux內核),通過編制一段C語言的測試程序,調用設備訪問函數(shù),即可對外部設備芯片的寄存器進行讀寫。下面是一段測試程序test.c。 #include #include "io.h" //包含定義的設備訪問函數(shù) int main(void) { printf("Vint_source:0x%x",inb(0xffa00000+0x0d)); //讀寄存器Vint_source初始值 printf("Vbv_initial:0x%x",inb(0xffa00000+0x18)); //向寄存器Vbv_initial寫入值0x7f outb(ox1f,0xffa00000+0x19));//向寄存器Vquality寫入值0x1f outb(0x7f,0xffa00000+0x21));//向寄存器Vin_cntl寫入值0x7f outb(0x2d,0xffa00000+0x24));//向寄存器Vsize_h寫入值0x2d printf(“Vbv_initial:0x%x”,inb(0xffa00000+0x18)); //讀寄存器Vbv_initial的值 printf("Vin_cntl:0x%x"inb(0xffa00000+0x21)); //讀寄存器Vin_cntl的值 printf("Vsize_h:0x%x",inb(0xffa00000+0x24)); //讀寄存器Vsize_h的值 return; } 該測試程序先讀出外部設備上電的初始值;再對外芯片的可讀寫寄存器進行寫操作,后讀出寫入的值。在宿主機Linux系統(tǒng)的minicom調試窗口中 mount上宿主機硬盤,運行編譯好的test程序,得到該測試程序的輸出。讀出的初始化值與外部設備手冊上的值完全一樣,并且寫入外部設備寄存器的值與而后讀出的值也完全相同。 通過測試檢驗說明設備訪問函數(shù)能夠按物理地址訪問外部設備。比較設備驅動程序方法,該方法可以在較短時間正確訪問外部設備,這樣對硬件調試人員來說節(jié)約了時間,可以快速進行硬件的開發(fā)調試,而不是等待編寫好設備驅動程序后才調試硬件,編寫設備驅動程序可以單獨進行。因此,在μClinux嵌入系統(tǒng)中采用本文介紹的方法調試外部設備,具有快速方便的特點,大大加快了在μClinux應用系統(tǒng)中的設備調試,節(jié)約了時間。

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

開創(chuàng)中國文旅產業(yè)AI深度應用新樣本 北京2025年8月22日 /美通社/ -- 以下為來自億歐的報道: 8月22日,桂林旅游股份有限公司旗下銀子巖景區(qū)聯(lián)合合作伙伴正式發(fā)布全球首款AI伴游財神玩具 —— "五...

關鍵字: AI IP 數(shù)字化 硬件

北京2025年8月18日 /美通社/ -- 2025年8月,軟通動力集團一項關鍵決策引發(fā)行業(yè)矚目——以自有資金8億元向全資子公司軟通計算機有限公司完成實繳增資,使其注冊資本增加至23億元。這筆戰(zhàn)略注資不僅彰顯集團對信創(chuàng)核...

關鍵字: AI 硬件 計算機 智能化

在科技飛速發(fā)展的今天,硬件更新?lián)Q代的速度日新月異。然而,許多企業(yè)或個人仍在使用著老舊硬件設備,這些設備雖然性能有限,但在一些對性能要求不高的場景中,仍有其存在的價值。通過合理的內核參數(shù)調優(yōu)和輕量級服務部署方案,我們可以充...

關鍵字: 硬件 內核參數(shù)

北京 2025年5月27日 /美通社/ -- 日前,軟通華方(清華同方)推出全新超銳T40-Z70國產筆記本,主打更輕、更強、更安全。這款新品國產筆記本采用鋁合金材質機身,搭載國產高性能兆芯開先KX-7000八核處理器...

關鍵字: 筆記本電腦 鋁合金 硬件 BSP

隨著科技的飛速發(fā)展,人工智能(AI)已經從科幻作品中的概念逐漸走進了我們的日常生活,深刻地改變著各個行業(yè)的面貌。在這一變革中,硬件作為 AI 技術運行的物理基礎,其重要性不言而喻。對于硬件工程師而言,如何在人工智能時代找...

關鍵字: 人工智能 硬件 工程師

上海 2025年5月15日 /美通社/ -- 近日在CHINASHOP2025期間,商米以"SUPER Solution雙系統(tǒng)高效切換助力商業(yè)環(huán)保"的案...

關鍵字: 硬件 BSP 雙系統(tǒng) 大賽

在軟件和硬件之間,似乎還有一些不軟不硬的存在?沒錯,那就是固件(Firmware)。固件,其實也是一種軟件,但他比普通的軟件更硬。一般是不能隨便改的,改了以后可能整個系統(tǒng)都得完蛋。它是連接普通軟件和硬件的橋梁。

關鍵字: 軟件 硬件

北京2025年4月23日 /美通社/ -- 4月22日,在千年大運河的粼粼波光中,軟通華方"京牌京產"首臺下線儀式于國家網(wǎng)絡安全產業(yè)園區(qū)(通州園)隆重舉行。通州區(qū)委常委、副區(qū)長吳孔安,軟通動力集團董事...

關鍵字: 數(shù)字經濟 軟件 數(shù)字化 硬件

北京2025年4月20日 /美通社/ -- 4月19日,在北京亦莊舉辦的2025北京亦莊半程馬拉松暨人形機器人半程馬拉松賽開跑,20支人形機器人參賽隊和9000余名人類跑者同時出發(fā)。這是全球首個人形機器人半程馬...

關鍵字: 機器人 BSP 大眾 硬件

創(chuàng)新企業(yè)、行業(yè)專家齊聚一堂,洞察趨勢,共探破局之路 深圳2025年4月10日 /美通社/ -- 3月26日,世界經理人攜手消費者科技及創(chuàng)新平臺CTIS、深圳工業(yè)展ITES、深圳國際電子智能制造展EIMS聯(lián)合舉辦&quo...

關鍵字: 硬件 TE AI 供應鏈
關閉