內(nèi)容提要
引言
云途配置工具(YCT - Yuntu Config Tool)自去年Q4推出以來,已經(jīng)有不少云途車規(guī)MCU的客戶在實際項目使用了。它簡明快捷高效的SDK和MCAL配置界面以及強大的工具鏈整合能力大大提高了用戶汽車電子ECU應(yīng)用代碼的開發(fā)效率,深受好評。
Tips:關(guān)于云途YCT工具的功能特性(features)、下載安裝和使用請參考以下公眾號文章(點擊文章標題即可直接跳轉(zhuǎn)閱讀):
《云途配置工具(YCT)快速上手指南(QSG)》
隨著云途車規(guī)MCU型號的日益增加(cover越來越多汽車電子應(yīng)用),云途SDK和MCAL也在不斷升級,作為配套的圖形化配置工具YCT也進行了若干次升級,在修改已知bug的同時也新增了不少新功能。
最近,云途車規(guī)MCU的非AUTSOAR架構(gòu)驅(qū)動軟件包 - YTM32 SDK進行了一次比較大的升級,強烈推薦大家將之前使用的SDK升級到最新的RTM v1.1.1版本,以快速修改已知云途車規(guī)MCU外設(shè)底層驅(qū)動代碼的bug及硬件勘誤表(Errata)的Workaroud,以下為YTM32 SDK RTM v1.1.1版本的Release note的下載鏈接,供大家參考:
為了方便大家進行SDK的快速升級替換,特撰寫本文介紹升級YCT創(chuàng)建的云途SDK配置工程的詳細步驟和方法。
確認當前應(yīng)用工程的YCT配置工程使用的SDK/MCAL版本
打開應(yīng)用工程根目錄下的YCT工程,在YCT的頂行Home菜單旁邊即為當前YCT工程使用的SDK或者MCAL的版本信息。
MCAL的YCT配置工程:


SDK的YCT配置工程:


確認要升級目標版本的SDK/MCAL軟件包已經(jīng)安裝好
通過YCT主頁界面的SDK/MCAL升級界面確實確認要升級目標版本的SDK/MCAL軟件包已經(jīng)安裝好,比如本文想要將上面的MD14的v0.8.1版本SDK的應(yīng)用工程升級到v1.1.1版本:

修改YCT文件中的SDK版本信息
使用任意文本編輯器,比如Notepad++或者在VSCode中雙擊打開工程根目錄下的yct文件,Ctrl + F查找“sdkVersion”配置:

將其從原有的“0_8_1”修改為新版本“1_1_1”,并保存:

修復(fù)YCT工程中的SDK外設(shè)差異配置error
接下來,使用YCT工具打開上一步驟修改后的應(yīng)用工程YCT文件,修改Problems窗口提示的所有配置error。
本文示例工程,打開后有eTMR/PWM和CAN兩個配置報錯,下面介紹具體修復(fù)方法。
4.1 修復(fù)CAN驅(qū)動模塊的波特率配置錯誤
在v0.8.1版本SDK的CAN通信波特率配置中傳輸段(Propagation Segment)、相位段1(Phase Segment 1)、相位段2(Phase Segment 2)和時鐘預(yù)分頻因子(Prescaler Division factor)在配置時會將配置值減1寫入FlexCAN模塊的寄存器,而在新版本v1.1.1 SDK中這些配置將被直接寫入FlexCAN模塊的寄存器,因此,為了實現(xiàn)相同的波特率(500Kbit/s)相應(yīng)的配置值需要減1。
v0.8.1版本的CAN波特率配置在v1.1.1中為錯誤配置:

v1.1.1版本SDK中相應(yīng)波特率(500kbit/s)的正確配置如下:

4.2 修改eTMR/PWM驅(qū)動模塊的配置錯誤
v1.1.1版本SDK相對于之前老版本的SDK驅(qū)動和配置界面做了一些bug修改,因為需要先Disable ETMR模塊的配置,然后重新Enable進行配置才能解決相關(guān)error。
首先、Disable ETMR驅(qū)動模塊,之前的配置信息將全部丟失:

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

使能PWM配置,并根據(jù)原有工程的需求添加PWM通道配置:

Tips:為了減少應(yīng)用代碼中調(diào)用SDK配置參數(shù)的修改,需要將以上ETMR驅(qū)動模塊的Common和PWM配置的配置結(jié)構(gòu)體名字和配置參數(shù)保持與原工程相同。
重新生成工程和替換SDK底層驅(qū)動
將以上配置error全部修復(fù)之后,點擊保存(Save),然后重新生成(Generate):
點擊確認覆蓋(OverWrite)原有工程的SDK驅(qū)動靜態(tài)代碼即可完成SDK驅(qū)動更新和版本升級:

Tips:連續(xù)點擊多個文件覆蓋后,YCT會提示是否覆蓋所有文件,點擊“OK”確認即可快速完成覆蓋替換:

重新編譯應(yīng)用工程,修改編譯錯誤
重新編譯工程,根據(jù)編譯錯誤和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兩個參數(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升級:

總結(jié)
本文詳細介紹了基于YCT的云途SDK配置工程升級方法,希望對大家有所幫助。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
147文章
18453瀏覽量
381712 -
汽車電子
+關(guān)注
關(guān)注
3042文章
8494瀏覽量
171912 -
ecu
+關(guān)注
關(guān)注
14文章
958瀏覽量
56722 -
SDK
+關(guān)注
關(guān)注
3文章
1091瀏覽量
50920 -
云途
+關(guān)注
關(guān)注
1文章
6瀏覽量
2119
原文標題:云途配置工具(YCT)使用指南之如何快速升級YCT配置工程的云途SDK版本
文章出處:【微信號:汽車電子expert成長之路,微信公眾號:汽車電子expert成長之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何把賽靈思SDK工程移植到Vitis
基于HPM_SDK_ENV開發(fā)應(yīng)用程序的升級處理
升級到RTOS SDK v1.5版本編譯報錯如何解決?
HarmonyOS5云服務(wù)技術(shù)分享--云存儲SDK文章整理
靈犀云智能語音平臺的語音評測SDK使用方法
阿里云SDK再升級,宣布支持C++語言
再次升級!阿里云Kubernetes日志解決方案
如何在阿里云上安全的存放您的配置 - 續(xù)
YCT電磁調(diào)是什么, YCT電磁調(diào)速電機的工作原理
機友分享 | 導(dǎo)入機智云Android開源項目的正確姿勢
機智云SDK Logs分析教程
云途車規(guī)MCU VSCode IDE工程使用教程

基于YCT的云途SDK配置工程升級方法
評論