0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于YCT的云途SDK配置工程升级方法

jf_ocihYtwl 来源:汽车电子expert成长之路 2023-11-14 11:16 次阅读

内容提要

引言

云途配置工具(YCT - Yuntu Config Tool)自去年Q4推出以来,已经有不少云途车规MCU的客户在实际项目使用了。它简明快捷高效的SDK和MCAL配置界面以及强大的工具链整合能力大大提高了用户汽车电子ECU应用代码的开发效率,深受好评。

Tips:关于云途YCT工具的功能特性(features)、下载安装和使用请参考以下公众号文章(点击文章标题即可直接跳转阅读):

《云途配置工具(YCT)快速上手指南(QSG)》

随着云途车规MCU型号的日益增加(cover越来越多汽车电子应用),云途SDK和MCAL也在不断升级,作为配套的图形化配置工具YCT也进行了若干次升级,在修改已知bug的同时也新增了不少新功能。

最近,云途车规MCU的非AUTSOAR架构驱动软件包 - YTM32 SDK进行了一次比较大的升级,强烈推荐大家将之前使用的SDK升级到最新的RTM v1.1.1版本,以快速修改已知云途车规MCU外设底层驱动代码的bug及硬件勘误表(Errata)的Workaroud,以下为YTM32 SDK RTM v1.1.1版本的Release note的下载链接,供大家参考:

为了方便大家进行SDK的快速升级替换,特撰写本文介绍升级YCT创建的云途SDK配置工程的详细步骤和方法。

确认当前应用工程的YCT配置工程使用的SDK/MCAL版本

打开应用工程根目录下的YCT工程,在YCT的顶行Home菜单旁边即为当前YCT工程使用的SDK或者MCAL的版本信息

MCAL的YCT配置工程:

7a08fdce-8289-11ee-939d-92fbcf53809c.png

7a1b6af4-8289-11ee-939d-92fbcf53809c.png

SDK的YCT配置工程:

7a3fc48a-8289-11ee-939d-92fbcf53809c.png

7a52a0a0-8289-11ee-939d-92fbcf53809c.png

确认要升级目标版本的SDK/MCAL软件包已经安装好

通过YCT主页界面的SDK/MCAL升级界面确实确认要升级目标版本的SDK/MCAL软件包已经安装好,比如本文想要将上面的MD14的v0.8.1版本SDK的应用工程升级到v1.1.1版本:

7a6bcc74-8289-11ee-939d-92fbcf53809c.png

修改YCT文件中的SDK版本信息

使用任意文本编辑器,比如Notepad++或者在VSCode中双击打开工程根目录下的yct文件,Ctrl + F查找“sdkVersion”配置:

7a892efe-8289-11ee-939d-92fbcf53809c.png

将其从原有的“0_8_1”修改为新版本“1_1_1”,并保存:

7ab05a2e-8289-11ee-939d-92fbcf53809c.png

修复YCT工程中的SDK外设差异配置error

接下来,使用YCT工具打开上一步骤修改后的应用工程YCT文件,修改Problems窗口提示的所有配置error。

本文示例工程,打开后有eTMR/PWM和CAN两个配置报错,下面介绍具体修复方法。

4.1 修复CAN驱动模块的波特率配置错误

在v0.8.1版本SDK的CAN通信波特率配置中传输段(Propagation Segment)相位段1(Phase Segment 1)相位段2(Phase Segment 2)时钟预分频因子(Prescaler Division factor)在配置时会将配置值减1写入FlexCAN模块的寄存器,而在新版本v1.1.1 SDK中这些配置将被直接写入FlexCAN模块的寄存器,因此,为了实现相同的波特率(500Kbit/s)相应的配置值需要减1。

v0.8.1版本的CAN波特率配置在v1.1.1中为错误配置:

7ac9499e-8289-11ee-939d-92fbcf53809c.png

v1.1.1版本SDK中相应波特率(500kbit/s)的正确配置如下:

7af5b27c-8289-11ee-939d-92fbcf53809c.png

4.2 修改eTMR/PWM驱动模块的配置错误

v1.1.1版本SDK相对于之前老版本的SDK驱动和配置界面做了一些bug修改,因为需要先Disable ETMR模块的配置,然后重新Enable进行配置才能解决相关error。

