一般情況下,app 調(diào)用 platform API 時(shí),直接使用 API 的函數(shù)地址,當(dāng) platform 升級(jí)時(shí),API 地址改變,app 必須重新編譯。 從 SDK v8.5.4 開(kāi)始,開(kāi)發(fā)者可以創(chuàng)建與 platform 版本獨(dú)立的應(yīng)用:允許單獨(dú)升級(jí) platform,app 不重新編譯、不升級(jí),可直接兼容新版 platform,功能正常。
局限性:
當(dāng) platform 大規(guī)模升級(jí)或者修改接口時(shí),仍可能出現(xiàn)不兼容;
每次 API 調(diào)用都需要增加額外操作,功耗可能略有增加。
本文介紹這種 app 的創(chuàng)建和開(kāi)發(fā)方法。
以“Copy to My Project”的方式新建項(xiàng)目
建議以 “Copy to My Project” 的方式新建項(xiàng)目。
使用腳本修改platform.bin
調(diào)用腳本修改 platform.bin。這個(gè)腳本在 platform.bin 的結(jié)尾追加 API 函數(shù)地址表, 并生成 API 代理入口。
導(dǎo)致 platform 與 app “不兼容”的原因主要有:
API 被刪除(一般不會(huì)發(fā)生)
API 接口改變(一般不會(huì)發(fā)生)
platform 體積變大,與 app 沖突(問(wèn)題 1)
platform 使用的內(nèi)存變多,與 app 的內(nèi)存重疊(問(wèn)題 2)
對(duì)于問(wèn)題 1,腳本允許開(kāi)發(fā)者把 app 的燒錄、啟動(dòng)地址后移,為將來(lái) platform 變大預(yù)留空間; 對(duì)于問(wèn)題 2,腳本允許開(kāi)發(fā)者為 platform 預(yù)留一定量的內(nèi)存空間:使后續(xù)版本使用的內(nèi)存增加,只要不超過(guò)所預(yù)留的空間,兼容性仍能保持。
腳本在運(yùn)行時(shí)會(huì)詢問(wèn)這兩個(gè)問(wèn)題,并按照開(kāi)發(fā)者的要求相應(yīng)修改。假設(shè)使用的軟件包所在目錄為/path/to/sdk/bundles/typical/ING9188xx, 可如下運(yùn)行腳本:
python mk_api_table.py /path/to/sdk/bundles/typical/ING9188xx
腳本將為多種編譯環(huán)境生成
/path/to/sdk/bundles/typical/ING9188xx/_api_table.*匯編文件。
更新項(xiàng)目
打開(kāi)項(xiàng)目,從項(xiàng)目中刪除sysdes.*文件, 根據(jù)編譯器類(lèi)型選擇合適的/path/to/sdk/bundles/typical/ING9188xx/_api_table.*匯編文件,加到項(xiàng)目。
后續(xù)的開(kāi)發(fā)過(guò)程正常進(jìn)行,不需要額外設(shè)置。
升級(jí)SDK
升級(jí) SDK 后,重新運(yùn)行腳本。腳本運(yùn)行過(guò)程中會(huì)自動(dòng)檢查上述問(wèn)題 1 和 2 相關(guān)的兼容性,如果無(wú)法兼容,會(huì)輸出錯(cuò)誤信息。
燒錄新的platform.bin即完成升級(jí)。
文中的腳本鏈接: https://ingchips.github.io/files/mk_api_table.py
-
platform
+關(guān)注
關(guān)注
0文章
20瀏覽量
17821 -
SDK
+關(guān)注
關(guān)注
3文章
1112瀏覽量
52063 -
腳本
+關(guān)注
關(guān)注
1文章
412瀏覽量
29280
原文標(biāo)題:《軟件設(shè)計(jì)指南》之六-創(chuàng)建獨(dú)立于 platform 版本的應(yīng)用
文章出處:【微信號(hào):INGCHIPS_OFFICIAL,微信公眾號(hào):桃芯科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問(wèn)ADXL373有獨(dú)立于平臺(tái)的標(biāo)準(zhǔn)C語(yǔ)言驅(qū)動(dòng)代碼嗎?
四路獨(dú)立于觸開(kāi)關(guān)電路
CCS5.2不能識(shí)別自己創(chuàng)建的Platform
模塊是否獨(dú)立于運(yùn)行程序?
獨(dú)立于內(nèi)核的fireflyP GPIO使用方法介紹
獨(dú)立于操作系統(tǒng)的RS_485通信支持_陸志才
獨(dú)立于內(nèi)核的外設(shè)(CIP)介紹
Xilinx A7芯片內(nèi)部獨(dú)立于邏輯單元的專(zhuān)用存儲(chǔ)器
采用獨(dú)立于內(nèi)核的外設(shè)實(shí)現(xiàn)真正的直流RMS測(cè)量
使用單個(gè)比較器實(shí)現(xiàn)獨(dú)立于內(nèi)核的電壓窗口信號(hào)檢測(cè)
AVR單片機(jī)上的獨(dú)立于內(nèi)核的外設(shè)入門(mén)指南
使用ATtiny1617上獨(dú)立于內(nèi)核的可配置定制邏輯實(shí)現(xiàn)夜燈
創(chuàng)建Magic 8 Ball的數(shù)字版本
利用獨(dú)立于內(nèi)核的外設(shè)實(shí)現(xiàn)穩(wěn)健去抖
使用獨(dú)立于內(nèi)核的外設(shè)實(shí)現(xiàn)降壓轉(zhuǎn)換器設(shè)計(jì)和反饋控制器
如何創(chuàng)建獨(dú)立于platform版本的應(yīng)用
評(píng)論