前一节
1.2 软件开发环境准备
学习了软件开发环境的搭建,但部分细节还讳莫如深,择日不如撞日,我们赶紧认识一下。本节对编译过程中的 Cmake 和 Ninja 做个拓展了解,这也是官方教程没体现的部分。
我正在学习 Zephyr,一个很可能会用到很多物联网设备上的操作系统,如果你也感兴趣,可点此查看帖子
zephyr学习笔记汇总
。
2 Cmake
Build 过程中有用到 Cmake 命令来配置生成 Ninja 编译所需的文件。
# Use cmake to configure a Ninja-based build system:
cmake -GNinja -DBOARD=nrf52_pca10040 ..
使用 Ninja 时需要生成 build.ninja 文件,对于大型项目来说一条一条地写配置文件是不可能的,可以使用Cmake来生成这个配置文件。
Cmake支持参数Camke -G Ninja,Cmake会根据用户给定的CMakeLists.txt来生成build.ninja文件,接着才能进行ninja编译。
CmakeLists文件的语法这里写不深究,结合build日志感受下。
D:\zephyr_path\zephyr\samples\basic\blinky\build>cmake -GNinja -DBOARD=nucleo_l073rz ..
CMake Deprecation Warning at D:/winter/resources/zephyr/zephyr/cmake/app/boilerplate.cmake:38 (cmake_policy):
The OLD behavior for policy CMP0000 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
CMakeLists.txt:1 (include)
-- Selected BOARD nucleo_l073rz
Zephyr version: 1.11.99
Parsing Kconfig tree in D:/winter/resources/zephyr/zephyr//Kconfig
Using D:/zephyr_path/zephyr/samples/basic/blinky/build/zephyr/.config as base
-- Generating zephyr/include/generated/generated_dts_board.h
nucleo_l073rz.dts_compiled: Warning (unit_address_vs_reg): Node /soc/pin-controller has a reg or ranges property, but no unit name
nucleo_l073rz.dts_compiled: Warning (unit_address_vs_reg): Node /soc/pin-controller/usart1@0 has a unit name, but no reg property
nucleo_l073rz.dts_compiled: Warning (unit_address_vs_reg): Node /soc/pin-controller/usart2@0 has a unit name, but no reg property
-- Configuring done
-- Generating done
-- Build files have been written to: D:/zephyr_path/zephyr/samples/basic/blinky/build
在 /zephyr/samples/basic/blinky/build 目录下,就看到了一堆 build 所需的文件。
3 ninja的基础用法
Ninja 官网
点击这里。
不过我们使用 ninja -help 命令,也能看到 Ninja 常见命令,如下:
Cleaning targets:
clean - Remove most generated files but keep configuration and backup files
pristine - Remove all files in the build directory
Configuration targets:
run <ninja kconfig-usage>
Other generic targets:
all - Build a zephyr application
run - Build a zephyr application and run it if the board supports emulation
flash - Build and flash an application
debug - Build and debug an application using GDB
debugserver - Build and start a GDB server (port 1234 for Qemu targets)
ram_report - Build and create RAM usage report
rom_report - Build and create ROM usage report
usage - Display this text
特别是 pristine 命令,如果工程要切换 board,那么就需要这么做。
这篇笔记对工程编译用到的 Cmake 和 Ninja 做了个简单了解。
本节对编译过程中的 Cmake 和 Ninja 做个拓展了解,这也是官方教程没体现的部分。Cmake 是做编译准备,生成 ninja 所需的相关文件。Ninja 接着出马,编译、调试、烧写等等统统搞定。
Ubuntu镜像
UG1144 PetaLinux Tools Documentation 推荐Ubuntu Linux 16.04.5, 18.04.1
ubuntu-16.04.5-desktop-amd64.iso
http://ol...
Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /reserved-memory/ramoops has a reg or ranges property, but no unit name
Zephyr
Shell,又称为Zsh,是一种命令行解释器,它在Unix和类Unix
操作系统
中非常流行。与其他Shell(如Bash、tcsh)相比,Zsh拥有更为强大的自动补全功能和更灵活的配置选项。它允许用户在不使用鼠标的情况下快速地输入命令、搜索历史记录以及管理文件系统等等。
Zsh还提供了一些其他Shell不具备的功能,如支持中文路径、自动提示命令、命令行分页显示等。Zsh还可以通过扩展来添加更多功能,例如语法高亮、自定义别名、定时提醒等,实现更加高效的工作方式。
此外,Zsh的主题和颜色方案也可以根据个人喜好进行自定义,从而使Shell变得更加美观和易于使用。
在开发和系统管理等领域,Zsh已成为很多人的首选Shell,并且在许多Linux发行版中被默认安装。如果想提高Shell的使用效率和便利性,可以考虑使用
Zephyr
Shell。
Ubuntu2022: