版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章天嵌TQ2440移植與實(shí)例
9.1準(zhǔn)備工作9.2TQ2440工程實(shí)例9.3Bootloader9.4本章小結(jié)
TQ2440實(shí)驗(yàn)板集成了主頻為400MHz的S3C2440芯片,板載2片HY57V561620芯片,使得SDRAM空間大小為64MB,外擴(kuò)NAND型FLASH芯片為64MB的K9F1208,同時(shí),也集成了一個(gè)2MB大小的NOR型FLASH芯片AM29LV160DB。該實(shí)驗(yàn)板是性?xún)r(jià)比較高的ARM實(shí)驗(yàn)平臺(tái),筆者基于該平臺(tái)做了大量的程序設(shè)計(jì)工作。這里將基于TQ2440介紹μC/OS-Ⅱ的移植和典型應(yīng)用程序框架及其Bootloader方法。由于TQ2440的外設(shè)接口與UP-Star區(qū)別較大,所以,基于UP-Star的工程均需做較大的修改才能在TQ2440上運(yùn)行。將TQ2440的串口0與計(jì)算機(jī)串口相連(建議在關(guān)機(jī)狀態(tài)下操作),連接好J-LINK仿真器(需接第一章圖1-1所示轉(zhuǎn)接頭),接上TQ2440實(shí)驗(yàn)板的電源插頭,打開(kāi)TQ2440實(shí)驗(yàn)板電源開(kāi)關(guān)和計(jì)算機(jī),則實(shí)驗(yàn)平臺(tái)就建立起來(lái)了。9.1準(zhǔn)備工作本章實(shí)例用到的硬件外設(shè)如下:
(1)四個(gè)LED燈,位于TQ2440實(shí)驗(yàn)板的下方,在蜂鳴器的右下側(cè),標(biāo)號(hào)為L(zhǎng)ED1、LED2、LED3和LED4,分別與S3C2440A芯片的GPB5、GPB6、GPB7和GPB8相連接。
(2)串口0,位于TQ2440實(shí)驗(yàn)板的左上方,連接方式與UP-Star實(shí)驗(yàn)板相似,參考第一章圖1-30。注意:由于計(jì)算機(jī)串口的第2腳為RXD(即接收腳),第3腳為T(mén)XD(即發(fā)送腳),UP-Star實(shí)驗(yàn)板的串口0第2腳為RXD,第3腳為T(mén)XD,與計(jì)算機(jī)串口排列相同,所以連接UP-Star實(shí)驗(yàn)板的串口線(xiàn)為交叉線(xiàn);而TQ2440實(shí)驗(yàn)板的串口第2腳為T(mén)XD,第3腳為RXD,與計(jì)算機(jī)串口排列相反,故連接TQ2440實(shí)驗(yàn)板的串口線(xiàn)為不交叉的平行直連線(xiàn)。
(3)四個(gè)按鍵,位于TQ2440的左下方,在蜂鳴器的左側(cè),成“十”字形排列,標(biāo)號(hào)為K1、K2、K3和K4,分別與EINT1、EINT4、EINT2和EINT0相連。這四個(gè)按鍵與UP-Star中的按鍵相比,沒(méi)有硬件防抖功能。
(4)蜂鳴器,由TOUT0管腳輸出的PWM波控制。
本章實(shí)例擬實(shí)現(xiàn)的功能為:當(dāng)按下某個(gè)按鍵時(shí),串口調(diào)試助手會(huì)顯示按鍵信息,對(duì)應(yīng)的LED燈閃爍,同時(shí)蜂鳴器會(huì)響一下。在第八章工程ex8_1的基礎(chǔ)上,新建工程ex9_1,保存目錄為D:\ZYUCOSII\ex9_1,此時(shí)的工程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ǔ)上都做了修改。下面列出了各個(gè)文件的修改情況。9.2TQ2440工程實(shí)例(1)文件ex9_1.mac使用UltraEdit軟件修改,修改的部分有中斷控制器、時(shí)鐘和存儲(chǔ)器,其代碼如下:28}
29
30execUserPreload()
31{
32_message"InitializingSDRAM...\n";
33setup();
34_message"InitializingSDRAM...Completed\n";
35}(2)文件startup.s修改了時(shí)鐘初始化和存儲(chǔ)器配置,其代碼如下:
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文件沒(méi)有做修改,由于其代碼較少,也羅列如下:
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及定時(shí)器0的定義,其代碼如下:
1/*FileName:bsp.h
2**Byzhnyong@21
3**@2009-4-4
4**CopyrightReserved
5*/
6
(5)文件bsp.c修改了LED燈和定時(shí)器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修改了信號(hào)量、定時(shí)器和任務(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沒(méi)有做任何修改,由于其代碼短小,這里羅列如下:
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行為L(zhǎng)ED燈點(diǎn)亮函數(shù);第36~41行為關(guān)閉四個(gè)LED燈的函數(shù);第43~65行為使LED燈閃爍一下的函數(shù)。第70~75行為開(kāi)定時(shí)器4中斷;第77~89行為開(kāi)放外部中斷0、1、2和4。第94~134行為串口收發(fā)相關(guān)的函數(shù)。
第139行為任務(wù)AppTaskStart的代碼,其中,第164~171行創(chuàng)建了四個(gè)信號(hào)量,即key1Sem、key2Sem、key3Sem和key4Sem;第180~186行創(chuàng)建了一個(gè)OneShot型一次定時(shí)器,該定時(shí)器啟動(dòng)后,延時(shí)0.5秒后將調(diào)用回調(diào)函數(shù)ringTmrFnc,然后自動(dòng)停止。第204~247行創(chuàng)建了四個(gè)任務(wù)。
第249~268行為任務(wù)AppTask_1代碼,在第256行,請(qǐng)求key1Sem信號(hào)量,如果得到該信號(hào)量,則第259~263行將通過(guò)串口調(diào)試助手輸出按鍵信息,啟動(dòng)系統(tǒng)定時(shí)器RingTmr,并打開(kāi)蜂鳴器,0.5秒后,在回調(diào)函數(shù)ringTmrFnc中關(guān)閉蜂鳴器(第347~352行)。其他三個(gè)任務(wù)的代碼與任務(wù)1相似。
(9)工程ex9_1的配置也需要修改,如圖9-1至圖9-4所示。圖9-1調(diào)試選項(xiàng)“Setup”圖9-2調(diào)試選項(xiàng)“Breakpoints”圖9-3連接配置文件“MemoryRegions”圖9-4連接配置文件“Stack/HeapSizes”
(10)完成后的工程ex9_1如圖9-5所示。仿真調(diào)試時(shí),按下四個(gè)按鍵K1、K2、K3和K4的任一個(gè)按鍵后,相應(yīng)的LED燈會(huì)閃動(dòng),同時(shí)蜂鳴器會(huì)鳴叫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相比,需要改動(dòng)的文件只有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處,請(qǐng)讀者結(jié)合《ARM原理與C程序設(shè)計(jì)》以及K9F1208芯片資料自行分析代碼。
此外,工程ex9_2的配置需要修改,如圖9-7和圖9-8所示。在圖9-7中,ROM地址為0x1000~0x9FFF;RAM地址為0x10000~0x2FFFF。這兩個(gè)空間均可以取得大一些(從附錄二中flash.h文件可知實(shí)際目標(biāo)文件代碼最高地址為0x7E10)。圖9-8指示EWARM將編譯生成目標(biāo)文件ex9_2.hex,這個(gè)目標(biāo)文件中的數(shù)據(jù)提取出來(lái)生成文件flash.h,生成方法參考第7.2.3節(jié)。將生成的flash.h文件寫(xiě)入TQ2440實(shí)驗(yàn)板中的FLASH芯片K9F1208中,即可使工程ex9_2自舉運(yùn)行。將flash.h寫(xiě)入K9F1208芯片中的工程參見(jiàn)附錄二工程ex9_3。
注意:工程ex9_2不能在線(xiàn)仿真運(yùn)行!圖9-7工程ex9_2鏈接配置圖9-8工程ex9_2輸出目標(biāo)文件配置另一種將工程ex9_2的目標(biāo)文件下載到TQ2440實(shí)驗(yàn)板的FLASH芯片K9F1208的方法為借助于H-JTAGv0.9.2軟件,這時(shí)圖9-8中的配置改動(dòng)如圖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文件是沒(méi)有格式的,其內(nèi)容為從第0個(gè)地址開(kāi)始依次按字節(jié)排列到最后一個(gè)地址的數(shù)據(jù)。
然后,取下J-LINK仿真器(斷開(kāi)電源操作),連接TQ2440簡(jiǎn)易并口仿真器與其JTAG口,打開(kāi)TQ2440實(shí)驗(yàn)板電源,運(yùn)行H-JTAG軟件,配置并口如圖9-10所示,點(diǎn)擊“OK”按鈕后進(jìn)入圖9-11。在圖9-11中,不能選中“AutoInit”菜單。圖9-10H-JTAG連接圖圖9-11H-JTAG服務(wù)器正常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版板車(chē)運(yùn)輸與物流設(shè)備租賃合同3篇
- 2025年度個(gè)人商鋪轉(zhuǎn)讓合同范本4篇
- 二零二五白蟻防治與建筑安全評(píng)估與隱患排查服務(wù)合同2篇
- 2025版企業(yè)間無(wú)利息貸款合同范本3篇
- 二零二五版國(guó)防信息安全保密責(zé)任書(shū)2篇
- 2025年度綠色苗圃場(chǎng)技術(shù)員專(zhuān)項(xiàng)技能聘用協(xié)議4篇
- 二零二五年攪拌站混凝土生產(chǎn)過(guò)程監(jiān)控與優(yōu)化合同3篇
- 2025年度網(wǎng)絡(luò)安全代理合作保密協(xié)議書(shū)3篇
- 2025版信托投資公司教育產(chǎn)業(yè)借款合同3篇
- 2025年度個(gè)人現(xiàn)金貸合同模板3篇
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專(zhuān)題復(fù)習(xí)
- 光伏項(xiàng)目風(fēng)險(xiǎn)控制與安全方案
- 《行政職業(yè)能力測(cè)驗(yàn)》2023年公務(wù)員考試新疆維吾爾新疆生產(chǎn)建設(shè)兵團(tuán)可克達(dá)拉市預(yù)測(cè)試題含解析
- 醫(yī)院投訴案例分析及處理要點(diǎn)
- 練習(xí)20連加連減
- 五四制青島版數(shù)學(xué)五年級(jí)上冊(cè)期末測(cè)試題及答案(共3套)
- 商法題庫(kù)(含答案)
- 鋼結(jié)構(gòu)用高強(qiáng)度大六角頭螺栓連接副 編制說(shuō)明
- 溝通與談判PPT完整全套教學(xué)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目四 移動(dòng)商務(wù)運(yùn)營(yíng)內(nèi)容的傳播
評(píng)論
0/150
提交評(píng)論