《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 單片機(jī)嵌入式存儲系統(tǒng)程序存儲區(qū)擴(kuò)展
單片機(jī)嵌入式存儲系統(tǒng)程序存儲區(qū)擴(kuò)展
摘要: 嵌入式存儲系統(tǒng)由于它的專用性和特殊性,系統(tǒng)的軟硬件設(shè)計都與傳統(tǒng)的計算機(jī)系統(tǒng)設(shè)計方法有所不同。但進(jìn)行嵌入式系統(tǒng)設(shè)計時仍然很有必要借鑒傳統(tǒng)計算機(jī)系統(tǒng)體系結(jié)構(gòu)成熟的設(shè)計方法,“量體裁衣”為我所用。作者在進(jìn)行嵌入式存儲系統(tǒng)平臺設(shè)計時借鑒了傳統(tǒng)計算機(jī)虛擬存儲思想來擴(kuò)展存儲系統(tǒng),并在實際項目中得以應(yīng)用,證明這種方法是非常有效的。
Abstract:
Key words :

編輯導(dǎo)讀:工程結(jié)果:遙控|嵌入式系統(tǒng)開發(fā)面臨的問題與集成開發(fā)環(huán)境的應(yīng)用|解決優(yōu)先級倒置問題的RTOS優(yōu)先級調(diào)度策略|嵌入式系統(tǒng)與普適計算|淺談Real-Time Linux|ARM發(fā)布用于嵌入式系統(tǒng)的新產(chǎn)品|基于2.6.19內(nèi)核的小型Linux系統(tǒng)制作與移植|如何監(jiān)控和保護(hù)Linux下進(jìn)程安全|嵌入式數(shù)控系統(tǒng)體系結(jié)構(gòu)研究|嵌入式系統(tǒng)設(shè)計方法的演化|
正文:

 

 嵌入式存儲系統(tǒng)由嵌入式硬件和固化在硬件平臺中的嵌入式存儲系統(tǒng)軟件組成。傳統(tǒng)的小規(guī)模嵌入式存儲系統(tǒng),軟件多采用前后臺的方法,通常應(yīng)用于實時性要求不高的簡單場合;對于復(fù)雜的應(yīng)用場合,較為普遍的做法是給系統(tǒng)配上嵌入式存儲系統(tǒng)實時操作系統(tǒng)(RTOS),這樣不僅能夠使系統(tǒng)具有良好的實時性能,降低軟件編制的工作量,還可以提高整個系統(tǒng)的穩(wěn)定性。此外,為了簡化用戶程序,系統(tǒng)通常要提供一些必要的庫函數(shù)供用戶調(diào)用。同前后臺系統(tǒng)相比,這種實時嵌入式系統(tǒng)增加了系統(tǒng)存儲空間的開銷。Intel 8051系列及各種兼容的單片機(jī)因其極高的性價比、豐富的庫函數(shù)和長期的技術(shù)積累等背景而被廣泛應(yīng)用于各種嵌入式領(lǐng)域中。受傳統(tǒng)單片機(jī)尋址空間的限制,嵌入式應(yīng)用中經(jīng)常需要進(jìn)行存儲空間擴(kuò)展。本文借鑒傳統(tǒng)計算機(jī)系統(tǒng)設(shè)計中的虛擬存儲技術(shù),以8051單片機(jī)為例提出一種采用頁面分組和虛擬接口技術(shù)擴(kuò)展存儲空間的方法。本方法與Keil C編譯器具有良好的兼容性。

  2 存儲系統(tǒng)的組織

  2.1 虛擬存儲系統(tǒng)

  計算機(jī)系統(tǒng)中常采用虛擬存儲技術(shù)來擴(kuò)展存儲系統(tǒng)容量,頁式虛擬存儲器是常用的一種組織方法。在這種方法下,整個虛擬地址空間和主存空間均被分成容量相等的若干頁,地址變換機(jī)構(gòu)(通常是一個快速地址變換表)建立了虛擬空間到主存空間虛頁到實頁的映射。頁式存儲器組織關(guān)系如圖1。

