nrf52832在SDk12.3中DFU升级工程移植步骤

最近在dfu升级这部分,用的是sdk12.3的,上网搜了一下资料,发现基本都是相关软件安装的步骤,所以,自己摸索着在一个工程上面进行移植dfu服务,也记录一下移植步骤,方便以后用的到。
好了,不说太多废话,先说工程。
在sdk12.3里面有两个工程,一个是bootloader,对应路径为:D:\nRF5_SDK_12.3.0_d7731ad\examples\dfu\bootloader_secure。
一个是dfu软按键服务工程,对应路劲为:D:\nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\experimental_ble_app_buttonless_dfuBootLoader。
这两个工程相信大家在进行软件安装的时候,进行测试dfu服务这部分应该都是已经用到的,也应该熟悉。所以,不讲解太多,这次主要是进行把任意工程里面添加dfu服务。
步骤1:在服务文件里面添加ble_dfu.c
nrf52832在SDk12.3中DFU升级工程移植步骤_第1张图片
步骤2:添加文件nrf_dfu_setting.c , nrf_dfu_flash_buttonless.c, app_scheduler.c三个.c文件和对应的.h头文件,这个大家自己查找。
nrf52832在SDk12.3中DFU升级工程移植步骤_第2张图片
步骤3:添加crc32.c文件
nrf52832在SDk12.3中DFU升级工程移植步骤_第3张图片
步骤4:使能相应宏
nrf52832在SDk12.3中DFU升级工程移植步骤_第4张图片
在这里插入图片描述
步骤5:编译一下,会出现一个错误,根据错误,
nrf52832在SDk12.3中DFU升级工程移植步骤_第5张图片
我们可以看到是一个宏没有定义,我们定义一下,编译就没问题了。
nrf52832在SDk12.3中DFU升级工程移植步骤_第6张图片
步骤6:编写dfu服务初始化
在static void services_init(void)函数里面添加对应的dfu服务和回调函数,这个地方大家可以把官方历程里面的代码直接拷贝过来,就可以了
nrf52832在SDk12.3中DFU升级工程移植步骤_第7张图片
nrf52832在SDk12.3中DFU升级工程移植步骤_第8张图片
步骤7:增加协议栈派发函数
nrf52832在SDk12.3中DFU升级工程移植步骤_第9张图片
步骤8:增加系统派发函数
nrf52832在SDk12.3中DFU升级工程移植步骤_第10张图片

步骤9:到这里已经完成大部分了,编译一下,没有问题。我们打开RTT,把程序下载进去,会看到RTT的问题。
nrf52832在SDk12.3中DFU升级工程移植步骤_第11张图片
从上面图片可以看到,虽然已经到最后跑起来了,但是RTT并没有打印出广播信息:Fast Advertising,我们用蓝牙测试工具,也是搜索不到的,问题其实出现在RAM和ROM里面。大家可以看到上面服务初始化函数里面,我初始化了两个服务,一个是串口透传服务,一个是dfu服务,系统原本是给一个服务分配rom空间,现在增加一个,需要在分配一些。资料上有说明:每增加一个服务,ROM空间降低0x10, 起始地址增加0x10,并且,我们的RAm空间也要为了dfu升级而增大,看下图
nrf52832在SDk12.3中DFU升级工程移植步骤_第12张图片

更改以后,我们下载进去,可以看低RTT输出信息,已经ok。
nrf52832在SDk12.3中DFU升级工程移植步骤_第13张图片
步骤10:还有一处要修改,因为此处不修改,是直接把BootLoader擦除的,这样就没办法一直进行dfu升级了,每次都要先下协议栈,然后BootLoader,然后下载app的hex文件,很麻烦,我们修改一下,很容易。只需要屏蔽掉就行。
nrf52832在SDk12.3中DFU升级工程移植步骤_第14张图片
步骤9:到这里就ok了,为了做对比吗,我生成两个zip文件,一个是官方历程的zip,名字为dfu_button.hex,一个是自己历程的名字为my_project_dfu.hex
nrf52832在SDk12.3中DFU升级工程移植步骤_第15张图片
我们把协议栈,BootLoader先下载进去,先升级官方的dfu的zip文件,我们可以看到广播名和服务名
nrf52832在SDk12.3中DFU升级工程移植步骤_第16张图片
然后,通过dfu服务,擦除app端,重新进入BootLoader里面,升级我们自己的dfu。zip文件
nrf52832在SDk12.3中DFU升级工程移植步骤_第17张图片
到此,所有工作完成,如果移植的时候还有问题,可以参照官方的历程,查看还有哪些.c,.h没有移植进入。

你可能感兴趣的:(技术,初学)