Linux下NRF51822开发环境(非IDE)

来源:互联网 发布:电脑流量防火墙软件 编辑:程序博客网 时间:2024/05/20 05:31

之前写过Linux下烧写NRF51822的文章时说过分享我的Linux下开发NRF51822的环境, 一直很懒, 知道有人问了才回来写.


准备:

NRF51822的开发SDK( windows安装包)

arm-none-eabi-gcc (可到这里下载)


1.提取SDK

解压SDK的windows安装包(不是安装, 是解压, 如何解压网上教程很多, 这里就不多说了)

提取SDK源码:F:\Nordic_Semiconductor\nRF51_SDK_v4.4.1\nrf51822 目录 打包放到Linux里.(我用的是4.4.1, 用的事比较旧的SDK)

2.解压arm-none-eabi-gcc到Linux里

3.修改Makefile (这个是基于4.4.1SDK的Makefile, 使用5.x后的SDK, 由于SDK的一些目录改变, 需要进行一些源码路径和头文件路径的修改)

SDK_PATH := /opt/Nordic/nrf51822/ #SDK路径, 根据自己的实际情况修改SDK_SOURCE_PATH = $(SDK_PATH)/Source/#覆盖Makefile.windows(在nrf51822/Source/templates/gcc里)的几个变量override GNU_INSTALL_ROOT := /opt/armgcc #arm-none-eabi-gcc解压后的目录override GNU_VERSION := 4.7.3 #gcc版本override GNU_PREFIX := arm-none-eabi #gcc前缀BOARD := BOARD_PCA10001TARGET_CHIP := NRF51822USE_SOFTDEVICE := S110DEVICE_VARIANT := xxaaOUTPUT_FILENAME := BT#添加源文件C_SOURCE_FILES := main.cC_SOURCE_FILES += app_button.cC_SOURCE_FILES += app_gpiote.cC_SOURCE_FILES += app_scheduler.cC_SOURCE_FILES += app_timer.cC_SOURCE_FILES += crc16.cC_SOURCE_FILES += ble_conn_params.cC_SOURCE_FILES += ble_advdata.cC_SOURCE_FILES += ble_bondmngr.cC_SOURCE_FILES += ble_sensorsim.cC_SOURCE_FILES += ble_flash.cC_SOURCE_FILES += ble_stack_handler.cC_SOURCE_FILES += ble_radio_notification.cC_SOURCE_FILES += ble_srv_common.cC_SOURCE_FILES += ble_hids.cC_SOURCE_FILES += ble_bas.cC_SOURCE_FILES += ble_dis.c#添加头文件路径INCLUDEPATHS += -I"."INCLUDEPATHS += -I"$(SDK_PATH)Include/app_common"INCLUDEPATHS += -I"$(SDK_PATH)Include/sd_common"INCLUDEPATHS += -I"$(SDK_PATH)Include/ble"INCLUDEPATHS += -I"$(SDK_PATH)Include/ble/softdevice"INCLUDEPATHS += -I"$(SDK_PATH)Include/ble/ble_services"CFLAGS += -DBLE_STACK_SUPPORT_REQD -Wno-unused-local-typedefsLDFLAGS += --specs=nano.specs  #使用这个可以省点ROMC_SOURCE_PATHS += ../src_test $(wildcard ../src_test/*/) $(wildcard ../src_test/*/*/) #添加自己的源码目录, 该目录的二级目录, 三级目录C_SOURCE_FILES += $(wildcard ../src_test/*.c) $(wildcard ../src_test/*/*.c)  #添加自己源码目录的所有c文件include $(SDK_SOURCE_PATH)/templates/gcc/Makefile.common

这个Makefile是从nrf6310的例子该来的, SDK安装的没有, 要自己手动解压SDK的安装程序, 里面有个nrf6310的例子目录里有gcc的编译环境.

完成! (写得不清不楚, 好久之前搭的环境, 凭记忆写出来了, 希望有帮助到你)


调试:

调试直接使用arm-none-eabi-gdb调试就好了. 前提是JLinkgdbserver识别到了NRF51822. 我在windows下用JLinkgdbserver连上开发板, 在Linux下使用以下脚本进行调试, 同时也顺便下载到Flash了:

gdb_nrf51_init:

target remote 192.168.100.1:2331mon speed 4000mon endian littlemon flash download = 1mon flash device = NRF51822_XXAAfile _build/BT_s110_xxaa.outloadmonitor reset 0#b main#b app_error_handlerc


命令: arm-none-eabi-gdb -x gdb_nrf51_init


0 0