久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

基于嵌入式Linux的SOHO路由器設計(共5則范文)

時間:2019-05-14 23:02:45下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《基于嵌入式Linux的SOHO路由器設計(共)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《基于嵌入式Linux的SOHO路由器設計(共)》。

第一篇:基于嵌入式Linux的SOHO路由器設計(共)

基于嵌入式Linux的SOHO路由器設計

內容摘要:針對目前SOHO路由器設計方案難以滿足高速接入網用戶要求和存在系統穩定性方面的不足,以嵌入式Linux操作系統為基礎,提出一種新的 SOHO(Small Office and Home Office)路由器設計方案,有效地提高了系統的穩定性和安全性。

0 引言

隨著通信技術、網絡技術的迅速發展,大量網絡設備接入網絡,互聯網用戶數量正以幾何級數增長。研究表明,IPv4 地址空間將在2011 年前耗盡,因此IPv4 地址資源非常緊缺。SOHO 路由器利用私有網絡IP 地址有效地緩解目前 IP 地址短缺的危機,為公司、家庭等小型局域網提供高效、廉價的共享上網方案。當前SOHO 路由器設計,采用

ARM7TDMI+μClinux 設計架構,ARM7 內核微處理器工作頻率為50M 左右,而以太網控制芯片工作頻率一般為100M,處理器速度難以滿足高速接入網用戶要求;μClinux 操作系統,不具有內存保護機制,任何程序都有可能導致內核崩潰,系統穩定性較差。本文采用ARM920T 內核微處理器,工作頻率200M,足以滿足高速接入網用戶要求,它具有先進的MMU 體系結構,支持WinCE、EPOC32、Linux 操作系統。Linux 操作系統,具有內存保護機制和強大的網絡控制功能,能防止惡意程序對系統的破壞并實現*濾防火墻,有效地提高了系統的穩定性和安全性。SOHO 路由器原理

路由器有位于網絡中心的核心路由器、連接企業級網絡的企業路由器以及把家庭或小單位用戶接入網絡的 SOHO 路由器。SOHO 路由器能夠實現自動配置和基本數據包路由、過濾功能。從嚴格意義上來講,SOHO 路由器并不能完全稱之為路由器,它只實現部分傳統路由器的功能。SOHO 路由器采用NAT(Network Address Translation)轉換技術,把局域網內部私用有IP 地址轉換成一個合法的公網IP 地址,使私有網絡中多臺主機共享一個合法的 IP 地址訪問因特網。

本文利用 Linux 內核支持IP Masquerade(IP 偽裝)技術實現NAT 轉換,實現多臺主機共享訪問因特網。IP Masquerade 工作原理:客戶機將實現IP Masquerade 的Linux 機器設置為缺省網關,當IP Masquerade 的Linux 機器收到客戶機的數據包時,對其進行改寫,將源地址替換為自己的IP 地址,將源端口號換成一個新的端口號,并且對該過程進行記錄;當接收到響應數據包時,如果其端口號正是先前所指定的端口號則再對該數據包進行改寫,將其目的IP 地址及目的端口號替換為原來記錄的客戶機IP 地址和端口號,然后再發送給客戶機。系統硬件設計

系統以 S3C2410X 微處理器為核心,外擴存儲器、以太網控制器、交換控制器、配以必要的調試接口、電源電路和時鐘發生電路構成,硬件結構框圖如圖1 所示。

(1)微處理器與存儲系統

S3C2410X 是SAMSUNG 公司開發的一款低價、低功耗、高性能應用于PDA、Internet設備的微處理器,工作頻率200M,能滿足高速處理要求。系統擴展了1 片64MB NANDF1ash 芯片和2 片SDRAM 芯片,NAND F1ash 芯片中存儲Bootloader 引導程序和Linux 內核,系統上電復位后從中執行初始化代碼。

(2)以太網控制芯片

DM9000 是一款高性價比以太網控制芯片,具有通用處理接口以太網MAC 控制器,能與10Base-T 的UTP3/4/5 和100Base-T 的UTP5 接口連接,滿足高速接入網要求,也支持通過MII 接口與其它MII 接口的收發器互聯。

(3)交換控制芯片

RTL8305S 是臺灣瑞昱公司最新設計的5 端口10/100Mbps 高速以太網絡交換控制芯片,五個端口分成三個組(X 組,Y 組,第五端口),可通過相關引腳靈活配置;集成了5個MAC(媒體存取控制器)、5 個實體層收發器、1M SRAM 和1K MAC 地址記憶區,有效地減少查表時間和轉儲時間,適用于高速局域網交換器;每一個端口均可支持100Mbps 的100BASE-TX 高速以太網傳輸或10Mbps 的10BASE-T 的以太網傳輸。

(4)系統實現

S3C2410X 微處理器通過系統總線連接FLASH和SDRAM構成存儲系統,系統上電后,微處理器從FLASH 中讀取初始化程序,SDRAM 為程序運行和數據處理和轉發提供臨時存

儲空間。以太網控制芯片DM9000,經單端口隔離變壓器和RJ45 接口與互聯網相連。DM9000 通過MII(獨立媒體接口)與交換控制芯片RTL8305SC 的PORT4 口相連,RTL8305SC 經過4 端口隔離變壓器和四個RJ-45 接口連接局域網集線器,交換機或電腦,進行數據交換或通過微處理器控制與廣域網連接。

DM9000 與S3C2410X、RJ45 接口電路如圖2 所示,DM9000E 芯片的引腳INT 與S3C2410X 芯片的外部中斷信號EINT14 相連,S3C2410X 片選信號nGCS4 和地址線MA2分別連接DM9000 的AEN 引腳和CMD 引腳。SA6 到SA0 對應地址總線,而SA9 與SA8引腳設置為高電平,SA7 引腳設置為低電平,用來片選DM9000;3C2410X 的nOE 引腳連接DM9000 的讀引腳IOR#,nWE 引腳連接DM9000 的寫引腳IOW#,并將S3C2410X 數據線MD[0..15]與DM9000 的數據線SD[0..15]連接,實現數據傳輸。將 RTL8305S 第5 端口設定為一個MII 接口與以太網控制芯片DM9000R MII 接口相連,RTL8305S 與四端口隔離變壓器和RJ45 接口與圖2 類似。系統軟件構建

軟件構建主要包括 Linux 操作系統移植和NAT 技術實現。

3.1 Linux 操作系統移植

(1)Bootloader 移植

Bootloader 是與系統硬件高度相關的初始化代碼,擔負著初始化硬件和引導操作系統的雙重責任。本文使用在嵌入式系統開發中應用最廣的引導代碼U—BOOT。移植具體步驟:1 針對目標平臺對各配置文件做相應的修改。2 建立相應地配置文件。3 修改U—BOOT的makefile 文件,在其中加入對目標系統的編譯支持,并運行以下命令$make clean、$makesmdk2410-config、$make all 生成目標文件。最后通過JTAG 接口將u-boot.bin 文件燒寫到Flash 的零地址,復位后就可以引導系統。

(2)Linux 內核構建、移植與根文件系統實現 修改makefile 文件。2 使用make manuconfig 命令來配置內核。3 使用make dep、makezImage 命令對內核進行編譯,得到內核壓縮鏡像文件zImage 件。4 Bootloader 引導程序通過以太網接口把Linux 內核移到目標系統的Flash 上。5 構建根文件系統。

3.2 Netfilter 框架分析與NAT 技術實現

Netfilter 是Linux2.4 內核實現數據*濾、數據包處理和NAT 功能的框架。它為每種網絡協議(IPv4, IPv6 等)定義一套鉤子函數(IPv4 有5 個鉤子函數),內核中任何模塊可以對協議中的鉤子函數進行注冊與掛接,這些鉤子函數在數據包流經協議棧時被調用,注冊后的模塊可以檢查、修改、丟棄數據包及指示Netfilter 將數據包傳入用戶空間隊列,進行異步處理。一個數據包按圖3 所示的過程通過Netfilter 系統。

數 據 包 從 左 邊 進 入 系 統,進 行 IP 校驗后,數據包經過第一個鉤子函數NF_IP_PRE_ROUTING[1]進行處理;然后就進入路由代碼,其決定該數據包是需要轉發還是發給本機的;若該數據包是發給本機的,則該數據經過鉤子函數NF_IP_LOCAL_IN處理后傳遞給上層協議;若該數據包應該被轉發則它被NF_IP_FORWARD[3]處理;經過發的數據包經過最后一個鉤子函數NF_IP_POST_ROUTING[4]處理后,再傳輸到網絡上。

本地產生的數據經過鉤子函數NF_IP_LOCAL_OUT[5]處理后,進行路由選擇處理,然后經過NF_IP_POST_ROUTING[4]處理以后發送到網絡上。Netfilter 框架支持多種NAT,NAT 一般可分為源NAT 與目的NAT。源NAT 在數據包經過NF_IP_POST_ROUTING 時修改數據包的源地址,偽裝是一個特殊的SNAT,目的NAT在數據包經過F_IP_LOCAL_OUT 或NF_IP_PRE—ROUTING 時修改數據包目的地址。

本文利用 IPtables 實現IP 偽裝、Port Forward 端口轉發、ALG。IPtables 是一個在Linux2.4內核中基于Netfilter 框架的數據包選擇系統。地址轉換會導致許多對NAT 敏感的應用協議無法正常工作,而地址轉換應用網關(NAT ALG, Application Level Gateway),對載荷中的IP地址和端口號進行替換,從而實現對該協議的透明中繼。IPtables 要求數據包流經指定的規則表,其中設定的規則用于實現數據*濾,網絡地址轉換及數據包處理,從而實現多臺主機共享一個合法的 IP 地址訪問因特網,并實現*濾防火墻。結束語

本文作者創新點:提出了一種基于嵌入式 Linux 操作系統的SOHO 路由器設計方案。與現有設計方案相比,本文采用ATM9TDMI+Linux 構架設計SOHO 路由器,能滿足高速接入網用戶需求,具有更高地系統穩定性和用戶安全性。

第二篇:嵌入式系統設計與應用

第一章:

嵌入式系統定義:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能,可靠性,成本,體積,功耗嚴格要求的專用計算機系統。(一切非PC計算機系統)嵌入式系統特點:“專用”計算機系統,運行環境差異很大,比通用PC系統資源少,功耗低,體積小,集成度高,成本低,具有完整的系統測試和可靠性評估體系,具有較長的生命周期,需要專用開發工具和方法進行設計,包含專用調試電路,多學科知識集成系統。嵌入式系統應用范圍:汽車,工業控制,通信設備,消費電子,商業終端,航空航天,軍事需求。

嵌入式系統的基本開發流程:系統定義與需求分析階段,方案設計階段,詳細設計階段,軟、硬件集成測試階段,系統功能性測試及可靠性測試階段。

系統定義與需求分析階段:對系統需求進行分析,制定系統的設計依據。方案設計階段:確定系統初步設計方案并形成設計描述文檔。詳細設計階段:完善初步方案,對方案實施詳細設計。

軟硬件集成測試階段:對系統軟硬件進行綜合測試,驗證系統設計功能。

系統功能性能測試及可靠性測試測試:對系統功能,性能,可靠性進行綜合測評。

對于使用操作系統的嵌入式系統來說,嵌入式系統軟件結構一般包含4個層面:板級支持包層,實時操作系統(RTOS)層,應用程序接口(API)層,應用程序層。有些資料將應用程序接口API歸屬于OS層,按3層劃分的應用程序控制系統的運作和行為;操作系統與硬件無關,不同的嵌入式操作系統其組成結構也不盡相同 嵌入式操作系統種類繁多,大體分為兩種:商用型和免費型

商用型:VxWorks,Windows CE,pSoS,Palm OS,OS-9,LynxOS,QNX和LYNX 免費型:Linux和uC/OS—II uC/OS—II具有執行效率高,占用空間小,可移植性及擴展性強,實施性能優良,穩定性和可靠性良好等特點。其內核采用微內核結構,將基本功能(如進程管理,存儲管理,中斷處理)放在內核中,留給用戶一個標準API函數,并根據各個任務的優先級分配CPU時間。交叉開發環境:交叉開發是指一個通用計算機上進行軟件的編輯編譯,然后下載到嵌入式設備中進行調試的開發方式,它通常采用宿主機/目標機模式。

第二章:

RISC是精簡指令集

精簡指令集體系結構的優點:硬連線的指令譯碼邏輯,便于流水線執行,大多數RISC指令為單周期執行。

精簡指令集處理器的優點:處理器關心面積小,開發時間縮短,開發成本降低,容易實現高性能,低成本的處理器。

