Z2PCBA@gmail.com +66-897725026
สร้างแอพลิเคชันสำหรับ PetaLinux บน ZYNQ
Tuesday June 4th, 2019
0

การสร้างแอพลิเคชันเพื่อใช้งานเองสำหรับ PetaLinux บน ZYNQ

สำหรับบทความก่อนหน้านี้ เราได้อธิบายถึงวิธีการติดตั้ง PetaLinux บน ZYNQ ไปแล้ว ( วิธีการติดตั้ง PetaLinux บน ZYNQ ตอนที่ 1 และ วิธีติดตั้ง PetaLinux บน ZYNQ ตอนที่ 2) ในบทความนี้จะเป็นบทความสั้นๆ ที่อธิบายถึงการสร้างแอพลิเคชันสำหรับใช้งานเองไปใส่ไว้ใน root file system บน Petalinux ซึ่งเราได้ทำการติดตั้งไว้ในบทความก่อนหน้ากันนะครับ

เราจะมาเริ่มต้นจากการสร้างแอพลิเคชันง่ายๆ อย่างเช่น การปรินต์ข้อความ “Hello World” เพื่อให้เห็นขั้นตอนทั้งหมดคร่าวๆในการสร้างแอพลิเคชันกันนะครับ ในส่วนของแอพลิเคชันที่ซับซ้อนขึ้น ผู้อ่านสามารถเลือกใช้ภาษาที่ถนัดและเพิ่มคำสั่งต่างๆ เข้าไปในตัวโปรแกรมได้เพิ่มเติมตามจุดประสงค์การใช้งานครับ

  1. ทำความรู้จักกับคำสั่งในการสร้างแอพลิเคชันใช้งานเอง(Create and Adding Custom Applications)

    คำสั่งเพื่อสร้างแอพลิเคชันใหม่จากภายในโปรเจค PetaLinux โดยใช้คำสั่ง petalinux-create โดยโครงสร้างคำสั่งมีดังนี้
    petalinux-create -t apps [–template <TYPE>] –name <user-application-name>

    ตัวแปร(argument) ค่าของข้อมูล คำอธิบาย
    -t apps เป็นการระบุว่าต้องการสร้างแอพลิเคชัน
    –template <TYPE>
    (c, c++, autoconf)
    ตัวแปรนี้จะใส่หรือไม่ใส่ก็ได้ โดยถ้าไม่ระบุค่านั้นค่าตั้งต้น(default)จะเป็น c ถ้าใส่เพิ่มให้คำสั่งจะเป็นการระบุว่าต้องการใช้งานแอพลิเคชันในรูปแบบต่างๆดังนี้

    • รูปแบบของการทำงานด้วยคำสั่งภาษา C, C++ ด้วยการระบุค่า c, c++
    • รูปแบบของ autoconf ด้วยการระบุค่า autoconf
    –name <user-application-name> เป็นการระบุชื่อแอพลิเคชันที่ต้องการสร้าง

    เรายังสามารถใช้คำสั่ง petalinux-create ในรูปแบบคล้ายกับการสร้างแอพลิเคชันในข้างต้น แต่ใช้เพื่อทำการการติดตั้งไลบรารี่อื่นๆที่ถูกคอมไพล์(compile) ไว้ก่อนแล้วจากภายนอก PetaLinux มาติดตั้งให้กับ Rootfs ของ PetaLinux ด้วยการระบุตัวแปร –template ด้วยค่า install ดังนี้
    petalinux-create -t apps –template install –name mylib

  2. รันคำสั่งสำหรับสร้างแอพลิเคชัน(Create and Adding Custom Applications)

    สร้างแอพลิเคชันใหม่จากภายในโปรเจค PetaLinux โดยตั้งชื่อแอพลิเคชันนี้ว่า “myapp” และรูปแบบของแอพลิเคชันเป็นการระบุการทำงานต่างๆ ด้วยคำสั่งในภาษา C
    รายละเอียดการรันคำสั่งสำหรับสร้างแอพลิเคชัน

    # เข้าไปในโฟลเดอร์ที่เป็นที่ตั้งของ project PetaLinux
    cd <plnx-proj-root>
    
    # รันคำสั่งสำหรับสร้างแอพลิเคชันชื่อ "myapp"
    petalinux-create -t apps --template c --name myapp
    
    

    โดยเมื่อสร้างโปรเจคใหม่เสร็จเรียบร้อยแล้ว โครงสร้างภายในแอพลิเคชันจะมีไฟล์(files) ที่เป็นตัวโค้ดสำหรับระบุการทำงานของแอพลิเคชันของเรานะครับ โดยในตัวอย่างจะเป็น การสร้างไฟล์นามสกุล “.C” ซึ่งจะเป็นไฟล์ที่สำหรับบรรจุคำสั่งในภาษา C นะครับ โดยในแอพลิเคชันตัวอย่างนี้ก็จะทำงานด้วยคำสั่งที่เป็นภาษานี้ครับ

    นอกจากจะสร้างไฟล์นามสกุล “.C” ซึ่งทำการโปรแกรมด้วยภาษา C เรายังสามารถสร้างไฟล์ชนิดอื่นๆ อีกได้เช่น C++, autoconf ไฟล์ก็ได้ครับ โดยเปลี่ยนให้เปลี่ยนข้อมูลที่ใส่เข้าไปในตัวแปร template ครับ(–template c โดยเปลี่ยนจาก c เป็นรูปแบบแอพลิเคชันอื่นๆ ได้ครับ)
    ตัวอย่างคำสั่งสำหรับสร้างแอพลิเคชันที่ระบุการทำงานด้วยภาษา c++
    petalinux-create -t apps –template c++ –name myapp

    ตัวอย่างคำสั่งสำหรับสร้างแอพลิเคชันในรูปแบบ autoconf
    petalinux-create -t apps –template autoconf –name myautoconf

  3. ตำแหน่งของไฟล์(Files Location) ในแอพลิเคชัน

    เมื่อรันคำสั่งสร้างเสร็จแอพลิเคชันของเราเสร็จเรียบร้อย แอพลิเคชัน “myapp” ของเรานั้นจะถูกสร้างไว้ตรงตำแหน่งดังข้างล่างนี้ครับ
    <plnx-proj-root>/project-spec/meta-user/recipes-apps/myapp

    ตำแหน่งของแอพลิเคชันที่ถูกสร้างใน PetaLinux

    ข้อมูลเกี่ยวกับไฟล์ต่างภายในแอพลิเคชันที่ให้มากับ template

    ไฟล์ รายละเอียด
    <plnx-proj-root>/project-spec/meta-user/recipes-core/images/petalinux-image-full.bbappend ไฟล์สำหรับการตั้งค่าต่างๆ ให้ template ที่ถูกสร้างขึ้นมานี้ ซึ่งกำหนดรายละเอียดต่างๆสำหรับขั้นตอนที่ใช้ เพื่อรวมแอพลิเคชันนี้เข้ากับ PetaLinux rootfs menu configuration และสามารถเลือกหรือไม่ทำการเลือกแอพลิเคชันต่างๆ เข้าไปใน rootfs ที่กำหนดได้อีกด้วย
    Makefile เป็นไฟล์ที่ระบุรายละเอียดต่างๆ เพื่อการคอมไพล์แอพลิเคชัน โดยไฟล์นี้จะมีข้อมูลรายละเอียดของไฟล์และข้อมูลที่จะใช้เพื่อการ build และ install แอพลิเคชันไปยัง root file system. หากมีการเพิ่มไฟล์ที่บรรจุคำสั่งระบุการทำงานเพิ่มขึ้นมาในแอพลิเคชัน ก็จำเป็นต้องแก้ไขไฟล์นี้ให้มีข้อมูลของไฟล์ใหม่นั้นด้วยครับ
    README ไฟล์สำหรับระบุเข้อมูลให้ใช้สำหรับอ่าน ซึ่งอาจจะบอกวิธีการ build แอพลิเคชันและรายละเอียดของแอพลิเคชันนี้
    myapp.c เมื่อเลือก template เป็นภาษา c
    myapp.cpp เมื่อเลือก template เป็นภาษา c++
    ไฟล์สำหรับระบุคำสั่งเพื่อกำหนดการทำงานสำหรับแอพลิเคชัน

    โดยในตัวอย่างนี้เราเลือก template เป็นภาษา c ไฟล์ซึ่งบรรจุคำสั่งของแอพลิเคชันนี้จะอยู่ในโฟลเดอร์ files ซึ่งอยู่ภายในแอพลิชัน “myapp” อีกทีนะครับซึ่งไฟล์ที่บรรจุคำสั่งของแอพลิเคชันที่ถูกสร้างมาพร้อมกับตอนสร้าง template ก็คือ “myapp.c” ตามรายละเอียดในตารางข้างต้น ใครอยากเปลี่ยนแปลงคำสั่งที่ระบุการทำงานเป็นอย่างไรก็ตามสะดวกเลยครับ โดยคำสั่งเริ่มต้น(Default) ที่ให้มากับต้อนสร้างแอพลิเคชันนั้นจะเป็นการปรินท์ค่า “Hello World!” ครับ
    ตัวอย่างไฟล์ “myapp.c”

    /** ตัวอย่างไฟล์ myapp.c ซึ่งถูกสร้างขึ้นสำหรับแสดงข้อความ "Hello World!" 
    โดยตำแหน่งของไฟล์ดังกล่าวจะอยู่ที่ 
    <plnx-proj-root>/project-spec/meta-user/recipes-apps/myapp/files/myapp.c **/
    #include <stdio.h>
    #include <myapp.h>
    
    int main(int argc, char **argv)
    {
        printf("Hello World!\n");
        return 0;
    }
    
    

    ส่วนรายละเอียดเรื่องการเขียนโค้ดโดยใช้ภาษา C ผมคงไม่ลงรายละเอียดนะครับ เพราะคิดว่าหลายๆคนสามารถที่จะเขียนกันได้อยู่บ้างแล้วหรืออาจจะถนัดในการเขียนภาษา C++ มากกว่าก็สามารถเลือกได้ครับตามรายละเอียดที่ระบุในข้างต้น ถ้าใครยังเขียนไม่ได้ก็สามารถศึกษาเพิ่มเติมเองได้ครับในส่วนนี้

  4. ทำการเพิ่มแอพลิเคชันเข้าไปใน Rootfs(Add Application)

    ในส่วนก่อนหน้านั้น จะเป็นการสร้างไฟล์สำหรับแอพลิเคชันขึ้นมาครับ แต่ยังไมได้รวมแอพลิเคชันเข้าไปใน Rootfs ดังนั้นขั้นตอนนี้จะเป็นการเพิ่มแอพลิเคชัน(add application) เข้าไปใน Rootfs นะครับ โดยให้ run คำสั่งดังนี้

    # รันคำสั่งเพื่อเพิ่มแอพลิเคชันเข้าไปใน Rootfs
    petalinux-config –c rootfs
    
    

    จะมีหน้าจอขึ้นมาให้ปรับแต่งข้อมูลนะครับ ให้ไปที่ “apps” แล้วเลือกแอพลิเคชันตามชื่อเราสร้างไว้นะครับ(ในตัวอย่างนี้ก็คือ “myapp”) จากนั้นทำการเพิ่มแอพลิเคชันใหม่ที่เราสร้างไว้ให้ rootfs ได้เลย โดยค่าตั้งต้น(default) จะไม่ได้ Add เอาไว้ให้นะครับ (กด “Y” สำหรับเพิ่มแอพลิเคชันครับ)

    เพิ่มแอพลิเคชันใหม่ที่ทำการสร้างเข้าไปใน Rootfs โดยเริ่มจากเลือก apps

    เพิ่มแอพลิเคชันใหม่ที่ทำการสร้างเข้าไปใน Rootfs โดยเลือกชื่อแอพลิเคชันที่เราเพิ่งสร้าง

    จากนั้นก็สามารถทำการรันคำสั่ง Build ตามปกติ แล้วจึงทำการคัดลอก(copy)ข้อมูลใส่ SD card ได้เลยครับ

  5. การใช้งานแอพลิเคชัน(run application)

    เมื่อเข้า Rootfs ได้แล้วแอพลิเคชันจะอยู่ที่ “/usr/bin” นะครับ

    รันแอพลิเคชัน myapp

    เมื่อเข้าไปในโฟลเดอร์ “/usr/bin” แล้ว ก็ทำการใช้งานแอพลิเคชัน(Run application) โดยพิมพ์ชื่อแอพลิเคชันที่เราสร้างไว้ในข้างต้น ตามรูปด้านบนได้เลยครับ แอพลิเคชันก็จะรันคำสั่งที่เราระบุไว้ ซึ่งในแอพลิเคชันตัวอย่างนี้ก็จะปรินต์ข้อความ “Hello World!” ขึ้นมานะครับ เท่านี้ก็เรียบร้อยแล้วสำหรับการสร้างแอพลิชันใน PetaLinux

  6. คำสั่งสำหรับการ re-build แอพลิเคชัน(Rebuild Application)

    สำหรับการ build แอพลิเคชันแต่ละครั้ง ให้ใช้คำสั่งนี้นะครับ

    # คำสั่งสำหรับ re-build แอพลิเคชัน
    petalinux-build -c myapp
    
    
  7. คำสั่งสำหรับการติดตั้งแอพลิเคชันที่สร้างขึ้นเอง(install user application)

    สำหรับการติดตั้งแอพลิเคชันที่ทำการสร้างขึ้นเองนั้น ให้ใช้คำสั่งนี้ครับ จะเป็นการติดตั้งแอพลิเคชันเข้าไปใน rootfs

    # คำสั่งสำหรับติดตั้งแอพลิเคชันที่สร้างขึ้นเอง
    petalinux-build -c myapp -x do_install
    
    

ก็จบไปแล้วนะครับสำหรับวิธีการสร้าง Application บนท PetaLinux ถ้าถูกใจบทความนี้อย่าลืมกดช่วยกด like Facebook เพื่อเป็นกำลังใจสำหรับผู้เขียน ด้วยนะครับ

ศึกษารายละเอียดเพิ่มเติม: https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_1/ug1144-petalinux-tools-reference-guide.pdf


Leave a Reply