內(nèi)容提要
引言
云途配置工具(YCT - Yuntu Config Tool)自去年Q4推出以來(lái),已經(jīng)有不少云途車規(guī)MCU的客戶在實(shí)際項(xiàng)目使用了。它簡(jiǎn)明快捷高效的SDK和MCAL配置界面以及強(qiáng)大的工具鏈整合能力大大提高了用戶汽車電子ECU應(yīng)用代碼的開(kāi)發(fā)效率,深受好評(píng)。
Tips:關(guān)于云途YCT工具的功能特性(features)、下載安裝和使用請(qǐng)參考以下公眾號(hào)文章(點(diǎn)擊文章標(biāo)題即可直接跳轉(zhuǎn)閱讀):
《云途配置工具(YCT)快速上手指南(QSG)》
隨著云途車規(guī)MCU型號(hào)的日益增加(cover越來(lái)越多汽車電子應(yīng)用),云途SDK和MCAL也在不斷升級(jí),作為配套的圖形化配置工具YCT也進(jìn)行了若干次升級(jí),在修改已知bug的同時(shí)也新增了不少新功能。
最近,云途車規(guī)MCU的非AUTSOAR架構(gòu)驅(qū)動(dòng)軟件包 - YTM32 SDK進(jìn)行了一次比較大的升級(jí),強(qiáng)烈推薦大家將之前使用的SDK升級(jí)到最新的RTM v1.1.1版本,以快速修改已知云途車規(guī)MCU外設(shè)底層驅(qū)動(dòng)代碼的bug及硬件勘誤表(Errata)的Workaroud,以下為YTM32 SDK RTM v1.1.1版本的Release note的下載鏈接,供大家參考:
為了方便大家進(jìn)行SDK的快速升級(jí)替換,特撰寫(xiě)本文介紹升級(jí)YCT創(chuàng)建的云途SDK配置工程的詳細(xì)步驟和方法。
確認(rèn)當(dāng)前應(yīng)用工程的YCT配置工程使用的SDK/MCAL版本
打開(kāi)應(yīng)用工程根目錄下的YCT工程,在YCT的頂行Home菜單旁邊即為當(dāng)前YCT工程使用的SDK或者M(jìn)CAL的版本信息。
MCAL的YCT配置工程:
SDK的YCT配置工程:
確認(rèn)要升級(jí)目標(biāo)版本的SDK/MCAL軟件包已經(jīng)安裝好
通過(guò)YCT主頁(yè)界面的SDK/MCAL升級(jí)界面確實(shí)確認(rèn)要升級(jí)目標(biāo)版本的SDK/MCAL軟件包已經(jīng)安裝好,比如本文想要將上面的MD14的v0.8.1版本SDK的應(yīng)用工程升級(jí)到v1.1.1版本:
修改YCT文件中的SDK版本信息
使用任意文本編輯器,比如Notepad++或者在VSCode中雙擊打開(kāi)工程根目錄下的yct文件,Ctrl + F查找“sdkVersion”配置:
將其從原有的“0_8_1”修改為新版本“1_1_1”,并保存:
修復(fù)YCT工程中的SDK外設(shè)差異配置error
接下來(lái),使用YCT工具打開(kāi)上一步驟修改后的應(yīng)用工程YCT文件,修改Problems窗口提示的所有配置error。
本文示例工程,打開(kāi)后有eTMR/PWM和CAN兩個(gè)配置報(bào)錯(cuò),下面介紹具體修復(fù)方法。
4.1 修復(fù)CAN驅(qū)動(dòng)模塊的波特率配置錯(cuò)誤
在v0.8.1版本SDK的CAN通信波特率配置中傳輸段(Propagation Segment)、相位段1(Phase Segment 1)、相位段2(Phase Segment 2)和時(shí)鐘預(yù)分頻因子(Prescaler Division factor)在配置時(shí)會(huì)將配置值減1寫(xiě)入FlexCAN模塊的寄存器,而在新版本v1.1.1 SDK中這些配置將被直接寫(xiě)入FlexCAN模塊的寄存器,因此,為了實(shí)現(xiàn)相同的波特率(500Kbit/s)相應(yīng)的配置值需要減1。
v0.8.1版本的CAN波特率配置在v1.1.1中為錯(cuò)誤配置:
v1.1.1版本SDK中相應(yīng)波特率(500kbit/s)的正確配置如下:
4.2 修改eTMR/PWM驅(qū)動(dòng)模塊的配置錯(cuò)誤
v1.1.1版本SDK相對(duì)于之前老版本的SDK驅(qū)動(dòng)和配置界面做了一些bug修改,因?yàn)樾枰菵isable ETMR模塊的配置,然后重新Enable進(jìn)行配置才能解決相關(guān)error。
首先、Disable ETMR驅(qū)動(dòng)模塊,之前的配置信息將全部丟失:
然后,重新Enable ETMR模塊,添加Common配置:
使能PWM配置,并根據(jù)原有工程的需求添加PWM通道配置:
Tips:為了減少應(yīng)用代碼中調(diào)用SDK配置參數(shù)的修改,需要將以上ETMR驅(qū)動(dòng)模塊的Common和PWM配置的配置結(jié)構(gòu)體名字和配置參數(shù)保持與原工程相同。
重新生成工程和替換SDK底層驅(qū)動(dòng)
將以上配置error全部修復(fù)之后,點(diǎn)擊保存(Save),然后重新生成(Generate):
點(diǎn)擊確認(rèn)覆蓋(OverWrite)原有工程的SDK驅(qū)動(dòng)靜態(tài)代碼即可完成SDK驅(qū)動(dòng)更新和版本升級(jí):
Tips:連續(xù)點(diǎn)擊多個(gè)文件覆蓋后,YCT會(huì)提示是否覆蓋所有文件,點(diǎn)擊“OK”確認(rèn)即可快速完成覆蓋替換:
重新編譯應(yīng)用工程,修改編譯錯(cuò)誤
重新編譯工程,根據(jù)編譯錯(cuò)誤和SDK releasenote中的bug list,修復(fù)/調(diào)整所有SDK API的參數(shù),比如PWM占空比更新函數(shù)--eTMR_DRV_UpdatePwmChannel()的0.8.1與1.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函數(shù)少了typeOfUpdate和alignMode兩個(gè)參數(shù),需要將其刪除。
另外,PWM通道參數(shù)配置結(jié)構(gòu)體etmr_pwm_param_t的通道配置成員名由*pwmIndependentChannelConfig改為了*pwmChannelConfig,也需要做相應(yīng)的調(diào)整:
------------------------------------------------------------- //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函數(shù)調(diào)用修改如下:
v0.8.1版本SDK調(diào)用:
/* 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調(diào)用:
/* update the PWM output duty cycle */ eTMR_DRV_UpdatePwmChannel(eTMR_INST, eTMR0_CH5_PWM_Config.pwmChannelConfig[0].hwChannelId, (0x8000U * pwm_duty), 0x0000U);
修復(fù)所有編譯error后,編譯成功即完成SDK升級(jí):
總結(jié)
本文詳細(xì)介紹了基于YCT的云途SDK配置工程升級(jí)方法,希望對(duì)大家有所幫助。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17173瀏覽量
351628 -
汽車電子
+關(guān)注
關(guān)注
3027文章
7979瀏覽量
167233 -
ecu
+關(guān)注
關(guān)注
14文章
889瀏覽量
54569 -
SDK
+關(guān)注
關(guān)注
3文章
1038瀏覽量
46015 -
云途
+關(guān)注
關(guān)注
1文章
4瀏覽量
1959
原文標(biāo)題:云途配置工具(YCT)使用指南之如何快速升級(jí)YCT配置工程的云途SDK版本
文章出處:【微信號(hào):汽車電子expert成長(zhǎng)之路,微信公眾號(hào):汽車電子expert成長(zhǎng)之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論