精簡指令集體系結構缺點:與CISC相比,通常RISC的代碼密度低;RISC不能執行x86代碼;RISC給優化編譯程序帶來了困難

ARM設計采用的RISC技術特征主要有:Load/Store體系結構,固定的32位指令,3地址指令格式。

ARM7TDM名稱具體含義:ARM7:32位ARM體系結構4T版本;T:Thumb16位壓縮指令集;D:支持片上Debug,使處理器能夠停止以響應調試請求;M:增強型Multiplier,與前代相比具有較高的性能且產生64位的結果。I:EmbeddedICE硬件以支持片上斷點和觀察點。ARM7 3級流水線:(取指級,譯碼級,執行級)ARM9TDMI 流水線操作:(取指,譯碼,執行,緩沖/數據,回寫)5級 ARM處理器核可工作兩種狀態:ARM狀態和Thumb狀態

從ARM進入Thumb狀態,當操作數寄存器Rm的狀態位bit[0]為1時,執行“BX Rm”指令進入Thumb狀態

從Thumb進入ARM狀態,當操作數寄存器Rm的狀態位bit[0]為0時,執行“BX Rm”指令進入ARM狀態

ARM處理器工作模式(共7種):除用戶模式外的其他六種模式稱為特權模式。特權模式:主要處理異常和監控調用(有時也稱為軟件中斷),他們可以自由地訪問系統資源和切換模式

ARM處理器總共有37個寄存器,均為32位 ARM狀態下的通用寄存器分為3類: 未分組寄存器:R0~~R7(為公用寄存器)

分組寄存器:R8~~R14

R13通常用于堆棧指針SP

R14用做子程序鏈接寄存器

程序計數器:R15(PC)

用做程序計數器

ARM程序狀態寄存器中

條件碼標志(N Z C V)

N——在結果是帶符號的二進制補碼的情況下,結果為負,N=1 否則為0 Z——結果為0 Z=1 否則為0 C——針對加法:產生進位

C=1 否則為0

針對減法:產生借位

C=0 否則為1

針對有移位操作的非加減法指令

C為移位操作中最后移出位的值

對于其他指令

C通常不變

V——對于加減法指令

操作數和結果為帶符號的整數時,產生溢出

V=1 否則為0

對于其他指令

V通常不發生變化 ARM的異常中斷響應過程: 一:將CPSR的內容保存到將要執行的異常中斷對應的SPSR中,以實現對處理器當前狀態,中斷屏蔽字以及各條件標志位的保存。二:設置當前狀態寄存CPSR中的相應位:

設置CPSR模式控制位CPSR[4:0],使處理器進入相應的執行模式

當進入Reset或FIQ模式時,還要設置中斷標志位(CPSR[6]=1)禁止FIQ中斷,否則其值不變

設置中斷標志位(CPSR[7]=1),禁止IRQ中斷

三:將寄存器LR-設置成異常返回地址 return link(對于某些異常中斷,保存在LR-的值可能與實際返回的地址有一個常數的偏移量),使異常處理程序執行完后能正確返回原程序

四:給程序計數器PC強制賦值,使程序從相應的向量地址開始執行中斷處理程序。

非向量中斷和中斷向量的區別和聯系

異常中斷的優先級:復位(最高),數據異常中斷,FIQ,IRQ,取值指異常中止,SWI未定義指令

ARM支持的數據類型(6種):8位有符號和無符號字節

16位有符號和無符號半字,以2字節的邊界定位

32位有符號和無符號半字,以4字節的邊界定位

ARM存儲器組織:以字節為單位尋址的存儲器中有“小端”和“大端”兩種方式存儲字 小端格式:較高的有效字節存放在較高的存儲器地址,較低的有效字節存放在較低的存儲器地址

大端格式:較高的有效字節存放在較低的存儲器地址,較低的有效字節存放在較高的存儲器地址

ARM處理器能方便地配置為其中任何一種存儲器方式,但他們的缺省設置為小端格式(71頁有題)

ARM7TDM內核的重要特性:53頁最上面

第三章:

指令分類中基本指令格式

S

可選后綴,若指定S,則根據指令執行結果更新CPSR中的條件碼 ARM尋址方式

立即尋址有選擇題

寄存器間接尋址:ARM的數據傳送指令都是基于寄存器間接尋址,即通過Load/Store完成對數據的傳送操作

103頁舉例

可能為考題

偽操作

是ARM匯編語言程序里的一些特殊指令助記符,它的作用主要是為完成匯編程序做各種準備,在源程序進行匯編時由匯編程序處理,而不是在計算機運行期間由機器執行 ARM嵌入式系統程序設計可以分為ARM匯編語言程序設計、嵌入式C語言程序設計以及C語言與匯編語言的混合編程。

ARM匯編程序中

AREA指示符定義本程序段位代碼段

即申請一個定義段 161頁程序

可能考

嵌入式C語言程序設計中修飾符:interrupt、near、far、huge Interrupt在函數修飾為中斷函數,沒有輸入和輸出參數 第三章課后習題見李向妮筆記

第四章

DMA

I2C

I2S 基于S3C44B0X的最小系統設計:

嵌入式最小系統是指保證嵌入式微處理器可靠工作所必需的基本電路組成的系統,通常包括處理器單元、時鐘單元、復位單元、、存儲器單元、供電電源和調試接口。

基于ARM的嵌入式最小系統基本組成包括:基于ARM核的微處理器、電源電路、復位電路、時鐘電路、存儲器電路(FLASH和SDRAM)、UART接口電路和JTAG調試接口

第五章:

uC/OS—II采用的搶占式內核是一個真正的實時操作系統

uC/OS—II基本特點:源碼開放;可移植性;可裁剪;搶占式內核;可擴展的多任務;可確定的執行時間;中斷管理;穩定性和可靠性

uC/OS—II的文件結構(與內核功能相關的文件):任務管理;同步通信;內存管理;時間管理

uC/OS—II任務及其運行狀態:

任務是一個簡單的程序,對應于實際應用中的一個邏輯功能。對uC/OS—II來說,任務是系統運行的基本單元,系統以任務為單元分配內存資源和處理時間,每個任務都有自己獨立的寄存器和棧空間。

任務看起來就像一個無限循環永不返回的函數,但是不同于函數的是,它有一套自己的內存空間,運行時完全占用處理器資源,在任意確定的時刻都處于休眠、就緒、運行、掛起以及中斷服務這五種狀態之一 圖見書上337

第六章

uCLinux與標準Linux的最大區別就在于內存管理。標準Linux是針對有MMU的處理器設計的

uCLinux不使用虛擬內存管理技術,采用的是實存儲器管理策略,也就是說uCLinux系統對內存的訪問是直接的

uCLinux與標準Linux系統在進程的創建

進程的執行

進程的終止

上有著顯著不同 基于uCLinux操作系統的應用開發環境一般是由目標系統硬件開發板和宿主PC機所構成。目標硬件開發板用于運行操作系統和系統應用軟件,而目標板所用到的操作系統的內核編譯、電子詞典應用程序的開發和調試則需要通過宿主PC機來完成。目標板用來進行內核編譯

PC機用來進行調試

移植就是使一個實時操作系統能夠在某個微處理器平臺上或者微控制器上運行。uCLinux移植包括3個層次的移植: 處理器結構層次移植、芯片層次移植、板級移植。

移植思路:開發環境確定以后,首先,要為uCLinux設計一個BootLoader,通過BootLoader來初始化硬件,引導uCLinux運行。BootLoader的設計可以在ads中或者Linux中實現。其次,針對硬件環境和設計的BootLoader修改uClinux內核。最后,在交叉編譯環境下配置、編譯、鏈接uClinux,下載編譯得到的印象文件到FLASH,通過BootLoader來啟動uCLinux。如果參數默認或者無參數,則先執行BootLoader,否則BootLoader第二位,參數執行為第一位。

第三篇:嵌入式系統設計報告

嵌入式系統設計實驗報告

班 級:學 號:姓 名:成 績:指導教師:

20090612 2009112107 侯金鐘 武俊鵬、劉書勇 1.實驗一

1.1 實驗名稱

嵌入式系統硬件開發環境

1.2 實驗目的

1.熟悉UP-net3000實驗平臺。

2.超級終端設置及BIOS 功能使用。

1.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

1.4 實驗內容及要求

熟悉UP-net3000實驗平臺的硬件電路和外設,ARM JTAG的安裝和使用,利用超級終端檢驗外設的工作狀態。

1.5 實驗設計與實驗步驟

1.建立工程

(1)運行ARM SDT 2.5 集成開發環境(ARM Project Manager).(2)在新建的工程中,如圖1A-2 所示,選中工程樹的“根部”。

(3)因為開發板上的嵌入式處理器ARM7TDMI 沒有浮點處理器,所以,如圖1A-3 所

示,在彈出的對話框中設置Floating Point Processor 為none,并保持其他的設置不變。(4)選中工程樹的“根部”,通過菜單Project | Tool Configuration for work1.apj | asmlink | Set,對整個工程的連接方式進行設置。(5)在彈出的對話框中,選中Entry and Base 標簽,如圖1A-4 所示,設置連接的Read-Only(只讀)和Read-Write(讀寫)地址。

(6)選擇Linker Configuration 的ImageLayout 標簽,(7)選擇Project | Edit Project Tamplete 菜單,彈出Project Template Editor 對話框。

(8)選擇Project | Edit Variables for work1.apj,彈出Edit Variables for work1.apj 對話框。

2.進行程序的在線仿真、調試

1.6 實驗過程與分析

熟悉UP-net3000實驗平臺的硬件電路和外設,安裝了ARM JTAG,利用超級終端檢驗了外設的工作狀態。

1.7 實驗結果總結

軟件安裝成功,結果顯示正常。

1.8 心得體會

通過此次試驗,我對ARM的環境的功能有一定的了解與完善。對試驗臺有了基本的認識與使用。

2.實驗二

2.1 實驗名稱

嵌入式系統軟件開發環境

2.2 實驗目的

1.熟悉ADS1.2 開發環境,學會ARM 仿真器的使用。

2.使用ADS 編譯、下載、調試并跟蹤一段已有的程序,了解嵌入式開發的基本思想和過程。

2.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

2.4 實驗內容及要求

本次實驗使用ADS 集成開發環境。新建一個簡單的工程文件,并編譯這個工程文件。學習ARM 仿真器的使用和開發環境的設置。下載已經編譯好的文件到嵌入式控制器中運行。學會在程序中設置斷點,觀察系統內存和變量。

2.5 實驗設計與實驗步驟

(1)運行ADS1.2 集成開發環境(CodeWarrior for ARM Developer Suite)。

(2)在新建的工程中,選擇Debug 版本,使用Edit | Debug Settings菜單對Debug 版本進行參數設置。(3)在Debug Settings 對話框中選擇Target Settings 項。在Post-linker一欄中選擇ARM from ELF。

(4)在Debug Settings 對話框中選擇ARM Linker 項

(5)在第四步中如果選擇簡單的地址連接設置,在Debug Settings 對話框中選擇ARM Linker 項

(6)回到的工程窗口中,選擇Release 版本,使用Edit | Release Settings 菜單對Release 版本進行參數設置。(7)參照第(3)、(4)、(5)、(6)步在Release Settings 對話框中設置Release版本的Post-linker、連接地址范圍、入口模塊和輸出文件。(8)回到如圖1B-3 所示的工程窗口中,選擇Targets 選項卡,如圖1B-11 所示。選中DebugRel 版本,按Del 鍵將其刪除。DebugRel 子樹是一個折衷版本,通常用不到,所以在這里刪除。

2.6 實驗過程與分析

1)回到工程窗口選中Debug 版本,執行菜單Project | Make 對工程進行編譯連接。(2)在ADS 中執行菜單Project | Debug 啟動ADS1.2 的調試工具AXD。(3)在AXD 中執行菜單Options | Configure Target 對AXD 進行設置。(4)點Select 按鈕選擇遠程連接為ARM ethernet driver,點Configure 按鈕輸入仿真器的IP 地址。

(5)等待程序裝載完畢以后,通過Execute | Go 菜單以及Execute | Stop(或者工具欄中的相應按鈕)運行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。(6)通過Execute | Step 菜單(或者工具欄中的相應按鈕)可以單步運行程序。

(7)程序停止后可以通過Processor Views | Sources 菜單查看源文件,并可在適當位置按F9 設置端點。

(8)使用在Processor View 菜單下的Registers、Variables 和Memory 命令可以查看工作寄存器或者內存變量。讀者可以逐一地嘗試,為以后調試程序打下基礎。

2.7 實驗結果總結

