文档章节

Mac OS X & Linux下搭建Nrf51822开发环境与编译过程

程序员孟帅
 程序员孟帅
发布于 2016/03/09 00:40
字数 821
阅读 931
收藏 3
点赞 1
评论 0

不知道为什么Nordic官方不提供Mac的开发工具以及开发文档,也不知道国外有那么多的教程,为何都是让你绕圈子。官方推荐的IDE是Keil μVision4,这款软件是7年前开发的几乎没有更新过,体验极差。。非常影响写代码心情,所以花了点时间折腾,现在终于可以在Mac或者Linux上面开发了

首先购买开发板,否则下面的都是废话,可以找万能的taobao
QQ20160309-0

Step1 下载SDK

下载地址:http://developer.nordicsemi.com/
当前最高版本是V10
解压zip包到某个项目目录

Step2 下载交叉编译工具

即GCC ARM Embedded
下载地址
我解压到了/usr/local/gcc-arm-none-eabi-5_2-2015q4/

Step3 下载Jlink工具

下载地址
下载的是

Step4 配置编译工具路径

打开/..../nRF51_SDK_10.0.0_dc26b5e/components/toolchain/gcc/Makefile.posix
改为:

GNU_INSTALL_ROOT := /usr/local/gcc-arm-none-eabi-5_2-2015q4
GNU_VERSION := 4.9.3
GNU_PREFIX := arm-none-eabi

编译例程代码

进入demo目录
...../nRF51_SDK_10.0.0_dc26b5e/examples/ble_peripheral/ble_app_template/pca10028/s110/armgcc

make

烧录

如果安装了上述的segger的Jlink工具,那么在命令行中实际上可以直接使用JlinkExe进行烧录,稍微麻烦点,github有很多脚本。但是Nordic官方也提供了nrfjprog实际上是JlinkExe的封装。
下载地址

清空数据

nrfjprog --eraseall

烧录hex文件

nrfjprog --program /path-to-hex-file.hex

出现以下表示烧录成功

Parsing hex file.
Reading flash area to program to guarantee it is erased.
Checking that the area to write is not protected.
Programing device.

也可以使用Makefile中提供的方法

#烧录 softdevice
make flash_softdevice

#烧录application
make flash

Flash与RAM空间分配问题

因为不同版本的sdk以及不同的Nrf芯片协议栈softdevice的空间可能不同,所以在烧录application的时候,要指定的起始也不同

#makefile片段
nrf51422_xxac_s110: OUTPUT_FILENAME := nrf51422_xxac_s110
nrf51422_xxac_s110: LINKER_SCRIPT=ble_app_template_gcc_nrf51.ld

引入了ble_app_template_gcc_nrf51.ld

/* Linker script to configure memory regions. */

SEARCH_DIR(.)
GROUP(-lgcc -lc -lnosys)

MEMORY
{
  FLASH (rx) : ORIGIN = 0x18000, LENGTH = 0x28000
  RAM (rwx) :  ORIGIN = 0x20002000, LENGTH = 0x2000
}

SECTIONS
{
  .fs_data_out ALIGN(4):
  {
    PROVIDE( __start_fs_data = .);
    KEEP(*(fs_data))
    PROVIDE( __stop_fs_data = .);
  } = 0
}

INCLUDE "nrf5x_common.ld"

其中FLASH与RAM的区段要根据实际情况来设置,共计四个数值,ram起始与结束以及flash起始于结束.
根据s110_nrf51822_8.0.0_migration_document.pdf文档的信息:

我们可以知道对于10.0的SDK即softdevice版本8.0的协议栈长度为0x18000,因为总长度为16 kB (0x40000),所以Application地址起始为0x18000,然后最大长度为:
0x40000 - 0x18000 = 0x28000

the flash size of the device is assumed to be 256 kB (0x00040000) and the RAM size of the device is assumed to be 16 kB (0x00004000). RAM is always located from execution address 0x20000000. The example will assume SoftDevice B described above will be used. The range of flash from 0 to 0x00020000 (128 kB) is used by the SoftDevice protocol stack. The range of RAM from 0x20000000 to 0x20002000 (8 kB) is used by the SoftDevice protocol stack.

内存从0x20000000开始分配,16kb空间总长度为0x00004000,SoftDevice 协议栈使用了8k(0x00002000)内存,所以Application的RAM起始为:
0x20000000 + 0x00002000 = 0x20002000
剩余可用RAM长度为8kb 0x2000

© 著作权归作者所有

共有 人打赏支持
程序员孟帅
粉丝 67
博文 17
码字总数 27635
作品 0
CEO
搭建 Linux 的 Objective-C 开发环境

通过GNUstep开发框架,在Linux下也可以搭建Objective-C的开发环境,开发好的程序可以直接在Linux下运行,如果动态库配置环境与Linux相同,程序甚至可以直接在Mac OS X下运行。如果不能直接运...

虫虫
2011/11/23
1K
1
golang 交叉编译,跨平台

