নিউলিব ন্যূনতম চলমান উদাহরণ
এখানে আমি একটি উচ্চতর স্বয়ংক্রিয় এবং ডকুমেন্টেড উদাহরণ সরবরাহ করি যা কিউইইএমইউতে কর্মে নিউলিব দেখায় ।
Newlib সহ, আপনি নিজের সিস্টেমটি আপনার বেয়ারমেটাল প্ল্যাটফর্মের জন্য কলগুলি প্রয়োগ করেন।
উদাহরণস্বরূপ, উপরের উদাহরণে, আমাদের একটি উদাহরণ প্রোগ্রাম রয়েছে exit.c
:
#include <stdio.h>
#include <stdlib.h>
void main(void) {
exit(0);
}
এবং একটি পৃথক সি ফাইলে common.c
, আমরা এআরএম সেমিহোস্টিংexit
সহ প্রয়োগ করি :
void _exit(int status) {
__asm__ __volatile__ ("mov r0, #0x18; ldr r1, =#0x20026; svc 0x00123456");
}
আপনি যে সাধারণ টিউটোরিয়াল প্রয়োগ করবেন তা হ'ল:
write
হোস্টের ফলাফল আউটপুট। এটি হয় এর মাধ্যমেও করা যেতে পারে:
- আরও সেমহোস্টিং
- একটি UART হার্ডওয়্যার
brk
জন্য malloc
।
বেয়ারমেটলে সহজ, যেহেতু আমাদের পেজিংয়ের কোনও যত্ন নেই!
করণীয় আমি ভাবছি যদি এটা একটি পূর্ণ প্রস্ফুটিত মধ্যে যাওয়া ছাড়া স্বতপ্রণোদিত সিডিউলিং syscalls সঞ্চালনের পৌঁছানোর বাস্তবসম্মত RTOS মত পশ্চিমা বাতাস বা FreeRTOS ।
নিউলিব সম্পর্কে দুর্দান্ত জিনিসটি হ'ল এটি আপনার জন্য সমস্ত নন-ওএস নির্দিষ্ট জিনিস string.h
কার্যকর করে এবং আপনাকে কেবল ওএস স্টাবগুলি প্রয়োগ করতে দেয়।
এছাড়াও, আপনাকে সমস্ত স্টাব বাস্তবায়ন করতে হবে না, তবে কেবলমাত্র আপনার প্রয়োজন হবে। উদাহরণস্বরূপ, যদি আপনার প্রোগ্রামটির কেবল প্রয়োজন হয় exit
, তবে আপনাকে একটি সরবরাহ করতে হবে না print
।
নিউলিব উত্স ট্রিটিতে ইতিমধ্যে কয়েকটি এআরএম সেমহোস্টিং বাস্তবায়ন সহ কিছু বাস্তবায়ন রয়েছে newlib/libc/sys/arm
তবে বেশিরভাগ অংশে আপনাকে নিজের প্রয়োগ করতে হবে। এটি অবশ্য কাজের জন্য একটি শক্ত বেস সরবরাহ করে।
নিউলিব সেটআপ করার সবচেয়ে সহজ উপায় হ'ল ক্রসস্টুল-এনজি দিয়ে আপনার নিজস্ব সংকলক তৈরি করা, আপনাকে কেবল এটিই বলতে হবে যে আপনি নিউ লাইবকে সি লাইব্রেরি হিসাবে ব্যবহার করতে চান। আমার সেটআপ হ্যান্ডেল করে যা স্বয়ংক্রিয়ভাবে আপনার জন্য এই স্ক্রিপ্টটি উপস্থিত রয়েছে , যা উপস্থিত নতুনলিব কনফিগারেশনগুলিকে ব্যবহার করেcrosstool_ng_config
।
আমার ধারণা সি ++ কাজ করবে তবে এটি পরীক্ষাও করুন TO