超級終端輸出“Hello World!”。

2.8 心得體會

基本了解了ADS1.2的配置條件,學會了ARM仿真器的使用方法。

3.實驗三

3.1 實驗名稱

鍵盤及LED實驗

3.2 實驗目的

1.學習鍵盤及LED 驅動原理。

2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅動17鍵的鍵盤和8個共陰極LED。

3.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

3.4 實驗內容及要求

通過ZLG7289芯片驅動17鍵的鍵盤和8個共陰極LED,將按鍵值在LED上顯示出來。要求從右至左循環顯示至少四位數字。

基本功能實現之后可考慮實現從左至右顯示四位及四位以上數字(最大八位),并可設置清零鍵等擴展功能。

3.5 實驗設計與實驗步驟

利用所給的基礎代碼進行調試,觀察輸出結果,結合指導書和教材掌握基本原理和源代碼的編寫方式。根據實驗的要求設計函數流程,并反復調試,實現功能。1.新建工程,將“Exp3 鍵盤及LED 驅動實驗”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h)

#define ZLG7289_CS(0x20)//GPB5 #define ZLG7289_KEY(0x10)//GPG4 #define ZLG7289_ENABLE()do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON;rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0)#define ZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand;rSIOCON=ZLG7289SIOCtrl;}while(0)3.編寫ZLG7289 驅動函數(ZLG7289.c)4.定義鍵盤映射表:(Keyboard16.c)

