05 January 2017

มาลอง Android Things ด้วยบอร์ด NXP Pico i.MX6UL กัน!! [ติดตั้งใช้งาน]

Updated on

        หลังจากที่ได้บอร์ดมานมนานจาก GDE Summit จนกระทั่ง Android Things ได้เปิดตัวอย่างเป็นทางการก็ผ่านพ้นมาพักใหญ่ๆแล้ว ในที่สุดก็มีเวลาเล่นซะที เลยขอหยิบบทความเริ่มต้นสำหรับบอร์ดตัวนี้ไว้เสียหน่อยดีกว่า

        บอร์ดที่เจ้าของได้มาลองเล่น Android Things เป็นบอร์ด Pico i.MX6UL ของ NXP ซึ่งเป็นหนึ่งในบอร์ดที่สามารถลอง Android Things (Preview) ได้ในตอนนี้ ซึ่งจะมีอยู่ด้วยกันทั้งหมด 3 บอร์ดคือ Raspberry Pi 3 (ย้ำว่าต้อง 3 นะจ๊ะ), บอร์ด Intel Edison และบอร์ด Pico ของ NXP ที่เจ้าของบล็อกได้มานั่นเอง

รู้จักกับบอร์ด NXP Pico i.MX6UL


        NXP Pico i.MX6UL เป็นบอร์ดในตระกูล i.MX6UL ที่ทำออกมาเพื่อใช้งานกับ Brillo มาตั้งแต่แรก จนตอนหลังทาง Google ก็ได้ยกเลิก Brillo เพราะข้อจำกัดหลายๆอย่างแล้วมาพัฒนาเป็น Android Things ต่อ บอร์ดดังกล่าวก็ยังคงเป็นบอร์ดที่รองรับกับ Android Things อยู่ โดยทำงานด้วยหน่วยประมวลผล Freescale i.MX6 UltraLite (ARM Cortext-A7), หน่วยความจำข้อมูล (RAM) ให้มา 512MB (DDR3L), ส่วนหน่วยความจำโปรแกรม (ROM) เป็น EMMC ความจุ 4GB (ไม่ได้ใช้เป็น SD Card เหมือนบอร์ด RPi 3), มีชิป Broadcomm ที่รองรับ Wifi และ Bluetooth 4.1 และมีช่องต่อ Ethernet ด้วยเช่นกัน, มีแจ๊คต่อสำหรับลำโพงและไมค์, มีช่อง USB ให้หนึ่งพอร์ตสำหรับต่ออุปกรณ์ต่างๆ แต่ช่อง USB Type-C ที่เป็นได้ทั้ง OTG และเชื่อมต่อกับคอมพิวเตอร์ (เป็นบอร์ดแรกที่เคยเจอเลยล่ะ) ส่วนไฟเลี้ยงจะจ่ายผ่านช่องจ่ายไฟเลี้ยงที่ 5V (อะแดปเตอร์ที่ให้มาเป็น 5V2A)


         ส่วน I/O ก็รองรับครอบคลุมทั้งหมดไม่ว่าจะ GPIO, I2C, I2S, SDIO, SPI, UART, CAN, PWM และยังมีจุดต่อที่รองรับกับเซ็นเซอร์ของ Intel Edison ได้

        ต่อไปจะขอเรียกบอร์ดตัวนี้สั้นๆว่า Pico นะจ๊ะ

วิธี Factory Reset ให้กับบอร์ด 

        ผู้ที่หลงเข้ามาอ่านอาจจะสงสัยว่า เอ้ย ทำไมมาถึงต้องพูดถึงเรื่อง Factory Reset ล่ะ? ขอเข้าเรื่องส่วนตัวก่อนละกันฮะ

        เรื่องมันมีอยู่ว่าที่ตอนได้บอร์ด Pico มาใหม่ๆก็ยังไม่ได้ข้อมูลในการลองอะไรกับ Android Things มากนัก ที่รู้ก็คือรายละเอียดเชิงเทคนิคของ Android Things และโค้ดบางส่วนมากกว่า จนกระทั่ง Android Things ได้ Official Annoucement ก็เลยดาวน์โหลด Preview Image ตัวล่าสุดมา Flash ใส่บอร์ดซะ

        ผลที่เกิดขึ้นก็คือระหว่าง Flash Image มีปัญหาทำให้บอร์ดไม่ทำงานต่อ ซึ่งมารู้ทีหลังว่าบอร์ด Pico ที่แจกให้ GDE นั้นมีบั๊กระหว่าง Flash Image (แต่ไม่ทันการแล้วล่ะ...) จน GDE ที่มีปัญหาเหมือนกันได้ติดต่อกับทีมพัฒนาและได้อธิบายวิธีแก้ปัญหามาให้ ซึ่งก็คือต้อง Factory Reset ก่อนแล้วค่อย Flash Image เข้าไปใหม่นั่นเอง

        ดังนั้นเผื่อว่าผู้ที่หลงเข้ามาอ่านคนไหนที่ใช้บอร์ด Pico เหมือนกันแล้วเกิดปัญหา ก็ให้ทำตามวิธีที่เจ้าของบล็อกใช้ได้เลยจ้า

        การทำ Factory Reset จะต้องทำผ่านโปรแกรมที่ชื่อว่า MfgTools ของทาง NXP เอง โดยใช้ Profile ของบอร์ดตัวนี้ในการ Reset ด้วย สามารถดาวน์โหลดได้จาก

        • MFG Tools [Google Drive]

        ก่อนจะเริ่มเปิดโปรแกรมตัวดังกล่าวขึ้นมา ให้ปรับ Jumper บนบอร์ดเพื่อเข้าสู่ Download Mode ก่อนดังภาพ


        แล้วทำการจ่ายไฟให้กับบอร์ดแล้วต่อสาย USB Type-C เข้ากับเครื่องคอมพิวเตอร์

        จากนั้นเข้าไปในโฟลเดอร์ของ MfgTools ที่ได้ดาวน์โหลดมา ซึ่งโปรแกรมดังกล่าวรองรับเฉพาะ Windows และ Linux เท่านั้น (ชาว macOS ก็เศร้าใจไป) ให้กดเปิดโปรแกรมจากไฟล์ที่ชื่อว่า mfgtool2-brillo-mx6ul-pico-emmc-firmware.vbs



         จะเห็นว่าโปรแกรมสามารถ Detected อุปกรณ์ได้ (ถ้าไม่ได้ ให้ลองตรวจสอบการทำงานของบอร์ดใหม่)

        ให้กดปุ่ม Start แล้วรอซักพักจนกว่าจะขึ้นว่า Done



        จากนั้นให้กดปุ่ม Stop แล้วปิดโปรแกรมได้เลยจ้า เท่านี้บอร์ด Pico ก็ Factory Reset เรียบร้อยแล้ว

        ต่อไปก็เป็นขั้นตอนของการ Flash Image ของ Android Things เข้าไปที่บอร์ด Pico แล้วล่ะ

