- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'd like to translate KBA225989 into Japanese.
moto
Original KBA: KBA225989
Bug in Cy_USBFS_Dev_Drv_Disable() Function of USBFS v1.0 Driver - KBA225989
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Moto-san,
I confirmed the KBA.
Please work to do.
Thanks,
Aiko
Infineon Technologies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Original KBA: KBA225989
Bug in Cy_USBFS_Dev_Drv_Disable() Function of USBFS v1.0 Driver - KBA225989
Translated by: MoTa_728816
==============================
タイトル: USBFS v1.0 ドライバ Cy_USBFS_Dev_Drv_Disable() 関数のバグ - KBA22598
ヴァージョン:**
質問:USBFS ドライバを endpoint management mode が CPU Manual の設定で Cy_USBFS_Dev_Drv_Disable() をコールするとフォールトが発生するのはなぜですか?
回答:
Cy_USBFS_Dev_Drv_Disable() は endpoint management mode を確認せずに内部の関数で DMA チャンネルをディセーブルします。CPU Manual モードでは DMA チャネルはアロケートされていないため、DMA の関数が正しくない引数でコールされ、それがフォールトの原因になっています。
この問題を回避するためには、下記のように disable 関数を実装してください:
void Cy_USBFS_Dev_Drv_Disable_CpuMode(USBFS_Type *base, cy_stc_usbfs_dev_drv_context_t *context)
{
/* 使用しない変数に関するウォーニングを止める */
(void) context;
/* D+ のプルアップをディセーブルする */
USBFS_DEV_LPM_POWER_CTL(base) &= ~USBFS_USBLPM_POWER_CTL_DP_UP_EN_Msk;
(void) USBFS_DEV_LPM_POWER_CTL(base);
/* デバイスの USB トラフィックに対する応答をディセーブルする */
USBFS_DEV_CR0(base) &= ~USBFS_USBDEV_CR0_USB_ENABLE_Msk;
}
USBFS ドライバのこの問題は Cy_USB_Dev_Disconnct() 関数が Cy_USBFS_Dev_Drv_Disable() 関数をコールしているため USB Device ミドルウェアにも影響を与えます。
この問題を回避するためには、下記のように disconnect 関数を実装してください:
void Cy_USB_Dev_Disconnect_CpuMode(cy_stc_usb_dev_context_t *context)
{
/* D+ のプルアップをディセーブルする */
USBFS_DEV_LPM_POWER_CTL(context->drvBase) &= ~USBFS_USBLPM_POWER_CTL_DP_UP_EN_Msk;
(void) USBFS_DEV_LPM_POWER_CTL(context->drvBase);
/* デバイスの USB トラフィックに対する応答をディセーブルする */
USBFS_DEV_CR0(context->drvBase) &= ~USBFS_USBDEV_CR0_USB_ENABLE_Msk;
/* デバイスを初期状態に設定する */
context->state = CY_USB_DEV_DISABLED;
context->address = 0U;
context->configuration = 0U;
}
この Cy_USBFS_Dev_Drv_Disable() 関数のバグは次のペリフェラルドライバライブラリ (PDL) のリリースで修正される予定です。
==============================
21-May-2020
moto