1. 前言
笨叔,又要开始扯淡了!!! 不感兴趣的同学,可以跳过了!!!
笨叔之前在大学里面, 刚接触单片机时。就被 windows 平台 例如 keill 5 、IAR 等一堆开会环境差点劝退。 当时也是坚持咬牙一点点摸索过来的。刚摸索明白,觉得单片机 功能也不是特别强大。 就依然决然的投入到了 嵌入式linux平台的开发中去了。 一直到现在工作了很多年,完全舍弃了 windows。
最近突然心血来潮,想在玩玩单片机。 发现 又要开始在 windows 平台, 倒腾 MDK5 ,甚是暴躁。
然后,看网上好像相关资料也不是很多,讲的也一般般。 我就想,要不我来探索一下, 顺便整理一下,分享出来。希望能帮助到 此刻 也同样感兴趣的你吧。
网上一堆教你如何在 MDK5 或者 IAR 集成开发环境里面来开发 nRF52832 的, 看的我 头大啊!!! 到目前我准备写这篇 文章时,我都没有搞明白如何在 windows 下开发。 太难了, 老子蜀道山。赶快滚吧!!! 什么 鬼玩意!
2. linux 下新建一个工程
1. 工程准备阶段
- 随便 创建一个文件夹:
mkdir nrf_projectleo@leo:~/data_4t/nrf_project$ tree -L 1
├── nRF5_SDK_17.1.0_ddde560 # 将 SDK 放到该目录下
- 创建一个 led_app , 他将是你 第一个工程的名字
leo@leo:~/data_4t/nrf_project$ mkdir led_app
leo@leo:~/data_4t/nrf_project$ cd led_app/
leo@leo:~/data_4t/nrf_project/led_app$
- 从 SDK …/nRF5_SDK_17.1.0_ddde560/examples/peripheral/blinky 中 cp 一个工程过来
leo@leo:~/data_4t/nrf_project/led_app$ cp ../nRF5_SDK_17.1.0_ddde560/examples/peripheral/blinky/* ./ -rf
- 删掉无关的 目录
leo@leo:~/data_4t/nrf_project/led_app$ rm pca10040e pca10056 pca10056e pca10059 pca10100e -rfleo@leo:~/data_4t/nrf_project/led_app/pca10040$ rm mbr s132 -rfleo@leo:~/data_4t/nrf_project/led_app/pca10040/blank$ rm arm5_no_packs iar ses -rf
操作完上述步骤后,我们的工程目前应该是这个样子:
leo@leo:~/data_4t/nrf_project/led_app$ tree
.
├── blinky.eww
├── hex
│ ├── blinky_pca10040e.hex
│ ├── blinky_pca10040e_mbr.hex
│ ├── blinky_pca10040.hex
│ ├── blinky_pca10040_mbr.hex
│ ├── blinky_pca10040_s132.hex
│ ├── blinky_pca10056e.hex
│ ├── blinky_pca10056e_mbr.hex
│ ├── blinky_pca10056.hex
│ ├── blinky_pca10056_mbr.hex
│ ├── blinky_pca10059_mbr.hex
│ ├── blinky_pca10100e.hex
│ └── license.txt
├── main.c
└── pca10040└── blank├── armgcc│ ├── blinky_gcc_nrf52.ld│ └── Makefile└── config└── sdk_config.h5 directories, 17 files
2. 配置工程
- 修改 makefile
leo@leo:~/data_4t/nrf_project/led_app$ vim pca10040/blank/armgcc/Makefile
# 修改为你自己的工程
#PROJECT_NAME := blinky_pca10040
PROJECT_NAME := led_app# 替换成你 SDK 的绝对目录
#SDK_ROOT := ../../../../../..
SDK_ROOT := /home/leo/data_4t/nrf_project/nRF5_SDK_17.1.0_ddde560# 替换你自己工程的目录
#PROJ_DIR := ../../..
PROJ_DIR := /home/leo/data_4t/nrf_project/led_app
3. 编译运行
- 编译
leo@leo:~/data_4t/nrf_project/led_app/pca10040/blank/armgcc$ make
mkdir _build
cd _build && mkdir nrf52832_xxaa
Assembling file: gcc_startup_nrf52.S
Compiling file: nrf_log_frontend.c
Compiling file: nrf_log_str_formatter.c
Compiling file: boards.c
Compiling file: app_error.c
Compiling file: app_error_handler_gcc.c
Compiling file: app_error_weak.c
Compiling file: app_util_platform.c
Compiling file: nrf_assert.c
Compiling file: nrf_atomic.c
Compiling file: nrf_balloc.c
Compiling file: nrf_fprintf.c
Compiling file: nrf_fprintf_format.c
Compiling file: nrf_memobj.c
Compiling file: nrf_ringbuf.c
Compiling file: nrf_strerror.c
Compiling file: nrfx_atomic.c
Compiling file: main.c
Compiling file: system_nrf52.c
Linking target: _build/nrf52832_xxaa.outtext data bss dec hex filename2776 112 172 3060 bf4 _build/nrf52832_xxaa.out
Preparing: _build/nrf52832_xxaa.hex
Preparing: _build/nrf52832_xxaa.bin
DONE nrf52832_xxaaleo@leo:~/data_4t/nrf_project/led_app/pca10040/blank/armgcc$ tree -L 2
.
├── blinky_gcc_nrf52.ld
├── _build
│ ├── nrf52832_xxaa
│ ├── nrf52832_xxaa.bin
│ ├── nrf52832_xxaa.hex
│ ├── nrf52832_xxaa.in
│ ├── nrf52832_xxaa.map
│ └── nrf52832_xxaa.out
└── Makefile2 directories, 7 files
- 烧录运行
leo@leo:~/data_4t/nrf_project/led_app/pca10040/blank/armgcc$ make flash
DONE nrf52832_xxaa
Flashing: _build/nrf52832_xxaa.hex
nrfjprog -f nrf52 --program _build/nrf52832_xxaa.hex --sectorerase
Parsing hex file.
Erasing page at address 0x0.
Applying system reset.
Checking that the area to write is not protected.
Programming device.
nrfjprog -f nrf52 --reset
Applying system reset.
Run.
此时不出意外,你将 会在你的板子上看到一个跑马灯。
3.总结
是不是在 linux 下创建一个自己的工程 比 windows下捣鼓 MDK5 容易多了啊。
再次声明一下: 笨叔叔,理解有限。欢迎 评论, 一起探讨。 如果觉得 我的文字对你有点用,请你点赞支持一下, 笨叔将开启爆肝模式,疯狂输出。