頁式存儲器組織關(guān)系

  虛擬存儲系統(tǒng)利用計算機(jī)CPU中的一組寄存器堆作為頁表基址寄存器,如圖1(b)所示,它與頁表一起給出用戶程序地址。實際計算機(jī)系統(tǒng)的頁式虛擬存儲要比這復(fù)雜得多,還需考慮未命中時的外部地址變換以及頁面替換算法,然而在嵌入式存儲系統(tǒng)中這些都可以簡化乃至省去。

  2.2 單片機(jī)嵌入式存儲系統(tǒng)程序存儲區(qū)擴(kuò)展

  受虛擬存儲系統(tǒng)啟發(fā),我們把上述方法作了一些修改以應(yīng)用于嵌入式存儲系統(tǒng)中。由于系統(tǒng)設(shè)計選用的外部程序存儲器容量為256k,而一般單片機(jī)(如 8051系列)的尋址空間為64k,為簡單起見,以64k為一頁,將256k虛擬地址分為4頁映射到單片機(jī)的64k空間。嵌入式存儲系統(tǒng)中地址變換機(jī)構(gòu)可被簡化:單片機(jī)沒有專用的頁表基址寄存器,可以通過額外的端口線(如P1.0,P1.1,P1.2等)作為基址指定不同的頁面,頁表查詢可用一個跳轉(zhuǎn)表實現(xiàn)。然而頁面切換前后必須保證能夠正確訪問到跳轉(zhuǎn)表,因此所有64k頁面都需要有一個完全相同的代碼段用來存放跳轉(zhuǎn)表和中斷矢量等公共資源。

  為提高存儲器利用率可采用圖2所示的結(jié)構(gòu),其中公共段中存放了高32k段之間相互調(diào)用所需要的跳轉(zhuǎn)表。各段相互調(diào)用之前應(yīng)先跳轉(zhuǎn)到公共段,執(zhí)行頁面切換后再跳轉(zhuǎn)到被調(diào)用程序的入口,這就實現(xiàn)了18位虛擬地址到16位主存地址的變換。不妨以P1.0,P1.1,P1.2作為頁面基址來指定不同的頁,相應(yīng)的跳轉(zhuǎn)表程序結(jié)構(gòu)如下:

  ADDR:CLR EA ;關(guān)中斷

  SETB/CLR P1.0 ;切換頁面

  SETB/CLR P1.1

  SETB/CLR P1.2

  SETB EA ;開中斷

  JMP REAL_ADDR ;跳轉(zhuǎn)


編輯導(dǎo)讀:工程結(jié)果:遙控|嵌入式系統(tǒng)開發(fā)面臨的問題與集成開發(fā)環(huán)境的應(yīng)用|解決優(yōu)先級倒置問題的RTOS優(yōu)先級調(diào)度策略|嵌入式系統(tǒng)與普適計算|淺談Real-Time Linux|ARM發(fā)布用于嵌入式系統(tǒng)的新產(chǎn)品|基于2.6.19內(nèi)核的小型Linux系統(tǒng)制作與移植|如何監(jiān)控和保護(hù)Linux下進(jìn)程安全|嵌入式數(shù)控系統(tǒng)體系結(jié)構(gòu)研究|嵌入式系統(tǒng)設(shè)計方法的演化|
正文:

 

 

提高存儲器利用率結(jié)構(gòu)

  在公共段(256k存儲芯片的低32k)中存放操作系統(tǒng)和提供給用戶的其他庫函數(shù),其他各段用來存放嵌入式存儲系統(tǒng)的用戶程序。采用圖2結(jié)構(gòu)的單片機(jī)與存儲器接口原理圖如圖3所示。其中A0~A15地址線接法與普通存儲器擴(kuò)展方法相同。

