2013-03-06 7 views
5

लिनक्स में क्लॉक आर्किटेक्चर को कैसे लागू किया गया है। एक फ़ाइल include/linux/clkdev.hलिनक्स घड़ी आर्किटेक्चर

struct clk_lookup { 
    struct list_head node; 
    const char  *dev_id; 
    const char  *con_id; 
    struct clk  *clk; 
}; 

नहीं है क्या विभिन्न क्षेत्रों रहे हैं और यह बड़े पैमाने पर arch/arm/Board***/... में घड़ी वास्तुकला में प्रयोग किया जाता है?

उत्तर

6

जेनेरिक लिनक्स घड़ी इन्फ्रा-स्ट्रक्चर clk.txt में प्रलेखित है। एआरएम के लिए, साशा हाउर ने हाल ही में (पिछले दो वर्षों) फ्रेम-काम सामान्य घड़ी बनाया है। घड़ियों को माता-पिता/बच्चे संबंध में संरचित किया गया है। विशिष्ट एसओसी (चिप पर सिस्टम) में क्रिस्टल से बने मुख्य घड़ियों होते हैं जिन्हें या तो एक काउंटर के साथ (पीएलएल के साथ) या शायद दोनों को स्केल किया जाता है। वे पॉवर बचत के लिए पदानुक्रम महत्वपूर्ण है। आम तौर पर डिवाइस पेड़ में सबसे कम/सबसे कम घड़ियों का उपयोग कर रहे हैं। जब कोई डिवाइस घड़ी का अनुरोध करता है, तो इन्फ्रा-स्ट्रक्चर सुनिश्चित करता है कि सभी माता-पिता प्रारंभ हो जाएं।

पहले (विरासत), घड़ियों मशीन फ़ाइल (संदर्भ arch/arm/Board***/) मंच डेटा के माध्यम से चालक/डिवाइस के लिए से पारित किए गए; आखिरकार platform_device_register() के माध्यम से। कभी-कभी, घड़ियों को डिवाइस के नाम से/प्राप्त किया गया था। उदाहरण के लिए fec ड्राइवर fec-clk का उपयोग कर सकता है। यह एकाधिक मशीन कॉन्फ़िगरेशन के लिए अच्छा काम नहीं करता है, इसलिए platform data तंत्र पेश किया गया था। यहां तक ​​कि नई मशीनरी भी डीटी (या डिवाइस तालिका) का उपयोग करती है। यहां, कोई मशीन फाइल नहीं है, केवल एक उपकरण तालिका जो बूट लोडर से कर्नेल में पास की जाती है। इस मामले में, डीटी चालक को बताता है कि किस घड़ी का उपयोग करना है।

मूल रूप से, dev_id और con_id एक डिवाइस और घड़ियों कि जुड़े हुए हैं (माता पिता/बच्चे) के लिए घड़ियों से संबंधित थे। आमतौर पर dev_id या con_id न्यूल हैं क्योंकि केवल एक पहलू की आवश्यकता है। मुझे लगता है कि यह विचार चाहता था; विशेष रूप से पूरे घड़ी श्रृंखला शुरू करने के लिए। तो, लिनक्स संस्करण के आधार पर, जवाब बदलता रहता है। वर्तमान स्रोत में भी, कुछ प्लेटफ़ॉर्म (जैसे orion) अभी भी पुराने तंत्र का उपयोग करते हैं। मुझे नहीं लगता कि oriondevice trees का समर्थन करता है।

विशिष्ट उत्तर आपके लिनक्स संस्करण और मशीन (और संभवतः प्लेटफार्म) पर निर्भर होंगे।
यह भी देखें: clkdev.c, clk.c

ओपन सोर्स - कई उत्परिवर्तन रहे हैं। उनके पास एक अलग योजना है।

संदर्भ: Russell Kings message on ARM clkdev, मूल आदेश देने का मतलब नहीं था।

+0

देखें: [एलडब्ल्यूएन का एआरएम कर्नेल समेकन] (http://lwn.net/Articles/443510/), जिसमें कुछ हालिया परिवर्तनों का अच्छा अवलोकन है; कैसे * घड़ियों *, * डिवाइस पेड़ * और * ड्राइवर * एक साथ काम करते हैं। –

+0

जब डिवाइस में पीएलएलएस और काउंटर होते हैं जिन्हें सक्षम किया जा सकता है तो हमें घड़ी के ढांचे की आवश्यकता क्यों होती है? – JIN007

+1

डिवाइस पीएलएल (और काउंटर) में हेरफेर करने के लिए घड़ी के ढांचे का उपयोग करते हैं। आप ड्राइवर में पीएलएल हेरफेर कोड नहीं करते हैं; घड़ी के ढांचे में घड़ी और पेड़ में हैंडलर अंतर-निर्भरता करता है। –

संबंधित मुद्दे