unsigned char KeyBoard_Map[]= {4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//64 鍵值映射表,通過查找鍵盤映射表來確定鍵盤掃描碼對應的按鍵值。

5.定義鍵值讀取函數。(Keyboard16.c)6.編寫主函數,將按鍵值在數碼管上顯示。

3.6 實驗過程與分析

利用鍵盤驅動函數實現基本數字輸入,然后利用循環左移函數實現輸入數字做一樣功能,并通過改變函數中相應delay的值來消除鍵盤按鍵帶來的抖動。

3.7 實驗結果總結

按鍵值可以在LED上顯示出來。要求從右至左循環顯示八位數字,同時可以復位清零。達到實驗的效果。

3.8 心得體會

通過本次實驗,我了解了LED的顯示屏幕的數字的移位功能,這個功能不止可以用一個方法實現,而循環左移是其中比較巧妙且省力的一種,在遇到類似情況的時候,可以優先考慮能不能利用到文件中已經存在的函數,這樣可以不必自己編寫函數,省時省力。是一種可靠的方法。4.實驗四

4.1 實驗名稱

電機轉動控制及中斷實驗

4.2 實驗目的

1.熟悉ARM本身自帶的六路即三對PWM,掌握相應寄存器的配置。

2.編程實現ARM系統的PWM輸出和I/O輸出,前者用于控制直流電機,后者用于控制步進電機。

3.了解直流電機和步進電機的工作原理,學會用軟件的方法實現步進電機的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。

4.了解44B0處理器上中斷的應用。5.學習在44B0處理器上中斷的應用。

6.進一步熟悉平臺外圍硬件及其驅動程序的編寫。

4.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

4.4 實驗內容及要求

1.學習步進電機和直流電機的工作原理,了解實現兩個電機轉動對于系統的軟件和硬件要求。學習ARM 知識,掌握 PWM 的生成方法,同時也要掌握 I/O的控制方法。

2.編程實現ARM芯片的一對PWM輸出用于控制直流電機的轉動,通過A/D旋鈕控制其轉動方式。

3.編程實現ARM的四路I/O通道,實現環形脈沖分配用于控制步進電機的轉動,通過A/D旋鈕控制步進電機的轉角。

4.通過鍵盤控制直流電機與步進電機的切換。5.設置并啟動定時器。

6.設置中斷,編寫定時器中斷服務程序,對中斷次數進行計數并在LED上顯示結果。

4.5 實驗設計與實驗步驟

1.添加并打開工程。

2.進行直流電機初始化設置和代碼編寫。3.進行步進電機初始化設置和代碼編寫。

4.對Timer3編程,編寫定時器中斷服務程序,完成對中斷次數的計數。5.編寫LED計數顯示函數,使LED能正確計數并顯示0-9999。6.編寫中斷初始化函數和中斷響應函數。7.終端下載測試。

4.6 實驗過程與分析 1.對直流電機進行編程和測試,掌握轉速和旋轉方向的設定方法。

2.對步進電機進行編程和測試,掌握ARM的四路I/O通道,實現環形脈沖分配用于控制步進電機的轉動,通過A/D旋鈕控制步進電機的轉角。

3.對主函數進行編程,用鍵盤響應直流電機與步進電機的切換控制。

4.掌握中斷相關語句的應用,弄清定義的中斷向量、中斷向量號,編寫中斷響應函數,并完成中斷響應控制。

4.7 實驗結果總結

實現了直流電機與步進電機的基本設置和控制,可以通過鍵盤控制電機之間的切換。完成了中斷的響應和定時中斷。當對其中一個旋鈕轉動時,就可以由直流電機轉換成步進電機的轉換,達到實驗的效果。

4.8 心得體會

通過本次實驗,我了解了直流電機和步進電機的工作原理,同時也知曉了電機間的轉換過程,了解其中的道理內涵,熟悉了ARM自帶的A/D轉換器的工作原理及編程方法,了解了中斷的意義和實現方法,實現了簡單了中斷處理程序。同時我也收獲了很多關于ARM處理機的相關知識。

5.實驗五

5.1 實驗名稱

觸摸屏驅動實驗

5.2 實驗目的

1.了解觸摸屏的基本概念與原理。

2.理解觸摸屏與LCD的關系。3.編程實現對觸摸屏的控制。

4.熟悉用 ARM 內置的 LCD控制器驅動 LCD。

5.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

5.4 實驗內容及要求

1.了解觸摸屏基本原理,理解對觸摸屏進行輸出標定、與LCD顯示器配合的過程。2.通過編程實現觸摸兩點自動在兩點間劃直線。3.通過編程實現在觸摸屏上動態畫出曲線。5.5 實驗設計與實驗步驟

1.添加并打開工程。

2.在頭文件中定義宏和常量及驅動函數。

#define ADS7843_CTRL_START 0x80 #define ADS7843_GET_X 0x50 #define ADS7843_GET_Y 0x10 #define ADS7843_CTRL_12MODE 0x0 #define ADS7843_CTRL_8MODE 0x8 #define ADS7843_CTRL_SER 0x4 #define ADS7843_CTRL_DFR 0x0 #define ADS7843_CTRL_DISPWD 0x3 // Disable power down #define ADS7843_CTRL_ENPWD 0x0 // enable power down #define ADS7843_PIN_CS(1<<6)//GPF6 #define ADS7843_PIN_PEN(1<<5)//GPG5 /////////觸摸屏動作//////// #define TCHSCR_ACTION_NULL 0 #define TCHSCR_ACTION_CLICK 1 //觸摸屏單擊 #define TCHSCR_ACTION_DBCLICK 2 //觸摸屏雙擊 #define TCHSCR_ACTION_DOWN 3 //觸摸屏按下 #define TCHSCR_ACTION_UP 4 //觸摸屏抬起 #define TCHSCR_ACTION_MOVE 5 //觸摸屏移動

#define TCHSCR_IsPenNotDown()(rPDATG&ADS7843_PIN_PEN)(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)//采樣x 軸電壓值,數據為12 位,參考電壓輸入模式為差分模式,允許省電模式

#defineADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)int TchScr_Xmax=1840,TchScr_Xmin=176, TchScr_Ymax=195,TchScr_Ymin=1910;//觸摸屏返回電壓值范圍 #defineADS7843_CMD_X 3.校準觸摸屏坐標,進行坐標轉換。

4.實現觸屏取點并顯示功能。

將觸摸動作及觸摸點坐標在超級終端上顯示出來。5.實現兩點間自動劃線功能。6.實現觸摸屏動態劃線功能。

可以使用TchScr_GetScrXY()函數(第三個參數為0)來獲得液晶屏的x、y 方向的電壓

范圍,分別點觸摸屏有效面積的左上角和右下角,得到下列參數:

TchScr_Xmax=1840;TchScr_Xmin=176;TchScr_Ymax=195;TchScr_Ymin=1910;//此數值僅供參考,請以實際校對為準

5.6 實驗過程與分析 1.在定義觸屏響應功能的函數中對點擊觸屏進行響應函數的修改,在其中添加修改點顏色的函數,修改得到的觸摸點的顏色,并顯示在LCD上。

2.獲取第一個點坐標并儲存,獲取第二個點坐標并儲存,由編寫的劃線函數取得儲存的兩點間直線上所有點的坐標,并對其改變顏色,顯示在LCD上,即完成劃直線功能。

3.將劃線函數應用到響應觸屏移動消息的函數下,即可對連續獲得的觸摸坐標進行連續的畫短直線,連接成曲線,完成動態劃線功能。

5.7 實驗結果總結

了解了觸摸屏響應動作消息的函數的工作原理,通過修改實現了觸摸屏響應不同動作進行畫點、劃線、動態劃線的功能。驗證觸摸屏的靈敏度的實驗。

5.8 心得體會

通過這次實驗,我基本掌握了通過編程驅動觸摸屏以及觸摸屏響應時間,實現了觸摸屏對不同動作消息的響應。同時也知曉了在觸摸屏上的描點畫線的實現,但是由于不知名的原因,描點畫線的誤差較大,位置偏差較大,同時觸摸屏有時會不靈敏,出現時好時壞的現象,但是由于我們的辛勤鉆研,最終克服了這個困難,實現了最后的觸摸屏的實現。

6.實驗六

6.1 實驗名稱

UCOS-Ⅱ在ARM微處理器上的裁剪

6.2 實驗目的

1.了解UCOS-Ⅱ內核的主要結構。

2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現方法。3.學習如何根據具體情況對UCOS-Ⅱ操作系統進行裁剪。

4.通過對UCOS-Ⅱ配置文件(OS_CFG.H)中相關的配置常量進行設置,實現對UCOS-Ⅱ的裁剪。

6.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

6.4 實驗內容及要求

對UCOS-Ⅱ內核進行裁剪并移植到ARM7微處理器上。

6.5 實驗設計與實驗步驟 1.按照要求,載入STARTUP目錄下文件,完成系統初始化、環境配置。2.載入UCOS-Ⅱ的全部源碼,與處理器架構相關的文件位于arch目錄下。3.在os_cpu.h中編寫與處理器和編譯器相關的代碼。

4.編寫os_cpu_c.c等6個與操作系統相關的函數。5.編寫os_cpu.asm等4個與處理器相關的函數。

6.6 實驗過程與分析

按照實驗步驟進行,得到了需要的系統。

6.7 實驗結果總結

按照要求進行了裁剪,得到了滿足需要又緊湊的應用軟件系統。

6.8 心得體會

通過本次實驗,我了解了UCOS-Ⅱ內核的主要結構,掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現方法,學會了如何根據具體情況對UCOS-Ⅱ操作系統進行裁剪。

7.實驗七

7.1 實驗名稱

UCOS-Ⅱ在ARM微處理器上的移植和編譯

7.2 實驗目的

1.了解UCOS-Ⅱ內核的主要結構。

2.掌握將UCOS-Ⅱ內核移植到ARM7處理器上的基本方法。

7.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

7.4 實驗內容及要求

1.將UCOS-Ⅱ內核進行移植到ARM7微處理器上。

2.編寫兩個簡單任務,在超級終端上觀察兩個任務的切換。

7.5 實驗設計與實驗步驟

1.該實驗的文件分為兩類,其一是 STARTUP 目錄下的系統初始化、配置等文件,其二是 UCOS-Ⅱ的全部源碼,arch 目錄下的 3 個文件是和處理器架構相關的。

2.設置 os_cpu.h 中與處理器和編譯器相關的代碼。

3.用 C 語言編寫 6 個操作系統相關的函數(OS_CPU_C.C)。4.用匯編語言編寫 4 個與處理器相關的函數(OS_CPU.ASM)。5.編寫一個簡單的多任務程序來測試一下移植是否成功。6.編譯并下載移植后的 UCOS-Ⅱ。

7.6 實驗過程與分析

1.按照實驗步驟進行,將μC/OS-II 內核移植到了ARM7 微處理器上。2編寫了兩個簡單任務,在超級終端上觀察兩個任務的切換。

7.7 實驗結果總結

將μC/OS-II 內核順利移植到了ARM7 微處理器上。

7.8 心得體會

通過本次實驗,使我更加了解了μC/OS-II 內核的主要結構,掌握了ARM的C語言和匯編語言的編程方法,了解了ARM7處理器結構,掌握了將μC/OS-II 內核移植到ARM 7 處理器上的基本原理與嵌入式編程實現方法。

8.實驗八

8.1 實驗名稱

綜合實驗

8.2 實驗目的

對前七次實驗進行總結,應用之前所學的知識,將前幾次實驗內容結合起來,完成鍵盤,LED,觸摸屏,直流電機,步進電機各種功能的組合。實現一個較為全面的功能結構。

8.3 實驗環境

硬件:ARM 嵌入式開發平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。

軟件:PC 機操作系統win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發 環境、仿真器驅動程序、超級終端通訊程序。

8.4 實驗內容及要求

對前七次實驗進行總結,應用之前所學的知識,完成自擬的嵌入式系統,要求綜合前期基礎實驗的各種功能。

8.5 實驗設計與實驗步驟

1.添加并打開工程。2.進行LCD設計,在LCD顯示屏輸出文本。

3.進行LED及鍵盤設計,完成LED輸出顯示功能和鍵盤輸入功能。4.進行電機控制設計,完成鍵盤控制電機轉動功能。5.進行中斷設計,完成定時中斷功能。

6.進行觸摸屏設計,完成觸摸屏感應和劃線功能。7.進行裁剪和移植功能設計和完成。

8.6 實驗過程與分析

1.完成LCD顯示功能,在LCD顯示屏上輸出文本:“Hello World!”。2.進入界面觸屏控制選擇功能,實現觸屏選擇功能。

3.自定義四種種功能,第一為電機控制,從鍵盤讀取命令,并將功能編號顯示在LED上,LED顯示的是計數的數據,同時旋轉按鈕完成電機轉速的控制選擇。

4.第三種功能為劃線,功能編號顯示在LED高四位上,同時LCD屏幕清屏,為劃線功能做準備,可以實現劃線功能。

5.第四種功能為定時中斷,當由鍵盤控制時,LED顯示數值清零,實現了中斷。6.實現裁剪與移植功能。

8.7 實驗結果總結

完成了各種基本功能,并通過自擬的系統將各種功能整合起來,完成了一個小的嵌入式系統,對前七次的功能有了更深入的了解。通過LED的計數,當在計數值在前30秒之內,由鍵盤控制LED的數值及顯示,按鍵盤上的某一個按鍵,實現對LED上的數值清零,后30秒由觸摸屏控制清零,并且在前30秒之內,旋轉按鈕,實現對直流電機的運轉,并且到步進電機的轉換。

8.8 心得體會

通過這次實驗,我更加深刻地掌握了前幾次實驗中的基本功能的實現方法,并且把幾種功能聯合在一起,實現一些功能,把LED 顯示屏,LCD觸摸屏,鍵盤,直流電機,步進電機等等設備聯合在一起,對該實驗有一定的幫助與提高,而我和我的隊友也對嵌入式系統有了更深入的了解,在此期間,也學習了關于ARM處理器的開發與實踐,了解了關于手機的嵌入式設備的產生過程,我也深深的對此充滿了興趣,對未來的嵌入式課程設計奠定了深厚的基礎,可是令我遺憾的是,我和隊員的水平所限,沒有完成中斷優先級的控制。本來想完成更多的功能,可是最后由于時間緊迫,也有一些其他的事情來分神分心,所以就只能完成這些,但是在未來的幾周內,嵌入式課程設計也給了我們很大的空間去做未完成的事情。我相信我們會做的更加完美,功能更強大,用于未來的生活中去實踐。

第四篇:《嵌入式系統設計》教學大綱

《嵌入式系統設計》課程教學大綱

嵌入式系統設計(Design of Embedded Systems)

一、課程教學目的和基本要求

教學目的:

嵌入式系統技術已被廣泛地應用于工業控制系統、信息家電、通信設備、醫療儀器、智能儀器儀表等眾多領域。如手機、PDA、MP3、手持設備、智能電話、機頂盒等,可以說嵌入式系統無處不在。本課程講述當前主流的嵌入式處理器—ARM的微處理器和實時操作系統μC/OS,介紹嵌入式系統的基本原理和應用及設計方法。通過本課程的學習,著重培養學生的實際動手能力,使學生掌握ARM的系統結構、指令系統、程序設計方法、系統擴展方法、應用及開發技術等。使學生在工作中具有利用嵌入式系統開發產品和解決實際問題的基本能力。

基本要求:

1、掌握嵌入式系統技術的基本原理。

2、了解并掌握ARM的系統結構、指令系統、程序設計方法、系統擴展方法、應用及開發技術等。

3、比較熟練地用ADS進行ARM實驗箱的編程及調試。

4、了解并掌握實時操作系統μC/OS,并學會用μC/OS開發小型應用系統。

二、先修課程及本課程總學時

先修課程:C程序設計語言、單片機原理 本課程總學時:36

三、課程章節及各章節學時安排

第一章 嵌入式系統概述(2學時)

第二章 嵌入式系統硬件基礎(2學時)

第三章 設計方法及ADS集成開發環境(4學時)

第一節 嵌入式系統的設計方法(2學時)第二節 ADS集成開發環境(2學時)第四章 ARM7體系結構(4學時)

第一節ARM7體系結構介紹(2學時)第二節ARM7TDMI(-S)指令集簡介。(2學時)第五章 ARM指令集(8學時)

第一節 ARM處理器尋址方式。(2學時)第二節ARM指令集。(2學時)第三節ARM匯編程序設計。(2學時)第四節C與匯編混合編程。(2學時)第六章 硬件結構與功能(12學時)第一節 LPC2106/2105/2104結構(2學時)第二節 GPIO及引腳連接模塊。(2學時)

第三節 UART0和UART1、I2C接口、SPI接口。(2學時)第四節 定時器0和定時器1。(2學時)第五節 脈寬調制器(PWM)。(2學時)

第六節 看門狗及Flash存儲器系統和編程。(2學時)第七章 μC/0S-II程序設計(4學時)

第一節 μC/0S-II簡介及移植(2學時)第二節 移植μC/0S-II。(2學時)

四、課程主要內容

第一章 嵌入式系統概述(2學時)

1、嵌入式系統簡介(包括什么是嵌入式系統,嵌入式系統的特點,嵌入式系統的分類)。

2、嵌入式系統的應用領域。

3、嵌入式系統的現狀和發展趨勢。

4、嵌入式微處理器和嵌入式操作系統。

5、嵌入式系統中的一些重要概念。難點:什么是嵌入式系統。

第二章 嵌入式系統硬件基礎(2學時)

1、嵌入式系統的總體結構。

2、與嵌入式系統相關的硬件知識。難點:總體結構。

第三章 設計方法及ADS集成開發環境(4學時)第一節 嵌入式系統的設計方法

包括嵌入式系統的設計流程,嵌入式系統的一般設計方法,嵌入式系統的硬件/軟件協同設計技術。第二節 ADS集成開發環境

1、ADS 1.2 集成開發環境的組成

2、工程的編輯

3、工程的調試

4、仿真器的安裝與應用 難點:調試、仿真器。

第四章 ARM7體系結構(4學時)第一節ARM7體系結構介紹

1、處理器模式。

2、內部寄存器。

3、程序狀態寄存器。

4、異常。

第二節ARM7TDMI(-S)指令集簡介。難點:異常。

第五章 ARM指令集(8學時)第一節 ARM處理器尋址方式。第二節ARM指令集。

第三節ARM匯編程序設計。第四節C與匯編混合編程。難點:ARM匯編程序設計。

第六章 硬件結構與功能(12學時)第一節 LPC2106/2105/2104結構

1、存儲器尋址。

2、系統控制模塊。

3、存儲器加速模塊。

4、向量中斷控制器。

第二節 GPIO及引腳連接模塊。

第三節 UART0和UART1、I2C接口、SPI接口。第四節 定時器0和定時器1。第五節 脈寬調制器(PWM)。

第六節 看門狗及Flash存儲器系統和編程。

難點:存儲器重新映射,編程實現功能部件的初始化和控制。本章實驗:LPC2106/2105/2104功能部件基礎實驗。

第七章 μC/0S-II程序設計(4學時)第一節 μC/0S-II簡介及移植

1、移植規則。

2、編寫LPC2106/2105/2104的啟動代碼。第二節 移植μC/0S-II。難點:移植μC/0S-II。本章實驗:學習移植μC/0S-II。

五、教材及主要參考書

教材:

《嵌入式系統設計與開發》,馬文華,科學出版社,2006年

主要參考書:

[1] 田苗苗.嵌入式控制系統.北京航空航天大學出版社,2002年 [2] 呂 駿 譯.嵌入式系統設計.電子工業出版社,2002年

[3] 周立功等.ARM微控制器基礎與實戰.北京航空航天大學出版社,2003年

[4] 李駒光等.ARM應用系統開發祥解.清華大學出版社,2003年

[5] 劭貝貝譯.uCOS-II-源代碼公開的實時嵌入式操作系統.中國電力出版社,2001年 [6] 田苗苗.嵌入式系統設計與實例開發.清華大學出版社,2002年 [7] 袁勤勇等譯.嵌入式系統構件.機械工業出版社,2002年 [8] 田苗苗.《實用嵌入式系統設計與開發—基于ARM微處理器與μCOS-II實時操作系統》(第二版),清華大學出版社,2003.9 [9] 邵貝貝譯.《源代碼公開的實時嵌入式操作系統——μCOS-II》,北京航空航天大學出版社,2003年

六、其他需要說明的情況

1.采用多媒體教學。

2.實驗課單列,每周2學時。

3.每周作業量2~3小時,主要針對基本概念、開發環境的操作和編程。

七、成績評定

1.理論考核

占60% 2.實踐考核

占40%(其中包括:實驗、作業、課堂提問、學生自行設計制作的作品)。

第五篇:《嵌入式系統設計》教案

嵌入式系統設計教案

課程總學時: 32 講課學時: 24 實驗學時: 8 授 課 人: 楊詞慧

南昌航空大學信息工程學院

目錄 嵌入式系統概述.......................................................................................................................1 1.1 嵌入式系統的基本概念...............................................................................................1 1.2 嵌入式系統的發展歷史...............................................................................................2 1.3 嵌入式系統的體系結構...............................................................................................2 1.4 嵌入式處理器...............................................................................................................3 1.5 嵌入式操作系統...........................................................................................................4 1.6 嵌入式系統的應用及發展趨勢...................................................................................7 ARM體系結構.........................................................................................................................8 2.1 ARM設計思想.............................................................................................................8 2.2 ARM體系結構分析.....................................................................................................9 2.3 ARM處理器系列.......................................................................................................11 2.4 ARM處理器模式.......................................................................................................15 2.5 ARM體系的異常處理...............................................................................................16 2.6 ARM內部寄存器.......................................................................................................18 2.7 ARM體系的存儲系統...............................................................................................19 ARM指令系統及程序設計基礎...........................................................................................21 3.1 ARM尋址方式...........................................................................................................21 3.2 ARM指令集...............................................................................................................24 3.3 Thumb指令集............................................................................................................33 3.4............................................................................................................................................35 3.5............................................................................................................................................35 3.6 嵌入式系統設計與開發過程.....................................................................................36 STM32微控制器...................................................................................................................37 4.1 STM32微控制器的性能指標....................................................................................37 2 3 4

I 嵌入式系統概述

教學目的:使學生對嵌入式系統的基本概念和體系結構、嵌入式處理器、嵌入式操作系統、嵌入式系統的歷史、應用及發展趨勢有一定的了解。

教學重點:嵌入式系統的基本概念、嵌入式處理器和嵌入式操作系統。教學難點:嵌入式系統的體系結構、嵌入式處理器。教學方法與教學手段:課堂講授,多媒體教學。教學時間:2課時。教學內容

1.1 嵌入式系統的基本概念

(1)嵌入式系統的定義

先舉例說明生活中的各種嵌入式系統設備,如iPhone、小米手機、洗衣機、電壓力鍋等。IEEE(國際電氣和電子工程師協會)的定義:嵌入式系統是用于控制、監視或者輔助操作機器和設備的裝置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。

微機學會的定義:嵌入式系統是以嵌入式應用為目的的計算機系統,可分為系統級、板級和片級。a)系統級:各種類型的工控機、PC104等模塊。b)板級:各種類型的帶CPU的主板或OEM產品。c)片級:各種以單片機、DSP、微處理器為核心的產品。

一般定義:嵌入式系統是以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,對功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統。

(2)嵌入式系統的特點 a)專用、軟硬件可剪裁配置。b)低功耗、高可靠性、高穩定性。c)軟件代碼矮小精悍。d)代碼可固化。e)實時性。f)弱交互性。