采用圖2結(jié)構(gòu)的單片機(jī)與存儲器接口原理圖

  以上考慮了復(fù)位時頁面應(yīng)切換到公共代碼區(qū)。

  Keil C51編譯器是單片機(jī)開發(fā)應(yīng)用中非常流行的一種高效編譯器,它支持上述頁面分組技術(shù)。

  2.3 單片機(jī)嵌入式存儲系統(tǒng)數(shù)據(jù)存儲區(qū)擴(kuò)展

  嵌入式存儲系統(tǒng)中引入操作系統(tǒng)需要增加一定的數(shù)據(jù)存儲器開銷,必要時仍可以采用分頁技術(shù)擴(kuò)展數(shù)據(jù)存儲區(qū)容量。

  引入操作系統(tǒng)以后,數(shù)據(jù)區(qū)有兩種組織方法,比較簡單的一種方法是操作系統(tǒng)與用戶程序共用一個數(shù)據(jù)區(qū),編譯器將整個程序一起編譯,不必區(qū)分是系統(tǒng)程序還是用戶程序。但這樣對用戶來說操作系統(tǒng)變得不透明了,而且不良的用戶程序可能會破壞系統(tǒng)的數(shù)據(jù)區(qū),導(dǎo)致整個系統(tǒng)崩潰。

  相對應(yīng)的另一種方法是給操作系統(tǒng)與用戶程序分別分配獨立的數(shù)據(jù)區(qū),譬如將128k 數(shù)據(jù)存儲器給操作系統(tǒng)和用戶程序各分配64k。不幸地是,當(dāng)操作系統(tǒng)與用戶程序一起編譯時,編譯器會自動給它們分配不同的地址,這樣即使存儲器物理上是分開的,操作系統(tǒng)與用戶程序的數(shù)據(jù)區(qū)還是無法地址復(fù)用,這極大地浪費了地址空間;而且對傳統(tǒng)的單片機(jī), Keil C 編譯器最大只支持64k數(shù)據(jù)區(qū),幸運地是,這個矛盾可以通過采用虛擬接口的方法加以解決。

  為此,將公共代碼段中的程序單獨編譯,并且在鏈接、定位目標(biāo)代碼時,給操作系統(tǒng)和公共庫函數(shù)的每個函數(shù)在0x0000~0x7FFFH內(nèi)分別指定一個固定的首地址。鑒于用戶程序可能調(diào)用這些函數(shù),需要為這些函數(shù)分別編寫一個相同類型的同名偽函數(shù),每個偽函數(shù)僅包含一條到真實函數(shù)(入口地址已知)的轉(zhuǎn)移指令,所有這些函數(shù)都存放在一個被稱為虛擬接口的頭文件中。虛擬接口文件與用戶程序一起編譯,完成用戶程序與操作系統(tǒng)兩次編譯的接口。顯然這種方法僅占用了用戶區(qū)的極少量代碼空間,而絲毫沒有浪費用戶數(shù)據(jù)區(qū),同時又實現(xiàn)了地址復(fù)用。


編輯導(dǎo)讀:工程結(jié)果:遙控|嵌入式系統(tǒng)開發(fā)面臨的問題與集成開發(fā)環(huán)境的應(yīng)用|解決優(yōu)先級倒置問題的RTOS優(yōu)先級調(diào)度策略|嵌入式系統(tǒng)與普適計算|淺談Real-Time Linux|ARM發(fā)布用于嵌入式系統(tǒng)的新產(chǎn)品|基于2.6.19內(nèi)核的小型Linux系統(tǒng)制作與移植|如何監(jiān)控和保護(hù)Linux下進(jìn)程安全|嵌入式數(shù)控系統(tǒng)體系結(jié)構(gòu)研究|嵌入式系統(tǒng)設(shè)計方法的演化|
正文:

 

 

公共代碼段和操作系統(tǒng)的數(shù)據(jù)區(qū)特殊的對應(yīng)關(guān)系(見圖4),很容易通過P2端口線來指定。由單片機(jī)外部程序區(qū)訪問時序(圖 5)可知,PSEN的上升沿后數(shù)據(jù)總線A0~A7上開始出現(xiàn)指令或指令操作數(shù),此時的地址線A15指示當(dāng)前訪問的是公共代碼段(對應(yīng)數(shù)據(jù)區(qū)高64k)還是其他程序段(對應(yīng)數(shù)據(jù)區(qū)低64k),因此在PSEN上升沿鎖存地址線A15,用它可以選擇不同的數(shù)據(jù)存儲器空間。

公共代碼段和操作系統(tǒng)的數(shù)據(jù)區(qū)特殊的對應(yīng)關(guān)系

