准备

  • 我发现可以一开始就去自己打板
  • PACK和各种工具都是开源的
  • github上面都有很多工具
  • https://github.com/NordicSemiconductor/Android-nRF-Connect     
  • 下载了就安装到自己的手机上,可以先做测试用

分区

这个跟工具有很大的关系,官方的开发工具是keil , 下载安装NordicSemiconductor的 PACK ,库有好几个的

芯片款式

  • 尼玛市面上卖的一共有这几块芯片,
  • nRF51422_xxAC用的比较多,
  • 比如NRF51822    256K ROOM 32K RAM  不要选错了
  • 选错了跑不动的 比了AA 或者AB 都是不一样的芯片

  • 这个就是分区,首先运行BOOTLOADER   
  • 然后再运行到APP   SD分区是Nordic 的固件  就这三个分区
  • 那个FREE是SWAP分区,这个分区是用来安全升级的,类似于A/B system 
  • MBR没什么的,放一下API  用来调用更新SD 

地址

一般记住两个地址就可以  0X03C000 和 SD SIZE   

SD SIZE 看你是用哪个版本的SD   大小不一样 

那么烧写 APP的 offset就不一样 需要改一下

18000 是96 K  我用的是S110   

28000 = 160 K    对 是 256K 的room   

RAM选择随意 够运行就可以了  预留可以大一点 

空中升级

方式

空中升级是BOOTLOADER 去实现的 , 一般有两种方式 

  1. 按键方式
  2. APP切换方式

两种方式都是要切换到boot 去直接运行boot  

APP切换方式比较方便一点,意思就是说boot 本身就有一个蓝牙设备 

跟APP的代码实现差不多 ,一样是调用 SD固件API的   

还有做好的ZIP包千万要注意

不要放到类似百度云这种云端了

会加密运输的,ZIP头部都被改了

APP空中升级会不断弹出的

用QQ传输ZIP包到手机

ZIP包工具

./nrfutil.exe dfu genpkg /c/Users/10167/Desktop/2017.1.1.zip

 --application nrf51422_xxac_s130.hex --application-version 0xffffffff 

--dev-revision 0xffff --dev-type 0xffff --sd-req 0xfffe

做ZIP包的工具在 

https://github.com/NordicSemiconductor/pc-nrfutil/releases

下载 X64 或者X86 的  

example 

如果你是AC 的芯片的话,最好选S130的官方实例

路径

 app 的路径  
D:\Keil_v5\ARM\PACK\NordicSemiconductor\nRF_Examples\11.0.0-2.alpha\ble_peripheral\ble_app_hrs\pca10028\s130_with_dfu\arm5

bootloader 路径 
D:\Keil_v5\ARM\PACK\NordicSemiconductor\nRF_Examples\11.0.0-2.alpha\dfu\bootloader\pca10028\dual_bank_ble_s130\arm5

sofeware device 路径 
D:\Keil_v5\ARM\PACK\NordicSemiconductor\nRF_Examples\11.0.0-2.alpha\ble_peripheral\ble_app_hrs\pca10028\s130_with_dfu\arm5\RTE\nRF_SoftDevice\nRF51422_xxAC 

这个编译可以OK的,AC的芯片也不会有什么异常

不过需要改一下BOOTLOADER

-uint8_t  m_boot_settings[CODE_PAGE_SIZE] __attribute__((at(BOOTLOADER_SETTINGS_ADDRESS))) __attribute__((used));              /**< This variable reserves a codepage for bootloader specific settings, to ensure the compiler doesn't locate any code or variables at his location. */

+uint8_t  m_boot_settings[CODE_PAGE_SIZE] __attribute__((at(BOOTLOADER_SETTINGS_ADDRESS))) __attribute__((used)) = {BANK_VALID_APP};              /**< This variable reserves a codepage for bootloader specific settings, to ensure the compiler doesn't locate any code or variables at his location. */

将开机地址赋值一下  {BANK_VALID_APP}  就可以了

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