# S32K1XWOS **Repository Path**: xwos/S32K1XWOS ## Basic Information - **Project Name**: S32K1XWOS - **Description**: 此工程是在NXP评估板S32K144EVB上移植XWOS的示例工程。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: RTD-1.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-07-07 - **Last Updated**: 2024-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍 本项目包括一个示例工程。此工程是在NXP评估板S32K144EVB上移植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) ![S32K144EVB](https://www.nxp.com/assets/images/en/dev-board-image/S32K144EVB-TOP.jpg) ## XWOS 玄武操作系统(XWOS®)开发于2015年,是一款运行在嵌入式微控制器上的通用实时操作系统, 主要面向可靠、实时、安全的应用领域,包括汽车、物联网、工控等。 + + + + # 下载源码 ```shell git clone --recursive https://gitee.com/xwos/S32K1XWOS.git ``` ## 源码结构 + XWOS:XWOS + Board:电路板目录 + RTD:AutoSAR标准驱动库 + generate:配置工具生成的代码 + S32K1XWOS.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. 安装S32K1的 [Real-Time Drivers](https://www.nxp.com/design/automotive-software-and-tools/real-time-drivers-rtd:AUTOMOTIVE-RTD) + 2.1. 在网页中找到 **Real-Time Drivers for S32K1** (需要登录); + 2.2. 选择 **S32K1 Real-Time Drivers Version 1.0.1 HotFix 01** ; + 2.3. 下载插件 **SW32K1_RTD_4.4_1.0.1_HF01_DS_updatesite_D2209.zip** ; + 2.4. 在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 "*S32K1XWOS*"` 搜索所有文件名包含 `S32K1XWOS` 的文件,将其改为 **新工程名** 。 2. 可通过命令 `find . -path "./.git" -prune -o -type f -exec grep -i -H "S32K1XWOS" {} \;` 搜索所有内容包含 `S32K1XWOS` 的文件,然后依次打开,将其全部替换为 **新工程名** 。 ## 增加静态库 可在文件 `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/m4` :CPU描述层目录 + `XWOS/xwcd/soc/arm/v7m/m4/s32k14x` :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 += -DCPU_S32K144HFT0VLLT BRD_PREDEF += -DENABLE_FPU BRD_PREDEF += -DGCC BRD_PREDEF += -DS32K1XX BRD_PREDEF += -DS32K144 BRD_PREDEF += -DCPU_CORTEX_M4F ``` 其中 `-D` 是编译期预定义的选项。 ## 配置编译选项 本项目 **编译选项** 可在 `Board/brd.mk` 中配置: + `BRD_AFLAGS` :汇编代码的编译选项 + `BRD_CFLAGS` :C代码的编译选项 + `BRD_CXXFLAGS` :C++代码的编译选项 + `BRD_LDFLAGS` :链接器的选项 # 已知问题 + 问题:生成代码时提示错误 `Invalid thread access` + 解决方案:删除 `generate` , `board/Port_Ci_Port_Ip_Cfg.c`, `board/Port_Ci_Port_Ip_Cfg.h` 后重新生成, 但是要注意需要在 `generate/include/OsIf_Cfg.h` 增加定义 `#define USING_OS_XWOS` 。