【NCS隨筆】
SEGGER添加方式
在介紹NCS工程之前,我們先看看大家熟悉的SEGGER工程(Keil同理):
左邊的項(xiàng)目欄可以看到工程的配置,通過點(diǎn)擊 User Include Directories添加頭文件路徑
對(duì)工程或者文件夾鼠標(biāo)右擊就可以添加文件或者.c文件管理文件等操作。
可以看出,Segger添加源文件和目錄的方式比較直觀,但是如果文件比較多,路徑比較深的話效率就會(huì)比較低下。
NCS 構(gòu)建
Zephyr 使用CMake作為構(gòu)建系統(tǒng),CMake 是一個(gè)跨平臺(tái)的構(gòu)建工具,它通過讀取CMakeLists.txt
文件來生成平臺(tái)特定的構(gòu)建文件,
Zephyr 的構(gòu)建系統(tǒng)基于GNUMake和 CMake ,但 CMake 是主要的配置入口。每個(gè) Zephyr 項(xiàng)目(應(yīng)用程序、驅(qū)動(dòng)或模塊)都需要一個(gè)或多個(gè)CMakeLists.txt
文件來定義構(gòu)建規(guī)則
我們可以打開一個(gè)例程參考,我這里使用ncs3.0.0的peripheral_uart例程
cmake_minimum_required
:指定所需的最低 CMake 版本。find_package(Zephyr)
:查找并加載 Zephyr 的 CMake 工具鏈和模塊project
:定義項(xiàng)目名稱,通常與應(yīng)用程序名稱一致target_sources
:指定項(xiàng)目的源文件路徑(如.c
、.cpp
文件)
我們選擇一個(gè)更加復(fù)雜的例程來分析v3.0.0nrfapplicationsnrf_desktop
- cmake_minimum_required :要求 CMake 版本至少為 3.20.0
- APPLICATION_CONFIG_DIR :設(shè)置應(yīng)用配置文件目錄,根據(jù)目標(biāo)開發(fā)板動(dòng)態(tài)調(diào)整(如
configuration/nrf52840dk_nrf52840
) - find_package(Zephyr) :查找并加載 Zephyr 構(gòu)建系統(tǒng)
- project :定義項(xiàng)目名稱為 "nRF Desktop",版本為 0.1
- assert :確保在 Kconfig 中定義了
CONFIG_DESKTOP_HID_REPORT_DESC
(HID 報(bào)告描述符文件路徑) - target_sources :添加主源文件
src/main.c
和 HID 描述符文件到構(gòu)建 - zephyr_library_include_directories :為應(yīng)用庫添加頭文件路徑(供內(nèi)部模塊使用)
- zephyr_include_directories :為整個(gè)項(xiàng)目添加頭文件路徑(全局可見)
- add_subdirectory :遞歸添加子目錄中的代碼模塊,每個(gè)子目錄需包含自己的 CMakeLists.txt
- CONFIG_IMG_MANAGER :如果啟用固件管理功能,鏈接 MCUboot 的引導(dǎo)工具庫
- CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE :如果啟用配置通道功能,添加自定義鏈接腳本
nrf_desktop.ld
總結(jié)
上面的功能可能有點(diǎn)多,需要長(zhǎng)期使用才知道大部分的功能,實(shí)際我們添加.c.h甚至.a&.lib文件只需要需要下面的指令就行了,添加在Cmakelists.txt
- 添加.c文件: target_sources :target_sources(app PRIVATE xxx.c )
- 添加.h文件路徑:target_include_directories(app PRIVATE common)
- 添加.a或者.lib文件:target_link_libraries(app PRIVATE xxx.lib)
測(cè)試
使用periphreal_uart例程
1、在src目錄添加test文件夾,在test文件下創(chuàng)建CMakeList.txt文件,將這個(gè)文件下面的test.c和test.h包含進(jìn)去
2、在periphreal_uart例程根目錄下把test這個(gè)文件夾使用add_subdirectory(src/test)包含進(jìn)去,這樣就可以了
最后一如既往的到了臭不要臉環(huán)節(jié),作為一名精通Nordic硬件設(shè)計(jì)和軟件開發(fā)的FAE,你的點(diǎn)贊、收藏和評(píng)論是對(duì)我最大的支持,有問題多多指教,如果有需要Nordic開發(fā)板、Nordic的芯片以及Nordic技術(shù)支持的可以在個(gè)人資料獲取我的聯(lián)系方式,感謝讀者支持!
審核編輯 黃宇
-
NCS
+關(guān)注
關(guān)注
1文章
19瀏覽量
9240 -
Nordic
+關(guān)注
關(guān)注
9文章
211瀏覽量
48141 -
Zephyr
+關(guān)注
關(guān)注
0文章
38瀏覽量
6300
發(fā)布評(píng)論請(qǐng)先 登錄
NCS放大器DAD3350使用場(chǎng)景與效果
如何創(chuàng)建ESP32P4自定義工程、移植示例和注意事項(xiàng)
FD20-110S15B3C3-H1 FD20-110S15B3C3-H1

ZED75-48S48C-H ZED75-48S48C-H

FA5-220H052424C2N3 FA5-220H052424C2N3

在TouchFX Designer中運(yùn)行工程,提示頭文件找不到,為什么?
英特爾?NCS2運(yùn)行演示時(shí)“無法在啟動(dòng)后找到啟動(dòng)設(shè)備”怎么解決?
如何利用RTC外設(shè)實(shí)現(xiàn)萬年歷功能
【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】CoreMark測(cè)試RA4E2 單片機(jī)CPU性能分?jǐn)?shù)
C語言中的頭文件能不能重復(fù)包含
新港海岸NCS8803,HDMI to EDP帶Scaler

評(píng)論