簡介:COPYRIGHT2014FUJITSULIMITED,SIMULINK及基于模型設計的嵌入式應用,FNST第三事業(yè)部第一開發(fā)部主任工程師孫忠瀟SIMULINK基礎版主及代碼生成版主HYOWINNER2014年5月24日,2,COPYRIGHT2014FUJITSULIMITED,目錄,SIMULINK是什么各家釋意用戶群分析學習難度分析SIMULINK能夠做什么視頻處理音頻處理工業(yè)流程模擬發(fā)動機控制自定義娛樂工具箱TARGETSUPPORTPACKAGE目標芯片的驅(qū)動工具箱基于模型的嵌入式設計及應用MBDMODELBASEDDESIGN代碼自動生成相關知識MBDDEMO濾波器建模,生成代碼以及驗證,3,COPYRIGHT2014FUJITSULIMITED,SIMULINK是什么,百度SIMULINK是MATLAB最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。MATLAB2013BSIMULINKOPENSTHESIMULINK?LIBRARYBROWSERHYOWINNERSIMULINKSIMULINKSIMUSIMULATION仿真具象化邏輯及結果LINK連接模塊與庫連接設計與需求連接模型與代碼連接你我與MATLAB/SIMULINK連接,4,COPYRIGHT2014FUJITSULIMITED,SIMULINK是什么,模塊庫,,模型,,波形,,5,COPYRIGHT2014FUJITSULIMITED,SIMULINK是什么,SIMULINK的使用者都期待其功能更加強大,能快速實現(xiàn)想要做的事,期待,6,COPYRIGHT2014FUJITSULIMITED,SIMULINK是什么,7,COPYRIGHT2014FUJITSULIMITED,SIMULINK能夠做什么,,視頻幀差分使能錄像仿真,,8,COPYRIGHT2014FUJITSULIMITED,SIMULINK能夠做什么,,使用自帶模塊搭建音頻解析器,方便快捷。稍作加工即可實現(xiàn)播放開始后進行音量調(diào)節(jié)、暫停、繼續(xù)以及播放停止等動作。構成音樂播放器,9,COPYRIGHT2014FUJITSULIMITED,SIMULINK能夠做什么,10,COPYRIGHT2014FUJITSULIMITED,SIMULINK能夠做什么,11,COPYRIGHT2014FUJITSULIMITED,SIMULINK能夠做什么,SIMULINK能夠做什么,TARGETSUPPORTPACKAGE是針對某一系列MCU/DSP芯片的驅(qū)動代碼配置與自動生成工具箱,給MBD嵌入式開發(fā)者提供快速算法驗證環(huán)境,F(xiàn)M4TSP主要有以下優(yōu)點1無需編寫驅(qū)動代碼使用者通過簡單的對話框設置即可生成驅(qū)動代碼2生成代碼有效錯誤的不合理的驅(qū)動配置模型會通過錯誤提示讓使用者改正3流程自動化從模型代碼生成,IDE啟動,工程創(chuàng)建,編譯,下載一鍵完成,TSP,12,COPYRIGHT2014FUJITSULIMITED,13,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,MODELBASEDDESIGN,基于模型設計是一種流程,較之傳統(tǒng)軟件開發(fā)流程而言,使開發(fā)者能夠更快捷、以更少的成本花費進行開發(fā)。適用范圍包括信號處理,控制系統(tǒng),通信行業(yè)。表述系統(tǒng)的模型是整個開發(fā)流程的中心,貫穿需求,設計,實施與測試。模型本身就是一個可執(zhí)行的規(guī)格書,開發(fā)者修改優(yōu)化模型就是對設計的修繕,無需到實施之后通過測試再進行系統(tǒng)驗證,可以通過仿真在早期設計時期就及時進行正確性驗證,并且在實施階段,特別是對于嵌入式軟件,代碼由模型生成。,基于模型設計,14,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,以一個簡單的濾波器設計作為需求,通過基于模型設計簡化流程將需求與算法設計綁定起來,以保證所有需求都被覆蓋,最終實現(xiàn)需求與設計的一致性。,需求,15,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,根據(jù)濾波器的數(shù)學表達關系進行模型建立模型,并設計輸入輸出進行仿真,以驗證模型計算的正確性。模型輸入包括濾波系數(shù)和需要濾波的信號帶噪聲的正弦波仿真時,選擇合適的算法至關重要。,模型建立與仿真,模型建立與仿真,16,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,應用于嵌入式開發(fā)的模型往往需要選擇固定步長的解算器,而不選用變步長的解算器這是因為微控制器的時鐘信號是以固定頻率的周期工作,雖然可以實現(xiàn)倍頻和分頻,往往在一個應用的過程中每個基礎時鐘信號是保持不變的。,解算器的選擇,解算器的選擇,17,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,SYSTEMTARGETFILE是SIMULINK生成代碼不可或缺的起到總領作用的文件。它決定了自身被選擇時模型配置的動作,自定義GUI的追加,模型生成代碼的類型,以及主函數(shù)MAIN的生成與否,生成方式等等。GRTTLC快速原型ERTTLC嵌入式C代碼,通常使用此項或在此之上進行自定義硬件目標TSP工具的定制CUSTOM往往都是以ERTTLC為基礎,追加自定義硬件對應的配置或功能,系統(tǒng)目標文件,所謂TLC即TARGETLANGUAGECOMPILER的縮寫是一種解釋性編程語言,可以將模型編譯出來的RTW文件按照BLOCK級TLC程序轉(zhuǎn)化為目標代碼。,聯(lián)編文件,,聯(lián)編文件,即MAKEFILE文件MK,在MAKE_RTW指令下以系統(tǒng)模板聯(lián)編文件SYSTEMTEMPLATEMAKEFILE即SYSTEMTMF為基礎,生成MODELMK聯(lián)編程序,主要負責將模型產(chǎn)生的程序,附件的庫文件和自定義的模塊進行編譯和鏈接。系統(tǒng)模板聯(lián)編文件TMF允許用戶指定編譯器,編譯選項,以及可執(zhí)行文件生成時所附帶的信息。,,基于模型的嵌入式設計及應用,18,COPYRIGHT2014FUJITSULIMITED,通過RMISETUP注冊ACTIVEXCONTROLS后SIMULINKMODEL菜單欄增加了需求追蹤功能追加了鏈接之后,文檔中出現(xiàn)SIMULINK的小圖標,能夠從需求文檔鏈接到模型;每當需求出現(xiàn)了變更可以通過鏈接檢查是否及時反映到所設計的模型中,以保持一致性,需求與模型關聯(lián),基于模型的嵌入式設計及應用,19,COPYRIGHT2014FUJITSULIMITED,隨著模型復雜度的提高,人工檢查模型屬性,配置以及對于MAAB標準的遵守度逐漸成為負擔,使用SIMULINK工具欄中的MODELADVISOR工具可以自動進行標準以及模型配置和屬性的檢查,并產(chǎn)生檢查報告。檢查的內(nèi)容1是否會導致系統(tǒng)仿真出錯2是否會導致生成的代碼無效SIMULINKCODEREMBEDDEDCODER3生成的代碼是否符合安全標準SIMULINKCODEREMBEDDEDCODERSIMULINKVV,模型檢查與驗證,基于模型的嵌入式設計及應用,20,COPYRIGHT2014FUJITSULIMITED,使用PROFILERREPORT來了解模型每個環(huán)節(jié)的時間消耗和調(diào)用次數(shù)。報告中會提示模型執(zhí)行時間,調(diào)用函數(shù)清單和每個函數(shù)調(diào)用的詳細效率分析信息使用注意1如果算法模型使用MODELREFERRENCE引用,那么需要使該模型在NORMAL模式2在進行PROFILER時并不分析MODELREFERRENCE內(nèi)部,需要單獨分析,模型效率分析,基于模型的嵌入式設計及應用,21,COPYRIGHT2014FUJITSULIMITED,初次嘗試,先使用ERTTLC作為系統(tǒng)目標文件生成嵌入式C代碼ERTTLC會啟動代碼生成過程,將模塊轉(zhuǎn)化為C代碼未經(jīng)過任何優(yōu)化的代碼可讀性不強,代碼自動生成,初次嘗試,先使用ERTTLC作為系統(tǒng)目標文件生成嵌入式C代碼ERTTLC會啟動代碼生成過程,將模塊轉(zhuǎn)化為C代碼未經(jīng)過任何優(yōu)化的代碼可讀性不強,代碼自動生成,基于模型的嵌入式設計及應用,代碼自動生成提高可讀性,22,COPYRIGHT2014FUJITSULIMITED,1為模型增加信號名2通過信號線屬性配置存儲數(shù)據(jù)類型,代碼自動生成提高可讀性1,基于模型的嵌入式設計及應用,1為模型增加信號名2通過M代碼在BASEWORKSPACE創(chuàng)建信號數(shù)據(jù)對象3關聯(lián)數(shù)據(jù)對象與模型信號DISABLEIMPLICITSIGNALRESOLUTIONGCS命令可自動關聯(lián),代碼自動生成提高可讀性2,代碼自動生成提高可讀性2,23,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,1將模型轉(zhuǎn)換為子系統(tǒng)2在BLOCKPARAMETER中配置為原子子系統(tǒng)3CODEGENERATION頁面定義函數(shù)名與文件名,代碼自動生成結構化,24,COPYRIGHT2014FUJITSULIMITED,基于模型的嵌入式設計及應用,最終目的是將通過模型生成的代碼下載到目標硬件中去使用,那么模型生成的代碼能不能如實地反映仿真過程是必須要去驗證的。模型與代碼的一致性驗證可以通過處理器在環(huán)仿真PROCESSORINTHELOOP,PIL來驗證。,代碼的有效性驗證,25,COPYRIGHT2014FUJITSULIMITED,MOREABOUTSIMULINKTOBECONTINUED,CMEXS函數(shù),子系統(tǒng)MASK,TLC語言,SIMULINKBLOCKHELP文檔制作,自定義SIMULINKLIBRARY,LEVEL1MS函數(shù)自動生成,CALLBACKS,ICONDRAWCOMMAND,模型定點化,,26,COPYRIGHT2014FUJITSULIMITED,
下載積分: 4 賞幣
上傳時間:2024-01-06
頁數(shù): 27
大?。?3.89(MB)
子文件數(shù):
簡介:主題ARM開發(fā)流程,62最小系統(tǒng)設計,621最小系統(tǒng)概述622電源設計623時鐘電路設計624復位電路設計625調(diào)試接口設計626存儲系統(tǒng)設計627最小系統(tǒng)示例,621最小系統(tǒng)概述,設計一個最小系統(tǒng)是學習ARM的好方法一個嵌入式處理器自己是不能獨立工作的,必須給它供電、加上時鐘信號、提供復位信號,如果芯片沒有片內(nèi)程序存儲器,則還要加上存儲器系統(tǒng),然后嵌入式處理器芯片才可能工作。這些提供嵌入式處理器運行所必須的條件的電路與嵌入式處理器共同構成了這個嵌入式處理器的最小系統(tǒng)。而大多數(shù)基于ARM7處理器核的微控制器都有調(diào)試接口,這部分在芯片實際工作時不是必需的,但因為這部分在開發(fā)時很重要,所以也把這部分也歸入最小系統(tǒng)中。,621最小系統(tǒng)概述,最小系統(tǒng)框圖,可選,因為許多面向嵌入式領域的微控制器內(nèi)部集成了程序和數(shù)據(jù)存儲器,可選,但是在樣品階段通常都會設計這部分電路,供電系統(tǒng)電源,電源系統(tǒng)為整個系統(tǒng)提供能量,是整個系統(tǒng)工作的基礎,具有極其重要的地位,但卻往往被忽略。如果電源系統(tǒng)處理得好,整個系統(tǒng)的故障往往減少了一大半。,622電源設計,設計電源時要考慮的因素1輸出的電壓、電流、功率;2輸入的電壓、電流;3安全因素;4輸出紋波;5電磁兼容和電磁干擾;6體積限制;7功耗限制;8成本限制。,622電源設計,1分析需求,622電源設計,(1)LPC2000系列微控制所需要的電源類型,1分析需求,622電源設計,(2)系統(tǒng)需求,主要考慮是否需要將數(shù)字電源和模擬電源分開。(1)如果不使用芯片的A/D或者D/A功能,可以不區(qū)分數(shù)字電源和模擬電源。(2)如果使用了A/D或者D/A,還需考慮參考電源設計。,1分析需求,622電源設計,(3)電源電路的前級和末級,,,電源前級,電源末級,2設計末級電源電路,622電源設計,LPC2000系列微控制18V消耗電流的極限值為70MA。為了保證可靠性并為以后升級留下余量,則電源系統(tǒng)18V能夠提供的電流應當大于300MA。整個系統(tǒng)在33V上消耗的電流與外部條件有很大的關系,這里假設電流不超過200MA,這樣,電源系統(tǒng)33V能夠提供600MA電流即可。分析得到以下參數(shù)33V電源設計最大電流600MA;18V電源設計最大電流300MA。,因為系統(tǒng)對這兩組電壓的要求比較高,且其功耗不是很大,所以不適合用開關電源,應當用低壓差模擬電源(LDO)。合乎技術參數(shù)的LDO芯片很多,SIPEX半導體SPX1117是一個較好的選擇,它的性價比高,且有一些產(chǎn)品可以與它直接替換,減少采購風險。,2設計末級電源電路,622電源設計,SPX1117主要特點08A穩(wěn)定輸出電流;1A穩(wěn)定峰值電流;3V可調(diào)節(jié);低靜態(tài)電流;08A時低壓差為11V;01線形調(diào)整率;02負載調(diào)整率;過流及溫度保護;多種封裝供選擇。,622電源設計,622電源設計,末級電源電路實例,622電源設計,模數(shù)隔離實例,,盡管SPX1117允許的輸入電壓可達20V(參考芯片數(shù)據(jù)手冊),但太高的電壓使芯片的發(fā)熱量上升,散熱系統(tǒng)不好設計,同時影響芯片的性能。這樣,就需要前級電路調(diào)整一下。如果系統(tǒng)可能使用多種電源(如交流電和電池),各種電源的電壓輸出不一樣,就更需要前級調(diào)整以適應末級的輸入。通過之前的分析,前級的輸出選擇為5V。選擇5V作為前級的輸出有兩個原因這個電壓滿足SPX1117的要求;目前很多器件還是需要5V供電的,這個5V可以兼做前級和末級了。,622電源設計,3設計前級電源電路,根據(jù)系統(tǒng)在5V上消耗的電流和體積、成本等方面的考慮,前級電路可以使用開關電源,也可以使用模擬電源。它們的特別如下開關電源效率較高,可以減少發(fā)熱量,因而在功率較大時可以減小電源模塊的體積;模擬電源電路簡單,輸出電壓紋波較小,并且干擾較開關電源小得多。,622電源設計,3設計前級電源電路,622電源設計,模擬電源,開關電源,,,前級電源電路實例,目前所有的微控制器均為時序電路,需要一個時鐘信號才能工作,大多數(shù)微控制器具有晶體振蕩器。簡單的方法是利用微控制器內(nèi)部的晶體振蕩器,但有些場合(如減少功耗、需要嚴格同步等情況)需要使用外部振蕩源提供時鐘信號。,時鐘系統(tǒng),623時鐘電路設計,623時鐘電路設計,目前所有的微控制器均為時序電路,需要一個時鐘信號才能工作,大多數(shù)微控制器具有晶體振蕩器。簡單的方法是利用微控制器內(nèi)部的晶體振蕩器,但有些場合(如減少功耗、需要嚴格同步等情況)需要使用外部振蕩源提供時鐘信號。,使用內(nèi)部振蕩器,使用外部時鐘源,可以使用穩(wěn)定的時鐘信號源,如有源晶振等。,微控制器在上電時狀態(tài)并不確定,這造成微控制器不能正確工作。為解決這個問題,所有微控制器均有一個復位邏輯,它負責將微控制器初始化為某個確定的狀態(tài)。這個復位邏輯需要一個復位信號才能工作。一些微控制器自己在上電時會產(chǎn)生復位信號,但大多數(shù)微控制器需要外部輸入這個信號。這個信號的穩(wěn)定性和可靠性對微控制器的正常工作有重大影響。,復位及其配置系統(tǒng),624復位電路設計,復位電路可以使用簡單的阻容復位,這個電路成本低廉,但不能保證任何情況產(chǎn)生穩(wěn)定可靠的復位信號,所以一般場合需要使用專門的復位芯片。,阻容復位,624復位電路設計,最好避免使用,常用的復位專用芯片有CATALYST公司的CAT800系列,SIPEX公司的SP700系列和SP800系列。為了適應嵌入式系統(tǒng)的應用,這些公司還推出帶有EEPROM存儲器和看門狗的復位芯片,這可以降低系統(tǒng)成本和縮小產(chǎn)品體積,減少元件數(shù)量也有利于系統(tǒng)的穩(wěn)定性。如果系統(tǒng)不需要手動復位功能,可以選擇CAT809。如果需要手動復位功能,可以選擇SP705/706、SP708SCN。種類繁多的復位芯片可以滿足不同工作電壓和不同復位方式的系統(tǒng),這里僅介紹其中部分。注意復位芯片的復位門檻的選擇至關重要,一般應當選擇微控制器的IO口供電電壓范圍為標準。LPC2000這個范圍為30V~36V,所以選擇復位門檻電壓為293V,即電源電壓低于293V時產(chǎn)生復位信號。,624復位電路設計,624復位電路設計,復位電路實例CAT809低有效復位;在工業(yè)級溫度范圍的應用中可直接代替MAX809;VCC低至10V時,復位信號仍然有效;6UA的電源電流;抗電源的瞬態(tài)干擾;緊湊的3腳SOT23和SC70封裝;工業(yè)級溫度范圍-40℃~85℃。,624復位電路設計,復位電路實例SP708/R/S/T263VSP708R;293VSP708S;308VSP708T;復位脈沖寬度200MS;最大電源電流40UA;支持開關式TTL/CMOS手動復位輸入;VCC下降至1V時,NRESET信號仍然有效;SP708/R/S/T支持高/低電平兩種方式。,624復位電路設計,復位電路實例SP6200/6201適用于要求高精度、快速操作和方便使用的應用;極低的關斷電流最大為1UA;低壓差160MV100MA。輸出電壓高精度2;邏輯控制的電子使能;復位輸出VOUT良好;1UF的陶瓷電容就可保持器件無條件穩(wěn)定工作。,,電壓輸出使能,復位輸出,624復位電路設計,復位電路實例CAT1024/1025具有2K字節(jié)EEPROM存儲器,數(shù)據(jù)保存時間長達100年;存儲器采用400KHZ的I2C總線接口,16字節(jié)的頁寫緩沖區(qū);CAT1025具有高、低電平復位信號,CAT1024具有低電平復位信號。VCC低至1V時復位仍有效;工作電壓范圍27V~55V;手動復位輸入。,624復位電路設計,微控制器在復位后可能有多種初始狀態(tài),具體復位到哪種初始狀態(tài)是在復位的過程中決定的。復位邏輯可能通過片內(nèi)只讀存儲器中的數(shù)據(jù)決定具體的初始狀態(tài),但更多的是通過復位期間的引腳狀態(tài)決定,也可能通過兩者共同決定。用引腳狀態(tài)配置復位后的初始狀態(tài)沒有統(tǒng)一的方法,需要根據(jù)相關芯片的手冊決定。,P226和P227決定復位后存儲器的來源以及存儲器的寬度,P126決定復位后是否使用P131~P126作為調(diào)試端口,P120決定復位后是否使用P125~P116作為跟蹤端口,P014決定復位后是否進入ISP狀態(tài),調(diào)試與測試接口不是系統(tǒng)運行必須的,但現(xiàn)代系統(tǒng)越來越強調(diào)可測性,調(diào)試、測試接口的設計也要重視了。LPC2000有一個內(nèi)置JTAG調(diào)試接口,通過這個接口可以控制芯片的運行并獲取內(nèi)部信息。,調(diào)試測試接口,625調(diào)試接口設計,調(diào)試接口電路一,,ETM功能僅在高級仿真器中具有,用戶如果沒有使用,可以將其省略,同時把TRACESYNC信號上的電阻也去掉。,625調(diào)試接口設計,,RTCK必須接47K下拉電阻。,標準20針JTAG,調(diào)試接口電路一,在該電路中,復位電路與前面介紹電路有所不同。它在復位信號和CPU之間插入了三態(tài)門74HC125。使用三態(tài)門主要是為了復位芯片和JTAG(ETM)仿真器都可以復位芯片。如果沒有74HC125,當復位芯片輸出高電平時,JTAG(ETM)仿真器就不可能把它拉低,這不但不能實現(xiàn)需要的功能,還可能損壞復位芯片或JTAG(ETM)仿真器。,,,625調(diào)試接口設計,因為這種電路JTAG(ETM)仿真器對LPC2000有完全的控制,其仿真性能最好。不過,由于74HC125工作的電壓范圍低于復位芯片的工作電壓范圍,所以此電路一般用于樣機。正式產(chǎn)品中可以不需要這部分電路。,,,625調(diào)試接口設計,調(diào)試接口電路二,625調(diào)試接口設計,,RTCK必須接47K下拉電阻。,ETM跟蹤接口,標準20針JTAG,,大部分LPC2000芯片都有片內(nèi)FLASH,可以不用再設計額外的存儲器系統(tǒng)。如果微控制器沒有片內(nèi)存儲器,就必須設計存儲器系統(tǒng),這一般通過微控制器的外部總線接口實現(xiàn)。,存儲器系統(tǒng),626存儲系統(tǒng),如果需要外擴存儲系統(tǒng),需要考慮(1)總線寬度(2)總線速度盡量避免使用8位總線,推薦使用16和32位總線,器件選型盡量選擇高速存儲器。如果使用16位總線,使用THUMB指令集可獲得更高的性能。,626存儲系統(tǒng),示例LPC2210存儲器系統(tǒng),626存儲系統(tǒng),,復位后使用外部16位寬度存儲器,16位SRAM,16位FLASH,LPC2100系列沒有外部總線接口的最小系統(tǒng);LPC2130系列沒有外部總線接口的最小系統(tǒng);LPC2200系列使用內(nèi)部存儲器的最小系統(tǒng);LPC2200系列使用外部存儲器的最小系統(tǒng)。,627最小系統(tǒng)實例,完整的最小系統(tǒng)LPC2100系列,,決定是否進入ISP狀態(tài),如果該引腳懸空將影響程序脫機運行,627最小系統(tǒng)實例,33V電源,18V電源,復位電路,時鐘電路,完整的最小系統(tǒng)LPC2130系列,627最小系統(tǒng)實例,33V電源,復位電路,時鐘電路,,決定是否進入ISP狀態(tài),如果該引腳懸空將影響程序脫機運行,627最小系統(tǒng)實例,完整的最小系統(tǒng)LPC2200不使用外部存儲器,,復位后使用內(nèi)部存儲器,33V電源,18V電源,復位電路,時鐘電路,,決定是否進入ISP狀態(tài),如果該引腳懸空將影響程序脫機運行,627最小系統(tǒng)實例,完整的最小系統(tǒng)LPC2200使用外部存儲器,,復位后使用外部16位寬度存儲器,33V電源,18V電源,復位電路,時鐘電路,,決定是否進入ISP狀態(tài),如果該引腳懸空將影響程序脫機運行,SRAM,FLASH,63軟件開發(fā)平臺,631ISP下載軟件632ADS集成開發(fā)環(huán)境633EASYJTAG使用634LPC2000工程模板,631ISP下載軟件,簡介,ISP下載軟件是PHILIPS為LPC2000系列芯片編寫的一款程序下載軟件,全稱是LPC2000FLASHUTILITY,最新版本為V222,支持LPC2000所有芯片。常用于批量生產(chǎn)時下載程序,亦可用于檢測最小系統(tǒng)。,631ISP下載軟件,界面,631ISP下載軟件,設置,設定晶振,設定串口波特率,631ISP下載軟件,操作,下載校驗,查空擦除,讀取ID,芯片型號,631ISP下載軟件,重點提示,設計好最小系統(tǒng)后,最好先用ISP軟件對最小系統(tǒng)進行測試,如果能進行ISP連接操作如讀取ID,則才能進行下一步的工作,如JTAG調(diào)試。如果ISP測試不能工作,則需要先檢查最小系統(tǒng)硬件電路。系統(tǒng)可以沒有JTAG調(diào)試電路,但不能沒有UART0電路/接口。,UART0電路ISP電路,,631ISP下載軟件,,631ISP下載軟件,ISP不成功常見原因和解決辦法,(1)確保各路電源正常(2)確保UART0電路正常,可用PC檢測(3)確保晶振正常(4)確保復位電路正常(5)檢測PCB是否存在短路/斷路,632ADS集成開發(fā)環(huán)境,簡介,ADS是目前國內(nèi)使用最廣泛的ARM開發(fā)環(huán)境。ADS為ARM公司所有,全稱為ARMDEVELOPERSUITE,成熟版本為ADS12,支持ARM10之前的所有ARM控制器,支持軟件調(diào)試和JTAG硬件仿真調(diào)試,支持匯編、C、C源程序;編譯效率高、系統(tǒng)功能強,可以在WIN98/2000/XP和REDHAT上運行。,632ADS集成開發(fā)環(huán)境,簡介,ADS12集成開發(fā)環(huán)境組成部分,632ADS集成開發(fā)環(huán)境,CODEWORRIARIDE界面,源程序編輯窗口,工程管理窗口,632ADS集成開發(fā)環(huán)境,AXD調(diào)試器界面,源代碼查看區(qū),,調(diào)試控制快捷圖標,,632ADS集成開發(fā)環(huán)境,ADS使用注意最好不要將ADS工程放在有中文的路徑下。,64啟動代碼,641啟動代碼內(nèi)容642啟動代碼工作流程,641啟動代碼內(nèi)容,1啟動代碼簡介,廣州致遠電子有限公司為LPC2000系列芯片編寫的啟動代碼由3個文件組成。,1STARTUPS-異常向量表定義、各模式堆棧初始化、跳轉(zhuǎn)到C程序MAIN入口等。2TARGETC-目標板初始化,如時鐘分頻、PLL設置、VIC設置等。3IRQS-用于管理中斷嵌套。,641啟動代碼內(nèi)容,1STARTUPS,CODE32AREAVECTORS,CODE,READONLYENTRY中斷向量表RESETLDRPC,RESETADDRLDRPC,UNDEFINEDADDRLDRPC,SWI_ADDRLDRPC,PREFETCHADDRLDRPC,DATAABORTADDRDCD0XB9205F80LDRPC,PC,0XFF0LDRPC,FIQ_ADDRRESETADDRDCDRESETINITUNDEFINEDADDRDCDUNDEFINEDSWI_ADDRDCDSOFTWAREINTERRUPTPREFETCHADDRDCDPREFETCHABORTDATAABORTADDRDCDDATAABORTNOUSEDCD0IRQ_ADDRDCD0FIQ_ADDRDCDFIQ_HANDLER,匯編入口,,,異常向量表,,,地址跳轉(zhuǎn)表,,,641啟動代碼內(nèi)容,1STARTUPS,未定義指令UNDEFINEDBUNDEFINED軟中斷SOFTWAREINTERRUPTBSOFTWAREINTERRUPT取指令中止PREFETCHABORTBPREFETCHABORT取數(shù)據(jù)中止DATAABORTBDATAABORT快速中斷FIQ_HANDLERSTMFDSP,{R0R3,LR}BLFIQ_EXCEPTIONLDMFDSP,{R0R3,LR}SUBSPC,LR,4,異常處理程序,,FIQ處理程序,在TARGETC中實現(xiàn),,,641啟動代碼內(nèi)容,1STARTUPS,INITSTACKMOVR0,LRMSRCPSR_C,0XD3設置管理模式堆棧LDRSP,STACKSVCMSRCPSR_C,0XD2設置中斷模式堆棧LDRSP,STACKIRQMSRCPSR_C,0XD1設置快速中斷模式堆棧LDRSP,STACKFIQMSRCPSR_C,0XD7設置中止模式堆棧LDRSP,STACKABTMSRCPSR_C,0XDB設置未定義模式堆棧LDRSP,STACKUNDMSRCPSR_C,0XDF設置系統(tǒng)模式堆棧LDRSP,STACKUSRMOVPC,R0RESETINITBLINITSTACK初始化堆棧BLTARGETRESETINIT目標板基本初始化B__MAIN跳轉(zhuǎn)到C語言入口,設置各模式堆棧,,,,,,,,,,641啟動代碼內(nèi)容,1STARTUPS,SVC_STACK_LEGTHEQU0FIQ_STACK_LEGTHEQU0IRQ_STACK_LEGTHEQU256ABT_STACK_LEGTHEQU0UND_STACK_LEGTHEQU0AREAMYSTACKS,DATA,NOINIT,ALIGN2SVCSTACKSPACESPACESVC_STACK_LEGTH4管理模式??臻gIRQSTACKSPACESPACEIRQ_STACK_LEGTH4中斷模式棧空間FIQSTACKSPACESPACEFIQ_STACK_LEGTH4快速中斷模式??臻gABTSTACKSPACESPACEABT_STACK_LEGTH4中止義模式棧空間UNDTSTACKSPACESPACEUND_STACK_LEGTH4未定義模式棧STACKSVCDCDSVCSTACKSPACESVC_STACK_LEGTH14STACKIRQDCDIRQSTACKSPACEIRQ_STACK_LEGTH14STACKFIQDCDFIQSTACKSPACEFIQ_STACK_LEGTH14STACKABTDCDABTSTACKSPACEABT_STACK_LEGTH14STACKUNDDCDUNDTSTACKSPACEUND_STACK_LEGTH14AREAHEAP,DATA,NOINITBOTTOM_OF_HEAPSPACE1AREASTACKS,DATA,NOINITSTACKUSR,定義各模式堆大小,計算并分配各模式??臻g分散加載,文字池各模式棧起點,堆空間,分散加載,用戶堆??臻g,分散加載,634LPC2000工程模板,1MEM_ASCFMEM_CSCF,ROM_LOAD0X00000000{ROM_EXEC0X00000000{STARTUPOVECTORS,FIRSTRO}IRAM0X40000000{STARTUPOMYSTACKSRW,ZI}HEAP0UNINIT{STARTUPOHEAP}STACKS0X40002000UNINIT{STARTUPOSTACKS}},641啟動代碼內(nèi)容,2TARGETC,VOIDFIQ_EXCEPTIONVOID{WHILE1//這一句替換為自己的代碼}VOIDTARGETRESETINITVOID{IFDEF__DEBUG_RAMMEMMAP0X2//REMAPENDIFIFDEF__DEBUG_FLASHMEMMAP0X1//REMAPENDIFIFDEF__IN_CHIPMEMMAP0X1//REMAPENDIF/設置系統(tǒng)各部分時鐘/PLLCON1IFFPCLK/FCCLK/41VPBDIV0ENDIF,FIQ處理程序,,,調(diào)試時,根據(jù)用戶選擇的目標設置REMAP,,,根據(jù)CONFIGH用戶定義的時鐘自動設定VPB分頻值,,,641啟動代碼內(nèi)容,2TARGETC,/設置系統(tǒng)各部分時鐘/PLLCON1IFFPCLK/FCCLK/41VPBDIV0ENDIFIFFPCLK/FCCLK/42VPBDIV2ENDIFIFFPCLK/FCCLK/44VPBDIV1ENDIFIFFCCO/FCCLK2PLLCFGFCCLK/FOSC1|05ENDIFIFFCCO/FCCLK4PLLCFGFCCLK/FOSC1|15ENDIFIFFCCO/FCCLK8PLLCFGFCCLK/FOSC1|25ENDIFIFFCCO/FCCLK16PLLCFGFCCLK/FOSC1|35ENDIF,根據(jù)CONFIGH用戶定義的時鐘自動設定PLL的P和M,,,根據(jù)CONFIGH用戶定義的時鐘自動設定VPB分頻值,,,641啟動代碼內(nèi)容,2TARGETC,/設置存儲器加速模塊/MAMCR0IFFCCLK20000000MAMTIM1ELSEIFFCCLK40000000MAMTIM2ELSEMAMTIM3ENDIFENDIFMAMCR2/初始化VIC/VICINTENCLR0XFFFFFFFFVICVECTADDR0VICINTSELECT0/添加自己的代碼///},設定MAM,,,設定VIC,,,留給用戶使用,,,642啟動代碼工作流程,復位后,啟動代碼工作及內(nèi)容,1復位后,PC=0,根據(jù)異常向量表,跳轉(zhuǎn)到復位處理程序。2執(zhí)行復位程序。-堆棧初始化-目標板初始化-跳到C程序MAIN入。3執(zhí)行用戶程序。,,復位,,,,1RESETINIT的地址轉(zhuǎn)入PC,2程序跳轉(zhuǎn)到RESETINIT,,3各模式堆棧初始化,,,,,642啟動代碼工作流程,1RESETINIT的地址轉(zhuǎn)入PC,2程序跳轉(zhuǎn)到RESETINIT,,3各模式堆棧初始化,4進行目標板初始化,,,,642啟動代碼工作流程,1RESETINIT的地址轉(zhuǎn)入PC,2程序跳轉(zhuǎn)到RESETINIT,,3各模式堆棧初始化,4進行目標板初始化,,5跳轉(zhuǎn)到MAIN入口,642啟動代碼工作流程,參考資料,,啟動代碼和分散加載在深入淺出ARM7-LPC213X/LPC214X上冊中有詳細描述。詳見39啟動代碼綜述一節(jié)。,ARM之旅,當前位置,65GPIO模塊,一特性,LPC2000的GPIO具有如下的特性可以獨立控制每個GPIO口的方向(輸入/輸出模式)可以獨立設置每個GPIO的輸出狀態(tài)(高/低電平)所有GPIO口在復位后默認為輸入狀態(tài)部分GPIO有快速GPIO特性,65GPIO模塊,二應用,檢測數(shù)字輸入,如鍵盤或開關信號,驅(qū)動LED或其它指示器,控制片外器件,65GPIO模塊,三引腳描述,LPC2114/2124微控制器具有兩個端口P0和P1,可以作為GPIO使用的引腳數(shù)為46個。LPC2210/2212/2214微控制器還包含另外兩個端口P2和P3,這個兩個端口與外部存儲器總線復用,當它們?nèi)孔鳛镚PIO使用時,GPIO引腳數(shù)多達112個。,65GPIO模塊,四內(nèi)部結構,GPIO內(nèi)部結構示意,引腳,,65GPIO模塊,五GPIO操作,除了設定管腳連接之外,GPIO還有如下操作1設定GPIO方向2控制GPIO3讀取管腳電平4讀取GPIO設置,65GPIO模塊,1設定GPIO方向,通過GPIO方向寄存器IODIR進行控制。,方向控制1-輸出0-輸入,每個P口都有自己的IODIR寄存器。IOXDIR和相應的PX口對應。,,65GPIO模塊,2控制GPIO,拉高某位口線通過置位相應的IO置位寄存器IOSET中對應位實現(xiàn)。,置位控制寫入1-輸出高電平寫0無效,,65GPIO模塊,2控制GPIO,拉低某位口線通過置位相應的IO清零寄存器IOCLR中對應位實現(xiàn)。,清零控制寫入1-輸出低電平寫0無效,,寫該寄存器會清除IOSET寄存器/輸出寄存器中對應位。,65GPIO模塊,2控制GPIO,同時拉高/拉低某些口線通過寫相應的IO管腳值寄存器IOPIN中對應位實現(xiàn)。,清零控制寫入1-輸出高電平寫入0-輸出低電平,,65GPIO模塊,3讀取管腳電平,讀取管腳電平通過讀取相應的IO管腳值寄存器IOPIN實現(xiàn)。,管腳電平1-管腳為高電平0-管腳為低電平,,65GPIO模塊,4讀取GPIO設置,讀取管腳設置通過讀取相應的IO管腳置位寄存器IOSET實現(xiàn)。,管腳設置僅反映程序設定狀態(tài),不反映外部實際情況。,,65GPIO模塊,六注意要點,引腳設置為輸出方式時,輸出狀態(tài)由IOXSET和IOXCLR中最后操作的寄存器決定;大部分GPIO輸出為推挽方式(個別引腳為開漏輸出),正常拉出/灌入電流均為4MA(短時間極限值40MA);復位后默認所有GPIO為輸入模式。,65GPIO模塊,PINSEL0IO0DIR|0X00000001IO0SET0X00000001,C代碼,,,PINSEL0,,,,,IO0DIR,,,,,,,,,IO0CLR,,,,,,,IO0PIN,IO0SET,IN,OUT,,,1,0,,,,,,,,,GPIO應用示例1設置P00輸出高電平,P00,65GPIO模塊,UINT32PINSTATPINSEL0IO0DIRPINSTATIO0PIN,C代碼,,,PINSEL0,,,,,IO0DIR,,,,,,,,,IO0CLR,,,,,,IO0PIN,IO0SE
下載積分: 4 賞幣
上傳時間:2024-01-06
頁數(shù): 89
大?。?1.43(MB)
子文件數(shù):