解决NRF52832正常添加OTA代码后无法进入app一直运行在bootloader的问题!

news2024/11/24 2:16:05

问题现象描述:

SDK版本17.1.0
在 mergehex工具 合并以下文件

setting.hex
bootloader.hex
app.hex
sortdevice.hex

之后烧录固件第一次运行
程序一直运行在bootloader,蓝牙名称显示 DFUTARG ,必须要进行一次OTA才进入APP
注意:如果你连DFUTARG都没有搜到,说明打包步骤不对,以下步骤只适用于能搜带DFUTARG蓝牙后

在这里插入图片描述
!!! 仔细检查打包程序步骤,不能有误,不然依然进入不了app

解决步骤1 :修改宏定义

1:用 keil 打开bootloader工程:
nRF5_SDK_17.1.0_ddde560\examples\dfu\secure_bootloader\pca10040e_s112_ble\arm5_no_packs
2:打开keil 工程设置的 C\C++ 的define 
	添加芯片型号 NRF52832_XXAA的宏定义,
	注意,如果用的是52832,但是里面却出现了52810_XXAA类似的其他型号的宏定义记得删掉

在这里插入图片描述

步骤2 :修改代码

3: 打开这个文件 :
nrf_bootloader_app_start_final.c
4:修改函数:
这个值有问题:BOOTLOADER_SETTINGS_ADDRESS 
直接换成我们自己的型号setting.hex的起始位置
ret_code_t nrf_bootloader_flash_protect(uint32_t address, uint32_t size)
{
    if ((size & (CODE_PAGE_SIZE - 1)) || (address > BOOTLOADER_SETTINGS_ADDRESS))
    {
        return NRF_ERROR_INVALID_PARAM;
    }
    。。。

修改后代码如下:
0x0007E000UL是根据宏定义追代码进去看到的,
52832的setting是放在flash顶部的;512k大小型号的是放在0x0007E000UL地址,版本2的setting占了2page
ret_code_t nrf_bootloader_flash_protect(uint32_t address, uint32_t size)
{
    if ((size & (CODE_PAGE_SIZE - 1)) || (address > 0x0007E000UL)) //BOOTLOADER_SETTINGS_ADDRESS
    {
        return NRF_ERROR_INVALID_PARAM;
    }
    。。。
修改main.c中代码:
屏蔽led的无用代码
/**
 * @brief Function notifies certain events in DFU process.
 */
static void dfu_observer(nrf_dfu_evt_type_t evt_type)
{
    switch (evt_type)
    {
        case NRF_DFU_EVT_DFU_FAILED:
        case NRF_DFU_EVT_DFU_ABORTED:
        case NRF_DFU_EVT_DFU_INITIALIZED:
            // bsp_board_init(BSP_INIT_LEDS);
            // bsp_board_led_on(BSP_BOARD_LED_0);
            // bsp_board_led_on(BSP_BOARD_LED_1);
            // bsp_board_led_off(BSP_BOARD_LED_2);
            break;
        case NRF_DFU_EVT_TRANSPORT_ACTIVATED:
            // bsp_board_led_off(BSP_BOARD_LED_1);
            // bsp_board_led_on(BSP_BOARD_LED_2);
            break;
        case NRF_DFU_EVT_DFU_STARTED:
            break;
        default:
            break;
    }
}

步骤3 :检查falsh中固件存放位置

使用工具 Programmer v4.2.0
点击add file 把setting bootloader app 加进去看flash位置有没有冲突
把bootloader放在挨着setting.hex的地方 ,这个只需要去修改keil里面ROM的位置就行了

在这里插入图片描述
我的seting放在0x7E000的位置 减去bootloader的大小,刚刚好从0x78000开始放
bootloader的大小用上面的progammer软件就可以确定,鼠标放在途中红色位置就会显示大小和起始位置
在这里插入图片描述

最后 编译bootloader

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1551074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

补单系统平台第三方接口,电商平台数据市场接口api提供

补单系统平台第三方接口,电商平台数据市场接口api提供 部分数据参数

电缆故障测试仪的原理和组成部件分别是什么?

电缆故障测试仪是专为检测电缆线路中的各种故障而设计制造的精密电子设备,广泛应用于电力、通信、石油化工、航空航天等领域。这类仪器的工作原理和组成相对复杂,下面将详细阐述。 电缆故障测试仪的工作原理 电缆故障测试仪的核心原理通常涉及电磁波反…

STM32最小核心板使用HAL库ADC读取MCU温度(使用DMA通道)

STM32自带CPU的温度数据,需要使用ADC去读取。因此在MX创建项目时如图配置: 模块初始化代码如下: void MX_ADC1_Init(void) {/* USER CODE BEGIN ADC1_Init 0 *//* USER CODE END ADC1_Init 0 */ADC_ChannelConfTypeDef sConfig {0};/* USER…

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool🍬…

Linux系统-----------MySQL 数据类型

目录 MySQL 数据类型 一、数值类型 二、日期和时间类型 三、字符串类型 (1)CHAR类型 (2)VARCHAR类型 (3)CHAR和VARACHAR的比较及其应用场景 MySQL 数据类型 MySQL 中定义数据字段的类型对你数据库的…

Nginx超详细讲解+实操

前言 nginx作为当今火爆的、高性能的http及反向代理服务,不管前端还是后端,都需要全面去了解,学习,实操。 nginx 介绍 为了有一个全面的认知,接下来我们先来看看nginx的架构以及一些特点。 nginx 特点 处理响应请…

YOLOv5 | 鬼魅(幽灵)卷积 | 改进Ghost卷积轻量化网络

目录 原理简介 代码实现 yaml文件实现 检查是否添加执行成功 完整代码分享 论文创新必备 启动命令 由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络 (CNN) 很困难。特征图中的冗余是那些成功的 CNN 的一个重要特征,但在神经架构设计中很…

盏燕生物科技将出席2024第七届燕窝天然滋补品博览会

参展企业介绍 深圳市盏燕生物科技有限公司,办公室地址位于中国第一个经济特区,鹏城深圳,深圳市龙岗区平湖街道禾花社区富安大道18号亚钢工贸大楼1栋1017A,我公司主要提供一般经营项目是:初级农产品、海产品、化妆品、…

官网怎么发布新文章,怎么在官方网站上发布新内容

随着企业和组织越来越重视官方网站的建设和更新,发布新内容成为了官方网站管理的重要一环。本文将探讨在官方网站上发布新内容的步骤和方法,以及如何确保发布的内容质量和效果。 1. 确定发布内容 在发布新内容之前,首先需要确定发布的内容。…

lazada获得lazada商品详情 API 返回值说明,item_get-获得lazada商品详情

lazada.item_get 请求示例,API接口接入:Anzexi58 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_…

老阳:一文解答现在做Temu跨境电商还能不能赚钱

近年来,跨境电商行业持续火热,Temu作为其中的一员,也吸引了众多创业者和投资者的目光。然而,随着市场的不断饱和和竞争的加剧,很多人开始疑虑:现在做Temu跨境电商还能赚钱吗?一起去看看吧! 任何…

注册阿里云账号全过程,新手入门超详细

阿里云账号怎么注册?阿里云账号支持手机号注册、阿里云APP注册、淘宝、支付宝和钉钉多种注册方式,账号注册后需要通过实名认证才可以购买或使用云产品,使用淘宝、支付宝或钉钉注册方式可以免去实名认证步骤,阿里云百科aliyunbaike…

typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存

Manjaro安装RabbitMQ 安装 sudo pacman -S rabbitmq rabbitmqadmin启动管理模块 sudo rabbitmq-plugins enable rabbitmq_managementsudo rabbitmq-server管理界面 http://127.0.0.1:15672/ 默认用户名和密码都是guest。 要使用 rabbitmqctl 命令添加用户并分配权限&#xf…

【保姆级讲解如何构建Python虚拟环境】

🔥博主:程序员不想YY啊🔥 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫 🤗点赞🎈收藏⭐再看💫养成习惯 🌈希望本文对您有所裨益,如有…

清华镜像源设置

1、找官方地址没问题 https://mirrors.tuna.tsinghua.edu.cn/ 2、怎么设置的? 3、怎么就知道如何设置,或者我换成Ubuntu怎么设置? https://mirrors.tuna.tsinghua.edu.cn/help 在左侧列表找到要设置的系统就可以了 我什么都不知道&#xff…

实力上榜 | 创新微MinewSemi再获“物联之星”年度企业投资价值50强

近日,由深圳市物联传媒有限公司、AIoT星图研究院、IOTE组委会、深圳市物联网产业协会主办的“物联之星”2023中国物联网行业年度榜单评选结果正式公布。经过层层筛选,创新微MinewSemi获评2023年度“中国物联网企业投资价值50强”,连续两年实力…

【保姆级讲解如何Chrome安装Vue-devtools的操作】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

SQL/日志监控框架log4jdbc

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 log4jdbc is a Jav…

Linux Centos7安装Docker容器

Docker的简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分…

百万组通用编码器 L1527芯片产品介绍,重码率很低

L1527 是 CMOS 结构的预烧内码(遥控中的地址码)通用编码器,内有 20 位可预烧写 100 万组内码组合,使得重码率很低,具有更高安全性。芯片内集成误操作禁止功能,在按键输入有效且状态不变时,芯片连…