عندما تضغط على زر الطاقة في SpacemiT K3 Pico-ITX، يظهر Ubuntu 26.04 على وحدة التحكم التسلسلية بعد حوالي 30 ثانية. بين هذين الحدثين، يتم تشغيل خمس طبقات برمجية متميزة بالتسلسل، وتنتقل كل واحدة منها إلى الأخرى. إن فهم ما تفعله كل طبقة - وسبب وجودها - مهم في اللحظة التي يحدث فيها خطأ ما، أو في اللحظة التي تريد فيها وضع نظام تشغيل مختلف على اللوحة.
يتنقل هذا المنشور عبر سلسلة التمهيد الكاملة لـ K3 الذي يعمل بنظام Ubuntu 26.04، بدءًا من قناع ROM الموجود في السيليكون وحتى قائمة GRUB. إنه خاص بهذه اللوحة، لكن الهندسة المعمارية تعمم على معظم أجهزة الكمبيوتر الحديثة ذات اللوحة الواحدة RISC-V.
SpacemiT K3 Pico-ITX عبارة عن لوحة RISC-V مدمجة مبنية حول SpacemiT K3 SoC: 8 × X100 RVA23، و16 جيجابايت LPDDR5، و128 جيجابايت تخزين UFS. هناك وسائط تخزين ثابتة مهمة للتمهيد: فلاش Winbond W25Q64 NOR (8 ميجابايت) ملحوم على PCB، ومحرك UFS. يحمل فلاش NOR مكدس البرامج الثابتة؛ يحمل محرك UFS نظام التشغيل.
يبدأ كل تمهيد في Boot ROM، وهو عبارة عن كتلة صغيرة من التعليمات البرمجية يتم حرقها في SoC عند التصنيع ولا يمكن تعديلها. يعمل BROM أولاً، في الوضع M (أعلى مستوى امتياز RISC-V)، قبل تهيئة أي ذاكرة وصول عشوائي (RAM). وتتمثل مهمتها الوحيدة في تحديد موقع أداة تحميل التشغيل للمرحلة الأولى على فلاش NOR وتسليمه إليه. نظرًا لأنه يعيش في السيليكون، فإن BROM هو أيضًا المسار غير المبني: الضغط على زر FDL أثناء الضغط على RST يجبر SoC على العودة إلى وضع تنزيل BROM، حيث يتحدث بروتوكول USB ويقبل البرامج الثابتة الجديدة بغض النظر عن الحالة التي يوجد بها NOR flash.
يقوم BROM بتحميل U-Boot SPL (محمل البرنامج الثانوي) من فلاش NOR إلى ذاكرة SRAM الموجودة على الشريحة. في هذه المرحلة، لم يعد DRAM موجودًا بعد - لم تتم تهيئة LPDDR5.
SPL هو الحد الأدنى حسب التصميم. يقوم بتهيئة DRAM، ثم تحميل المرحلة التالية (OpenSBI) من NOR flash إلى ذاكرة DRAM التي تمت تهيئتها حديثًا، والانتقال إليها. يُطلق على الملف الثنائي الموجود في التخطيط الوامض اسم FSBL.bin (محمل تمهيد المرحلة الأولى) وهو اسم آخر لنفس الشيء. قسم NOR يسمى fsbl .