




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、32K code代碼空間的擴(kuò)展(試)( 38K、 40K、 42K)說明本文得以發(fā)布,特別感謝Dialog WC.IP(葉偉忠先生)提供方法及代碼支援!1 、在 Dialog 配置代碼中,內(nèi)部有多個Case可設(shè)定默認(rèn)是在System_ARMM0.c 中設(shè)為Case 23,即38K SysRam + 12K RetRam方式:2、 DA14580 在上電后,即使沒有下載程序,也會自行啟動,掃描各端口有否啟動代碼,依次OTP、 SP(I M)UART1/2/3/4 、 SPI( S) 、 IIC( S) 。 M 即為有外部Master, DA14580為從端。S即為外部Slave,DA14580為
2、主端。若此時SPI_S( Flash)有啟動代碼,就會自動搬32K code到 RAM 中,并自動從0x20000000 運(yùn)行。注:為啥只搬32K, 是要顧及到內(nèi)部OTP僅 32K空間,若超限會出錯。該原始引導(dǎo)程序,被固化到DA14580 中。3、若有超過此32KB 長度,需要在DA14580 原始引導(dǎo)段搬好32K 后,運(yùn)行用戶代碼時,用戶代碼開始段( 0x20000000 后的代碼)來完成。合適的位置是在System_init 之后,在main 之前。即在 System_ARMM0.c 中, Systeminit 后, main 之前, 增加 code_loader 程序。 讓 code_l
3、oader 將 Flash 中 0x8008 后的代碼下載到接下來的RAM 空間 0x20008000 中。注:為啥RAM 空間是 0x20008000,而對應(yīng)的Flash中不是 0x8000?因為 Flash中最前面的8Byte 是放識別數(shù)據(jù),F(xiàn)lash 放代碼是從0x0008 開始的,RAM 放代碼從0x20000000 開始。代碼長度與Flash 中的位置相差8Byte。二、擴(kuò)展到38K 代碼空間:1 、若代碼超過32K,但在38K 內(nèi),不用改case,仍沿用CASE23即可。2、將附件中system_ARMM0_38K.c 及 boot_vectors_38K.s 文件,Copy到:d
4、k_appssrcplfrefipsrcarchbootrvds 目錄與 system_ARMM0.c 及 boot_vectors.s 在同一目錄內(nèi)。3、將附件中的scatterfile_common.sct_38K.sct 文件, Copy到:dk_appsscatterfiles 目錄,與scatterfile_common.sct 文件同一目錄內(nèi)。4、在 keil 工程中,去掉原system_ARMCM0.c,及 boot_vectors.s 文件,增加system_ARMCM0_38K.c,及boot_vectors_38K.s 文件,示例操作如下:在 keil 工程中,點選boot
5、 打開,鼠標(biāo)右擊彈開,左擊選中Remove Filesystem_ARMCM0.c,刪除:boot 目錄,增加system_ARMCM0_38K.c天午科技有限公司技術(shù)文檔SKN-TD-20154/3boot_vectors.s ,增加 boot_vectors_38K.sscatterfile_common.sct )5、在keil 工程中,選擇調(diào)用scatterfile_common.sct_38K.sct 文件(不再使用然后,沒有然后了!重新編譯,燒到Flash,上電,廣播OK,恭喜您,答對了!如果 ,還是不OK,悲催了!別緊張,您的結(jié)果,與60%的擴(kuò)內(nèi)存用戶
6、相同!請參看附錄1 (內(nèi)存擴(kuò)展FAQ)三、擴(kuò)展到42K 代碼空間:若代碼接近42K 空間,與擴(kuò)展38K 代碼空間的方法相同,不過是掛42K 對應(yīng)的文件,再增加如下操作:1 、 在 system_ARMM0.c 中,已改case 到 CASE7。2 、 在 arch_main.c 中增加,BLE_reserved_memory 段變量,并將其初始化為03、據(jù)Ret_RAM 分配的大小,修改em_map_ble.h 中對OFFSET_BUFFER的定義: S4、 修改 da14580_scatter_config.h ,使之指向Ret_RAM 的底部,不至赿界:5、若要修改PC仿真模式,如將23
7、修改為7,則需要修改ini 文件。 Copy復(fù)制再修改:1)將第二行CE對應(yīng)23模式。 模式 Number, 轉(zhuǎn)化為 16進(jìn)制, 再 X2, 如 7*2=14=0x0e, 參見附件sysram_case7.ini,如下圖:2)在如下設(shè)置菜單中,配置仿真模式:然后,沒有然后了!重新編譯,燒到Flash,上電,廣播OK!如果不幸,又悲催了!別緊張,請參看附錄1 (內(nèi)存擴(kuò)展FAQ) ,若未能解決,找天午技術(shù)部!一、擴(kuò)展到40K 代碼空間:若代碼超過38K,但在40K內(nèi),改case到 CASE15。不過是掛40K對應(yīng)的文件,類似擴(kuò)展到42K的方法,僅參數(shù)略有不同,如下操作:1 、 在 system_A
8、RMM0_40K.c 中,已改case到 CASE15。2 、 在 arch_main.c 中增加,BLE_reserved_memory 段變量,并將其初始化為03 、據(jù)Ret_RAM分配的大小,修改em_map_ble.h 中對OFFSET_BUFFER的定義:S改為: #define OFFSET_BUFFERS (0x2800-EM_580_TOTAL_BUFFER_SZ & 3)4、修改da14580_scatter_config.h ,使之指向Ret_RAM的底部,不至赿界:改為: #define EXCHANGE_MEMORY_BASE 0x822205、若要PC仿真,如將23
9、修改為 15,則需要修改ini 文件。 Copy復(fù)制再修改:1)將第二行CE對應(yīng)23模式。 模式 Number, 轉(zhuǎn)化為 16進(jìn)制, 再 X2, 如 15*2=30=0x1e, 參見附件sysram_case15.ini,如下圖:2)在如下設(shè)置菜單中,配置仿真模式:重新編譯,燒到Flash,上電,廣播OK!有任何問題,請聯(lián)系:天午技術(shù)部 OTA升級時,38K、 40K、 42K 代碼空間的實現(xiàn)若有OTA升級,并代碼存放空間為1F000放導(dǎo)引頭;0x8000 入 Imagine1,0x13000 放 imagine2因為有 second_bootloader 會將代
10、碼從Flash 連續(xù)讀到內(nèi)存中。不再需要system_ARMCM0.c中增加CODELOADER到 Flash中搬代碼。附錄 1: 內(nèi)存擴(kuò)展FAQ1 38K 空間編譯報錯,顯示空間不足重新檢查一遍,那三個system_ARMM0_38K.c boot_vectors_38K.s scatterfile_common.sct_38K.sct 是不是沒正確加載。若已是38K 配置,還不夠,那就看下ZI data 是否未大于8K?如下圖:若是,好啦,用42K+8K的模式吧!2 編譯提示,DEMO超過32K,不能編譯!兄弟, 你是不是用的免費(fèi)DEMO板 Keil SDK要么你公司花錢買個正版,,約 3
11、.3W人民幣。要么, 網(wǎng)上山寨下!3 其它都正常,就是不廣播程序有沖突,有些代碼擴(kuò)大后,不能運(yùn)行,不是搬代碼的原因,而是有些profile 同時開,相互間有沖突,至不能運(yùn)行。而誤以為是代碼量大引起。我們已試過多少遍了,不要懷疑它,代碼OK,就一定行!解決辦法:先關(guān)掉一些宏選項,讓代碼量在32K 以內(nèi), 仿真運(yùn)行OK。 比如要驗證ANCC, 那就先關(guān)掉DISS PXPR FMPL注意:BASS容易與ANCC, SPOTAR沖突(因為追求完美的兄弟手賤,優(yōu)化下代碼,結(jié)果杯具了)SPI, IIC常有類似情況發(fā)生。4 擴(kuò)大代碼后,不能仿真,但燒進(jìn)Flash,開機(jī)是一切正常。仿真器可能有問題,即使是原廠
12、DEMO SDK, Size未超過 32K的,也有可能某次仿真不成功,再退出,再仿真就 OK了,祝好運(yùn)!若點擊仿真圖標(biāo)按鍵,立即退出,是程序問題。6S 左右再退出,可能是看門狗跳出來,可關(guān)掉看門狗試試;也很有可能是仿真器(target 端)問題。嘿嘿,有錢買正版!5 代碼大過32K,仿真就很容易跳進(jìn)Hardfault_handler ,但燒到Flash沒有問題。是的,我們有試到,大過32K 就需要破解,Jlink 仿真器(PC端)山寨的就這樣!請支持正版!6 32K內(nèi)時,用SmartSnippet 下載到 DA14580 即可運(yùn)行,但超過32K還是這樣下,一定不行,為什么?天午科技有限公司技術(shù)
13、文檔SKN-TD-20154/3是的,我們還沒有搞定這個事,正在請原廠幫解決,現(xiàn)在只有一招,仿真沒問題,編譯好后燒Flash,試機(jī)。7、怎么看我的程序有多大,為什么將Code +RO data +RW data 小于38K,也會在38K模式報代碼超限?因為, RAM 存儲是以32bit 即 4Bytes 為單位的,代碼編譯有時不會為整數(shù),這樣就會浪費(fèi)pad 空間。而編譯log 顯示給你看的,是Code總和的大小,沒有計算pad 用 0 填充的數(shù)量,通常約有40-100Byte 左右浪費(fèi)。無法避免。工程編譯完成后,會生一個map 文件,可以查到代碼具體的空間大小。即,編譯后選中如下圖的Full_emb_cortex_M0, 右鍵彈開,選中黑體字dk_appskeil_projectsproximityreporter_fhout 下面的xxx.map,打開,拖到該文件尾部,找到下述位置:8 、如何知道哪個模式合適,38K、 40K、 42K 用哪個?CODE+RO+RW、 ZI 大小而定。兩者都要能co
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中物理 第2章 電路 第3節(jié) 研究閉合電路教學(xué)設(shè)計 粵教版選修3-1
- 公共墻體寫合同樣本
- 人才培訓(xùn)合同樣本
- 鄉(xiāng)村全科執(zhí)業(yè)助理醫(yī)師考試創(chuàng)新試題及答案
- 2025年初級會計師考試提升試題及答案
- 2025年健康管理師在實踐中的成長計劃試題及答案
- 2025年公共營養(yǎng)師考試的干預(yù)技術(shù)應(yīng)用分析試題及答案
- 2025年健康管理師生命科學(xué)基礎(chǔ)試題及答案
- 寫商品出售合同樣本
- 公司股權(quán)合同樣本
- GB/T 23445-2009聚合物水泥防水涂料
- 中醫(yī)基礎(chǔ)理論(中英文對照)
- 生理學(xué)(全套課件)
- 香港公司條例
- 污水處理系統(tǒng)工程合同范本
- 德能勤績廉個人總結(jié)的
- 二年級美術(shù)上冊課件 《3.我的手印畫》 贛美版 (共18張PPT)
- Q∕SY 126-2014 油田水處理用緩蝕阻垢劑技術(shù)規(guī)范
- GB∕T 3216-2016 回轉(zhuǎn)動力泵 水力性能驗收試驗 1級、2級和3級
- 電子電氣評估規(guī)范-最新
- 黑布林繪本 Dad-for-Sale 出售爸爸課件
評論
0/150
提交評論