g)軟件開發通常需要專門的開發工具、環境和方法。h)要求開發、設計人員具有較高的技能。i)具有較長的生命周期。(3)嵌入式系統的分類

按嵌入式微處理器的位數可分為:4位、8位、16位、32位和64位。按實時性能可分為:非實時系統和實時系統。

按軟件結構可分為:嵌入式單線程系統和嵌入式事件驅動系統。

按應用領域可分為:信息家電類、消費電子類、醫療電子類、移動終端類、通信類、汽車電子類、工業控制類、航空電子類、軍事電子類等。

1.2 嵌入式系統的發展歷史

(1)以單芯片為核心的可編程控制器形成的系統

1971年11月,Intel推出Intel 4004。隨后出現Intel 8080/8085、8086、Motorola的6800、68000,Zilog的Z80、Z8000。

以微處理器為核心構成的系統

單板機:Intel的iSBC系列、Zilog的MCB等

將計算機做在一個芯片上,大部分應用于專業性強的工業控制系統中,沒有操作系統的支持,系統結構和功能相對單一,處理效率較低,存儲容量較小。

(2)以嵌入式CPU為基礎、以簡單操作系統為核心的嵌入式系統

CPU種類繁多,通用性較弱;系統開銷小,效率高;操作系統達到一定的兼容性和擴展性;應用軟件較專業化,用戶界面不夠友好。

(3)以嵌入式操作系統為標志的嵌入式系統

嵌入式操作系統可運行于各種不同類型的微處理器上,兼容性好;操作系統內核小,效率高;具備文件和目錄管理,支持多任務、網絡應用,具備圖形窗口和用戶界面;有大量的應用程序接口API。

(4)以Internet為標志的嵌入式系統 嵌入式設備與Internet的結合。

1.3 嵌入式系統的體系結構

(1)體系結構

(2)硬件層

? 嵌入式處理器:ARM、DSP、FPGA ? 存儲器系統:ROM、FLASH、SDRAM ? 中斷控制器、DMAC、定時器/計數器、UART、USB控制器、LCD控制器等 ? I/O接口:USB、I2C、SPI、CAN等

(3)中間層

? 硬件抽象層(Hardware Abstraction Layer, HAL)。位于操作系統內核與硬件電路之間的接口層,隱藏硬件接口細節。

? 板級支持包(Board Support Package, BSP)。為上層的驅動程序提供訪問硬件設備寄存器的函數包。? 設備驅動程序

1.4 嵌入式處理器

(1)嵌入式處理器的分類

中高端的嵌入式微處理器(Embedded Micro-Processor Unit, EMPU)低端的微控制器(Microcontroller Unit, MCU)DSP處理器(Digital Signal Processor, DSP)高度集成的片上系統(System on Chip, SoC)(2)嵌入式微處理器

由通用計算機中的CPU演變而來,只保留與嵌入式應用緊密相關的功能硬件,在工作溫度、抗電磁干擾、可靠性、功耗等方面做了各種增強。

主要的嵌入式處理器類型:ARM、MIPS、PowerPC、68000系列等。特點

a)在設計中考慮低功耗。

b)采用可擴展的處理器結構。處理器內部留有很多擴展接口。c)具有很強的存儲區保護功能。d)提供豐富的調試功能。

e)對實時任務具有很強的支持能力。(3)微控制器

俗稱單片機,將整個計算機系統集成到一塊芯片中。

WatchWatchdogdogGPIO/計數GPIOUARTUART定時定時/計數A/DA/DD/A器D/A器2CCANCANII2CSPISPIUSBUSBCPUCPUSRAMSRAM核心部分FlashFlash8位單片機示意圖以一種微處理器為核心,芯片內部集成Flash、RAM、總線邏輯、定時器/計數器、I/O口、串行口、PWM、A/D、D/A等。

最早的單片機: 1976年,Intel的8048,Motorola的68HC05、Zilog公司的Z80.(4)DSP處理器

對系統結構和指令進行了特殊設計,使其適合DSP算法 高效乘累加運算、超標量操作、指令流水線 高效數據存取、硬件重復循環 確定性操作(程序執行時間可預測)應用場合:音視頻編解碼、數字濾波、FFT等(5)片上系統

將整個系統做在一個芯片上 優點

a)通過改變內部工作電壓,降低芯片功耗 b)減少芯片對外的引腳數,簡化制造過程

c)減少外圍驅動接口單元及電路板之間的信號傳遞,加快微處理器數據處理的速度 d)內嵌線路可避免信號傳遞時所造成的系統雜訊 聯發科推出28nm雙核處理器MT6572 a)代號武松,基于Cortex-A7架構 b)主頻為1.2GHz c)處理器上整合了Wi-Fi、FM收音機、GPS以及藍牙四種功能 d)支持500萬像素攝像頭(6)嵌入式處理器的發展趨勢 a)內部結構

SoC設計,與DSP、Flash、FPGA融合;性能更強,集成更多的功能部件;雙核或多核結構 b)功耗更低 c)可靠性更高 d)支持ISP、ISD 1.5 嵌入式操作系統

(1)操作系統的概念及功能

操作系統。是一組計算機程序的集合,用來有效地控制和管理計算機的硬件和軟件資源,并為用戶提供方便的應用接口。

功能:處理器管理;存儲器管理;設備管理;文件管理;用戶接口(2)操作系統的分類 按程序調度的方法分為

? 順序操作系統。只含一個運行程序,獨占CPU時間,順序執行。如DOS系統。? 分時操作系統。系統內同時有多道程序運行。如Unix系統。? 實時操作系統。

從應用角度,嵌入式操作系統可分為 ? 面向低端信息家電

? 面向高端信息家電 ? 面向個人通信終端 ? 面向通信設備 ? 面向汽車電子 ? 面向工業控制

從實時性的角度,嵌入式操作系統可分為 ? 具有強實時特點的嵌入式操作系統 ? 具有弱實時特點的嵌入式操作系統 ? 沒有實時特點的嵌入式操作系統(3)實時操作系統(RTOS)

是具有實時性且能支持實時控制系統工作的操作系統,首要任務是調度一切可利用的資源來完成控制任務。

對現場不停監測,一旦有事件發生能立即處理。與通用OS的區別:實時性,代碼尺寸小。一般包括以下幾個重要組成部分:

? 實時內核:任務管理、定時器管理、存儲器管理、任務間通信與同步等。? 網絡組件 ? 文件系統 ? 圖形用戶界面

IEEE的Unix委員會規定了實時操作系統須具備以下幾個特點: ? 支持異步事件的響應。? 中斷和調度任務的優先機制。? 支持指令性計劃占式調度。? 支持同步。

(4)常見的嵌入式操作系統 嵌入式Linux ? 實時的嵌入式Linux:如RT-Linux、KURT-Linux等。RT-Linux將通常的Linux任務優先級設為最低。

? 一般的嵌入式Linux:如μCLinux。? 開源,內核小、效率高,可定制 μC/OS和μC/OS-II ? μC/OS-II(MicroController Operating System)是由Jean J.Labrosse開發的實時操作系統內核。

? 已被移植到Intel、ARM、Motorola等公司的81種不同的處理器上。

? Labrosse用一年時間開發了μC/OS實時操作系統; 1992年在《Embedded System Programming》上 發表介紹文章,并公布源代碼;1993年寫了《μC/OS, The Real-Time Kernel》;書及源碼推動了μC/OS-II的發展。

? μC/OS-II只是一個實時操作系統的內核,全部核心代碼只有8.3 KB。? 只包含進程調度、時鐘管理、內存管理和進程間的通信與同步等基本功能。Windows CE ? 多線程、完整優先權、多任務的32位嵌入式操作系統。? 基本內核大小至少為200KB。VxWorks ? 美國WindRiver公司于1983年設計

? 是目前嵌入式系統領域中使用最廣泛、市場占有率最高的系統。? 擁有良好的持續發展能力和高性能的內核及友好的用戶開發環境。

? 支持多種處理器,如ARM、x86、i960、SunSparc、MIPS RX000、PowerPC、StrongARM等。? 以良好的可靠性和實時性,廣泛應用在通信、軍事、航空、航天等領域。

? 應用案例:美國F-

16、FA-18戰斗機,B-2隱形轟炸機,“愛國者”導彈,1997年4月在火星登陸的火星探測器。Palm OS ? 32位嵌入式操作系統,由3Com公司的Palm Computing部門開發。

? 在掌上電腦和PDA市場上占有很大的市場份額,曾占據90%的PDA市場份額。? 2010年04月29日惠普12億美元收購Palm QNX ? 一個實時、可擴充的操作系統。

? 部分遵循POSIX(可移植操作系統接口)相關標準。

? 內核僅提供4種服務:進程調度、進程間通信、底層網絡通信和中斷處理。? 內核非常小巧(QNX4.X約為12KB),運行速度極快。iOS ? 蘋果推出,基于Darwin ? 最新:iOS8 Android ? Google開發的基于Linux平臺的開源手機操作系統 Delta OS ? 是電子科技大學實時系統教研室和北京科銀京成技術有限公司聯合研制并開發的全中文嵌入式操作系統。

? 絕大部分代碼由C語言編寫。

? 已成功應用于通信、網絡、信息家電等多個應用領域。pSOS ISI公司研發的產品。

模塊化、高性能、完全可擴展。

1.6 嵌入式系統的應用及發展趨勢

(1)嵌入式系統的應用領域 ? 消費電子領域 ? 通信網絡領域

? 工業控制領域、機器人領域 ? 交通管理與汽車電子領域 ? 國防與航空航天領域 ? 醫療儀器領域

(2)嵌入式系統的發展趨勢

? 小型化、智能化、網絡化、可視化 ? 多核技術的應用 ? 低功耗、綠色環保

? 云計算、可重構、虛擬化等技術被進一步應用到嵌入式系統中 ? 嵌入式系統軟件將逐漸PC化 ? 融合趨勢

? 微控制器MCU與SoC的結合 ? 微控制器MCU與DSP的結合 ? ARM與DSP的結合

? 微控制器MCU與CPLD/FPGA的結合 ? 安全性 ARM體系結構

教學目的:使學生對ARM設計思想、ARM處理器系列、ARM體系結構、ARM處理器模式、ARM內部寄存器、ARM體系的存儲系統有一定的了解。

教學重點:ARM設計思想、ARM體系結構、ARM處理器模式、ARM內部寄存器。教學難點:ARM處理器模式、ARM內部寄存器。教學方法與教學手段:課堂講授,多媒體教學。教學時間:4課時。教學內容

2.1 ARM設計思想

(1)RISC 傳統的CISC(Complex Instruction Set Computing)指令集中,約20%指令占整個程序代碼的80%。RISC(Reduced Instruction Set Computing)是一種設計思想,其目標是設計出一套能在高時鐘頻率下單周期執行、簡單而有效的指令集。

RISC設計重點在于降低硬件執行指令的復雜度,而傳統的CISC更側重于硬件執行指令的功能性,使CISC指令變得復雜。

(2)RISC設計思想的實現

? 指令集。減少了指令種類,指令只實現簡單的功能,指令長度固定。

? 流水線。指令的處理過程被拆分成幾個更小的、能夠被流水線并行執行的單元。

? 寄存器。更多通用寄存器,可存數據和地址,可為所有數據操作提供快速的局部存儲訪問。? load-store結構。處理器只處理寄存器中數據,用load和store指令完成寄存器和外存間的數據傳送

(3)ARM的設計思想 ? 較小的核。降低功耗

? 高的代碼密度。考慮成本和物理尺寸限制

? 較小的處理器內核管芯(Die)面積。留給外設電路的空間較大 ? 硬件調試技術(4)ARM微處理器的特點

? 體積小,功耗低,成本低,性能高; ? 支持Thumb/ARM指令集,兼容8/16位器件;

? 大量使用寄存器,指令執行速度更快; ? 大多數數據操作都在寄存器中完成; ? 尋址方式靈活簡單,執行效率高; ? 指令長度固定。

2.2 ARM體系結構分析

(1)包含典型 的RISC 體系結構特征

? 統一寄存器文件加載/存儲體系結構,數據處理操作只針對寄存器內容; ? 簡單尋址模式,所有加載/存儲地址只通過寄存器內容和指令字段確定。? 指令長度固定,簡化了指令譯碼。(2)還提供

? 可組合使用轉換與算術或邏輯運算指令 ? 自動遞增和自動遞減尋址模式,可優化程序循環 ? 加載存儲多個指令以最大化數據吞吐量 ? 幾乎所有指令都采取條件執行的方式(3)普林斯頓結構和哈佛結構

