আমি ইতিমধ্যে বেকিং পাই টিউটোরিয়ালগুলি পেয়েছি তবে তারা কেবল সমাবেশের ভাষা ব্যবহার করে । আমি প্রথম পাঠগুলি অনুসরণ করেছিলাম, তবে এর পরিবর্তে সি কীভাবে ব্যবহার করব তা আমি ইতিমধ্যে ভাবছি। মানে, তারা উচ্চ-স্তরের ভাষাগুলি আবিষ্কার করার একটি কারণ রয়েছে। আমি কেবল একটি কোড ( .o
) ফাইলে সংকলন করে সি কোড সংকলন করার চেষ্টা করেছি
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
অন্য একটি অবজেক্ট ফাইলে এবং সেগুলি একত্রে সংযুক্ত করা এবং তাই প্রাপ্ত kernel.img
। আমি তারপরে ইতিমধ্যে উপস্থিত কার্নেলটি নিজের সাথে প্রতিস্থাপন করেছি, তবে এটি সি কোডটি কার্যকর করে না। আমি যে সি কোড লিখেছি তা ঠিক ঠিক এলইডি চালু করা উচিত এবং তারপরে ফিরে আসুন (তারপরে আসে loop$: b loop$
)। তবে ওকে এলইডি কয়েকবার এলোমেলোভাবে ফ্ল্যাশ করে এবং তারপরে কেবল বন্ধ থাকে। আমার সি কোডটি এখানে:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
আমি কীভাবে রাস্পবেরি পাইতে অপারেটিং সিস্টেম বিকাশের জন্য সি ব্যবহার করব?
আমি সন্দেহ করি এটি কোডের একটি ত্রুটি (যদিও আমি কেবল শখের একজন)। আমি সচেতন যে সি সেট আপ জটিল হতে পারে, কিন্তু আমি প্রথম এটি করছি না। আফাইক, বর্তমানে সমস্ত প্রভাবশালী ওএস মূলত সি-তে লেখা রয়েছে, সুতরাং প্রক্রিয়াটি ব্যাখ্যা করার জন্য একটি নিবন্ধ থাকতে হবে। পদক্ষেপের একটি তালিকাতেও আমি খুব খুশি হব, তাই আমি এই পদক্ষেপগুলির জন্য গুগল করতে পারি এবং সম্ভবত কিছুটা কম বিস্তৃত প্রশ্ন জিজ্ঞাসা করতে পারি।
দ্রষ্টব্য: উপরের সি কোডের সমতুল্য এআরএম সমাবেশটি ঠিক কাজ করে। এটি LED চালু করে (কিছুটা জ্বলজ্বলে পরে)। আমি মনে করি (আশা) যা আমার রাস্পবেরি পাই সূচিত করে।