Host & Target

ขั้นตอนการเตรียมระบบสำหรับพัฒนาบน Embedded Linux

ในการเตรียมระบบนั้นจะมีองค์ประกอบสำคัญที่ต้องเตรียมไว้สำหรับติดตั้งลงไปในเครื่อง Host และบอร์ด Target ภายใต้ Embedded Linux ซึ่งประกอบไปด้วย

  1. การเตรียมและติดตั้งชุดเครื่องมือ Cross-compiling toolchains เพื่อไว้สำหรับติดตั้งไลบรารีที่เกี่ยวข้อง สำหรับการคอมไพล์โค้ดต่างๆที่จะถูกใช้บนบอร์ดสมองกลฝังตัว

  2. การเตรียมและติดตั้ง Bootloader เข้าไปในบอร์ดสมองกลฝังตัวเพื่อให้ถูกเรียกใช้งานในครั้งแรก ตั้งแต่เริ่มจ่ายไฟเลี้ยงให้บอร์ด โดยตัว bootloader จะโหลดค่าพื้นฐานต่างๆที่ต้องเริ่มต้นสถานะการทำงานให้กับฮาร์ดแวร์ภายในบอร์ดแล้วจึงจะโหลดเคอร์เนลเพื่อเริ่มเข้าสู่ระบบปฏิบัติการลีนุกซ์แบบฝังตัว เป็นลำดับต่อไป

  3. ลีนุกซ์เคอร์เนล (Linux Kernel) ซึ่งเป็นเคอร์เนลที่ถูกตั้งค่าและปรับแต่งให้เหมาะสมและสามารถทำงานเข้ากันได้กับสถาปัตยกรรมภายในบอร์ดสมองกลฝังตัวโดยได้บรรจุตัวจัดการโปรเซส ตัวจัดการหน่วยความจำ ตัวจัดการการเชื่อมต่อระบบเครือข่าย device drivers และบริการต่างๆสำหรับโปรแกรมประยุกต์ที่ต้องการเรียกใช้งาน

  4. Filesystem หรืออาจใช้คำว่า Root file system ซึ่งภายในไฟล์นี้จะบรรจุโปรแกรมระบบ โปรแกรมประยุกต์ที่สำคัญต่างๆและโปรแกรมที่ถูกพัฒนาขึ้นมาเอง นอกจากนั้นก็ยังมีไลบรารีและคำสั่งสคริปท์ที่เตรียมไว้สำหรับการเรียกใช้งานจากโปรแกรมประยุกต์ภายในระบบปฏิบัติการลีนุกซ์แบบฝังตัวบนบอร์ดสมองกล

การเตรียมระบบและการเชื่อมต่อระหว่างเครื่อง Host และ บอร์ด Target

การเตรียมระบบสำหรับการพัฒนาโปรแกรมหรือระบบปฏิบัติการสำหรับระบบสมองกลฝังตัวนั้น จะต้องมีการเตรียมระบบฮาร์ดแวร์ ซึ่งประกอบไปด้วยฮาร์ดแวร์ 2 ส่วนหลักๆได้แก่

  1. เครื่องคอมพิวเตอร์สำหรับพัฒนาหรือเรียกว่าเครื่อง “Host” (ซึ่งก็เป็นเครื่องคอมพิวเตอร์ส่วนบุคคลทั่วไป)

  2. บอร์ดสมองกลฝังตัวหรือเรียกว่าบอร์ด “Target

รูปแบบการเชื่อมต่อกันระหว่างเครื่อง Host และบอร์ด Target นั้นมีอย่างน้อย 3 แบบคือ

  • สายอนุกรม RS-232 หรือ USB-to-Serial (Serial Cable) เพื่อให้นักพัฒนาสามารถดูรายละเอียดการบูทของบอร์ด ในขณะที่เริ่มตรวจสอบค่าในระดับ low level การโหลดตัว Kernel และการโหลดตัว root file system เรียกหน้าจอแสดงผลนี้ว่า “Console”

  • สาย LAN (Ethernet LAN Cable) เพื่อให้นักพัฒนาสามารถวาง Kernel Image และ Root file system ไว้บนเครื่องภายในระบบเครือข่าย ผ่านโปรโตคอล bootp, tftp หรือ NFS เป็นต้น ในกรณีที่บูทเข้าสู่ระบบปฏิบัติการลีนุกซ์แบบฝังตัว (Embedded Linux) ภายในบอร์ดได้แล้ว ถ้าไม่ต้องการดูผ่านหน้าจอ Console ก็สามารถเข้้าสู่ระบบแบบระยะไกล (Remote Login) ผ่านโปรแกรม telnet หรือ ssh ได้เช่นกัน

  • สาย JTAG (JTAG Cable) ใช้ในกรณีที่นักพัฒนาต้องการดีบักการทำงานของโปรแกรม ค่ารีจิสเตอร์ และรายละเอียดภายในหน่วยความจำของบอร์ดสมองกล เป็นต้น

จากรูปด้านบนแสดงการเชื่อมต่อระหว่างเครื่อง Host และบอร์ด Target โดยภายในเครื่อง Host จะมีระบบปฏิบัติการลีนุกซ์ (เช่น Ubuntu, Red Hat, Fedora, SuSE หรือ Debian เป็นต้น) และเครื่องมือหรือโปร แกรมอัตถประโยชน์ (เช่น Serial Console Software, Cross Toolchain, Network sharing Software) สำหรับการพัฒนาระบบสมองกลฝังตัวอยู่ภายในโดยถูกเชื่อมต่อผ่านสายอนุกรม (RS-232 Cable) เรียบร้อยแล้ว ซึ่งในปัจจุบันเครื่องคอมพิวเตอร์หรือโน็ตบุ๊คส่วนใหญ่จะไม่มีพอร์ตอนุกรมให้อีกแล้ว แต่จะมีการเตรียมพอร์ต USB มาให้แทน ดังนั้นนักพัฒนาจะต้องจัดหาสาย USB-to-Serial มาเพิ่มเติมเพื่อให้สามารถต่อเข้ากับบอร์ด Target รวมทั้งจะต้องเชื่อมต่อระบบเครือข่ายภายในเข้ากับอุปกรณ์เครือข่ายเช่น Ethernet Hub หรือ Switch Hub

ก่อนเริ่มบูทบอร์ดสมองกลฝังตัวและเห็นการแสดงผลต่างๆผ่านหน้า Serial Console บนเครื่อง Host ได้นั้นนักพัฒนาจะต้องมีโปรแกรม Serial Console ตัวอย่างเช่นโปรแกรม Minicom, Picocom, Gtkterm, Putty, Cutecom ที่สามารถติดต่อกับพอร์ตอนุกรม (Serial Port) หรือพอร์ต USB โดยระบบปฏิบัติการลีนุกซ์จะมองเห็นเป็น /dev/ttySx หรือ /dev/ttyUSBx ยกตัวอย่างการใช้โปรแกรม minicom

$ minicom -b 115200 /dev/ttyUSB0

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University