Trong bài này mình sẽ hướng dẫn anh em build Yocto Linux tích hợp Qt5 cho Raspberry Pi3 và chạy demo application của Qt trên board. Mục tiêu của bài này là để anh em biết cách sử dụng Yocto build ra Linux image cho target board, phục vụ cho mục đích học tập, demo, showcase.
Cài đặt môi trường
Nên build trên Ubuntu 16.04 64 bit (máy thật hay máy ảo đều được – đã test build OK). Cài dependencies cho Yocto
1 2 |
$ sudo apt-get install gawk curl git-core git-lfs diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm gperf bison gcc-multilib \ g++-multilib repo |
1 2 |
$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash $ sudo apt-get install git-lfs |
Set Up Yocto Build
Sử dụng repo tool để khởi tạo môi trường build cho Yocto, thay BuildDir bằng đường dẫn đến folder bạn muốn dùng để lưu source và chạy build trên đó →
1 2 3 |
$ cd <BuildDir> $ repo init -u git://code.qt.io/yocto/boot2qt-manifest -m sumo $ repo sync |
1 2 |
$ export MACHINE=raspberrypi3 $ source ./setup-environment.sh |
Dưới đây là list các hardware platform mà bạn có thể build Yocto Linux tích hợp Qt5 để chạy trên đó, nếu muốn build cho plarform khác thì có thể thay raspberrypi3 bằng value tương ứng.
Build Image
1 |
$ bitbake b2qt-embedded-qt5-image |
Giờ anh em có thể đi chơi, uống cafe đợi máy nó build thôi. Thời gian build có thể vài giờ đồng hồ đến cả ngày tùy vào cấu hình máy.
Sau khi build xong ta sẽ có output image ở đường dẫn <BuildDir>/build-raspberrypi3/tmp/deploy/images/raspberrypi3/b2qt-embedded-qt5-image-raspberrypi3-<YYYYMMDDhhmmss>.7z (trong đó YYYYMMDDhhmmss là ngày giờ build ra image). Ví dụ:
/home/tuanpm/raspberry_pi3/build-raspberrypi3/tmp/deploy/images/raspberrypi3/b2qt-embedded-qt5-image-raspberrypi3-20200218092031.7zUnzip file này ra ta sẽ có file b2qt-embedded-qt5-image-raspberrypi3.img cỡ khoảng 1.6 Gb. Ta flash file này vào microSD card.
Sau khi cắm microSD card vào máy Ubuntu thì dùng tool balenaEtcher (download tại đây) để flash image vào thẻ. Tool này rất dễ sử dụng, mở tool ra phát hiểu luôn dùng như thế nào.
Chạy board
- Rút thẻ ra cắm vào board
- Connect board với màn hình bằng cable HDMI
- Cắm nguồn khởi động board
Đây là application demo của Qt đã được config sẵn trong image, sau khi boot xong application này sẽ auto được chạy lên. Anh em có thể kết nối vào board qua ssh hoặc dùng serial, tắt app này đi, copy app tự mình phát triển và chạy app đó lên. Nhưng để có thể phát triển app chạy trên board chúng ta cần có toolchain.
Build toolchain
Nếu chưa hiểu build toolchain để làm gì thì mời anh em đọc bài Toolchain trong Embeded Linux
1 |
$ bitbake meta-toolchain-b2qt-embedded-qt5-sdk |
Sau khi build success, toolchain sẽ có toolchain nằm ở đây <BuildDir>/build-raspberrypi3/tmp/deploy/sdk/b2qt-x86_64-meta-toolchain-b2qt-embedded-qt5-sdk-raspberrypi3.sh
Muốn phát triển application để chạy trên môi trường board ở trên thì cần chạy script b2qt-x86_64-meta-toolchain-b2qt-embedded-qt5-sdk-raspberrypi3.sh để cài toolchain lên máy và dùng toolchain đó để build application.
— Phạm Minh Tuấn (Shun) —