91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將原有的OAD示例代碼所包含的BIM起始地址從0x1F000改到0x1000

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-01-11 14:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通常在實現(xiàn)OAD(on-air-download)功能的過程中,TI會提供標準的示例BIM(Boot Image Manager)代碼來進行鏡像校驗和下載。在TI所提供的示例代碼中,BIM代碼一般位于內(nèi)部flash page31,和CCFG相鄰。若用戶根據(jù)自身功能定義不同,需要在BIM代碼區(qū)域增加更多功能(例如自定義UART / SPI boot, 自定義安全校驗功能等等)而導(dǎo)致自定義功能后的BIM代碼超出4k byte,又由于BIM區(qū)域與CCFG及NV Storage Area相鄰,在原有位置不能擴大,只能考慮重新為BIM劃定地址空間來滿足需求。

本文基于LAUNCHXL-CC2650評估板(http://www.ti.com.cn/tool/cn/launchxl-cc2650) 和BLE-STACK-2-2-1 SDK,詳細描述如何將原有的OAD示例代碼所包含的BIM起始地址從0x1F000改到0x1000,并且將BIM的地址區(qū)間從4k擴到8k。

注:所有不同版本的BLE SDK可以在以下網(wǎng)址找到:http://www.ti.com/tool/BLE-STACK-ARCHIVE

此外本文還會談到在進行BIM重定位過程中會遇到的以下問題及其解決方案:

TI RTOS相關(guān)Flash區(qū)域沖突的規(guī)避

新的目標Image有效header的產(chǎn)生

如何修改python工具的腳本生成新的Image

*****************************************************************************************************************

首先關(guān)于BIM起始地址的修改,分以下幾步:

Step1: 修改simple_peripheral project -> cc2650lp_app project的 flash起始地址

Step2: 重新給bim_extflash project 的BIM代碼分配地址空間

Step3: 使用新的BIM分配方式來實現(xiàn)OAD功能

Step1:修改simple_peripheral project -> cc2650lp_app project的 flash起始地址

在IAR7.70/IAR7.8中導(dǎo)入C:\ti\simplelink\ble_sdk_2_02_01_18\examples\cc2650lp\simple_peripheral 文件夾下的項目如下

1) 修改APP_IMAGE_START

打開cc2650lp_app-FlashOnly_OAD_ExtFlash 工程的option--linker—config,將APP_IMAGE_START從0x1000修改成0x3000

2) 修改RTOS運行方式

從項目中打開打開CC2640.cfg,或者直接在以下地址內(nèi)找到這個文件: ble_sdk_2_02_01_18\src\common\cc26xx\kernel\cc2640\config)

注釋掉下圖所示的代碼:

原因:當(dāng)選擇“use BIOS in ROM”方式時,RTOS 的ROM指針會被固定的放在0x1500區(qū)域。這樣就與我們所想要自定義的BIM代碼空間沖突了。而選擇“use BIOS in Flash”的方式可以讓TI-RTOS從FLASH啟動,以避免這個問題。當(dāng)然”use BIOS in Flash”的方式會稍微多占用一些用戶的flash區(qū)域。

3) 修改reset vector的地址

接上一步,在CC2640.cfg中,將m3Hwi.resetVectorAddress 從0x1010修改為0x3010。

原因:這是reset vector的地址,應(yīng)該跟在header后面。

step2:重新給bim_extflash project的BIM代碼分配地址空間

在IAR7.70/IAR7.8中導(dǎo)入C:\ti\simplelink\ble_sdk_2_02_01_18\examples\util\bim_extflash\cc2640文件夾下的項目如下

打開上圖所示的cc26xx_bim_extflash.icf文件,重新定義一個FLASHPAGE1,定義其范圍為8k,把region BIM定義為PAGE1的區(qū)域,并將BIM_START從0x1F000修改到0x1000.

??????

編譯通過后,檢查生成的bim_extflash.map, 確認之前的改成是否有效。

Step3:使用新的BIM分配方式來實現(xiàn)OAD功能

基于step2中的操作,打開同一個項目中如下圖所示的bim_main.c

做如下修改:

重新打開STEP1中修改過的C:\ti\simplelink\ble_sdk_2_02_01_18\examples\cc2650lp\simple_peripheral下的project, 找到

找到圖中所示的oad_target_external_flash.c,做如下修改

以上三步完成后,各自重新編譯成功,即完成了項目需要的所有改動。

*************************************************************************************

其次,為了配合新的地址分配來實現(xiàn)OAD,我們需要生成新的目標Hex待燒錄文件。仍然采用相關(guān)的Python工具(這里使用了Python 2.7.10)來生成需要的新的hex文件(新的文件包含正確的metadata Header)。

