




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、RK27平臺基礎(chǔ),開發(fā)必須的相關(guān)資料: SDK軟件開發(fā)包 VC+ 編譯器 ARM ADS 編譯調(diào)試器 電路圖,datasheet RK2700 Demo板 JTAG仿真器及驅(qū)動,內(nèi)容提要,Q I2C_Init和I2C_Deinit要成對使用; 同時只可對同一設(shè)備進行讀寫,GPIO使用,GPIO_PowerOnInit( void );開機初始化GPIO GPIO_Config(GPIOPinNum, GpioConfig);配置一個GPIO GPIO_SetPinLevel(GPIOPinNum,level);設(shè)GPIO電平 GPIO_GetPinLevel(GPIOPinNum);讀GPIO
2、電平 GPIO_SetPinDirection(GPIOPinNum,direction);設(shè)GPIO方向 GPIO_EnableIntr(GPIOPinNum);打開GPIO中斷 GPIO_DisableIntr(GPIOPinNum);關(guān)閉GPIO中斷 注意: GPIO分PA、PB、PC、PD四組32個,可分組配置,也可單獨配置某一個口。 大多數(shù)GPIO都有復(fù)用,因此在使用GPIO時應(yīng)注意聯(lián)合IOMUX驅(qū)動一起使用,IOMUX的使用,IOMUX_PowerOnInit(void)IO復(fù)用的上電初始化, IOMUX_SetI2CType(i2ctype)設(shè)置I2C復(fù)用的IO口線類型 IOMU
3、X_SetUart0Port(type)設(shè)置UART0復(fù)用的IO口線類型 IOMUX_SetUart1Port(type)設(shè)置UART1復(fù)用的IO口線類型 IOMUX_SetPwmPort(chn, type)設(shè)置PWM復(fù)用的IO口線類型 IOMUX_SetI2SType(codectype)設(shè)置I2S復(fù)用的IO口線類型 IOMUX_SetSDPort(type)設(shè)置SD復(fù)用的IO口線類型 IO的第一功能和第二功能同時只能使用一個。 IO復(fù)用的上電初始化時,將預(yù)先設(shè)置各復(fù)用IO口線功能 ,中途要更改各IO的功能,應(yīng)根據(jù)需要進行配置,中斷的使用,Intr_PowerOnInit(void); -
4、 開機初始化控制器 Intr_RegISR(irq, routine); - 注冊中斷,將isr與irq關(guān)聯(lián) Intr_Enable(irq); - 使能特定中斷 Intr_Disable(irq); - 禁止特定中斷 Intr_SetPrio(irq, priority); - 設(shè)置中斷優(yōu)先級 Intr_GetPrio(irq); - 得到中斷優(yōu)先級 int Intr_GetState(void);- 獲取狀態(tài) Intr_ClearFlag(irq);- 清標志 Intr_SetType(irq, type); - 設(shè)置中斷類型 Intr_GetType(irq); - 得到中斷類型 注意:
5、 中斷驅(qū)動只針對芯片的中斷控制器,不針對ARM的IRQ 中斷開機初始化時,關(guān)閉了所有中斷,打開了ARM的IRQ 中斷服務(wù)程序不含參數(shù),串口調(diào)試的使用,int serial_PowerOnInit (void) 串口調(diào)試的上電初始化 (2) void serial_printf (const char *fmt, .) *fm, . - 格式化打印的可變字符串參數(shù) 串口輸出調(diào)試字符串和變量值,使用方式和C庫函數(shù)printf相同 (3) int serial_scanf (char *fmt, .) *fm, . - 格式化打印的可變字符串參數(shù) 從PC端控制臺讀取輸入的字符串,使用方式和C庫函數(shù)s
6、canf相同,Codec的使用,Codec_PowerOnInitial上電初始化Codec Codec_SetMode(Codecmode);設(shè)置Codec工作模式 Codec_SetSampleRate設(shè)置Codec的采樣率 Codec_SetVolumet設(shè)置Codec的音量 Codec_DACMute設(shè)置Codec 在DAC 工作時啟動軟靜音 Codec_DACUnMute(void)設(shè)置Codec在DAC 工作時關(guān)閉軟靜音 Codec_DeIitial(void)反初始化Codec codec工作模式可設(shè)為下列幾種: Codec_DACout - 音頻數(shù)據(jù)流輸出 Codec_FMin
7、 - FM LineIn輸出 Codec_FMADC - FM錄音 Codec_LineADC - 線錄(Line in recording) Codec_MICAdc - Mic錄音 Codec_Standby - codec休眠省電模式,LCD及其控制器,ScreenPowerOnInit(pScreen) 上電初始化LCD ScreenRGBUpdate(*pScreen, *LcdArea) MCU類型LCD屏RGB方式數(shù)據(jù)更新 ScreenYUVUpdate(*pScreenY,*pScreenUV) MCU類型LCD屏YUV方式數(shù)據(jù)更新 ScreenYUVScaleUpdate M
8、CU類型LCD屏YUV方式放大縮小數(shù)據(jù)更新 ScreenRGBAlphaUpdate MCU類型LCD屏RGB方式放大縮小數(shù)據(jù)更新,內(nèi)容提要,仿真、調(diào)試、編譯、燒錄方,集成開發(fā)環(huán)境(IDE),RK27 IDE是指包含了源代碼、算法庫、編譯環(huán)境、調(diào)試環(huán)境、仿真環(huán)境、燒寫工具、資源生成工具等等的軟件集成開發(fā)包。也即是RK27_SDK,SDK的目錄結(jié)構(gòu),發(fā)布的軟件版本包含如下目錄: Application 應(yīng)用層代碼,如音頻、視頻播放器、電子書、收音機 System 系統(tǒng)代碼,包括OS,GUI,驅(qū)動,媒體庫等等 Build 編譯相關(guān) Doc 平臺技術(shù)文檔 Ide存放 編譯工程目錄,包括仿真和板子等。
9、其中,iderk27_board 為板子工程,使用 ADS 進行編譯和調(diào)試, iderk27_dll 為仿真工程,使用 VC+6.0 進行編譯和調(diào)試。 其他目錄為測試目錄 Lib 解碼或其他算法庫和相關(guān)的頭文件。 Output 編譯輸出的中間文件和目標文件。 Resource 圖片、文本、字庫等資源相關(guān), 包括生成工具,輸入配置文件,輸入數(shù)據(jù)三部分。輸入配置文件必須固定為 resourceresource.cfg 文件。輸入格式可以參考該文件例子。具體說明參考后續(xù)文檔 Tools工具 Customer預(yù)留給二次開發(fā)商使用的目錄,編譯器安裝 VC+,進行仿真編譯,需先安裝VC+6.0以上編譯器
10、默認安裝完VC+后,無需進行其他設(shè)置,雙擊打開RK27_SDKIdeRk27Dll目錄下工程文件rk27dll.dsw文件即進入VC+環(huán)境,使用build目錄進行編譯 如果需要在仿真環(huán)境下添加編譯開關(guān),進入Project菜單- settings選項,C/C+選項卡,在其中的Preprocessor definitions中添加 如果需要添加默認編譯路徑,在其下的project Options中添加即可。,編譯器安裝 ADS,默認安裝完ADS,則可打開RK27_SDKIdeRk27_board目錄下ARM工程文件rk27_baord.mcp進行編譯 ARM編譯均可使用默認配置,但當使用不同的JT
11、AG調(diào)試器時,調(diào)試軟件AXD需選擇不同的JTAG驅(qū)動程序。AXD的SDRAM初始化腳本使用build目錄下的BoardInit_RK27_8x16.txt文件,BOOT燒寫,新的板子或新的Nand Flash在燒寫固件之前,應(yīng)進行boot的燒寫,boot升級方法請參考RK27_SDKTools目錄下RK27燒寫指南.doc文檔 當boot程序有升級時,也應(yīng)及時進行boot的升級,否則有可能由于固件和boot不兼容而產(chǎn)生錯誤和沖突,圖片資源,原始圖片資源位于Resourceinputbmp目錄下,可根據(jù)需要進行增刪修改 Resource根目錄下的*.cfg文件用來配置圖片和文本資源的輸入、輸出目
12、錄等 原始圖片應(yīng)當是BMP圖片,文件名應(yīng)當是英文或數(shù)字名,不可含中文或空格 圖片目錄可以是中文名。 編譯完資源后,將會在Resourceinclude目錄下自動生成Bmp0ID.h的文件,該文件是所有原始圖片ID的集合,在代碼中引用該ID即可訪問對應(yīng)的圖片。 圖片資源生成后的目標文件是OutputRESOURCEBID目錄下的BMP0.BIN (注:為防止編譯產(chǎn)生資源ID引用錯誤,應(yīng)在編譯代碼之前先編譯資源),文本資源,原始文本資源位于Resourceinputstringid目錄下excel文件unicodeSid.xls,使用office excel打開進行編輯。其中一列代表一國語言。 編
13、輯完原始文本后應(yīng)另存為txt格式,且選擇unicode另存為文本unicode.txt。 進行資源編譯后,所有文本ID位于Resourceinclude目錄下stringID.h文件,在代碼中引用相應(yīng)的ID即可訪問其對應(yīng)的文本資源。當語言發(fā)生改變時,使用相同的ID。 文本資源生成后,其目標文件是位于OutputRESOURCESID目錄下的STRINGID.BIN文件 (其他小工具均位于Resourcebin目錄下,請參看其說明),仿真調(diào)試界面,內(nèi)容提要,系統(tǒng)和應(yīng)用軟件,操作系統(tǒng),RKOS是Rockchip公司自主研發(fā)的一個實時搶占性多任務(wù)操作系統(tǒng),主要支持信號量和消息(郵箱)兩種通信方式。
14、操作系統(tǒng)的基本調(diào)度方法是優(yōu)先級調(diào)度法,任務(wù),RKOS的任務(wù)是一個具有獨立堆棧的無限循環(huán)函數(shù),每個任務(wù)都可以被內(nèi)核或中斷強占,一個任務(wù)可以不依賴其他任務(wù)單獨運行。RKOS中任務(wù)的概念和通用操作系統(tǒng)一致. RKOS中具有五個基本任務(wù):PriHighTask,PriMHighTask,PriNormalTask,PriLowTask和TimerTask,參與任務(wù)切換的還包括中斷程序和IDLE任務(wù), 一個優(yōu)先級只對應(yīng)一個任務(wù),這些任務(wù)均由內(nèi)核啟動時靜態(tài)創(chuàng)建。所有任務(wù)一直駐留在內(nèi)存之中,優(yōu)先級不發(fā)生動態(tài)變化。 一般地,用戶不新創(chuàng)建任務(wù),任務(wù)舉例,任務(wù)的狀態(tài)轉(zhuǎn)換,當任務(wù)被創(chuàng)建后,處于就緒隊列。OS TIC
15、K(5ms一次)到來之機,將就緒隊列中優(yōu)先級最高的任務(wù)和當前運行的任務(wù)比較,若比當前任務(wù)優(yōu)先級更高,則執(zhí)行任務(wù)切換,否則繼續(xù)運行當前任務(wù)。 當前任務(wù)恒定只有一個,在當前任務(wù)運行的過程中,若需要等待一個條件(比如等待接受一個消息,等待申請一個信號量等),則會進入掛起狀態(tài),就緒隊列中的最高任務(wù)會轉(zhuǎn)入運行。 掛起的任務(wù)所等待的條件到來時(如收到了消息,申請到了信號量等),此任務(wù)會轉(zhuǎn)入就緒隊列。優(yōu)先級滿足時會即刻轉(zhuǎn)入運行。,任務(wù)的基本狀態(tài),線程,RKOS的線程是包含在某個任務(wù)之內(nèi)的一個可獨立處理消息的程序,一個任務(wù)可以包含有多個線程。線程沒有獨立的堆棧,RKOS線程具有如下特性 同一個任務(wù)內(nèi)的所有線程
16、共用該任務(wù)的堆棧。 同一個任務(wù)內(nèi)的所有線程按照注冊次序順序執(zhí)行(串行),沒有調(diào)度關(guān)系。 不同任務(wù)內(nèi)的線程并行執(zhí)行。 一個任務(wù)內(nèi)的某個線程若一直等待一個條件,則此任務(wù)內(nèi)的其他線程都得不到執(zhí)行,但其他任務(wù)內(nèi)的線程可以得到執(zhí)行。 線程有少數(shù)幾個是系統(tǒng)初始化時自建的,如GUI線程和刷屏線程,始終駐留在系統(tǒng)之中,用戶的需要用到時,不需要再建立,只需要將代碼嵌入在其中即可,如GUI系統(tǒng)。 使用RockAppCreateThread動態(tài)注冊一個線程(關(guān)聯(lián)到一個應(yīng)用程序)。注冊時給出線程名和所屬任務(wù)的優(yōu)先級,若注冊成功,返回一個線程句柄。注銷時只需要提供線程句柄。,線程函數(shù)寫法,線程函數(shù)本質(zhì)上是一個處理消息的
17、函數(shù)體,具有固定的類型和參數(shù),如下圖是一個刷屏的線程,處理三個消息,線程的運行,線程的運行是在該線程的任務(wù)中進行,當任務(wù)收到消息時,會將消息分發(fā)給注冊在本任務(wù)的線程,分發(fā)函數(shù)如下,即從線程列表中逐一取出線程回調(diào)函數(shù),依次調(diào)用并將消息傳遞給線程,若該線程響應(yīng)了此條消息,則不繼續(xù)往下一線程派發(fā),否則一直派發(fā)到最后一個線程。,線程被任務(wù)調(diào)用,操作系統(tǒng)消息,消息用于線程(或任務(wù))之間的數(shù)據(jù)傳遞,可傳送任意長度的數(shù)據(jù)。其接口是: RockOSSendMsg (* msgBox , Msgid , msg ) 發(fā)送消息 RockOSReceiveMsg(* msgBox , Msgid, msg ) 接收
18、消息 消息傳遞的三個參數(shù)分別是郵箱、消息ID和消息體指針。 消息的發(fā)送可以在任務(wù)、線程、中斷、定時器、內(nèi)核等各處進行,但消息的接受一般只在任務(wù)中進行,因為消息在接受過程中可能會掛起任務(wù),若在中斷、線程中接受消息,則可能導(dǎo)致中斷和線程長時間不能退出而崩潰。,操作系統(tǒng)消息派發(fā)規(guī)則,一個任務(wù)對應(yīng)一個郵箱,同一任務(wù)的多個線程共用一個郵箱,消息ID Msgid是區(qū)分不同消息的ID號,消息指針指向消息體,消息體可以是任意數(shù)據(jù)類型,任意長度。 消息的收發(fā)伴隨有任務(wù)調(diào)度,分幾種情況: 當前任務(wù)A往一個更高優(yōu)先級的任務(wù)B發(fā)送消息時,若目標任務(wù)B正處于掛起狀態(tài)等待本消息,則切換至B任務(wù)處理此消息。同時Ready掉A任務(wù) 當前任務(wù)A往一個更低優(yōu)先級的任務(wù)B發(fā)送消息時,不作任務(wù)切換,只遞交消息指針,OS TICK調(diào)度到B任務(wù)時,才能響應(yīng)此消息。 中斷ISR往一個任務(wù)發(fā)送消息時,發(fā)送期間不作任務(wù)切換,中斷退出時,作一次任務(wù)調(diào)度。 同一任務(wù)的不同線程A和B之間傳遞消息時,實際上就是一個任務(wù)給自身發(fā)送消息,不做任務(wù)切換和調(diào)度。 當前任務(wù)A使用RockOSReceiveMsg接收一個消息時,若該消息尚未被發(fā)送,郵箱中沒有任何消息時,任務(wù)將被掛起,處于等待狀態(tài)。,信號量,信號量(也稱旗語)主要用于任務(wù)之間或多個任務(wù)的線程之間的某些同步。其接口如下: RockSemObtain(psem)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村打井合同范本
- 【復(fù)習(xí)大串講】【中職專用】高二語文上學(xué)期期末綜合測試題(一)(職業(yè)模塊)(原卷版)
- 修理店合同范本
- 原油合同范本
- 公路測量合同范本
- 廠房 合同范本
- 養(yǎng)殖大棚轉(zhuǎn)讓合同范例
- 同城物流合同范本
- 包工地消防安裝合同范本
- 合購車合同范本
- 紋繡培訓(xùn)專業(yè)藝術(shù)教程課件
- 雅思詞匯勝經(jīng)電子書
- 西師版三年級下冊數(shù)學(xué)教學(xué)反思合集
- 足球基礎(chǔ)知識
- GB/T 9793-2012熱噴涂金屬和其他無機覆蓋層鋅、鋁及其合金
- GB/T 5237.1-2017鋁合金建筑型材第1部分:基材
- GB/T 26121-2010可曲撓橡膠接頭
- GB/T 14643.3-2009工業(yè)循環(huán)冷卻水中菌藻的測定方法第3部分:黏泥真菌的測定平皿計數(shù)法
- GB/T 11968-2020蒸壓加氣混凝土砌塊
- DB14T 2586-2022“山西標準”(標識)評價技術(shù)規(guī)范 釀造用高粱
- 五年級下冊 第1單元 《古詩三首》第一課時 教案
評論
0/150
提交評論