由單片機(jī)外部程序區(qū)訪問時序

  3 存儲系統(tǒng)的性能分析

  本文基于虛擬存儲系統(tǒng)思想實現(xiàn)了嵌入式存儲系統(tǒng)中大容量存儲器的擴(kuò)展。不難看出系統(tǒng)的擴(kuò)展余地受端口線的限制。由于在同一塊芯片中構(gòu)造圖2所示的結(jié)構(gòu),需要多使用一根端口線,因此對于8051系列使用整個P1口可以將系統(tǒng)的程序虛擬空間擴(kuò)展至8M字節(jié)。數(shù)據(jù)存儲區(qū)擴(kuò)展的最大容量還與程序在編譯時所被分成塊的數(shù)目有關(guān),最大可達(dá)16M字節(jié),這在單片機(jī)嵌入式存儲系統(tǒng)中已經(jīng)是足夠大了。

  程序在調(diào)用不同頁面的函數(shù)時需要額外的軟件切換周期,頻繁的頁面切換會降低系統(tǒng)的性能,因此編譯時應(yīng)仔細(xì)選擇函數(shù),盡可能將相關(guān)的函數(shù)分配在同一頁中。

  數(shù)據(jù)存儲區(qū)切換是由硬件實現(xiàn)的,頁面切換并不降低系統(tǒng)性能。由于操作系統(tǒng)與用戶程序數(shù)據(jù)區(qū)相互獨立,對用戶來說整個64k空間都是可用的,這就增加了操作系統(tǒng)的透明性。

  4結(jié)論

  嵌入式存儲系統(tǒng)由于它的專用性和特殊性,系統(tǒng)的軟硬件設(shè)計都與傳統(tǒng)的計算機(jī)系統(tǒng)設(shè)計方法有所不同。但進(jìn)行嵌入式系統(tǒng)設(shè)計時仍然很有必要借鑒傳統(tǒng)計算機(jī)系統(tǒng)體系結(jié)構(gòu)成熟的設(shè)計方法,“量體裁衣”為我所用。作者在進(jìn)行嵌入式存儲系統(tǒng)平臺設(shè)計時借鑒了傳統(tǒng)計算機(jī)虛擬存儲思想來擴(kuò)展存儲系統(tǒng),并在實際項目中得以應(yīng)用,證明這種方法是非常有效的。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美连裤袜在线视频| 国产日韩精品在线播放| 亚洲欧美日韩国产一区二区| 亚洲人成小说网站色在线| 欧美一站二站| 亚洲字幕一区二区| 在线综合亚洲欧美在线视频| 亚洲精品字幕| 亚洲另类在线一区| 91久久精品一区| 亚洲第一黄色网| 亚洲电影第三页| 在线看欧美日韩| 亚洲高清av在线| 影音先锋中文字幕一区二区| 红桃av永久久久| 韩日欧美一区二区| 黄色一区二区三区四区| 在线播放精品| 亚洲国产成人tv| 91久久精品国产91性色tv| 亚洲东热激情| 亚洲三级视频在线观看| 亚洲区一区二| 99综合视频| 亚洲一区二区三区精品视频| 亚洲一区二区高清| 亚洲欧美综合网| 欧美一区二区三区在线看| 午夜精品一区二区在线观看| 欧美伊人久久久久久久久影院 | 欧美性猛交99久久久久99按摩| 欧美视频在线播放| 国产精品美腿一区在线看 | 中文精品视频| 亚洲欧美成人| 久久精品人人爽| 99re视频这里只有精品| 亚洲手机成人高清视频| 午夜欧美电影在线观看| 欧美专区日韩视频| 久久婷婷人人澡人人喊人人爽| 久久夜色精品国产| 欧美大色视频| 欧美日韩国产二区| 国产精品毛片va一区二区三区| 国产乱码精品一区二区三区五月婷| 国产欧美在线| 亚洲第一在线综合网站| 99国产一区| 欧美一区二区三区久久精品茉莉花 | 亚洲性人人天天夜夜摸| 午夜日韩福利| 久久夜色精品国产欧美乱| 欧美成人一品| 国产精品乱码妇女bbbb| 国内精品久久久久久久果冻传媒| 亚洲欧洲视频在线| 亚洲欧美bt| 亚洲激情不卡| 亚洲欧美日韩在线高清直播| 狂野欧美激情性xxxx| 欧美视频导航| 怡红院精品视频| 亚洲线精品一区二区三区八戒| 久久成人一区| 亚洲一二区在线| 久久综合影音| 国产精品裸体一区二区三区| 在线观看欧美激情| 亚洲综合社区| 日韩一级黄色片| 欧美专区中文字幕| 欧美日韩一区二区三区免费看| 国产一区导航| 亚洲午夜91| 亚洲欧洲午夜| 欧美一级大片在线观看| 欧美高清视频在线| 国产伦精品一区二区三区照片91| 亚洲国产精品专区久久| 亚洲欧美国产77777| 9国产精品视频| 久久综合狠狠综合久久激情| 国产精品精品视频| 91久久香蕉国产日韩欧美9色| 午夜国产精品影院在线观看| 一本久久综合亚洲鲁鲁| 玖玖玖免费嫩草在线影院一区| 国产精品另类一区| 亚洲毛片在线观看.| 亚洲国产精品传媒在线观看| 亚洲欧美日韩人成在线播放| 欧美久久一区| 伊大人香蕉综合8在线视| 亚洲综合色在线| 亚洲午夜视频在线观看| 欧美大片在线观看一区| 国产亚洲精品v| 亚洲社区在线观看| 国产精品99久久不卡二区| 欧美成人dvd在线视频| 国产一区二区精品久久99| 中文在线一区| 夜夜夜久久久| 欧美成人精品一区二区| 韩日精品中文字幕| 欧美一区成人| 性欧美超级视频| 国产精品草草| 一本色道久久88亚洲综合88| 日韩视频久久| 欧美激情亚洲精品| 在线观看久久av| 亚洲国产精品久久久| 久久精品九九| 国产亚洲一区在线播放| 午夜在线视频观看日韩17c| 亚洲欧美日韩综合| 国产精品mv在线观看| 亚洲精品中文在线| 一级成人国产| 欧美—级在线免费片| 亚洲国产精品国自产拍av秋霞| 亚洲国产精品高清久久久| 久色婷婷小香蕉久久| 精品51国产黑色丝袜高跟鞋| 欧美中文字幕视频| 久久乐国产精品| 国产在线视频欧美| 亚洲国产精品热久久| 麻豆精品在线视频| 亚洲第一精品电影| 亚洲免费观看高清完整版在线观看| 欧美国产高潮xxxx1819| 亚洲国产精品一区二区第一页| 亚洲欧洲三级| 欧美片网站免费| 一区二区三区免费看| 亚洲专区欧美专区| 国产精品欧美精品| 欧美一级免费视频| 久久一综合视频| 91久久久亚洲精品| 亚洲一区二区在| 国产欧美一区二区三区视频| 久久国产日韩| 亚洲女同精品视频| 国产在线麻豆精品观看| 亚洲国产成人久久| 欧美激情精品久久久久久蜜臀| 日韩西西人体444www| 亚洲欧美日韩中文在线制服| 国产一级精品aaaaa看| 亚洲国产日韩在线一区模特| 欧美母乳在线| 亚洲欧美电影院| 久久久久久欧美| 亚洲人成人一区二区三区| 亚洲一区三区视频在线观看| 国产精品一区二区你懂得| 久久精品国产亚洲aⅴ| 欧美连裤袜在线视频| 亚洲欧美日本日韩| 免费欧美在线| 亚洲视频 欧洲视频| 久久精品卡一| 亚洲大片av| 亚洲欧美激情视频在线观看一区二区三区 | 国产一区二区三区黄视频| 亚洲人成7777| 国产精品久久777777毛茸茸| 欧美专区一区二区三区| 欧美另类亚洲| 性欧美大战久久久久久久免费观看| 麻豆视频一区二区| 一区二区毛片| 久久久精品国产一区二区三区| 一区在线视频| 亚洲在线免费视频| 一区二区在线视频播放| 亚洲一区二区三区精品动漫| 国产一区二区日韩精品| 一区二区高清在线观看| 国产一区自拍视频| 亚洲午夜免费视频| 欧美午夜精彩| 亚洲欧洲一区二区天堂久久| 国产精品久久久久久久久借妻 | 女同性一区二区三区人了人一| av成人免费在线| 久久婷婷蜜乳一本欲蜜臀| 一区二区三区|亚洲午夜| 老鸭窝91久久精品色噜噜导演| 一本色道久久综合亚洲精品按摩 | 国产欧美日韩在线播放| 亚洲乱码国产乱码精品精| 国产亚洲福利| 亚洲影视在线播放| 在线精品在线|