普林斯頓結構:也稱馮·諾伊曼結構,它將程序指令存儲器和數據存儲器合并在一起的存儲結構。ARM7系列基于普林斯頓結構。

哈佛結構:將程序指令存儲和數據存儲分開的存儲結構。ARM9系列之后都基于哈佛結構。

(4)流水線

ARM7的三級流水線在執行單元完成了大量的工作,執行單元的工作往往占用多個時鐘周期,從而成為系統性能的瓶頸。

ARM9采用哈佛架構,避免了數據訪問了取指的總路線沖突,采用五級流水線設計。

五級流水線技術把三級流水線中的執行單元進一步細化,減少了在每個時鐘周期內必須完成的工

作量,進而允許使用較高的時鐘頻率。

無論三級流水線還是五級流水線,在以下情況下都會發生阻塞: ? 多周期指令、跳轉分支指令 ? 中斷發生

? 相鄰指令之間的寄存器沖突:如果當前指令(A)的目的操作數寄存器和下一條指令(B)的源操作數寄存器一致,B指令就需要等A回寫之后才能譯碼。

(5)ARM體系結構的版本

2.3 ARM處理器系列

(1)ARM處理器系列

? 經典ARM處理器:ARM7、ARM9、ARM10、ARM11 ? Cortex-A系列處理器:Cortex-A15、Cortex-A9、Cortex-A8、Cortex-A7、Cortex-A5 ? Cortex-R系列處理器:Cortex-R7、Cortex-R5、Cortex-R4 ? Cortex-M系列處理器:Cortex-M4、Cortex-M3、Cortex-M1、Cortex-M0+、Cortex-M0、CMSDK、CMSIS ? SecurCore處理器(2)ARM內核版本命名規則

(3)ARM7系列微處理器 a)主要特點

? 最高主頻:130MIPS(Million Instructions Per Second); ? 功耗低;

? 代碼密度高,兼容16位的微處理器; ? 可得到廣泛的操作系統和實時操作系統支持; ? 眾多的開發工具,優秀的調試機制; ? 采用3級流水線結構;

? 提供0.25μm、0.18μm和0.13μm的生產工藝。b)馮·諾伊曼結構:數據和指令使用同一條總線。

c)包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T四種類型,適用于不同的市場要求 d)ARM7TDMI ? ARM公司最早為業界普遍認可并廣泛應用的處理器核。? T:Thumb;D:Debug;M:Multiplier;I:Embedded ICE logic。e)ARM7TDMI-S ? 是ARM7TDMI的可綜合(synthesizable)版本(軟核)。

? ARM以“軟”核的方式把ARM7TDMI核授權給處理器廠商,處理器廠商可進行修改和綜合。這就是ARM7TDMI-S。

? 綜合出的整個核比“硬”核大50%,電源效率降低50%。f)ARM7EJ-S ? 是可綜合的、帶有增強型DSP(E變種)和Java加速功能(J變種)的32位RISC嵌入式處理器。

? 主要用于數字音頻播放器、帶Java功能的無線手持設備、噴墨打印機、數碼相機和PDA等方面。

g)ARM720T ? 專為使用Windows CE、Symbian OS操作系統平臺設計。? 主要用于數字音頻播放器、噴墨打印機和數碼相機等。(4)ARM9系列微處理器 a)主要特點

? 5級整數流水線;

? 單一的32位AMBA(Advanced Microcontroller Bus Architecture)總線接口; ? MMU支持Windows CE、Symbian OS、Linux等; ? 支持實時操作系統,包括VxWorks; ? 統一的數據Cache和指令Cache;

? 提供0.25μm、0.18μm和0.13μm的生產工藝。

b)包括ARM9TDMI、ARM920T、ARM940T和ARM9E四種類型。后三種含有Cache。

c)采用Harvard體系結構

? 指令與數據分開存儲。? 采用指令快存 和數據快存。

d)在相同工藝條件下,ARM9TDMI的處理能力是ARM7TDMI的兩倍。e)ARM920T ?

Motorola MC9328MX1和Samsung S3C2410X處理器都采用ARM920T 核心。? 主要應用于通信終端、3G基帶和應用處理器、基于OS的平臺設備、數碼相機、音頻/視頻解碼和機頂盒等。

f)ARM940T ? 與ARM920T相比,實現了一個更小的D-Cache、I-Cache和MPU。適于不需運行操作系統的平臺。

g)ARM9E ? 使用單一的處理器核,提供微控制器、DSP、Java應用系統的解決方案; ? DSP指令集;

? 在0.13μm工藝下,主頻可達300MIPS的性能; ? 集成實時跟蹤調試功能; ? 可選的VFP9浮點處理協處理器;

? 高性能的AHB(Advanced High performance Bus)。(5)ARM10系列微處理器 a)主要特點

? 6級流水線;

? 在典型的0.13μm工藝下,主頻可達400MIPS的性能; ? 單一的32位AMBA 總線接口;

? MMU支持Windows CE、Symbian OS、Linux等; ? 統一的數據Cache和指令Cache;

? 提供0.25μm、0.18μm和0.13μm的生產工藝; ? 并行讀取/寫入部件。

b)包括:ARM1020、ARM10200、ARM1020E、ARM1022E、ARM1026EJ-S。c)使用ARM10TDMI處理器核,采用ARMv5T結構。d)ARM10TDMI ? 在相同工藝條件下,處理能力是ARM9TDMI的兩倍;

? 采用提高時鐘頻率、6級流水線、轉移預測邏輯、64位存儲器和無阻塞的存/取邏輯等措施提升性能。

e)ARM10E。新節能模式,64位Load/Store體系,與ARM10TDMI相比具有的特點

? DSP指令集;

? 可選的VFP10浮點處理協處理器;

? 在實時控制和三維圖像處理時,主頻可達650MFLPS(百萬次浮點運算每秒)。

(6)ARM11系列微處理器

? ARM1156T2-S內核、ARM1156T2F-S內核、ARM1176JZ-S內核和ARM11JZF-S內核 ? ARM1156T2-S內核和 ARM1156T2F-S內核 ? 基于ARM v6指令集體系結構;

? 是首批含有ARM Thumb-2內核技術的產品。(7)Cortex-A系列微處理器

? 適于高計算要求、運行豐富操作系統及提供交互媒體和圖形體驗的應用領域。? 支持傳統 ARM、Thumb指令集和新的高性能緊湊型 Thumb-2 指令集。? 移動互聯網的支持

? 低功率設計,支持 Adobe Flash 10.1 ? 高性能 NEON 引擎,廣泛支持媒體編解碼器 ? 高性能

? Cortex-A15:為新一代移動基礎結構應用和無線基礎結構應用提供高性能的解決方案。

? Cortex-A9。800 MHz1 GHz 的頻率下,提供的性能超過 2000 DMIPS。

? Cortex-A5 低成本實現,在 400-800 MHz 的頻率下,提供的性能超過 1200 DMIPS,是尺寸最小、功耗最低的 ARM 多核處理器。

? 多核技術:Cortex-A15、Cortex-A5和Cortex-A9 處理器都支持 ARM 第二代多核技術。? 高級擴展

? Thumb-2,提供最佳代碼大小和性能。? TrustZone,安全擴展,提供可信計算。

? Jazelle 技術,提高執行環境(如 Java、.Net、MSIL、Python 和 Perl)速度。

(8)Cortex-R系列微處理器

? 為具有嚴格的實時響應限制的深層嵌入式系統提供高性能計算解決方案。

? 快速。以高時鐘頻率獲得高處理性能。

? 確定性。處理在所有場合都必須符合硬實時限制。? 安全。系統必須可靠且可信。

? 成本效益。在處理器及其內存系統中都具有競爭力的成本和功耗。? 應用領域

? 智能手機

? 企業系統:硬盤驅動器、聯網和打印 ? 消費電子:機頂盒、數字電視和播放器 ? 醫療行業、工業和汽車行業的可靠系統 ? 功能集

(9)Cortex-M系列微處理器

? 向上兼容的高能效、易于使用的處理器

? 針對成本和功耗敏感的 MCU 和終端應用的混合信號設備進行過優化。? 更低的功耗,更長的電池壽命。

? 高密度指令集,更小的代碼,更低的硅成本。

RISC 處理器內核高性能32 位CPU具有確定性的運算低延遲3 階段管道Thumb-2 技術16/32 位指令的最佳混合小于8 位設備3 倍的代碼大小對性能沒有負面影響低功耗模式集成的睡眠狀態支持多電源域基于架構的軟件控制嵌套矢量中斷控制器(NVIC)低延遲、低抖動中斷響應不需要匯編編程以純C 語言編寫的中斷服務例程工具和RTOS 支持廣泛的第三方工具支持Cortex 微控制器軟件接口標準(CMSIS)最大限度地增加軟件成果重用CoreSight調試和跟蹤JTAG 或2 針串行線調試(SWD)連接支持多處理器支持實時跟蹤(10)SecurCore系列微處理器

? 為安全要求較高應用設計。智能卡

? SIM、ID、銀行業、付費電視、公共交通、電子政務

2.4 ARM處理器模式

(1)32位ARM處理器工作狀態

32位ARM處理器有三種工作狀態 ? ARM狀態。對應32位ARM指令集 ? Thumb狀態。對應16位Thumb指令集 ? Jazelle狀態。對應8位的Jazelle指令集

用于在處理器指令層次對JAVA加速

只有進入特定的狀態,相應的指令集才有效。CPSR的J(Jazelle)和T(Thumb)位反映程序的狀態。Thumb-2 ? 與現有 ARM 和 Thumb 解決方案向后兼容,同時擴展了 Thumb 指令集的可用功能; ? 使用少于 31% 的內存以降低系統成本; ? 提供比現有高密度代碼高出 38% 的性能。(2)64位ARM處理器工作狀態

ARMv8架構

兩種主要執行狀態:AArch64, AArch32 AArch64:引入了一套新的指令集“A64”專門用于64位處理 AArch32:兼容現有的32位ARM指令集 ARMv8架構支持三個主要指令集

A32(或 ARM):32 位固定長度指令集

T32(Thumb):以 16 位固定長度指令集的形式引入,在引入 Thumb-2 技術時增強為 16 位和 32 位混合長度

A64:提供與 ARM 和 Thumb 指令集類似功能的64位固定長度指令集(3)ARM處理器運行模式

? 用戶模式(usr):ARM處理器正常的程序執行狀態。? 快速中斷模式(fiq):用于高速數據傳輸或通道處理 ? 外部中斷模式(irq):用于通用的中斷處理。? 管理模式(svc):操作系統使用的保護模式。

? 數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護。

? 系統模式(sys):運行具有特權的操作系統任務。

? 未定義指令中止模式(und):當未定義的指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真。

運行模式可通過軟件改變,也可通過外部中斷或異常處理改變。用戶模式之外的模式稱為非用戶模式或特權模式。除用戶模式和系統模式之外的5種稱為異常模式,常用于處理中斷和異常、訪問受保護的系統資源等情況。

2.5 ARM體系的異常處理

(1)ARM體系中3種控制程序執行流程的方式: ? 順序執行 ? 跳轉分支指令

? 異常中斷:處理器暫時中斷當前數據流的現象。(2)對異常的響應。ARM處理器執行完當前指令后: ? 進入與特定的異常相應的操作模式;

? 將引起異常指令的下一條指令的地址保存到新模式的R14中;

? 將CSPR原值保存到新模式的SPSR中;

? 通過設置CSPR的第7位來禁止IRQ。如果為FIQ中斷,則還要設置CSPR的第6位來禁止FIQ;

? 給PC強制賦向量地址值。(3)中斷向量表

指定了異常中斷及其處理程序的對應關系,它通常存放在存儲地址的低端。

大小為32字節,其中每個異常中斷占據4字節空間,用于存放一個跳轉指令或者一個向PC寄存器中賦值的指令。

(4)異常優先級:當幾個異常中斷同時發生時,就必須按照一定的次序來處理這些異常中斷。(5)從異常返回

將連接寄存器LR的值減去相應偏移量后送到PC中; 將SPSR復制回CPSR中;

若在進入異常處理時設置了中斷禁止位,則要清除。通過普通指令控制PC返回

軟件中斷的返回指令 MOVS R15, R14;將鏈接寄存器內容移入PC并轉換模式 IRQ,FIQ和預取異常終止中斷的返回指令 SUBS R15, R14, #4 數據終止異常的返回指令 SUBS R15, R14, #8;異常在導致異常的指令的下一條指令后產生

