मुझे पहले से ही बेकिंग पाई ट्यूटोरियल मिल गए , लेकिन वे केवल असेंबली भाषा का उपयोग करते हैं । मैंने पहले पाठों का पालन किया, लेकिन मैं पहले से ही सोच रहा हूं कि इसके बजाय सी का उपयोग कैसे किया जाए। मेरा मतलब है, एक कारण है कि उन्होंने उच्च-स्तरीय भाषाओं का आविष्कार किया है। मैं सिर्फ एक वस्तु ( .o
) फ़ाइल के लिए सी कोड संकलन की कोशिश की , संकलन
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
किसी अन्य ऑब्जेक्ट फ़ाइल और उन्हें एक साथ जोड़ने और इसलिए प्राप्त करना kernel.img
। मैंने फिर पहले से मौजूद कर्नेल को अपने साथ बदल दिया, लेकिन यह सी कोड को निष्पादित नहीं करता है। मेरे द्वारा लिखा गया सी कोड ओके एलईडी को चालू करना चाहिए और फिर वापस (फिर आता है loop$: b loop$
)। लेकिन ओके एलईडी कुछ समय के लिए बेतरतीब ढंग से चमकती है और फिर बंद हो जाती है। यहाँ मेरा C कोड है:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
मैं रास्पबेरी पाई पर ऑपरेटिंग सिस्टम के विकास के लिए C का उपयोग कैसे करूं?
मुझे संदेह है कि यह कोड में एक त्रुटि है (हालांकि मैं सिर्फ एक शौक़ीन हूं)। मुझे पता है कि सी स्थापित करना जटिल हो सकता है, लेकिन मैं ऐसा करने वाला पहला नहीं हूं। AFAIK, वर्तमान में सभी प्रमुख OS मुख्य रूप से C में लिखे गए हैं, इसलिए इस प्रक्रिया को समझाने वाला एक लेख होना चाहिए। मैं चरणों की एक सूची के साथ भी बहुत खुश होऊंगा, इसलिए मैं उन चरणों के लिए Google कर सकता हूं और शायद एक सवाल थोड़ा कम व्यापक पूछूं।
नोट: उपरोक्त C कोड के बराबर ARM असेंबली ठीक काम करती है। यह एलईडी (थोड़ी सी पलक के बाद) को चालू करता है। मुझे लगता है (आशा) जो इंगित करता है कि मेरा रास्पबेरी पाई ठीक है।