embedded एंबेडेड सिस्टम में प्लेटफ़ॉर्म बस के लिए एक डिवाइस ड्राइवर लिखना?



arm linux-device-driver (1)

मैं लिनक्स कर्नेल स्रोत में कुछ ड्राइवर कार्यान्वयन के माध्यम से चले गए हैं और यह देख सकते हैं कि ये प्लेटफ़ॉर्म ड्राइवर हैं।

drivers/net/ethernet/smsc/smsc911x.c

  static struct platform_driver smc911x_driver = {
    .probe           = smc911x_drv_probe,
    .remove  = smc911x_drv_remove,
    .suspend         = smc911x_drv_suspend,
    .resume  = smc911x_drv_resume,
    .driver  = {
            .name    = CARDNAME,
            .owner  = THIS_MODULE,
    },
};

ऊपर प्लेटफॉर्म डिवाइस (एसएमएससी आधारित ईथरनेट कंट्रोलर) के लिए ड्राइवर है और प्लेटफ़ॉर्म डिवाइसेस ऐसे उपकरण हैं जो पीसीआई बस पर बैठे लीगेसी डिवाइसों के विपरीत सिस्टम बूट-अप के दौरान स्वचालित रूप से जांच नहीं की जाती हैं।

मुझे लगता है कि मेरा यह समझना ठीक है यहाँ?

अब जब मैं कहता हूं कि यह प्लेटफ़ॉर्म डिवाइस है, इसका मतलब यह है कि ये डिवाइस (ईथरनेट कंट्रोलर) प्लेटफार्म बस पर बैठे हैं और एआरएम आर्किटेक्चर डिफॉल्ट प्लेटफॉर्म बस एएमबीए पर है।

इसलिए जब हम एआरएम आधारित बोर्ड पर ईथरनेट कंट्रोलर को मिलाते हैं, तो इसे अंबा बस के साथ बैठकर या इंटरफेस किया जाना चाहिए?

हम कैसे तय करते हैं कि चालक हम लिखने जा रहे हैं प्लेटफार्म ड्राइवर या सामान्य ड्राइवर?


एआरएम मंच ड्राइवरों के विकसित होने में मेरे सीमित अनुभव से, आम तौर पर एएमबीए उपकरणों की मेमोरी मैप आईओ रजिस्टर इंटरफेस के अंत में पहचान रजिस्टर होते हैं I

सामान्यतया, यदि आप अपने ईथरनेट नियंत्रक के संदर्भ पुस्तिका को देखते हैं और पंजीकरण सारांश परिधीय / घटक पहचान रजिस्टरों (आमतौर पर 0xFE0-0xFEC और 0xFF0-0xFFC ऑफसेट पर) को निर्दिष्ट करते हैं, तो आपको एक एएमबीए बस चालक लिखना चाहिए। इन ड्राइवरों को स्वचालित रूप से बस ड्राइवर द्वारा पहचाना जा सकता है।

अन्यथा, अगर रजिस्टर इंटरफ़ेस 0xFE0-0xFEC और 0xFF0-0xFFC ऑफसेट पर कोई भी आईडी रजिस्टर्ड निर्दिष्ट नहीं करता है, तो आप शायद एक प्लेटफ़ॉर्म ड्रायवर लिखना चाहते हैं। इन डिवाइसों को स्वचालित रूप से पहचान नहीं किया जा सकता है और आपको विशेष रूप से डिवाइस पर एक ड्राइवर संलग्न करना होगा।