ในปัจจุบันการใช้งานระบบปฎิบัติการ Linux ดิสโทรต่างๆ เช่น Ubuntu, Debain, Suse, fedora เป็นต้นจะประกอบไปด้วยแกนกลางควบคุมการทำงานเรียกว่า Linux kernel วันนี้เราจะมาทำความรู้จักกับ Linux kernel 3.7 และฟีเจอร์ที่ส่งผลต่อวงการ Embedded System อย่างมากในโพรเซสการพัฒนา Linux kernel ที่เรียกว่า ARM platform multiple support
<img class="aligncenter" alt="" src="http://3 click here for info.bp.blogspot.com/-y2Xt40M4FYI/UH79_KzmacI/AAAAAAAABsE/Ci8DBv8sgT4/s1600/1.jpg” width=”468″ height=”279″ />
ARM platform multiple support คืออะไรโดนปกติเวลาเราโหลดระบบปฎิบัติการ Linux ดิสโทรต่างๆมาใช้ติดตั้งบนคอมพิวเตอร์สถาปัตยกรรม x86 ซึ่งก็คือคอมพิวเตอร์ปกติของเรา ไม่ว่าจะเป็น INTEL core2duo, i5, i7, AMD ในเมนบอร์ดที่ต่างกันและฮาร์ดแวร์ที่ต่างกันเช่น chipset, ram, GPU เราจะพบว่าเราสามารถติดตั้งในเครื่องคอมพิวเตอร์ต่างๆได้เลยจากไฟล์เดียวกันเนื่องจาก kernel สามารถรู้ข้อมูลนั้นจากการถามฮาร์ดแวร์และ boot ได้ แต่สถานการณ์แบบนั้นไม่สามารถทำได้กับ CPU ตระกูล ARM เช่นเวลาติดตั้งระหว่าง ARM Cortex-A8 หรือ Cortex-A9 จะไม่สามารถใช้ไฟล์เดียวกันได้
แล้วโพรเซสปกติของ ARM ละทั่วไปติดตั้งกันอย่างไร ?
โดยปกติ kernel บน ARM จะใช้วิธีการสร้าง Board support file เช่น mini2440 ก็จะมีไฟล์ของตัวเอง, pandaboard, beaglebone หรือแม้แต่สมาร์ทโฟนรุ่นใหม่ๆ ที่จำเป็นต้องสร้าง Board support file ขึ้นมาให้กับฮาร์ดแวร์นั้นๆ โดยจะใช้ภาษา C ในการสร้าง
แล้ว Board support file ที่ว่ามันจะต้องประกอบไปด้วยอะไรบ้างละมันถึงจะทำงานได้
– ให้คำจำกัดความของ system-specific และ setup code ต่างๆ ให้ครบถ้วน
– กำหนดรายละเอียดของฮาร์ดแวร์ที่ต่อพ่วงเช่น GPIO, UART, I2C, ETHERNET, LCD ว่าอยู่ที่ขาไหนของ SOC
– สร้างชุดคำสั่งจำเพาะ CPU นั้นๆ โดยส่วนนี้จะถูกส่งจาก boot loader ไปที่ kernel โดยจะเป็นตัวเลขต่างๆ จะเป็นการสร้างรายละเอียดชุดคำสั่งของฮาร์ดแวร์สำหรับ kernel ในการ boot
โดยปกติในปัจจุบันก็เป็นไปได้ที่จะสร้าง kernel เพียงไฟล์เดียวที่จะทำงานได้ในหลายๆ ฮาร์ดแวร์จากผู้ผลิตเดียวกัน ใน platform เดียวกันแต่ยังเป็นไปไม่ได้สำหรับการใช้ kernel ตัวเดียวกันเพื่อข้ามระหว่าง platform
แล้ว kernel 3.7 ละมันเกิดมาเพื่อแก้ปัญหาตรงนี้ โดยการเพิ่มระบบ ARM multiple support เข้าไปช่วยให้สามารถใช้ kernel เดียวกันทำงานระหว่าง platform ได้ ถึงตอนนี้จะยังมีปัญหาและข้อจำกัดอยู่เช่นการซัพพอร์ต legacy CPU แต่ก็เป็นการเริ่มต้นที่ดีสำหรับการสร้าง kernel ในยุคสมัยใหม่
แล้วผลกระทบต่อวงการ Embedded system ละ
– อย่างแรกเกิดข้อดีแน่นอน เรื่องที่ดิสโทรต่างๆ จะสามารถซัพพอร์ต ARM CPU ต่างๆ โดยผู้ใช้โหลด Image ตัวเดียวกันแล้วลงบน ARM เครื่องไหนก็ได้
– นักพัฒนา Embedded system จะสะดวกมากขึ้นในการควบคุม image ไฟล์เมื่อมีการอัพเกรดฮาร์ดแวร์โดยเปลี่ยนแค่ CPU และการอัพเดตเฟริมแวร์ทำได้ง่ายขึ้น
– สมาร์ทโฟนอาจจะออกซอฟแวร์เร็วขึ้นเช่น Android เนื่องจาก kernel ใช้เวลาในการทำน้อยลอง