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 容易多了啊。
再次聲明一下: 笨叔叔,理解有限。歡迎 評論, 一起探討。 如果覺得 我的文字對你有點用,請你點贊支持一下, 笨叔將開啟爆肝模式,瘋狂輸出。