




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第九章天嵌TQ2440移植與實例
9.1準(zhǔn)備工作9.2TQ2440工程實例9.3Bootloader9.4本章小結(jié)
TQ2440實驗板集成了主頻為400MHz的S3C2440芯片,板載2片HY57V561620芯片,使得SDRAM空間大小為64MB,外擴(kuò)NAND型FLASH芯片為64MB的K9F1208,同時,也集成了一個2MB大小的NOR型FLASH芯片AM29LV160DB。該實驗板是性價比較高的ARM實驗平臺,筆者基于該平臺做了大量的程序設(shè)計工作。這里將基于TQ2440介紹μC/OS-Ⅱ的移植和典型應(yīng)用程序框架及其Bootloader方法。由于TQ2440的外設(shè)接口與UP-Star區(qū)別較大,所以,基于UP-Star的工程均需做較大的修改才能在TQ2440上運(yùn)行。將TQ2440的串口0與計算機(jī)串口相連(建議在關(guān)機(jī)狀態(tài)下操作),連接好J-LINK仿真器(需接第一章圖1-1所示轉(zhuǎn)接頭),接上TQ2440實驗板的電源插頭,打開TQ2440實驗板電源開關(guān)和計算機(jī),則實驗平臺就建立起來了。9.1準(zhǔn)備工作本章實例用到的硬件外設(shè)如下:
(1)四個LED燈,位于TQ2440實驗板的下方,在蜂鳴器的右下側(cè),標(biāo)號為LED1、LED2、LED3和LED4,分別與S3C2440A芯片的GPB5、GPB6、GPB7和GPB8相連接。
(2)串口0,位于TQ2440實驗板的左上方,連接方式與UP-Star實驗板相似,參考第一章圖1-30。注意:由于計算機(jī)串口的第2腳為RXD(即接收腳),第3腳為TXD(即發(fā)送腳),UP-Star實驗板的串口0第2腳為RXD,第3腳為TXD,與計算機(jī)串口排列相同,所以連接UP-Star實驗板的串口線為交叉線;而TQ2440實驗板的串口第2腳為TXD,第3腳為RXD,與計算機(jī)串口排列相反,故連接TQ2440實驗板的串口線為不交叉的平行直連線。
(3)四個按鍵,位于TQ2440的左下方,在蜂鳴器的左側(cè),成“十”字形排列,標(biāo)號為K1、K2、K3和K4,分別與EINT1、EINT4、EINT2和EINT0相連。這四個按鍵與UP-Star中的按鍵相比,沒有硬件防抖功能。
(4)蜂鳴器,由TOUT0管腳輸出的PWM波控制。
本章實例擬實現(xiàn)的功能為:當(dāng)按下某個按鍵時,串口調(diào)試助手會顯示按鍵信息,對應(yīng)的LED燈閃爍,同時蜂鳴器會響一下。在第八章工程ex8_1的基礎(chǔ)上,新建工程ex9_1,保存目錄為D:\ZYUCOSII\ex9_1,此時的工程ex9_1與工程ex8_1完全相同,只是工程文件名更改為ex9_1。工程ex9_1中人工輸入代碼的文件有bsp.c、bsp.h、app.c、app.h、appfun.c、startup.s、includes.h和ex9_1.mac,這些文件在工程ex8_1的基礎(chǔ)上都做了修改。下面列出了各個文件的修改情況。9.2TQ2440工程實例(1)文件ex9_1.mac使用UltraEdit軟件修改,修改的部分有中斷控制器、時鐘和存儲器,其代碼如下:28}
29
30execUserPreload()
31{
32_message"InitializingSDRAM...\n";
33setup();
34_message"InitializingSDRAM...Completed\n";
35}(2)文件startup.s修改了時鐘初始化和存儲器配置,其代碼如下:
1;Filename:startup.s
2;Byzhnyang@21
3;@2009-4-4
4;ForS3C2440A(RunafterReset)
5;CopyrightReserved
6
7;Note:@LittleEndian
8
177;EntertheCCode
178LDRR0,=main
179BXR0
180
181END(3)?includes.h文件沒有做修改,由于其代碼較少,也羅列如下:
1/*FileName:includes.h
2**Byzhnyong@21
3**@2009-4-4
4**CopyrightReserved
5*/
6
7#include"stdio.h"
8#include"string.h"
9#include"math.h"
10
11#include"..\\ucosii\\ucos_ii.h"
12
13#include"app.h"
14#include"..\\ports\\bsp.h"
(4)文件bsp.h修改了I/O口、外部中斷0~2和外部中斷4及定時器0的定義,其代碼如下:
1/*FileName:bsp.h
2**Byzhnyong@21
3**@2009-4-4
4**CopyrightReserved
5*/
6
(5)文件bsp.c修改了LED燈和定時器0的初始化及中斷入口函數(shù)OS_CPU_ExceptHndlr,其代碼如下:
1/*FileName:bsp.c
2**Byzhnyong@21
3**@2009-4-4
4**CopyrightReserved
5*/
6
7#include"..\\user\\includes.h"
8
9voidOS_CPU_ExceptHndlr(INT32Uexcept_type)
(6)文件app.h修改了信號量、定時器和任務(wù)的聲明,其代碼如下:
1/*FileName:app.h
2**Byzhnyong@21
3**@2009-4-4
4**CopyrightReserved
5*/
6
7#ifdefMY_APP_GLOBALS
8#defineMY_APP
9#else
10#defineMY_APPextern
(7)文件app.c沒有做任何修改,由于其代碼短小,這里羅列如下:
1/*FileName:app.c
2**Byzhnyong@21
3**@2009-4-4
4**MainRoutine
5**CopyrightReserved
6*/
7
8#include"includes.h"
9
(8)文件appfun.c修改較大,其代碼如下:
1/*FileName:appfun.c
2**Byzhnyong@21
3**@2009-4-4
4**CopyrightReserved
5*/
6
7#defineMY_APP_GLOBALS
8#include"includes.h"
9
346//TheCallbackfunctionforRingTmrTimer
347voidringTmrFnc(void*ptmr,void*callback_arg)
348{
349//CloseRing
350TCON&=~(1<<0);//StopTimer0
351GPBCON&=~(1<<1|1<<0);
352}第13~34行為LED燈點(diǎn)亮函數(shù);第36~41行為關(guān)閉四個LED燈的函數(shù);第43~65行為使LED燈閃爍一下的函數(shù)。第70~75行為開定時器4中斷;第77~89行為開放外部中斷0、1、2和4。第94~134行為串口收發(fā)相關(guān)的函數(shù)。
第139行為任務(wù)AppTaskStart的代碼,其中,第164~171行創(chuàng)建了四個信號量,即key1Sem、key2Sem、key3Sem和key4Sem;第180~186行創(chuàng)建了一個OneShot型一次定時器,該定時器啟動后,延時0.5秒后將調(diào)用回調(diào)函數(shù)ringTmrFnc,然后自動停止。第204~247行創(chuàng)建了四個任務(wù)。
第249~268行為任務(wù)AppTask_1代碼,在第256行,請求key1Sem信號量,如果得到該信號量,則第259~263行將通過串口調(diào)試助手輸出按鍵信息,啟動系統(tǒng)定時器RingTmr,并打開蜂鳴器,0.5秒后,在回調(diào)函數(shù)ringTmrFnc中關(guān)閉蜂鳴器(第347~352行)。其他三個任務(wù)的代碼與任務(wù)1相似。
(9)工程ex9_1的配置也需要修改,如圖9-1至圖9-4所示。圖9-1調(diào)試選項“Setup”圖9-2調(diào)試選項“Breakpoints”圖9-3連接配置文件“MemoryRegions”圖9-4連接配置文件“Stack/HeapSizes”
(10)完成后的工程ex9_1如圖9-5所示。仿真調(diào)試時,按下四個按鍵K1、K2、K3和K4的任一個按鍵后,相應(yīng)的LED燈會閃動,同時蜂鳴器會鳴叫0.5秒,串口調(diào)試助手將顯示按鍵信息,如圖9-6所示。圖9-5工程ex9_1圖9-6串口調(diào)試助手顯示結(jié)果工程ex9_1工作在仿真環(huán)境下,需要做一些修改才能生成正確的Boot表,即能下載到FLASH中的目標(biāo)代碼。
在工程ex9_1的基礎(chǔ)上,新建工程ex9_2,保存目錄為D:\ZYUCOSII\ex9_2,與工程ex9_1相比,需要改動的文件只有cstartup.s,即在該文件中添加Bootloader代碼,使芯片S3C2440A上電復(fù)位后,將程序代碼從FLASH中拷貝到SDRAM中,并重定位SDRAM到地址0x0處。文件cstartup.s的內(nèi)容如下:9.3Bootloader需要重點(diǎn)關(guān)注的代碼行為第149~249行,這段代碼將FLASH的地址0x0~0x100000范圍內(nèi)的代碼搬移至SDRAM的地址0x30000000~0x30100000處,請讀者結(jié)合《ARM原理與C程序設(shè)計》以及K9F1208芯片資料自行分析代碼。
此外,工程ex9_2的配置需要修改,如圖9-7和圖9-8所示。在圖9-7中,ROM地址為0x1000~0x9FFF;RAM地址為0x10000~0x2FFFF。這兩個空間均可以取得大一些(從附錄二中flash.h文件可知實際目標(biāo)文件代碼最高地址為0x7E10)。圖9-8指示EWARM將編譯生成目標(biāo)文件ex9_2.hex,這個目標(biāo)文件中的數(shù)據(jù)提取出來生成文件flash.h,生成方法參考第7.2.3節(jié)。將生成的flash.h文件寫入TQ2440實驗板中的FLASH芯片K9F1208中,即可使工程ex9_2自舉運(yùn)行。將flash.h寫入K9F1208芯片中的工程參見附錄二工程ex9_3。
注意:工程ex9_2不能在線仿真運(yùn)行!圖9-7工程ex9_2鏈接配置圖9-8工程ex9_2輸出目標(biāo)文件配置另一種將工程ex9_2的目標(biāo)文件下載到TQ2440實驗板的FLASH芯片K9F1208的方法為借助于H-JTAGv0.9.2軟件,這時圖9-8中的配置改動如圖9-9所示。圖9-9生成普通二進(jìn)制目標(biāo)代碼按圖9-9所示配置后,編譯鏈接工程ex9_2將在D:\ZYUCOSII\ex9_2\Debug\Exe目錄下生成ex9_2.bin目標(biāo)文件。bin文件與hex文件相比,bin文件是沒有格式的,其內(nèi)容為從第0個地址開始依次按字節(jié)排列到最后一個地址的數(shù)據(jù)。
然后,取下J-LINK仿真器(斷開電源操作),連接TQ2440簡易并口仿真器與其JTAG口,打開TQ2440實驗板電源,運(yùn)行H-JTAG軟件,配置并口如圖9-10所示,點(diǎn)擊“OK”按鈕后進(jìn)入圖9-11。在圖9-11中,不能選中“AutoInit”菜單。圖9-10H-JTAG連接圖圖9-11H-JTAG服務(wù)器正常
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯建設(shè)工程合同范本
- 恒大土建合同范本
- 出售空中商鋪合同范本
- 玩具委托設(shè)計合同范本
- 花崗巖界樁采購合同范本
- 房屋過戶合同范本模板
- 充電樁充電合同范本
- 奧迪賣車合同范本
- 家具定向合同范本
- 2025建筑工程監(jiān)理合同示范文本(GF)
- 維維食品飲料有限公司-質(zhì)量獎自我評價報告
- 初三數(shù)學(xué)第一輪復(fù)習(xí)教案統(tǒng)計初步教案
- 土壤分析技術(shù)規(guī)范(第二版)
- 食品從業(yè)者工作服清洗消毒記錄
- 裝修單項項目確認(rèn)單
- 華為員工準(zhǔn)則手冊
- 分子生態(tài)學(xué)1分子標(biāo)記
- 冷水機(jī)組工廠驗收FAT方案
- 建筑施工企業(yè)三類人員變更申請表(外省市)
- 通用精美電子小報模板(35)
- 廣州大學(xué)畢業(yè)論文格式
評論
0/150
提交評論