nrf52810為nordic支持藍牙 5.0性價比最高的一款芯片,不過這個芯片的rom不得不吐槽下,只有192KB,不知道為什么定了個192,而不是大家所熟悉的256KB,估計價格是個原因吧,15.2的協議棧中S112 softdevice占用了100KB,只剩92KB了,后面還要減掉bootloader的大小,所以給用戶使用的空間並不大,15.2中pca10040e為52810的工程
原文:https://blog.csdn.net/htaijqq/article/details/84178119
nRF52832, 可以通過藍牙、串口,USB 升級。
nRF52832 內存布局中,包含MBR,Soft device,Application, Application data, Bootloader, Bootloader Settings.
具體Flash布局參考: http://www.sunyouqun.com/2017/05/nordic-dfu-study/
編譯環境和升級過程參考:https://blog.csdn.net/wulazula/article/details/78130954
nRF52832 對升級過程中的數據進行了加密和認證處理,具體過程參考:https://blog.csdn.net/oqqdake12/article/details/53928601
要啟動bootloader,需要設置芯片的UICR 區域,UICR.BOOTLOADERADDR. 將bootloader 地址寫入此區域。
具體命令:nrfjprog.exe --memwr 0x10001014 --val 0x00078000.
nrfjprog 一個python 的程序,安裝過程參考上面所提文章。0x10001014 是 UICR.BOOTLOADERADDR 地址。0x00078000 是14.2.0 SDK版本中bootloader 區域地址。
原文:https://blog.csdn.net/weixin_38051349/article/details/80074799
nRF52832的UICR
UICR(User information configuration registers)是保存用戶特殊設置的非易失存儲寄存器(NVM:Non-volatile memory),UICR與Flash的不同的是只有通過全片擦除后才能重新寫入,不能單獨擦除。
UICR寄存器組:
NRFFW[14:0]:為Nordic固件保留,與DFU的設計有關。
NRFHW[11:0]:為Nordic硬件件保留。
CUSTOMER[31:0]:為用戶保留。
PSELRESET[1:0]:選擇nReset連接的引腳位置(並不是所有引腳都支持),兩個寄存器值必須一致nReset才有效,否則沒有nReset引腳。
APPROTECT:使能或禁止Access Port 保護功能。
NFCPINS:設置NFC引腳為GPIO還是NFC。
nRESET和NFC PIN
默認在system_nrf52.c中通過宏CONFIG_NFCT_PINS_AS_GPIOS和CONFIG_GPIO_AS_PINRESET控制打開或關閉nRESET和NFC PIN的功能。在擦除和燒寫后的首次程序運行的時候,SystemInit()函數根據宏定義設置會先根據宏定義寫UICR寄存器。
Bootloader
在Bootloader的程序中NRF_UICR->NRFFW[0]儲存的是Bootloader的地址。
原文:https://blog.csdn.net/weixin_40643581/article/details/78980997
