2015-12-18 8 views
5

में धारावाहिक कंसोल (गैर-कर्नेल) को अक्षम करने के लिए कैसे मैं इंटेल एडिसन के लिए एक योक्टो छवि बना रहा हूं।यू-बूट

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

मेरी मुख्य चिंता "यूआरएआर पोर्ट पर" ऑटोबूट रोकने के लिए कोई भी कुंजी दबाएं। मुझे इस पोर्ट को एक एक्सेसरी कनेक्ट करने की आवश्यकता है जो मुख्य डिवाइस की बूट प्रक्रिया के दौरान कुछ भेज सकता है।

मैं इस समस्या से कैसे संपर्क करूं? क्या इसके लिए कोई पर्यावरण चर है, या क्या मुझे स्रोतों को संशोधित करने की आवश्यकता है?

अग्रिम धन्यवाद!

उत्तर

5

मैं लगभग एक साल बाद इस मुद्दे पर वापस आ रहा हूं, अब मैं एक उचित समाधान ढूंढने में कामयाब रहा हूं।

बोर्ड मैं पर काम कर रहा था अपनी बसपा में एक यथोचित नए यू-बूट था। निम्न करने के लिए धारावाहिक सांत्वना मैं था अक्षम करने के लिए:

#define CONFIG_DISABLE_CONSOLE 
#define CONFIG_SILENT_CONSOLE 
#define CONFIG_SYS_DEVICE_NULLDEV 
  • :

    • बोर्ड के config हैडर के लिए निम्न परिभाषित करता है जोड़ें (में स्थित/कॉन्फ़िगरेशन/board.h शामिल हैं) देखें कि क्या आपका बोर्ड early_init_f एक ही फाइल में सक्षम किया गया है:

      #define CONFIG_BOARD_EARLY_INIT_F 1 
      
    • आर्क फ़ाइल खोजें (कुछ आर्क/x86/cpu/architecture/architecture.c) और इस कॉल को early_init_f फ़ंक्शन में जोड़ें।यह वास्तव में बोर्ड के वैश्विक डेटा चर को संशोधित करता है इन झंडे के लिए:

      gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE); 
      
    • मेरे बोर्ड एक नहीं था, इसलिए मैं पूरे समारोह

      int board_early_init_f(void) 
      { 
           gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE); 
           return 0; 
      } 
      

    यह है कि जोड़ने के लिए किया था। मनाइए कि यह किसी और के लिए सहायक हो!

  • 3

    यू-बूट के स्रोत (कॉन्फ़िगरेशन) को संशोधित किए बिना ऐसा करने का कोई तरीका नहीं है।

    यू-बूट में सीरियल कंसोल को अक्षम करने के लिए, आपको यू-बूट को फिर से कॉन्फ़िगर करना होगा। यू-बूट के मालिक शाखा से प्रलेखन: अगर आप केवल यू-बूट चुप रहना चाहता हूँ

    CONFIG_SILENT_CONSOLE 
    CONFIG_SILENT_CONSOLE_UPDATE_ON_SET 
    CONFIG_SYS_DEVICE_NULLDEV 
    

    CONFIG_SILENT_U_BOOT_ONLY भी जरूरी है: Readme.silent

    है कि एक के अनुसार, आप सेट करना होगा।

    आपको CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC के साथ परीक्षण करने की आवश्यकता हो सकती है और संभवतः silent 1 से CONFIG_EXTRA_ENV_SETTINGS पर परीक्षण करना पड़ सकता है।

    == अद्यतन ==

    एक संभावित समाधान के लिए निम्न विकल्पों देखें:

    CONFIG_ZERO_BOOTDELAY_CHECK 
    CONFIG_AUTOBOOT_KEYED 
    CONFIG_AUTOBOOT_KEYED_CTRLC 
    CONFIG_AUTOBOOT_PROMPT 
    CONFIG_AUTOBOOT_DELAY_STR 
    CONFIG_AUTOBOOT_STOP_STR 
    

    ये विकल्प कम से कम आप बूट को रोकने के लिए एक जादू स्ट्रिंग की आवश्यकता होती है का एक तरीका दे देंगे। यह आपकी मदद करने के लिए पर्याप्त हो सकता है। README.autoboot

    +0

    प्रतिक्रिया के लिए धन्यवाद! मैंने मूक मोड पर दस्तावेज़ों को देखा है, लेकिन इस विधि में एक दोष है - जबकि कंसोल का आउटपुट अब बंद हो गया है, कंसोल का इनपुट (** ऑटोबूट रोकने के लिए कोई भी कुंजी दबाएं **) वास्तव में काम करता है और आप डिवाइस को रोक सकते हैं बूटिंग से मुझे यूएआरटी पोर्ट को एक्सेसरीज़ के साथ इस्तेमाल करने की ज़रूरत है। मैं इस मुद्दे को हल करने के लिए अपना प्रश्न अपडेट करूंगा – Egor