注:這里重點說明BIM地址修改后,如何對python腳本進行修改。關(guān)于提到的Python工具的下載和使用說明可以參見BLE SDK中包含的CC2640 BLE OAD User’s Guide.pdf說明文檔中的如下章節(jié),這里不另加贅述。

10.1 Installing Python

10.2 TI OAD Image Tool (Python)

根據(jù)我們之前的修改,已經(jīng)把simple_peripheral project -> cc2650lp_app project的代碼起始地址改成了0x3000,而原來采用的python工具腳本所生成的hex文件,是配置成將header的imgAddr改成0x1000的,與我們需要把起始代碼改成0x3000的需求不符。所以,我們需要對原有python 工具的腳本和相關(guān)操作進行修改,分成以下兩步:

1) 修改oad image的腳本文件( oad_image_tool.py)

該腳本文件位于:C:\ti\simplelink\ble_examples-ble_examples-2.2\tools\scripts\oad文件夾

用PythonGUI打開該文件,將startAddr賦值為0x3000,如下:

2) 修改python 工具的腳本的相關(guān)操作

這里我們會用到兩個Python的argument: -m –r, 來完成修改目標Image的metadata header地址 的目的。

?????

在命令行界面輸入如下命令:

> set PATH=%PATH%;C:\python27\

> Python C:\ti\simplelink\ble_examples-ble_examples-2.2\tools\scripts\oad\oad_image_tool.py C:\Users\x0269290\Downloads\Desktop\ble_sdk_2_02_01_18\examples\cc2650lp\simple_peripheral\iar\app\FlashOnly_OAD_ExtFlash\Exe\simple_peripheral_cc2650lp_app.hex -o C:\Users\x0269290\Downloads\Desktop\ble_sdk_2_02_01_18\examples\cc2650lp\simple_peripheral\iar\app\FlashOnly_OAD_ExtFlash\Exe\Simple_peripheral_cc2650lp_app.hex -m 0x3000 -r :0xD000

(注:根據(jù)python腳本、目標hex、輸出hex所在位置及名稱的不同需要對命令做出對應(yīng)的更改。)

如圖所示:

得到結(jié)果如下:

注:以上例子中的“-m”是用命令給metaAddr賦值。但因為metaAddr(0x3000)大于imgStartAddr(0x1000)導(dǎo)致錯誤,所以在1)中修改python腳本中的對應(yīng)代碼。