首先、Disable ETMR驱动模块,之前的配置信息将全部丢失:

7b0b5af0-8289-11ee-939d-92fbcf53809c.png

然后,重新Enable ETMR模块,添加Common配置:

7b27a138-8289-11ee-939d-92fbcf53809c.png

使能PWM配置,并根据原有工程的需求添加PWM通道配置:

7b41941c-8289-11ee-939d-92fbcf53809c.png

Tips:为了减少应用代码中调用SDK配置参数的修改,需要将以上ETMR驱动模块的Common和PWM配置的配置结构体名字配置参数保持与原工程相同。

重新生成工程和替换SDK底层驱动

将以上配置error全部修复之后,点击保存(Save),然后重新生成(Generate):

点击确认覆盖(OverWrite)原有工程的SDK驱动静态代码即可完成SDK驱动更新和版本升级:

7b5a6d48-8289-11ee-939d-92fbcf53809c.png

Tips:连续点击多个文件覆盖后,YCT会提示是否覆盖所有文件,点击“OK”确认即可快速完成覆盖替换:

7b8009a4-8289-11ee-939d-92fbcf53809c.png

重新编译应用工程,修改编译错误

重新编译工程,根据编译错误和SDK releasenote中的bug list,修复/调整所有SDK API的参数,比如PWM占空比更新函数--eTMR_DRV_UpdatePwmChannel()的0.8.11.1.1版本SDK的差异如下:

-------------------------------------------------------------
//v10.8.1 SDK:
-------------------------------------------------------------
/*!
 * @brief This function updates the waveform output in PWM mode (duty cycle and phase).
 *
 * @param [in] instance The eTMR peripheral instance number.
 * @param [in] channel The channel number. In combined mode, the code finds the channel.
 * @param [in] typeOfUpdate The type of PWM update in the duty cycle/pulse or in ticks.
 * @param [in] alignMode The alignment of PWM update in the duty cycle/pulse or in ticks.
 * @param [in] dutyCycle  Duty cycle of PWM.
 * @param [in] offset the offset from counter initial value to the first rising edge.
 *                    It is used for asymmetrical alignment pwm. When in edge align and
 *                    center align pwm mode, it is forced to 0.
 * @return success
 *        - STATUS_SUCCESS : Completed successfully.
 *        - STATUS_ERROR : Error occurred.
 */
status_t eTMR_DRV_UpdatePwmChannel(uint32_t instance,
                                   uint8_t channel,
                                   etmr_pwm_update_option_t typeOfUpdate,
                                   etmr_pwm_align_mode_t alignMode,
                                   uint32_t dutyCycle,
                                   uint32_t offset);


-------------------------------------------------------------
//v1.1.1 SDK:
-------------------------------------------------------------
/*!
 * @brief This function updates the waveform output in PWM mode (duty cycle and phase).
 *
 * @param [in] instance The eTMR peripheral instance number.
 * @param [in] channel The channel number. In combined mode, the code finds the channel.
 * @param [in] dutyCycle  Duty cycle of PWM.
 * @param [in] offset The offset from counter initial value to the first rising edge.
 *                    It is used for asymmetrical alignment pwm. When in edge align and
 *                    center align pwm mode, it is forced to 0.
 * @return success
 *        - STATUS_SUCCESS : Completed successfully.
 *        - STATUS_ERROR : Error occurred.
 */
status_t eTMR_DRV_UpdatePwmChannel(uint32_t instance, uint8_t channel, uint32_t dutyCycle, uint32_t offset);

在新版本SDK中,该API函数少了typeOfUpdate和alignMode两个参数,需要将其删除。

另外,PWM通道参数配置结构体etmr_pwm_param_t的通道配置成员名由*pwmIndependentChannelConfig改为了*pwmChannelConfig,也需要做相应的调整:


-------------------------------------------------------------
//v0.8.1 SDK:
-------------------------------------------------------------
/*!
 * @brief eTMR driver PWM parameters
 *
 * Implements : etmr_pwm_param_t_Class
 */
