日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nRF51822之BootLoader

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nRF51822之BootLoader 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一)nRF51822程序加載順序

1)SoftDevice加載;
2)SoftDevice初始化藍牙協議棧;
3)SoftDevice檢查0x10001014處是否保存有有效的BootLoader地址,?如果不是跳轉到0x14000處的APP執行,流程結束.
4)SoftDevice跳轉到BootLoader
5)BootLoader進行他的業務處理工作;
6)BootLoader跳轉到0x14000處的APP執行,流程結束.

二)實現步驟

1)修改SoftDivice.hex
看NRF_UICR_Type結構,有一個BOOTLOADERADDR字段,??這個就是指向的BootLoader地址

typedef struct {/*!< UICR Structure*/__IO uint32_t CLENR0; /*!< Length of code region 0.*/__IO uint32_t RBPCONF; /*!< Readback protection configuration.*/__IO uint32_t XTALFREQ; /*!< Reset value for CLOCK XTALFREQ register.*/__I uint32_t RESERVED0;__I uint32_t FWID; /*!< Firmware ID.*/__IO uint32_t BOOTLOADERADDR;/*!< Bootloader start address.*/ } NRF_UICR_Type;

默認情況下,SoftDivice.hex沒有指定BootLoader地址;
我們需要在SoftDivice.hex中插入一行

:0410140000300100A7 參考HEX文件說明

這里修改0x10001014地址的數據為"00300100"就是0x13000,?這個地址根據BootLoader的實際位置修改.

2)編寫BootLoader
BootLoader本身是一個普通的程序,只是在跳轉到APP執行時需要特殊處理

static void interrupts_disable(void) {uint32_t interrupt_setting_mask = NVIC->ISER[0];for (uint8_t irq=0; irq < 32; irq++) {if (interrupt_setting_mask & (1 << irq)) {NVIC_DisableIRQ((IRQn_Type) irq);}} }__asm void StartApplication(uint32_t start_addr){LDR R2, [R0] ; Get App MSP.MSR MSP, R2 ; Set the main stack pointer to the applications MSP.LDR R3, [R0, #0x00000004] ; Get application reset vector address.BX R3 ; No return - stack code is now activated only through SVC and plain interrupts.ALIGN }/*** 跳轉到APP執行*/ static void bootloader_app_start(uint32_t app_addr) {sd_softdevice_disable();interrupts_disable();sd_softdevice_forward_to_application();StartApplication(app_addr); }

把BootLoader寫入我們上面定義的地址?0x13000

3)編寫APP
APP跟沒有BootLoader時是一樣的,依然放在?0x14000?處

nRF51822之BootLoader

總結

以上是生活随笔為你收集整理的nRF51822之BootLoader的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。