项目需求:在蓝牙广播的时候名字为 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的蓝牙设备流水号的更多相关文章

  1. [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议

    一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...

  2. [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)

    开机初始化Log Log编号 函数名   所在文件名 000001: main ..\main.c 000002: timers_init ..\main.c 000003: gpiote_init ...

  3. 嵌入式调试器原理和各类调试器集锦(JLINK、STLINK、CCDEBUG)

    工欲善其事,必先善其器.调试器在嵌入式开发调试中的重要性不言而喻,单步.断点和监察的效率远高于串口打印.但是,调试器对于一般开发人员往往是一个黑匣子.今天我们就来谈谈调试器的原理,顺便把自己的几类调试 ...

  4. 1_BLE nRF51822 UART 与 BLE转发

    去年Noridc出了集成蓝牙4.0并能开口说话24L01通信芯片,这部电影可以非常小包装.和低功耗.非常适合于可穿戴设备,然后挖了一个免费的手在不久的将来AK II,又没了一个Becon的板子.先玩了 ...

  5. NRF51822模块无法识别问题解决办法

    我知道没图是没人看的,所以随便瞎截图了几张. 对于很多新手朋友们,或许可能还不是很了解jtag相关的一些调试所需的必须电路,就像很多人不喜欢用stm32的硬件i2c,而是喜欢软件io模拟,就算是使用了 ...

  6. [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)

    星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安装步骤 1) 从GNU Arm Embedded Toolchain官网下载最新的gcc-arm工具链,写文章时 ...

  7. Nordic NRF51822 从零开始系列(一)开发环境的搭建

    硬件准备     (1)nrf51822 开发板一块(此处使用的是青云系列的,自带jlijnk ob+usb串口芯片)或者使用nrf51822模块+jlink_ob                 ( ...

  8. 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 ...

  9. [nRF51822 AK II 教程]第一课,开发环境的配置及背景介绍【转】

    低功耗蓝牙4.0是全新的技术,并不向下兼容,也就是说它和蓝牙3.0.2.0什么的都不能通信的.另外,蓝牙4.0目前的规范只能做外设和主机(智能手机,电脑等)通讯,也就是说你想用一个单模的蓝牙4.0开发 ...

随机推荐

  1. Nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用

    nginx可以通过limit_conn_zone 和limit_req_zone两个组件来对客户端访问目录和文件的访问频率和次数进行限制,另外还可以善用进行服务安全加固,两个模块都能够对客户端访问进行 ...

  2. javascript的单例模式

    单例模式是javascript最基本,最有用的模式之一,它提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码通过单一的变量进行访问.我的理解是在这个作用域中,只有通过单一的变量来访问,不存 ...

  3. ATOM & Sublime Text 下MarkDown插件功能比较

    ATOM & Sublime Text 下MarkDown插件功能比较 作者:net66 更新日期:2016-6-14 10:50 [一] 编辑器 Sublime Text3 vs Atom ...

  4. java安全性-引用-分层-解耦

    Java不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用 "特洛伊"木马等欺骗手段访问对象的私有成员 访问一个对象必须通过这个对象的引用 java ...

  5. 调用飞信HTTP接口给自己发短信

    注: 1.下文中所有HTTP请求所指的Host都是f.10086.cn 2.目前只有中国移动用户可以使用 1.打开登录页面:GET /huc/user/space/login.do?m=submit& ...

  6. Msmq设计文档(赋源代码)

    Msmq设计文档(赋源代码)   Msmq设计文档     文件状态: [√] 草稿 [  ] 正式发布 [  ] 正在修改 文件标识: ECI-MSMQ v01 当前版本: 0.5 作    者: ...

  7. Linux部署禅道Steps&Q&A

    1.查看Linux的位数: getconf LONG_BIT 结果:32/64 2. 禅道开源版安装包下载 Linux 64位 下载站点1: http://sourceforge.net/projec ...

  8. chrome 45以上flash被拦截的一种可能解决方案

    chrome 45以上不自动播放"非必要"flash的一种可能解决方案chrome 45以上flash被拦截的一种可能解决方案 问题 1.chrome 45以上(包含45)版本默认 ...

  9. 异常: java.security.InvalidKeyException: Illegal key size

    今天在做接口测试的时候遇到个异常: java.security.InvalidKeyException: Illegal key size. SecretKeySpec secretKeySpec = ...

  10. 从windows到linux的shell脚本编码和格式问题

    从windows到linux的shell脚本编码和格式问题   从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...