審核編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式處理
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    10511
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    請問如何在 i.MX RT1050 上多個起始地址運行相同的引導(dǎo)加載程序?

    我正在研究一個i.MX RT1050項目,當(dāng)前位于 Flash 中的 0x60000000 處。我想要能夠在運行時選擇引導(dǎo)加載程序運行的起始地址,本質(zhì)上是兩個不同的地點(例如,工廠和
    發(fā)表于 03-04 07:52

    STM32C0x1 基于 Arm? 內(nèi)核的 32 位高級 MCU參考手冊

    本參考手冊是對 STM32C0x1 微控制器數(shù)據(jù)手冊的補充,提供了應(yīng)用(特別是軟件開發(fā))所需的信息,屬于 STM32C0x1 微控制器上提供的功能集的超集。有關(guān)特定 STM32C0x1 器件的功能集、訂購信息以及機械和電氣特性的
    發(fā)表于 01-04 11:24 ?0次下載

    示例3x3矩陣求和簡析

    的操作數(shù)0x7b,fun3代碼2,fun7代碼1。這些組成riscv指令。fun3由三位xsl, xs2, xd組成。分別用于控制是否需要讀源寄存器 rsl,rs2 和寫目標寄存器 r
    發(fā)表于 10-30 06:25

    N9H30如何SPI閃存應(yīng)用程序加載到RAM地址0x0?

    無法利用 uboot SPI 閃存0x0應(yīng)用程序加載到 RAM 地址。SF 讀取0x0 0x
    發(fā)表于 09-01 06:06

    請問如何使用 NUC220 應(yīng)用程序 APROM 0x0000切換到 APROM 0x4000?

    我在 APROM 0x0000 中保存了 1 個應(yīng)用程序,在 APROM 0x4000 中保存了 1 個應(yīng)用程序,如何使用 NUC220
    發(fā)表于 08-27 06:20

    Texas Instruments LMR664x0/LMR664x0-Q1降壓轉(zhuǎn)換器數(shù)據(jù)手冊

    Texas Instruments LMR664x0/LMR664x0-Q1降壓轉(zhuǎn)換器有2A和1A型號可供選擇,采用增強型HotRod QFN封裝。小型LMR664x0/-Q
    的頭像 發(fā)表于 07-31 15:08 ?1440次閱讀
    Texas Instruments LMR664<b class='flag-5'>x0</b>/LMR664<b class='flag-5'>x0-Q1</b>降壓轉(zhuǎn)換器數(shù)據(jù)手冊

    Texas Instruments LM708x0/LM708x0-Q1 直流-直流降壓轉(zhuǎn)換器數(shù)據(jù)手冊

    Texas Instruments LM708x0/LM708x0-Q1直流-直流降壓轉(zhuǎn)換器是一系列低靜態(tài)電流同步降壓轉(zhuǎn)換器,設(shè)計工作在4.5V至80V輸入電壓范圍內(nèi)。這些轉(zhuǎn)換器被配置成在3.3V
    的頭像 發(fā)表于 07-28 11:37 ?684次閱讀
    Texas Instruments LM708<b class='flag-5'>x0</b>/LM708<b class='flag-5'>x0-Q1</b> 直流-直流降壓轉(zhuǎn)換器數(shù)據(jù)手冊

    Texas Instruments MSPM0C110x/MSPM0C110x-Q1/MSPS003混合信號MCU數(shù)據(jù)手冊

    Texas Instruments MSPM0C110x/MPSM0C110x-Q1/MSPS003混合信號微控制器 (MCU) 屬于MSP高集成度超低功耗32位MCU系列。此系列MCU基于增強型
    的頭像 發(fā)表于 07-28 11:09 ?1030次閱讀
    Texas Instruments MSPM<b class='flag-5'>0C110x</b>/MSPM<b class='flag-5'>0C110x-Q1</b>/MSPS003混合信號MCU數(shù)據(jù)手冊

    如何將地址 FCANFDx FiF 0 加載到 DMA 線的 SRC 寄存器中?

    您能否提供一個示例,說明如何將地址 FCANFDx FiF 0 加載到 DMA 線的 SRC 寄存器中? 我不想使用固定地址加載,例如:
    發(fā)表于 07-18 08:06

    Texas Instruments LM706x0/LM706x0-Q1降壓轉(zhuǎn)換器數(shù)據(jù)手冊

    Texas Instruments LM706x0/LM706x0-Q1降壓轉(zhuǎn)換器具有4.5V至65V的輸入電壓范圍和在固定輸出電壓(3.3V、5V、12V)下高達10A的輸出電流或可調(diào)的輸出電壓
    的頭像 發(fā)表于 07-17 14:28 ?826次閱讀
    Texas Instruments LM706<b class='flag-5'>x0</b>/LM706<b class='flag-5'>x0-Q1</b>降壓轉(zhuǎn)換器數(shù)據(jù)手冊

    Texas Instruments MSPM0Lx22x/MSPM0Lx22x-Q1混合信號MCU特性/應(yīng)用/框圖

    Texas Instruments MSPM0Lx22x/MSPM0Lx22x-Q1混合信號微控制器 (MCU) 是基于ARM ^?^ Cortex ^?^ -M0+ 32位內(nèi)核平臺的高集成度超低
    的頭像 發(fā)表于 07-16 14:24 ?797次閱讀
    Texas Instruments MSPM<b class='flag-5'>0Lx22x</b>/MSPM<b class='flag-5'>0Lx22x-Q1</b>混合信號MCU特性/應(yīng)用/框圖

    S32K14X_MCAL4_0_RTM_1_0_0示例項目加載到EB Tresos Studio V21.0.0時出現(xiàn)報錯,為什么?

    我下載并安裝了 S32K1xx 的 RTM:S32K14X_MCAL4_0_RTM_1_0_0。當(dāng)我嘗試示例項目加載到我的 EB Tresos Studio V21.0.0 中時,我
    發(fā)表于 03-20 07:33

    STM32F407嵌入式SRAM映射為0x20020000,為什么?

    20020000,與0x20000000不匹配,所以進不去。然后我通過Prg查看寄存器值,如下所示: 發(fā)現(xiàn)0x08008000地址的值確實為0x20020000。所以我
    發(fā)表于 03-10 08:24

    在starvision2上移植FreeRTOS,objdump后發(fā)現(xiàn)static變量的地址0,怎么解決?

    = .; *(.srodata .srodata.* .rodata .rodata.* .gnu.linkonce.r.*) rodataend = .;} . = ALIGN(0x1000);/*
    發(fā)表于 03-10 07:21

    STM32U585讀取地址0x0BFA1F80中的數(shù)據(jù)為什么沒有產(chǎn)生NMI中斷?

    根據(jù)手冊RM0456 中的 7.3.2 Error code correction(ECC) 的描述 如果讀取地址 0x0BFA1F80 中的數(shù)據(jù)會產(chǎn)生一個 NMI 中斷 但是我嘗試讀取這個地址
    發(fā)表于 03-07 06:08