IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> S32K1XX系列单片机 ——用Keil编译官方提供的AUTOSAR OS -> 正文阅读

[嵌入式]S32K1XX系列单片机 ——用Keil编译官方提供的AUTOSAR OS

1. 概述

NXP官方提供了AUTOSAR OS代码,并且可以用EB进行配置,但官方的例程不能直接适用于Keil,本文就来介绍下如何在Keil上编译官方的AUTOSAR OS源码。

之前我们已经介绍过如何在Keil上编译S32系列的MCAL,需要的朋友可以翻一下我之前的文章,本文默认在Keil上已经可以编译调试S32的MCAL(只需要Port和Dio这俩基础模块)。

2. AUTOSAR OS的安装

可以从下面的连接下载NXP提供的AUTOSAR OS,如果要结合MCAL一起用的话,也要同时下载相同AUTOSAR版本的MCAL。下载的时候注意同时下载license文件,安装过程比较简单,不展开讲了。

https://www.nxp.com/design/automotive-software-and-tools/autosar/autosar-4-0-x-classic-platform-software:AUTOSAR-4?&tab=Design_Tools_Tab

在这里插入图片描述

3. 用EB生成配置代码

安装完成后,可以看到安装路径下有以下文件夹,其中doc里有各种使用手册,sample是测试例程,ssc中就是源码:
在这里插入图片描述
在下面的路径下有两个EB测试demo工程:
在这里插入图片描述
我们打开EB,点击import,选择上面其中的一个工程文件夹(我用的是下面那个),即可导入测试工程:
在这里插入图片描述
测试工程导入后如下图所示,我们可以看到工程中已经配置了一些Task、Alarm、Counter等:
在这里插入图片描述
不需要修改任何配置,直接点击生成配置代码即可生成代码,生成的代码在EB工程文件夹下:
在这里插入图片描述
把生成的配置代码拷贝到Keil工程文件夹下,放到哪都行,下面是我放的路径:
在这里插入图片描述

4. 拷贝源码

首先把OS的源码拷到Keil的工程文件夹下:
在这里插入图片描述
再拷贝测试例程的代码,注意有个头文件在sample的另一个include文件夹下:
在这里插入图片描述

5. 在Keil工程中添加源码和头文件路径

在Keil的工程中,把配置代码、源码和测试例程中所有的头文件路径添加到如下位置:
在这里插入图片描述
然后配置Keil源文件,把所有的.c文件都添加到工程中:
在这里插入图片描述
需要注意的是,测试例程中包含了main函数,所以我们要把之前的main.c文件从工程中移除

6. Keil工程配置

如果是用的我们之前测试MCAL的Keil工程,在配置中有一个定义是控制不使用AUTOSAR OS的,如下图所示:
在这里插入图片描述
现在我们要把这个给去掉,添加另一个配置定义:

OSDS5ARM

在这里插入图片描述
这个定义是选择使用哪个编译器,因为源码中没有定义Keil的MDK编译器,我们暂且先选择这个选项,实测需要修改的地方不多,只有下面一处汇编需要修改:

下图中的位置:
在这里插入图片描述
去掉OSASM和括号,修改为:
在这里插入图片描述

7. 修改启动文件

官方没有提供MDK编译器的启动代码(.s),我们之前测试MCAL的启动代码不能正常运行OS,需要替换为下面链接中的启动代码:

链接:https://pan.baidu.com/s/1v5BTNVH7_ZxKSye2zfB0eQ
提取码:y8bi

在这里插入图片描述
这个启动代码中修改了中断向量表,官方提供的其它编译器的中断向量表在下面的路径下:
在这里插入图片描述
我对照这个修改了之前启动文件的中断向量表:
在这里插入图片描述

8. 配置测试例程代码

测试例程的main函数在samplerv1.c中,我们在main函数中添加一些MCAL的初始化:

/***************************************************************************
 * Function:    main
 *
 * Description: inits variables and starts OS
 *
 **************************************************************************/
int main( void )
{
#if defined(OSIARARM)
    extern void SystemInit(void);
    SystemInit();
#endif

    /* Initialize the Mcu driver */
    Mcu_Init(&McuModuleConfiguration_0);

    Mcu_InitClock(McuClockSettingConfig_0);
#if (MCU_NO_PLL == STD_OFF)
    while ( MCU_PLL_LOCKED != Mcu_GetPllStatus() )
    {
        /* Busy wait until the System PLL is locked */
    }

    Mcu_DistributePllClock();
#endif
    Mcu_SetMode(McuModeSettingConf_0);

    /* Initialize all pins using the Port driver */
    Port_Init(&PortConfigSet_0);


    ind = 0;
    repeatCnt = 0;
    repeatCnt1 = 0;
#if defined(OSTSKFPU)
    taskRcv1 = 0.5;
    taskRcv2 = 0.5;
#else
    taskRcv1 = 0;
    taskRcv2 = 0;
#endif
    taskStop = 0;
#if defined(OSTSKFPU)
    taskSnd1 = 0.5;
    taskSnd2 = 0.5;
#else
    taskSnd1 = 0;
    taskSnd2 = 0;
#endif
    taskCnt  = 0;


    StartOS( Mode01 );                            /* jump to OS startup */

    return 0;
}

在sample_hw.h中,需要配置一些硬件接口:

#include "Dio.h"

#define SetGPIO(n)      Dio_WriteChannel(DioConf_DioChannel_DioChannel_LED_GREEN, STD_LOW)
#define ClrGPIO(n)      Dio_WriteChannel(DioConf_DioChannel_DioChannel_LED_GREEN, STD_HIGH)
#define ToogleGPIO(n)   Dio_FlipChannel(DioConf_DioChannel_DioChannel_LED_GREEN);

在Os.h中添加sample.h头文件:

在这里插入图片描述

9. 编译并测试

完成以上工作后,就可以编译工程了,编译成功后,烧写到开发板中,可以看到上面配置的LED灯闪烁。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:27:31  更:2021-12-15 18:28:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:40:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码