2.6 ARM內部寄存器

(1)寄存器結構

32位ARM有31個32位通用寄存器,6個狀態寄存器。通用寄存器可用來保存數據和地址信息,用R為前綴加寄存器序號表示

15個通用寄存器(R0~R14)、一個或兩個狀態寄存器及程序計數器可在任意時間和處理器模式下被訪問,有些處理器模式擁有自身獨立的寄存器

(2)通用寄存器

分成三類:

R0~R7:未分組寄存器。每個未分組寄存器在所有的處理器模式下都表示同一個物理寄存器。R8~R14:分組寄存器。每個分組寄存器與一個用戶模式的寄存器對應。R15:程序計數器PC。

分組寄存器R8~R14可分為兩組:

R8~R12:每個寄存器對應兩組不同的物理寄存器,一組是FIQ模式下的,記為R8_fiq~R12_fiq, 另一組是除FIQ模式外的:R8_usr~R12_usr。

R13~R14:分別對應6個不同的物理寄存器。用戶模式和系統模式共用一個寄存器,另外5個對應其余5種。

R13 _ R14 _

可以是以下幾種模式之一:usr、svc、abt、und、irq和fiq。

R13:被稱為堆棧指針SP,但沒有任何指令強制性使用R13作為堆棧指針

R14又被稱為鏈接寄存器LR(Link Register)。當調用子程序時,返回地址被自動保存到R14。由于ARM采用了多級流水線技術,所以當正常讀取PC值時,該值為當前指令地址值加8,或是加12。

2.7 ARM體系的存儲系統

(1)地址空間

將存儲器看作是從零地址開始的字節的線性組合 0-3字節:第1個存儲的字數據 4-7字節:第1個存儲的字數據 依次排列(2)存儲器格式 大端格式

小端格式

(3)存儲器訪問對準

無論取指還是內存訪問都以字、半字或字節對準訪問 a)非對齊的指令預取操作

ARM狀態:將一個非對齊地址寫入PC,數據的第0位和第1位被忽略,PC的bit[1:0]為0 Thumb狀態:數據的第0位被忽略,PC的bit[0]為0 b)非對齊地址內存的訪問操作(LOAD/STORE操作)

執行結果不可預知

忽略字單元地址低兩位的值,半字單元最低位的值(分別對應訪問字和半字)

在LDR和SWP指令中,對存儲器訪問忽略造成地址不對齊的低地址位,然后使用這些低地址位控制裝載數據的循環 ARM指令系統及程序設計基礎

教學目的:使學生對ARM指令系統及程序設計的基礎知識有一定的了解。教學重點:ARM指令系統。

教學難點:ARM程序設計的基礎知識。教學方法與教學手段:課堂講授,多媒體教學。教學時間:4課時。教學內容

3.1 ARM尋址方式

(1)尋址方式

處理器根據指令中給出的地址信息尋找物理地址的方式。尋找操作數或操作數地址的方式。

(2)立即尋址

也叫立即數尋址,操作數本身在指令中給出,該操作數被稱為立即數。例如: ADD R0, R0, #1;R0?R0+1 立即數須以“#”為前綴,對于十六進制表示的立即數,還需在“#”后加上“0x”或“&”。(3)寄存器尋址

操作數存在寄存器中。例如: ADD R0, R1, R2;R0?R1+R2(4)寄存器間接尋址

以寄存器的值作為操作數地址。例如: ADD R0, R1, [R2]

;R0 ? R1+[R2](5)基址變址尋址

a)基址加偏移的尋址方式

將寄存器內容與指令中給出的地址偏移量相加,得到操作數的有效地址。如: LDR R0, [R1, #4];R0 ? [R1+4]

前變址:基址加變址作為操作數地址。

后變址:基址作為操作數的地址,傳送后自動更新基址寄存器的值。

b)基址加索引的尋址方式

將基址寄存器的值與索引寄存器的值相加,形成操作數的有效地址。例如: LDR R0, [R1, R2]

;R0 ? [R1+R2] c)多寄存器尋址

一條指令可完成多個(最多16個)寄存器值的傳送。例如:

LDMIA R0, {R1, R2, R4};R1 ? [R0] 22

;R2 ? [R0+4];R4 ? [R0+8](6)寄存器移位尋址

操作數為寄存器中數做相應的移位而得到 例如:

ARM中的移位或循環移位操作: ? LSL:邏輯左移(Logical Shift Left)? LSR:邏輯右移(Logical Shift Right)ADD

R0, R1, R2, LSL #3;R0?R1+8×R2 ? ASR:算術右移(Arithmetic Shift Right)。移位過程中保持符號位不變,若源操作數為正數,則字的高端空出的位補0。若源操作數為負數,則字的高端空出的位補1。

? ROR:循環右移(Rotate Right)。從字的最低端移出的位依次填入字的高端空出的位。? RRX:擴展的循環右移(Rotate Right Extended)。操作數向右移一位,左側空位由狀態寄存器C位填充。當移位的類型為RRX時,無需指定移位的位數,其它的則須指定移位的位數。(7)相對尋址

以PC當前值作為基地址,指令中的地址標號作為位移量,兩者相加后得到操作數的有效地址。例如:

BL

NEXT

MOV ??

PC, LR

;從子程序返回 NEXT

;跳轉至子程序 NEXT ??

(8)堆棧尋址

a)堆棧:按先進后出(FILO)的方式工作,使用堆棧指針(Stack Pointer, SP)指示當前操作位置。b)根據棧指針的指向位置可將堆棧分為

? 滿堆棧:SP指向最后壓入堆棧的數據。? 空堆棧:SP指向下個將放入數據空位置

c)根據堆棧的生成方式可將堆棧分為

? 遞增堆棧(Ascending Stack):堆棧由低地址向高地址生成。

? 遞減堆棧(Descending Stack):由高地址向低地址生成。d)ARM支持四種類型堆棧工作方式

滿遞增堆棧:SP指向最后壓入的數據,且由低地址向高地址生成。滿遞減堆棧:SP指向最后壓入的數據,且由高地址向低地址生產。

空遞增堆棧:SP指向下個將放入數據的空位置,且由低地址向高地址生成。空遞減堆棧:SP指向下個將要放入數據的空位置,且由高地址向低地址生成。

3.2 ARM指令集

(1)ARM指令集分類 加載/存儲指令

數據處理指令 分支指令

狀態寄存器訪問指令 異常/中斷指令 協處理器指令(2)ARM指令的特點 所有指令都是32bit;

大多數指令都在單周期內完成; 所有指令都可以條件執行; load/store體系結構;

指令集可以通過協處理器擴展。(3)ARM指令的格式

(4)ARM指令的條件執行

所有ARM指令都可包含一個可選的條件碼,只有當CPSR中條件標志位滿足指定條件時,指令才會被執行。否則以NOP指令通過流水線。

(5)加載/存儲指令

Load:將內存中數據裝載到寄存器 Store:將寄存器中的數據存入內存 a)單寄存器傳輸指令

{} {B} Rd, addressing1 {} SB | H | SH Rd, addressing2 {} {B} Rd, LABEL LDR/STR指令:寄存器在前,地址在后 LDM/STM指令:地址在前,寄存器在后

LABEL:相對PC的尋址方式。編譯器在匯編時,會將標號LABEL匯編成PC的偏移量存入該指令的立即數字段。

B: Byte;S: Sign;H: Half LDR/STR:讀/寫一個32bit字到/從一個32位寄存器,要求讀/寫地址字對齊。LDRB:內存8bit字節?32bit寄存器;不要求地址對齊,寄存器高24位清零。STRB:寄存器低8位?內存的某個地址;不要求地址對齊。

LDRH:16bit半字? 32bit寄存器;要求地址半字對齊,寄存器的高16bit清零。STRH:寄存器低16bit?內存;要求地址半字對齊。

LDRSH:有符號16bit半字?32bit寄存器中;要求地址半字對齊,寄存器高16bit根據符號位擴展。

LDRSB:有符號8bit字節?32bit寄存器中;不要求地址對齊,寄存器高24bit根據符號位擴展。

“數據”一列指的是這條指令所訪問的存儲單元

“基址寄存器”一列的內容是指執行指令之后“基址寄存器”的內容 b)多寄存器傳輸指令

{} <尋址模式> Rn{!}, {^} LDM / STM:從由基址寄存器指示的一片連續存儲器到寄存器列表所指示的多個寄存器之間傳送數據。

!:表示執行完操作后將變化之后的地址值寫入基址寄存器

^:對于LDM操作,如恢復的寄存器中含有PC(R15)寄存器,則指令執行的同時CPU自動將SPSR拷貝到CPSR中,例如:

LDMFD {R0-R12, LR, PC}^ 數據的傳送發生在User用戶模式下的寄存器,而非當前模式寄存器,例如:

LDMDB SP, {R0-LR}^ 例如:

STMIA R0!, {R1-R5};以R0為地址指針,將R1-R5保存到內存,指針向上移動

c)交換指令

SWP {B} {} Rd, Rm, [Rn] SWP:字交換;SWPB:字節交換 Rd ? [Rn], [Rn] ? Rm 例如:

SWP R1, R2, [R3];R1?[R3] ,[R3]? R2 SWP R1, R1, [R2];R1與[R2]內容互換(6)數據處理指令

a)數據傳送指令

MOV {cond} {S} Rd, Operand 例如: MOV R1, R0 MOVEQ PC, R14

;將R14值傳到PC b)數據取反傳送指令 MVN {cond} {S} Rd, Operand 例如:

MVN R1, #2;將立即數2取反送至R1 c)算術運算指令

ADD、ADC ADD|ADC {cond} {S} Rd, Oper1, Oper2 例如: ADDS ADCS ADCS ADC R0, R4, R8 R1, R5, R9;加低端的字;帶進位加第二字

R2, R6, R10;帶進位加第三字 R3, R7, R11;帶進位加第四字

可實現 128位加法 SUB:減法指令

SUB {cond} {S} Rd, Oper1, Oper2 SBC:帶借位減法指令

SBC {cond} {S} Rd, Oper1, Oper2 例:SBCS R0, R1, R2;R0=R1–R2–C RSB:反向減法指令

RSB {cond} {S} Rd, Oper1, Oper2 操作數2減去操作數1,例如: RSB R0, R1, R2;R0 = R2 – R1 RSC:帶借位的逆向減法指令 RSC {cond} {S} Rd, Oper1, Oper2 d)邏輯運算指令 AND:與

AND {cond} {S} Rd, Oper1, Oper2 ORR:或

ORR {cond} {S} Rd, Oper1, Oper2 EOR:異或

EOR {cond} {S} Rd, Oper1, Oper2 e)比較指令 CMP CMP {cond} Operand1, Operand2 CMN:反值比較 CMN {cond} Operand1, Operand2 將第一個數與第二個數的反值進行比較,相當于完成兩個數相加。例如: CMN R1, R0;R1+R0,并設置CPSR f)測試指令 TST TST {cond} Operand1, Operand2

把兩個操作數按位進行與運算,根據結果更新CPSR。

TEQ TEQ {cond} Operand1, Operand2 把兩個操作數按位進行異或運算,根據結果更新CPSR g)乘法指令 MUL MUL {cond} {S} Rd, Oper1, Oper2 Rd?Operand1×Operand2。例如: MUL

R0, R1, R2 MLA MLA {cond} {S} Rd,Oper1,Oper2,Oper3 Rd?Operand1×Operand2+Operand3 例如:

MLA R0, R1, R2, R3;R0 = R1×R2+R3;R0 =R1×R2 UMULL:64位無符號數乘法指令 UMULL {cond} {S} Rd_L, Rd_H, Operand1, Operand2 Rd_H:Rd_L? Operand1×Operand2 例如: UMULL R0, R1, R2, R3;R0 =(R2×R3)的低32位;R1 =(R2×R3)的高32位 UMLAL: 64位無符號數乘加指令 UMLAL {cond} {S} Rd_L, Rd_H, Operand1, Operand2 Rd_H:Rd_L+= Operand1×Operand2 例如:

UMLAL

R0, R1, R2, R3;R0 =(R2×R3)的低32位+R0;R1 =(R2×R3)的高32位+R1 SMULL:64位有符號數乘法指令 SMULL {cond} {S} Rn_L, Rn_H, Operand1, Operand2 Rd_H:Rd_L? Operand1×Operand2 SMLAL: 64位有符號數乘加指令 SMLAL {cond} {S} Rn_L, Rn_H, Operand1, Operand2 Rd_H:Rd_L+= Operand1×Operand2(7)分支指令

a)B(分支指令)和 BL(帶鏈接分支指令)B {cond} LABEL BL {cond} LABEL

