巧用JLINK来实现nrf51822的蓝牙设备流水号
项目需求:在蓝牙广播的时候名字为 SN_设备流水号(如SN_00000001)。
我们可以在原来的代码中进行一下修改和增加
const uint32_t MY_UICR_ADDR __attribute__((at(0X0001B160))) __attribute__((used)) = ;
备注这个地址0X0001B160根据自己具体情况来设定
/**@brief Function for the GAP initialization.
*
* @details This function will set up all the necessary GAP (Generic Access Profile) parameters of
* the device. It also sets the permissions and appearance.
*/
static void gap_params_init(void)
{
uint32_t err_code;
ble_gap_conn_params_t gap_conn_params;
ble_gap_conn_sec_mode_t sec_mode; const int len = strlen(DEVICE_NAME) + 8;
char name[len]; int32_t serial_number; serial_number=*(int32_t *)0X0001B160; BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); sprintf(name, "%s%08d", DEVICE_NAME,serial_number); err_code = sd_ble_gap_device_name_set(&sec_mode,
(const uint8_t*)name,
len);
APP_ERROR_CHECK(err_code); memset(&gap_conn_params, , sizeof(gap_conn_params)); gap_conn_params.min_conn_interval = MIN_CONN_INTERVAL;
gap_conn_params.max_conn_interval = MAX_CONN_INTERVAL;
gap_conn_params.slave_latency = SLAVE_LATENCY;
gap_conn_params.conn_sup_timeout = CONN_SUP_TIMEOUT; err_code = sd_ble_gap_ppcp_set(&gap_conn_params);
APP_ERROR_CHECK(err_code); err_code = sd_ble_gap_tx_power_set(TX_POWER_LEVEL);
APP_ERROR_CHECK(err_code);
}
现在上我们的主角J-Flash
打开J-Flash(路径为Start->All Programs->SEGGER->J-Link V5.12f->J-Flash)

下面的个步骤和平时使用j-flash来为MCU下载hex文件相同


重要的步骤来了
备注信息program serial number中
address为指定烧写地址(或者重新覆盖数据地址)
Next SN指定第一次要烧写的十进制数,之后的自动更据increment数值递增。
LEN指定烧写数据长度。J-Flash烧写序列号最多支持4个字节,高于四个字节的数据J-Flash会将前四个字节取反再烧进去。

现在将刚才工程进行编译后将其nrf51422_xxac_s110.hex和s110_nrf51_8.0.0_softdevice.hex进行合并

双击merge_hex.Bat文件(偷懒ing)
@echo off
::关echo
merge\mergehex.exe --merge hex\s110_nrf51_8..0_softdevice.hex hex\nrf51422_xxac_s110.hex --output firmware_s110.hex del hex\withoutsn.hex/s
::删除中间临时文件
#pause

使用j-flash来打开刚才的合并后hex文件

查看原先代码中0X0001B160的数据

现在使用J-FLASH进行下载

查看刚才0X0001B160的数据

下载后看手机app

我们再重复几次

小窍门:
同时也会在Jflash的工程目录(之前加载的sample prject的目录)下生成一个“<JFlashProjectName>_Serial.txt”,内容如下图,其中“4”为下次要写入的数据,系统自动为其加1了(由“Increment”决定):

