C++ Academy · पाठ

ARM targets के लिए cross-compilation

ARM microcontrollers को target करने वाला cross-compilation toolchain स्थापित करें।

पाठ 4, कुल 4 में से15 चरण

ARM targets के लिए cross-compilation, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

क्रॉस-कंपाइलेशन क्या है?

एक प्लेटफ़ॉर्म (होस्ट) पर कंपाइल करके दूसरे प्लेटफ़ॉर्म (लक्ष्य) पर चलाएँ। एम्बेडेड विकास के लिए यह आवश्यक है — अपने लैपटॉप पर कोड लिखें और उसे माइक्रोकंट्रोलर पर चलाएँ।

क्रॉस-कंपाइलर टूलचेन

टूलचेन किसी विशिष्ट लक्ष्य के लिए क्रॉस-कंपाइलर, लिंकर, डीबगर और मानक लाइब्रेरी को एक साथ रखता है।

# GCC ARM Embedded for Cortex-M
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -O2 main.c
arm-none-eabi-objcopy -O ihex a.out a.hex

टूलचेन इंस्टॉल करना

सामान्य विकल्प:

  • GCC ARM Embedded — आधिकारिक टूलचेन, निःशुल्क
  • Clang/LLVM — कई लक्ष्यों का पहले से समर्थन करता है
  • वेंडर टूलचेन — IDE के साथ बंडल किए जाते हैं (Keil, IAR)

लक्ष्य ट्रिपल

ट्रिपल लक्ष्य की पहचान करता है: CPU-वेंडर-OS-ABI। उदाहरण:

  • arm-none-eabi — बेयर-मेटल ARM
  • aarch64-linux-gnu — 64-बिट ARM Linux
  • x86_64-pc-windows-msvc — MSVC ABI वाला Windows x64

लिंकर स्क्रिप्ट

एम्बेडेड लक्ष्यों के लिए मेमोरी लेआउट बताने वाली लिंकर स्क्रिप्ट चाहिए — Flash और RAM कहाँ स्थित हैं तथा स्टैक कहाँ से शुरू होता है। टूलचेन में डिफ़ॉल्ट स्क्रिप्ट होती हैं, जिन्हें आप बदल सकते हैं।

/* Simplified linker script */
MEMORY {
    FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
    RAM   (rw) : ORIGIN = 0x20000000, LENGTH = 64K
}

स्टार्टअप और वेक्टर तालिका

स्टार्टअप फ़ाइल स्टैक पॉइंटर सेट करती है, आरंभिक डेटा को Flash से RAM में कॉपी करती है, BSS को शून्य करती है और फिर main पर जाती है। यह आमतौर पर वेंडर द्वारा दी जाती है।

ARM के लिए कंपाइलर फ़्लैग

सामान्य फ़्लैग:

  • -mcpu=cortex-m4 — विशिष्ट CPU
  • -mthumb — Thumb निर्देश सेट
  • -mfloat-abi=hard -mfpu=fpv4-sp-d16 — हार्डवेयर FPU
  • -Os — आकार के लिए अनुकूलन

Newlib और Newlib-Nano

एम्बेडेड GCC के लिए मानक C लाइब्रेरी। Newlib-Nano इसका छोटा रूप है, जिसमें कोड का आकार कम होता है।

libc के साथ लिंक करना

कई एम्बेडेड प्रोजेक्ट न्यूनतम libc से लिंक होते हैं या केवल आवश्यक हिस्सों को लागू करते हैं (printf का विकल्प, malloc स्टब)।

क्रॉस-कंपाइलेशन के लिए CMake

CMake चलाते समय टूलचेन फ़ाइल निर्दिष्ट करें।

# arm-none-eabi.cmake
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# Usage
cmake -B build -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi.cmake

GDB से डीबग करना

OpenOCD, ST-Link, J-Link या pyOCD के माध्यम से हार्डवेयर प्रोब से जुड़े लक्ष्य-विशिष्ट GDB (arm-none-eabi-gdb) का उपयोग करें।

बाइनरी को फ़्लैश करना

ELF को हेक्स या बाइनरी फ़ाइल में बदलें, फिर उसे Flash में लिखने के लिए वेंडर के उपकरण या OpenOCD का उपयोग करें।

arm-none-eabi-objcopy -O binary firmware.elf firmware.bin
st-flash write firmware.bin 0x08000000

पहले होस्ट पर परीक्षण करें

तर्क को होस्ट पर विकसित करें, जहाँ आपके पास पूरी डीबगिंग सुविधा होती है। केवल हार्डवेयर से संपर्क करने वाली परत को लक्ष्य पर ले जाएँ। इकाई-परीक्षणों में पेरिफ़ेरल का मॉक बनाएँ।

त्वरित जाँच

लक्ष्य ट्रिपल arm-none-eabi क्या दर्शाता है?

पुनरावलोकन

क्रॉस-कंपाइलेशन से आप अपनी विकास मशीन से ARM (या अन्य लक्ष्यों) के लिए निर्माण कर सकते हैं। लक्ष्य टूलचेन (arm-none-eabi-gcc) का उपयोग करें, लिंकर स्क्रिप्ट सेट करें, सही CPU फ़्लैग चुनें और OpenOCD + GDB से डीबग करें। CMake टूलचेन फ़ाइलें कॉन्फ़िगरेशन को स्वचालित करती हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “ARM targets के लिए cross-compilation” पाठ निःशुल्क है?

हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “ARM targets के लिए cross-compilation” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“ARM targets के लिए cross-compilation” में मैं क्या सीखूँगा?

ARM microcontrollers को target करने वाला cross-compilation toolchain स्थापित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“ARM targets के लिए cross-compilation” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Embedded में constraints: No RTTI, No Exceptions
  2. Memory-mapped IO और volatile
  3. Real-time considerations और latency
  4. ARM targets के लिए cross-compilation
← C++ Academy पर वापस जाएँ