আমি এখন গত দু'সপ্তাহ ধরে একটি প্রকল্পে কাজ করছি এবং এই একটি ইস্যুটি ডিবাগ করে পুরো সপ্তাহে নিয়ে গেছে। ভাবছেন যে কেউ যদি সহায়তা করতে পারে তবে আমি যথাসম্ভব সুস্পষ্ট এবং পরিষ্কার হওয়ার চেষ্টা করব।
আমি STM32F302K8 (কর্টেক্স এম 4) এর উপর ভিত্তি করে একটি মাইক্রোকন্ট্রোলারে একটি ইউএসবি ভার্চুয়াল কম পোর্ট বাস্তবায়নের চেষ্টা করছি। সিডিসি ক্লাস প্রয়োগকারী একটি ইউএসবি ফুল স্পিড ডিভাইস সেটআপ করার জন্য প্রয়োজনীয় কোড উত্পন্ন করতে আমি STM32CubMX ব্যবহার করেছি। আমার ডিভাইস উইন্ডোজ (ডিভাইস ম্যানেজার) এবং লিনাক্স উভয় ক্ষেত্রেই প্রদর্শিত হবে। আমি উদাহরণ কোডের উপর ভিত্তি করে একটি সাধারণ প্রতিধ্বনি ফাংশন বাস্তবায়ন করতে সক্ষম হয়েছি কিন্তু এখন আমি পিসিতে ডেটা প্রেরণের জন্য ইউএসবিডি_সিডিসি_সেটটিএক্সবার্ফারশনটি ব্যবহার করার চেষ্টা করি , এটি একটি হার্ড ফল্ট হ্যান্ডলারটি সেট করে। আমি এটিকে সংকুচিত করে দিয়েছি যে ইউএসডিডিওয়াইএসএফ.পি.ক্লাস (যা ইউএসডিডি_সিডিসি_সেটটেক্সবার্ফার দ্বারা প্রয়োজন) ক্ষেত্রটি কখনই আরম্ভ হয় না কারণ ইউএসবি ডি_সিডিসি_আইনাইট () ইউএসবি ডিভাইসটির সূচনাতে কখনই ডাকা হয় না।
এসটি ফোরামে নথিভুক্ত উদাহরণ কোড হিসাবে আমি বেশ কয়েকটি বাগে (হিপ আকার পরিবর্তন, ইউএসবিডি_সিডিসি_ট্রান্সমিট প্যাকেটে সংক্রমণ পতাকা সংশোধন এবং সিডিসি_ডাটা_এইচএক্সএএমএসিএপিএসএসিইএসসিআইজি আকারটি 256 থেকে 256 এ পরিবর্তন সহ) প্রয়োগ করেছি তবে এখনও একই ত্রুটি পেয়েছি।
আমার ডিভাইসের সেটআপ কোডটি
* USB Device Core handle declaration */
USBD_HandleTypeDef hUsbDeviceFS;
/* init function */
void MX_USB_DEVICE_Init(void)
{
/* Init Device Library,Add Supported Class and Start the library*/
USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS);
USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC);
USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS);
USBD_Start(&hUsbDeviceFS);
}