因为我的本地开发环境是os x 但服务器是linux,所以需要编译linux用的go程序,方法如下: 各平台的GOOS和GOARCH参考 OS ARCH OS version linux 386 / amd64 / arm >= Linux 2.6 darwin 386 /...

metian
2013/05/17
0
5
区块链技术(一):Truffle开发入门

以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架,这是我们第一篇区块链技术文章介绍truffle的原因,实战是最重要的事情,这篇文章不讲原理,只...

雪花又一年
04/16
0
0
Android 开发环境下载地址

原文:http://blog.csdn.net/shulianghan/article/details/38023959 最近 Google 被墙了, 上传一下自己收集的 Android 开发环境, 下面给出的官网链接也可以下载; 1. 百度网盘下载地址 Androi...

mysky221
2014/10/19
0
0
Android 开发环境下载连接

http://www.cnblogs.com/tc310/p/3938353.html 最近 Google 被墙了, 上传一下自己收集的 Android 开发环境, 下面给出的官网链接也可以下载; 1. 百度网盘下载地址 Android集成环境 NDK JDK 总...

vga
2015/08/07
0
2
Apple的Mac OS X帮助BSD开发赶超Linux

Apple's Mac OS X helps BSD overtake Linux for development Apple的Mac OS X帮助BSD开发赶超Linux posted by David Adams on Wed 10th Aug 2011 17:12 UTC, submitted by RTF_M 发表于:2......

xyxzfj
2011/08/11
0
3
区块链系列之如何编译Bitcoin

最近刚开始学习区块链的编程,首先想到的就是如何搭建开发环境,这里我分享一下自己在Mac OS下如何搭建bitcoin,由于Bitcoin属于开源项目,因此可以直接从全球最大的编程社交平台Github上拉取...

韬声依旧在路上
2017/11/23
0
0
鸟人的Android揭秘(3)——Android 编译环境搭建

一、主机环境要求 要顺利编译 Android 源代码,硬件环境和操作系统都必须满足一定的条件。官方推荐的硬件环境配置是: 编译 Gingerbread(2.3.x)及后续版本必须使用64位系统 需至少留出100...

鸟人部落
2016/12/14
62
0
vagrant + centos/7 搭建自己的本地开发环境

作为前端的童鞋们,也许很少接触到服务器相关的知识,但是要做一名合格的软件工程师,就不得不用到这些『软技能』啦,在踩了无数次坑后,终于搭建好属于自己的开发环境,成就感妥妥的。 简单...

YDJFE
今天
0
0
windows下iphone开发平台搭建

来自:http://www.3lian.com/edu/2011/09-06/9371.html 新版开发环境在Windows XP下VMWare虚拟机中安装开发环境过程贴出来,让大家分享。   本文在Windows Xp + VMware Workstation 7.0 + M...

fcsong000833
2013/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue-router懒加载

1. vue-router懒加载定义 当路由被访问的时候才加载对应组件 2. vue-router懒加载作用 当构建的项目比较大的时候,懒加载可以分割代码块,提高页面的初始加载效率。 ###3. vue-router懒加载实...

不负好时光
8分钟前
0
0
庆祝法国队夺冠:用Python放一场烟花秀

天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法国队夺冠,工作之余也可以随时让程序为自己放一场烟花秀。 这个有趣的小项目并不...

猫咪编程
9分钟前
0
0
SpringBoot | 第七章:过滤器、监听器、拦截器

前言 在实际开发过程中,经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的,业务方是无需...

oKong
23分钟前
4
0
存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。 顺序结构和链接结构适用在内存结构中。 顺序表每个单元都是按物理...

DannyCoder
34分钟前
1
0
Firefox 61已经为Ubuntu 提供支持

最新和最好的Mozilla Firefox 61 “Quantum”网络浏览器已经为Ubuntu Linux操作系统的用户提供了支持,现在可以通过官方软件库进行更新。 Mozilla于2018年6月26日发布了Firefox 61版本,该版...

六库科技
今天
0
0
Win10升级后执行系统封装(Sysprep)报错

开始封装 一年多以前开始给公司封装Win10系统,便于统一给公司电脑初始化携带各种软件的系统,致力于装完既可以开发的状态。那时候最新的版本是Win10 1703版本,自然就以他为母盘,然后结合V...

lyunweb
今天
40
0
php 性能优化

#什么情况下会遇到性能问题 PHP 语法使用的不恰当

to_be_better
今天
0
0
Jenkins 构建触发器操作详解

前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。 一、定时构建语法 * * * * * (五颗星,中间用空格隔...

覃光林
今天
0
0
IDEA配置技巧

超详细设置Idea类注释模板和方法注释模板 idea去掉注解param下划线 JetBrains全系列破解

AK灬
今天
0
0
rsync通过服务同步/Linux系统日志/screen工具

rsync通过服务同步 分为服务端(机器A) 和客户端(机器B) 机器A操作编辑/etc/rsyncd.conf配置文件 [root@yolks1 ~]# vim /etc/rsyncd.conf 文件中添加以下配置 port=873 ...

Hi_Yolks
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部