typedef struct
{
    uint8_t nNumIndependentPwmChannels;                         /*!< Number of independent PWM channels */
    etmr_channel_mode_t mode;                                   /*!< eTMR pwm mode */
    uint32_t uFrequencyHZ;                                      /*!< PWM period in Hz */
    etmr_counter_init_src_t counterInitSrc;                     /*!< Counter initial value source */
    etmr_independent_ch_param_t *pwmIndependentChannelConfig;  /*!< Configuration for independent PWM channels */
#if (0 == FEATURE_eTMR_SUPPORT_CHANEL_DEADTIME)
    uint16_t evenDeadTime;           /*!< Enable/disable dead time for channel 0,2,4,6 */
    uint16_t oddDeadTime;            /*!< Enable/disable dead time for channel 1,3,5,7 */
#endif
    etmr_fault_param_t *faultConfig;                           /*!< Configuration for PWM fault */
} etmr_pwm_param_t;
-------------------------------------------------------------
//v1.1.1 SDK:
-------------------------------------------------------------
/*!
 * @brief eTMR driver PWM parameters
 *
 * Implements : etmr_pwm_param_t_Class
 */
typedef struct
{
    uint8_t nNumPwmChannels;  /*!< Number of independent PWM channels */
    etmr_channel_mode_t mode; /*!< eTMR pwm mode */
    uint32_t uFrequencyHZ;    /*!< PWM period in Hz */
#if FEATURE_eTMR_HAS_CNT_INIT_SRC
    bool counterInitValFromInitReg; /*!< Counter initial value source from INIT register or not */
#endif
    uint32_t cntVal;                       /*!< Counter initial value from CNT register */
    etmr_pwm_ch_param_t *pwmChannelConfig; /*!< Configuration for independent PWM channels */
#if !FEATURE_eTMR_DEADTIME_CONFIG_EACH_CHANNEL
    etmr_deadtime_param_t *deadtimeConfig; /*!< Configuration for PWM dead time */
#endif
    etmr_fault_param_t *faultConfig; /*!< Configuration for PWM fault */
} etmr_pwm_param_t;

PWM占空比更新API函数调用修改如下:

v0.8.1版本SDK调用:

/* update the PWM output duty cycle */
eTMR_DRV_UpdatePwmChannel(eTMR_INST, eTMR0_CH5_PWM_Config.pwmIndependentChannelConfig[0].hwChannelId,
                          etmrStatePtr[eTMR_INST]->typeOfUpdate, etmrStatePtr[eTMR_INST]->alignMode, (0x8000U * pwm_duty), 0x0000U);

v1.1.1版本SDK调用:

/* update the PWM output duty cycle */
eTMR_DRV_UpdatePwmChannel(eTMR_INST, eTMR0_CH5_PWM_Config.pwmChannelConfig[0].hwChannelId,
                          (0x8000U * pwm_duty), 0x0000U);

修复所有编译error后,编译成功即完成SDK升级:

7b985004-8289-11ee-939d-92fbcf53809c.png

总结

本文详细介绍了基于YCT的云途SDK配置工程升级方法,希望对大家有所帮助。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17135

    浏览量

    351019
  • 汽车电子
    +关注

    关注

    3026

    文章

    7943

    浏览量

    166933
  • ecu
    ecu
    +关注

    关注

    14

    文章

    886

    浏览量

    54485
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1035

    浏览量

    45907
  • 云途
    +关注

    关注

    1

    文章

    4

    浏览量

    1941

原文标题:云途配置工具(YCT)使用指南之如何快速升级YCT配置工程的云途SDK版本