การ Flash Image ของ Android Things บนบอร์ด

        ทีนี้กลับมาที่ขั้นตอนการ Flash Image ของ Android Things กันต่อ ซึ่งเป็นวิธีเดียวกับการ Flash Image ของ Android Device ทั่วไปเลยจ้า ดังนั้นสิ่งที่ต้องมือก็คือ ADB หรือ Fastboot ซึ่ง Android Dev ส่วนใหญ่มีอยู่แล้วล่ะ เพราะมันอยู่ใน Android SDK ที่ติดตั้งไว้ใช้งานกับ Android Studio นั่นเอง โดยจะอยู่ใน <sdk_path>/platform-tools

เตรียม Preview Image

        Preview Image ของ Android Things สามารถดาวน์โหลดได้จาก System Image Downloads [Android Things]

        เมื่อลองเปิดไฟล์ดังกล่าวก็จะเห็นกับไฟล์ต่างๆที่ใช้ในการ Flash Image


เข้า Bootloader Mode


        ก่อนจะเริ่มทำการ Flash Image ให้เปลี่ยน Jumper มาอยู่ใน Boot Mode ก่อน จากนั้นต่อสายเข้ากับคอมพิวเตอร์แล้วใช้คำสั่ง

fastboot devices

        เพื่อดูว่าบอร์ดเข้า Bootloader Mode (Fastboot) อยู่หรือป่าว ถ้าใช่ ก็จะมีชื่ออุปกรณ์แสดงให้เห็น


        เพิ่มเติม - หลังจาก Factory Reset จะทำให้บอร์ด Pico เข้าสู่ Bootloader Mode ทันที ในกรณีที่บอร์ดใช้งานปกติ แล้วต้องการเข้า Bootloader Mode ให้ใช้คำสั่ง ADB ดังนี้

adb reboot bootloader

        แล้วรอซักพักเพื่อให้เข้าสู่ Bootloader Mode

Unlock Bootloader

        อย่างที่รู้กันว่าถ้าจะ Flash Image เข้าไปในอุปกรณ์แอนดรอยด์ จะต้องปลดล็อค Bootloader ก่อน ซึ่ง Android Things ก็เป็นเช่นนั้นเหมือนกัน โดยใช้คำสั่ง

fastboot oem unlock

เริ่มทำการ Flash Image

        ในกรณีที่ใช้ macOS หรือ Linux จะมีไฟล์ iot-flashall-imx6ul.sh ให้รัน Script ได้เลย แต่ถ้าเป็น Windows ก็ต้องคอย Flash ทีละไฟล์เอง ด้วยคำสั่งดังนี้

fastboot flash bootloader u-boot.imx
fastboot flash gpt partition-table.img
fastboot flash boot_a boot.img
fastboot flash boot_b boot.img
fastboot flash system_a system.img
fastboot flash system_b system.img
fastboot flash userdata userdata.img
fastboot set_active _a
fastboot flash gapps_a gapps.img
fastboot flash gapps_b gapps.img
fastboot flash oem_a oem.img
fastboot flash oem_b oem.img
fastboot reboot


        หลังจาก Flash Image เสร็จแล้วทำการ Reboot เมื่อบอร์ดกลับมาทำงานอีกครั้งก็จะสามารถใช้งานได้เลย

        เพื่อความแน่ใจ ลองใช้คำสั่ง adb devices เพื่อดูว่าบอร์ดสามารถเชื่อมต่อผ่าน ADB ได้ปกติหรือไม่


        หรือดูจากใน Android Studio ก็ได้เหมือนกันนะ


        เท่านี้บอร์ด Pico ของเจ้าของบล็อกก็ฟื้นคืนชีพมาทำงานได้อีกครั้งแล้ววววว ในที่สุดก็ได้เริ่มลองเล่น Android Things เสียที (ฮือออออ) แต่ว่า Android Things มันเป็นยังไง ดีมั้ย แย่หรือป่าว ไว้บทความหน้าจะมาเล่าสู่กันฟังนะครับ