更多关于JFlash可以参考下面中文件
https://www.segger.com/admin/uploads/productDocs/UM08003_JFlash.pdf
或者可以segger的安装路径中找到C:\Program Files (x86)\SEGGER\JLink_V512f\Doc\Manuals\UM08003_JFlash.pdf
巧用JLINK来实现nrf51822的蓝牙设备流水号的更多相关文章
- [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议
一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...
- [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)
开机初始化Log Log编号 函数名 所在文件名 000001: main ..\main.c 000002: timers_init ..\main.c 000003: gpiote_init ...
- 嵌入式调试器原理和各类调试器集锦(JLINK、STLINK、CCDEBUG)
工欲善其事,必先善其器.调试器在嵌入式开发调试中的重要性不言而喻,单步.断点和监察的效率远高于串口打印.但是,调试器对于一般开发人员往往是一个黑匣子.今天我们就来谈谈调试器的原理,顺便把自己的几类调试 ...
- 1_BLE nRF51822 UART 与 BLE转发
去年Noridc出了集成蓝牙4.0并能开口说话24L01通信芯片,这部电影可以非常小包装.和低功耗.非常适合于可穿戴设备,然后挖了一个免费的手在不久的将来AK II,又没了一个Becon的板子.先玩了 ...
- NRF51822模块无法识别问题解决办法
我知道没图是没人看的,所以随便瞎截图了几张. 对于很多新手朋友们,或许可能还不是很了解jtag相关的一些调试所需的必须电路,就像很多人不喜欢用stm32的硬件i2c,而是喜欢软件io模拟,就算是使用了 ...
- [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)
星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安装步骤 1) 从GNU Arm Embedded Toolchain官网下载最新的gcc-arm工具链,写文章时 ...
- Nordic NRF51822 从零开始系列(一)开发环境的搭建
硬件准备 (1)nrf51822 开发板一块(此处使用的是青云系列的,自带jlijnk ob+usb串口芯片)或者使用nrf51822模块+jlink_ob ( ...
- nRF51 DK : nRF51822 Development Kit for Bluetooth Smart, ANT and 2.4GHz applications.
KEY FEATURES • Affordable, Rapid prototyping and development solution for nRF51 Series SoCs • Kit su ...
- [nRF51822 AK II 教程]第一课,开发环境的配置及背景介绍【转】
低功耗蓝牙4.0是全新的技术,并不向下兼容,也就是说它和蓝牙3.0.2.0什么的都不能通信的.另外,蓝牙4.0目前的规范只能做外设和主机(智能手机,电脑等)通讯,也就是说你想用一个单模的蓝牙4.0开发 ...
随机推荐
- hdu2068 RPG的错排 组合数/递推
#include<stdio.h> ]; long long c(int a,int b) { ,j; ;i>=a-b+,j<=b;i--,j++) sum=sum*i/j; ...
- hdu1081 DP类最大子段和(二维压缩+前缀和数组/树状数组计数)
题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j) ...
- C#处理Exception的常用方法总结
在.NET中,异常是指成员没有完成它的名称宣称可以完成的行动.在异常的机制中,异常和某件事情的发生频率无关. 异常处理四要素包括:一个表示异常详细信息的类类型:一个向调用者引发异常类实例的成员:调用 ...
- ECHO不换行
我想用批处理实现向s.txt中多次分别导入文本例如:“aaaa","bbbb","cccc","dddd"实现s.txt内效果如: ...
- php empty详解
判断字符串是否为空,可以这么判断: if ($value=="") ... * 格式:bool empty ( mixed var ) * 功能:检查一个变量是否为空 ...
- SpringMVC请求参数注解两个小问题
今天遇到使用SpringMVC请求注解遇到的两个小问题: 如果用@requestBody注解,则请求体内容类型一般要为application/json,如果其类型为multipart/form-dat ...
- 【转】每天一个linux命令(10):cat 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内 ...
- 一份11gR2 rac awr报告的简单分析
昨晚网友发来一份awr报告,希望帮忙分析一下.由于其他信息都没有,仅仅只有一份awr,鉴于目前有大多的朋友还不太熟悉或者说不知道如何去进行awr的分析.我这里就拿这个awr来进行分析,当抛砖引玉了.首 ...
- Rockchip parameter文件详解
瑞芯微的安卓平台使用 parameter 文件来配置一些系统参数,比如定义串口号,固件版本,flash分区信息等. parameter 文件是由 BootLoader 解析的,大小不能超过 64 KB ...
- Openwrt编译时修改默认IP的方法
在~/openwrt/barrier_breaker/package/base-files/files/lib/functions/ uci-defaults.sh 第178行修改IP地址