CSR8670学习笔记:自定义ADK configuration tool配置项
為了方便大家學(xué)習(xí),現(xiàn)與我愛藍(lán)牙網(wǎng)聯(lián)合推出【QCC300x/CSR867x/QCC30xx/QCC51xx開發(fā)板】。
技術(shù)交流QQ群號(hào):743434463
開發(fā)板會(huì)員QQ群號(hào):725398389(憑訂單號(hào)入群,贈(zèng)獨(dú)家學(xué)習(xí)資料)
——————————正文分割線———————————–
1. 引言
ADK configuration tool是高通ADK自帶的應(yīng)用程序配置工具,我總結(jié)其有如下幾個(gè)優(yōu)點(diǎn):
- 模板通用:可見的配置項(xiàng)會(huì)自動(dòng)匹配到正確的應(yīng)用程序模板和硬件平臺(tái)。
- 使用簡(jiǎn)單:當(dāng)開發(fā)者需要關(guān)聯(lián)物理按鍵動(dòng)作與用戶按鍵事件時(shí),只需修改user interface中的user event和buttons選項(xiàng)即可。整個(gè)過程沒有代碼改動(dòng),也沒有編譯下載等操作,非軟件專業(yè)的人員即能勝任,幾乎是零軟件門檻。
- 靈活加載:當(dāng)應(yīng)用程序打開或關(guān)閉預(yù)編譯選項(xiàng)(比如ENABLE_AVRCP等),配置項(xiàng)中的關(guān)聯(lián)部分會(huì)隨之出現(xiàn)或消失。
遺憾的是,ADK configuration tool并沒有明顯的用于添加自定義配置項(xiàng)的接口。這帶來兩個(gè)主要問題:
- 在開發(fā)和調(diào)試一些自定義配置功能時(shí)不得不反復(fù)修改編譯,效率很低。
- 在應(yīng)用程序運(yùn)行過程中,如需改動(dòng)自定義的配置項(xiàng),不知道該保存在什么位置。
最近接到一個(gè)項(xiàng)目,需要在sink例程引用source例程的很多代碼,逼得我非得搞懂自定義配置項(xiàng)的方法。經(jīng)過一段時(shí)間的摸索,還真整出活兒來,最終效果圖如下:
可以看到基本上將source config tool的配置原樣不動(dòng)地搬移到sink config tool的界面下。
欣喜之余,不忘把方法分享給讀者,希望能對(duì)各位的學(xué)習(xí)有所幫助。
2. 理解ADK configuration系統(tǒng)
首先我們來看一下整個(gè)配置系統(tǒng)的基本要素和相互關(guān)聯(lián):
有兩個(gè)實(shí)體,主機(jī)PC端和目標(biāo)設(shè)備。ADK配置工具調(diào)用AHI接口訪,問目標(biāo)設(shè)備的Config Store庫,讀取非易失存儲(chǔ)器內(nèi)的數(shù)據(jù),在PC界面以格式化的形式顯示出來。經(jīng)常有初學(xué)者遇到ADK config tool連接超時(shí),根源就是這個(gè)AHI接口沒有正常工作,需要在項(xiàng)目的編譯選項(xiàng)里指定。
現(xiàn)在新的問題是,ADK configuration tool如何知道界面應(yīng)該顯示哪些配置項(xiàng),以及這些配置項(xiàng)的當(dāng)前值呢?這就要從配置項(xiàng)的生成說起了:
- 在源代碼層,config_build.mak文件、global definitions.xml文件、module_configurations文件夾中的所有xml文件經(jīng)過預(yù)處理后,自動(dòng)生成了config set definition.h/c文件和各個(gè)module對(duì)應(yīng)的config module.h文件,也自動(dòng)生成了pskey_map.xml文件,這個(gè)文件用于分配USER_PSKEY給所有config set。換句話說,開發(fā)人員不需要關(guān)注config set具體的物理存放位置。
- 上述文件,一方面,與引用config set的源文件一起參與編譯,生成最終的應(yīng)用的二進(jìn)制文件;另一方面壓縮后生成config_definition.gz文件。兩個(gè)文件都保存在文件系統(tǒng)中。
- 在配置模式下,ADK config tool通過AHI接口從文件系統(tǒng)中讀取config_definition.gz文件,解壓出xml文件,加載并生成選項(xiàng)頁面。此時(shí)開發(fā)人員點(diǎn)擊read鍵,主機(jī)通過AHI接口從ps_dynamic_config_store中讀取所有的配置值并顯示。
- 應(yīng)用程序在運(yùn)行過程中,應(yīng)用程序通過config_store接口訪問配置值。
3. 合入source例程的配置項(xiàng)
- 修改config_build.mak文件:
- 上述三個(gè)source例程的xml文件放入module_configurations文件夾
- 修改global_config.xml,添加一級(jí)配置選項(xiàng)卡
- 修改三個(gè)xml文件,將其中每一項(xiàng)配置的ConfigGroupPath屬性關(guān)聯(lián)到一級(jí)配置選項(xiàng)卡
- 工程路徑下添加上述3個(gè)xml文件對(duì)應(yīng)的.c/.h源碼,如source_a2dp.c/.h等
- 重新編譯工程,打開ADK config tool,進(jìn)入配置模式,查看新增配置項(xiàng)
4. 總結(jié)
在掌握了ADK configuration tool配置項(xiàng)的自定義方法后,可以在flash的用戶區(qū)存儲(chǔ)非易失的變量,給自定義功能創(chuàng)造了便利的條件。需要注意的是用戶區(qū)空間有限,僅能存儲(chǔ)簡(jiǎn)單的變量,如需保存較大的文件,可在FileSystem中創(chuàng)建分區(qū)表單獨(dú)存放。
5. 參考文檔
- ADK configuration tool user guide
- ADK application configuration architecture
- ADK application configuration system
- ADK application configuration XML definitions
總結(jié)
以上是生活随笔為你收集整理的CSR8670学习笔记:自定义ADK configuration tool配置项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GBA模拟器 My Boy!的远程连接-
- 下一篇: 专色印刷的相关知识