允許向前或向后跳轉最高32MB。

BL:帶返回的分支指令,用于調用一個將其返回地址存入鏈接寄存器的函數。例如:

SUBPRG BL …… SUBPRG ??;<子程序代碼> MOV PC, LR;返回

b)BX(分支并可選地交換指令集)和BLX(帶鏈接分支并可選地交換指令集)BX {cond} Rm BLX {cond} LABEL | Rm Rm:轉移地址,bit[0]為0時,目標地址處為ARM指令,否則為Thumb指令。BX 和 BLX是唯一可使用的切換指令集的方法。

BX 和 BLX指令執行與B和BL指令相同的分支操作,并可從ARM指令集切換到THUMB指令集。

c)長跳轉

通過向PC寄存器中寫目標地址值,可實現在4GB地址空間中進行任意跳轉。例如: MOV MOV LR, PC;保存返回地址

R15, #0x00110000;無條件轉向0x110000(8)狀態寄存器訪問指令 a)MRS MRS {} Rd, 將狀態寄存器的內容傳送到通用寄存器中。例如: MRS b)MSR MSR {} _, Rm MSR {} _,# 表示下列情況之一: c:控制域,即PSR[7:0] PSR[32:24] CPSR|SPSR ? 通用寄存器。例如: MSR CPSR_F, #&F00000000

R3, CPSR;CPSR?R3

x:擴展域,即PSR[15:8] s:狀態域,即PSR[23:16] f:標志域,即

;設置所有標志位

(9)異常/中斷指令(續)a)SWI SWI {} <24位立即數> 產生SWI異常中斷,以實現在用戶模式下調用操作系統的監控功能程序。它將處理器置于管理(SVC)模式。例如:

SWI 0x01

;調用編號為01的系統例程

b)BKPT BKPT <16位立即數> 產生軟件斷點中斷,可用于程序調試。例如 BKPT 0xF010(10)協處理器指令 a)CDP CDP {} , , CRd, CRn, CRm {,} 編號為CP#的協處理器接受指令并執行。具體操作由Cop1和Cop2定義,CRn和CRm為源操作數,結果?CRd。例如:

CDP P6, 2, C5, C10, C3, 16

;激活協處理器P6的操作,操作碼1和操作碼2值分別為2和16,目標寄存器為C5,源操作數寄存器為C10和C3 b)MRC和MRC MRC | MCR {} , , CRd, CRn, CRm {,} 在ARM與協處理器寄存器間傳送數據。MRC:ARM寄存器?協處理器寄存器 MCR:協處理器寄存器?ARM寄存器 例如: MCR P3, 3, R0, C4, C5, 6;ARM處理器R0?協處理器P3的寄存器C4和C5 c)LDC和STC 在協處理器寄存器與存儲器間傳送數據 LDC:協處理器寄存器?存儲器

STC:存儲器?協處理器寄存器 前變址格式

LDC | STC {} {L} , CRd, [Rn, ]{!} 后變址格式

LDC | STC {} {L} , CRd, Rn, 3.3 Thumb指令集

(1)Thumb指令集的特點

? 是ARM指令集壓縮形式的子集,所有Thumb指令均有對應的ARM指令。? 采用16位二進制編碼,代碼密度小。

? 執行Thumb指令時,先動態解壓縮,然后作為標準的ARM指令執行。? 如何區分指令流取決于CPSR的位T。? 大多Thumb數據處理指令采用2地址格式。? 移位操作變成單獨指令。

? 沒有協處理器指令、單寄存器交換指令、乘加指令、64位乘法指令及程序寄存器處理指令。? 僅分支指令B有條件執行功能。

(2)Thumb狀態切換

a)ARM狀態進入Thumb狀態 執行帶狀態切換的轉移指令BX。例如: BX R0;若R0最低位為1,則轉Thumb狀態

異常返回。通常用于返回到進入異常前所執行的指令流,而不是特地用于切換到Thumb模式。適用于異常前執行的是Thumb指令。

b)Thumb 狀態進入ARM狀態 執行BX指令。

利用異常進入ARM指令流。(3)Thumb指令寄存器的使用 ? 對R0~R7具有全部訪問權限。

? R8~R12的訪問受到限制,只能通過MOV、ADD和CMP訪問。

? 在每一種特權模式下都有一組SP、LR和SPSR,分別對應ARM狀態的R13、R14和R15。(4)Thumb指令與ARM指令的相似點 ? Load/Store結構。

? 支持8位字節、16位半字和32位字數據類型。? 半字以2字節邊界對準,字以4字節邊界對準。(5)Thumb指令與ARM指令差異點

? 跳轉指令:條件跳轉在范圍上有更多的限制,轉向子程序只具有無條件轉移。

? 數據處理指令:對通用寄存器進行操作,操作結果需放入其中一個操作數寄存器。因此,許多Thumb指令采用2地址格式,ARM數據處理指令大多采用3地址格式。? 單寄存器加載和存儲指令:只能訪問R0~R7。

? PUSH和POP指令使用堆棧指針R13作為基址實現滿遞減堆棧,除R0~R7外,PUSH指令還可存儲R14,POP指令可加載程序指令PC。

? 大多數Thumb指令是無條件執行的,所有ARM指令都是條件執行的。? 由于采用高密度編碼,Thumb指令格式沒有ARM指令格式規則。(6)Thumb分支指令

a)B 指令——目標為Thumb代碼 B <條件碼>

B指令是Thumb指令集中唯一可條件執行的指令。PC = PC +(SignExtend(signed_immed_8)<< 1)B

3.4 3.5 35

3.6 嵌入式系統設計與開發過程

(1)嵌入式軟件開發的特點 a)需要交叉開發環境

? 交叉開發環境:實現編譯、鏈接和調試應用程序代碼的環境,它分散在有通信連接的宿主機與目標環境之中。

? 宿主機(Host)是一臺通用計算機,一般是PC機。

? 目標機(Target)可以是嵌入式應用軟件的實際運行環境,也可以是能替代實際環境的仿真系統。

? 交叉軟件開發工具包括:交叉編譯器、交叉調試器和模擬軟件等。b)引入任務設計方法

? 嵌入式應用系統以任務為基本執行單元 ? 用多個并發的任務代替通用軟件的多個模塊 c)需要固化程序 d)軟件開發難度大

? 實時性。

? 穩定性、可靠性、抗干擾性。(2)軟硬件平臺的選擇 選擇處理器需考慮的因素 ? 處理性能 ? 技術指標、功耗

? 軟件支持工具、是否內置調試工具 ? 供應商是否提供評估板 軟件平臺的選擇

? 操作系統。開發工具,與硬件接口難度,內存,是否提供硬件驅動程序,可裁剪性、實時性等

? 編程語言。通用性、可移植性、執行效率、可維護性等 ? 集成開發環境

(3)嵌入式系統設計與開發流程 ? 需求分析 ? 體系結構設計

? 硬件的設計、制作及測試 ? 軟件的設計、實現及測試 ? 系統集成

? 系統性能測試及可靠性測試

STM32微控制器

教學目的:使學生對STM32的性能指標、硬件結構有一定的了解。教學重點:STM32的硬件結構。教學難點:STM32的硬件結構。

教學方法與教學手段:課堂講授,多媒體教學。教學時間:4課時。教學內容

4.1 STM32微控制器的性能指標

(1)STM32F103的主要功能

? ARM Cortex-M3核 ? 最高主頻72MHz ? 512kB Flash、64kB RAM ? 1個USB、1個CAN、5個USART、3個SPI、2個I2C、2個I2S、1個SDIO、112個GPIO

? 3個ADC、2個DAC、8個定時器

? FSMC總線(支持NOR,NAND,SRAM)? 12通道DMA控制器

? Serial wire debug(SWD)、JTAG 接口 ? 啟動:用戶Flash、系統存儲器、SRAM(2)JC-STM32CB核心板

? 核心芯片:ST STM32F103ZET6 ? 8M NOR Flash:SST39VF6401,16bit ? 128M NAND Flash:K9F1G08U0C,8bit ? 8MHz CPU晶振,32768Hz RTC晶振 ? 1個10M/100M以太網接口 ? 1路音頻輸出和1路音頻輸入 ? 1個10-pin JTAG調試接口 ? 1個4-pin SWD串行調試接口 ? Reset按鈕、自定義LED,電源LED ? 1個精密可調電阻連接到片內ADC輸入

? 使用CPLD擴展IO口及地址譯碼,型號EPM240T100C5N ? 板載10/100M網卡控制器,型號DM9000AEP,16bit總線接口

STM32

下載基于嵌入式Linux的SOHO路由器設計(共5則范文)word格式文檔
下載基于嵌入式Linux的SOHO路由器設計(共5則范文).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    嵌入式學習(共5篇)

    最近很多朋友都在問,如何學習嵌入式,作為嵌入式的老鳥,我想我可以做一些嘮叨,嵌入式的入門門檻稍微高一點,但是再高的城墻也是小磚頭筑起來的,所以沒有必要因為門檻高就覺得很困難......

    路由器的結構剖析(共五則)

    路由器的結構剖析 .................... 1、電源接口(POWER):接口連接電源。 2、復位鍵(RESET):此按鍵可以還原路由器的出廠設置。 3、貓與路由器連接口(WAN):此接口用一條網線與家用......

    嵌入式設計實訓大綱

    嵌入式系統實訓大綱 適用專業:電子信息工程技術 學 制: 學 時:2周 學 分:2.0 一、實習的性質與目的通過本次實訓,運用已學的課程知識,根據任務要求進行軟硬件系統的設計和調試,......

    嵌入式論文關于觸摸屏設計

    嵌入式實驗課程設計 題目 基于嵌入式的觸摸屏控制實驗 院系電子工程系專業 信息工程學號 20092309022 姓名楊 金 磊指導教師董立軍二O一二 年 六 月 八 日 目 錄 1. 要求.......

    北航—嵌入式系統設計教學大綱

    《嵌入式系統設計》課程計劃 北航機器人研究所王田苗魏洪興 一、課程名稱:嵌入式系統設計 二、課程目的: 嵌入式系統技術已被廣泛地應用于工業控制系統、信息家電、通信設備、......

    嵌入式系統設計基礎總結報告

    嵌入式系統設計基礎 嵌入式系統設計基礎 結題報告 學生1: 學生2: 學生3: 組長: 組長電話: 指導老師: 完成時間: 嵌入式系統設計基礎 目錄 目錄 ........................................

    嵌入式試題總結(共5篇)

    07電信三班13棟216 一:填空(30分、15空) 1、交叉開發環境、嵌入式系統開發的調試方法(填空一) 答: 交叉開發環境:交叉開發環境是指實現編譯、鏈接和調試應用程序代碼的環境與運行應......

    嵌入式開發學習心得(共5篇)

    嵌入式開發學習心得 嵌入式開發學習心得 就我個人而言,從最開始對嵌入式一竅不通到現在越學越感興趣,當然相應在嵌入式方面的提高也是很明顯的。學習嵌入式越來越成為我學習中......

主站蜘蛛池模板: 成熟老妇女毛茸茸的做性| 国产av成人一区二区三区| 欧美黑人乱大交| 日本三级香港三级人妇三| 免费无码av片在线观看网址| 久久精品日韩av无码| 国产成人午夜无码电影在线观看| 最近中文字幕大全在线电影视频| 加勒比一区二区无码视频在线| 97色伦图区97色伦综合图区| 国产精品爆乳奶水无码视频| 一本一道久久综合狠狠老| 精品久久久无码中文字幕天天| 国产高跟黑色丝袜在线| 久久久久国产精品人妻电影| 精品无码久久久久久久久久| 亚洲av国产av综合av卡| 十八禁无遮挡99精品国产| 亚洲色播永久网址大全| 日本大片免a费观看视频| 国外亚洲成av人片在线观看| 青草青草久热精品视频在线观看| 免费看美女被靠到爽的视频| 樱花草在线播放免费中文| 久久www色情成人免费观看| 天天躁日日躁狠狠躁退| 亚洲av永久无码国产精品久久| 免费人成在线观看| 国产无套流白浆视频免费| 亚洲精品天堂成人片av在线播放| 青青草国产免费久久久| 国产综合久久亚洲综合| 99国产精品白浆在线观看免费| 欧美激情一区二区成人| 亚洲日韩欧洲乱码av夜夜摸| 成人h视频在线观看| 欧美多毛肥胖老妇做爰| 少妇人妻大乳在线视频不卡| 无码视频一区二区三区| 亚洲三区在线观看内射后入| 国产亚洲日韩在线播放更多|