# S32K3XWOS
**Repository Path**: xwos/S32K3XWOS
## Basic Information
- **Project Name**: S32K3XWOS
- **Description**: 此工程是在NXP评估板S32K3X4EVB-T172上移植XWOS的示例工程。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: MCAL-2.0
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-07-07
- **Last Updated**: 2024-08-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 介绍
本项目包括一个示例工程。此工程是在NXP S32K312上移植XWOS的示例工程。
+ IDE:[S32 Design Studio for S32 Platform v3.5](https://www.nxp.com/design/software/development-software/s32-design-studio-ide/s32-design-studio-for-s32-platform:S32DS-S32PLATFORM)
## XWOS
玄武操作系统(XWOS®)开发于2015年,是一款运行在嵌入式微控制器上的通用实时操作系统,
主要面向可靠、实时、安全的应用领域,包括汽车、物联网、工控等。
+
+
+
+
# 下载源码
```shell
git clone --recursive https://gitee.com/xwos/S32K3XWOS.git
```
## 源码结构
+ XWOS:XWOS
+ board:电路板目录
+ RTD:AutoSAR MCAL驱动库
+ generate:配置工具生成的代码
+ RTD.mex:RTD库的配置
+ App:应用模块
+ Tools:脚本与工具
+ DebugConfigs:IDE的调试配置文件
+ CHANGELOG.md:变更日志
+ LICENSE.txt:开源协议
+ README.md:使用说明(本文件)
+ .git:git仓库
+ .gitignore:git commit时忽略的文件
+ .gitmodules:git子仓库
+ .gitemplate:git commit的模板
+ .cproject:IDE工程文件
+ .project:IDE工程文件
+ .settings:IDE工程文件
# 开发环境搭建指南
## 安装IDE
+ 1. 下载并安装 [S32 Design Studio for S32 Platform](https://www.nxp.com/design/software/development-software/s32-design-studio-ide/s32-design-studio-for-s32-platform:S32DS-S32PLATFORM) ;
+ 2. 安装S32K3的 [Real-Time Drivers](https://www.nxp.com/design/automotive-software-and-tools/real-time-drivers-rtd:AUTOMOTIVE-RTD)
+ 2.1. 在网页中找到 **S32K3 Standard Software** (需要登录);
+ 2.2. 选择 **Automotive SW - S32K3/S32M27x - Real-Time Drivers for Cortex-M** ;
+ 2.3. 选择 **S32K3 Real-Time Drivers Version 2.0.3** ;
+ 2.4. 下载插件 **SW32K3_RTD_4.4_2.0.3_DS_updatesite_D2302.zip** ;
+ 2.5. 在S32DS中通过菜单 **Help --> Install New Software...** 可安装插件。
## 安装XWOS编译工具链
参考
## 安装Rust开发环境
若用户需要使用Rust,可参考 安装Rust开发环境。
### 为S32DS安装Rust插件
注意不要选择最新版本的插件:
+ 菜单: `"Help" -> "Install New Software..." -> "Add..."`
+ 仓库: `http://mirrors.ustc.edu.cn/eclipse/corrosion/releases/1.2.3/`
+ 插件: `Corrosion: Rust edition in Eclipse IDE`
## 导入工程
通过菜单 **File --> Open Projects from File System...** 可导入工程。
## 设置编译器路径
编译前,需要设置编译器路径。
如果用户已经正确安装 `xwtc` 并配置环境变量 `PATH` ,当前配置可自动解析为正确的路径。
打开 `board/makefile` ,找到 `export CROSS_COMPILE = $(shell xwtcwd)/nxp/gcc-10.2-arm32-eabi/bin/arm-none-eabi-` 。
如果用户想设置为自己的编译器路径,可以修改 `CROSS_COMPILE` 的值,例如:
`export CROSS_COMPILE = C:/NXP/S32DS.S32/S32DS/build_tools/gcc_v10.2/gcc-10.2-arm32-eabi/bin/arm-none-eabi-` 。
## 编译
有两种方法可以编译,两种方法结果产生一样:
+ 打开终端,并将当前路径切换到工程的 `board` 目录,执行 `make` 命令。
+ 在IDE中点击 **编译** 按钮。
## 调试
工程内提供JLink的调试配置,通过菜单 **Run --> Debug Configurations...** 选择调试配置:
+ **JLink_Program+Debug** :使用JLink,下载+调试
+ **JLink_Debug** :使用JLink,仅调试
## 工程改名
1. 可通过命令 `find . -type f -name "*S32K3XWOS*"` 搜索所有文件名包含 `S32K3XWOS` 的文件,将其改为 **新工程名** 。
2. 可通过命令 `find . -path "./.git" -prune -o -type f -exec grep -i -H "S32K3XWOS" {} \;` 搜索所有内容包含 `S32K3XWOS` 的文件,然后依次打开,将其全部替换为 **新工程名** 。
## 增加静态库
可在文件 `board/lib.mk` 中定义外部静态库:
+ `EINCDIRS` :外部静态库头文件列表
+ `EINCDIRS_gcc` :只对gcc编译器生效的外部静态库头文件列表
+ `EINCDIRS_llvm` :只对clang编译器生效的外部静态库头文件列表
+ `ELIBS` :外部静态库列表
+ `ELIBS_gcc` :只对gcc编译器生效的外部静态库列表
+ `ELIBS_llvm` :只对clang编译器生效的外部静态库列表
本工程中,使用了标准的 `libc`, `libm` ,改为 `libc_nano`, `libm_nano` 可减小编译后二进制的大小,但性能会变差。
## 增加头文件搜索路径
XWOS默认的搜索路径:
+ `XWOS` :XWOS的根目录
+ `XWOS/xwcd/soc/arm/v7m` :架构描述层目录
+ `XWOS/xwcd/soc/arm/v7m/m7` :CPU描述层目录
+ `XWOS/xwcd/soc/arm/v7m/m7/s32k3xx` :SOC描述层目录
+ `board` :电路板描述层目录
本项目其他头文件搜索路径可在 `Board/brd.mk` 中配置,路径是相对于 `board` 的路径。
```makefile
BRD_INCDIRS += ../RTD/Base/header
BRD_INCDIRS += ../RTD/Base/include
BRD_INCDIRS += ../RTD/Platform/include
BRD_INCDIRS += ../RTD/Platform/startup/include
BRD_INCDIRS += ../generate/include
BRD_INCDIRS += ../RTD/include
```
## 配置预定义宏
XWOS默认的预定义宏:
+ `__XWOS__`
本项目其他预定义宏可在 `Board/brd.mk` 中配置:
```makefile
BRD_PREDEF := -DS32K3XX -DS32K312 -DCPU_S32K312 -DCPU_CORTEX_M7
ifeq ($(XWCFG_COMPILER),gcc)
BRD_PREDEF += -DGCC
endif
ifeq ($(ARCHCFG_FPU),y)
BRD_PREDEF += -DENABLE_FPU
endif
ifeq ($(CPUCFG_DCACHE),y)
BRD_PREDEF += -DD_CACHE_ENABLE
endif
ifeq ($(CPUCFG_ICACHE),y)
BRD_PREDEF += -DI_CACHE_ENABLE
endif
BRD_PREDEF += -DMPU_ENABLE
```
其中 `-D` 是编译期预定义的选项。
## 配置编译选项
本项目 **编译选项** 可在 `Board/brd.mk` 中配置:
+ `BRD_AFLAGS` :汇编代码的编译选项
+ `BRD_CFLAGS` :C代码的编译选项
+ `BRD_CXXFLAGS` :C++代码的编译选项
+ `BRD_LDFLAGS` :链接器的选项