文章出处:【微信号:汽车电子expert成长之路,微信公众号:汽车电子expert成长之路】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何把赛灵思SDK工程移植到Vitis

    从 2019.2 版开始,赛灵思 SDK 开发环境已统一整合到全功能一体化的 Vitis 统一软件平台 中。 马上开始将工程从赛灵思 SDK 移植到 Vitis 吧。 Vivado 工程
    的头像 发表于 11-09 16:57 2716次阅读

    sdk_7_20_00_29升级sdk_7_40_00_64,如何操作?

    我的工程使用的是sdk_7_20_00_29,现在想升级SDKsdk_7_40_00_64。该如何操作? 我在CCS中切换了部分内容,但是
    发表于 05-30 07:05

    升级到RTOS SDK v1.5版本编译报错如何解决?

    准备升级到RTOS SDK v1.5版本,在进行工程编译的时候出现问题,cJSON.c使用了floor和pow两个方法,并且该文件#include ,但在链接的时候库中找不到这两个
    发表于 07-12 06:10

    升级SDK过程中,如何更新in_config.h

    SDK
    橙群微电子
    发布于 :2023年03月21日 14:22:59

    灵犀智能语音平台的语音评测SDK使用方法

    ` 灵犀是中国移动与科大讯飞合作建立的一个为移动应用提供智能语音能力的平台。近日灵犀正式对外发布了语音评测能力,各位可以申请灵犀SDK
    发表于 08-20 10:57

    阿里SDK升级,宣布支持C++语言

    摘要: 日前,阿里官方SDK发布支持新语言——C++ 语言SDK,意味着90%以上产品可以随时生成并发布C++ SDK,给C++ 语言的开发者使用。 此次阿里
    发表于 02-08 13:48

    再次升级!阿里Kubernetes日志解决方案

    摘要: 今天阿里Kubernetes日志解决方案再次升级,为您带来以下改进: 1、极致部署体验:只需一条命令一个参数即可完成整个K8S集群的日志解决方案部署。 2、支持更多配置方式:除原生控制台
    发表于 05-28 19:08

    如何在阿里上安全的存放您的配置 - 续

    Token,那么开发者无需在SDK配置任何AK相关敏感信息。详细使用方法,请参考阿里SDK支持InstanceProfileCrede
    发表于 06-04 20:09

    YCT电磁调是什么, YCT电磁调速电机的工作原理

    文章来源:http://www.sztengcang.com/newsview.htm?ID=570YCT电磁调速电机是Y系列三相异步电动机的主要派生系列。电磁调速电机由拖动电机、电磁转差离合器
    发表于 09-14 10:39

    机友分享 | 导入机智Android开源项目的正确姿势

    页面编写了机智SDK控制设备的标准流程,APP源码二次开发过程中只需按照该流程进行相关代码的优化即可快速完成针对自身产品的智能控制APP。因此只要我们将源码工程文件成功导入Android
    发表于 09-28 10:58

    H3 SDK1.0 USB模块的配置方法及注意事项

    本文介绍H3 sdk1.0 USB模块配置方法,以及使用注意事项。
    发表于 03-26 16:36 6次下载
    H3 <b class='flag-5'>SDK</b>1.0 USB模块的<b class='flag-5'>配置</b><b class='flag-5'>方法</b>及注意事项

    机智SDK Logs分析教程

    是开发者已经具备获取Android日志的条件和能力,并且已经熟悉机智SDK相关使用方法。如不具备这些前提,请先参考网络上的相关资料。 二、设置SDK级别 要查看
    的头像 发表于 07-27 11:12 1691次阅读
    机智<b class='flag-5'>云</b><b class='flag-5'>SDK</b> Logs分析教程

    干货丨耀服务器 L 实例需要配置升级教程

    需提前声明:耀服务器 L 实例不支持直接升级配置,本实践指导仅为如何升级耀
    的头像 发表于 08-22 21:29 723次阅读
    干货丨<b class='flag-5'>云</b>耀<b class='flag-5'>云</b>服务器 L 实例需要<b class='flag-5'>配置</b><b class='flag-5'>升级</b>教程

    车规MCU VSCode IDE工程使用教程

    作者按:随着越来越多云车规MCU芯片型号的量产,越来越多的客户开始使用的车规MCU应用软件开发工具链,其中基于CMake + ninja + GNU gcc toolchain的VSCode
    的头像 发表于 09-24 10:51 2516次阅读
    <b class='flag-5'>云</b><b class='flag-5'>途</b>车规MCU VSCode IDE<b class='flag-5'>工程</b>使用教程

    鸿蒙开发实例:【配置OpenHarmony SDK

    在设置OpenHarmony应用开发环境时,需要开发者在DevEco Studio中配置对应的SDK信息。
    的头像 发表于 04-22 15:24 1967次阅读
    鸿蒙开发实例:【<b class='flag-5'>配置</b>OpenHarmony <b class='flag-5'>SDK</b>】