Orange Pi Zero ile IoT Lab Notları – Bölüm 2
Timesys ile Cross Platform Geliştirme Ortamının Kurulumu
- Timesys gömülü linux dağıtımı ve cross araçları hazırlamak için geliştirilmiş web/bulut tabanlı bir yapılandırma aracıdır. Offline benzerleri öncülleri arasında Buildroot sayılabilir. Timesys firma olarak Yocto projesini destekler. Yocto, Openembedded tabanlı gömülü linux dağıtımı geliştirme ekosistemidir. Biz şimdi bu bölümde Timesys kurulumu içinden cross toolchain ve Qt5 SDK ve runtime dosyalarını kullanacağımız bir çalışma yapıyoruz.
- https://linuxlink.timesys.com hesaplarımızı açalım ve login olalım
- https://linuxlink.timesys.com/boards/ sayfasının altında “Explore Boards” bölümünden dilediğimiz platformu seçelim. Biz burada geniş amaçlar için Raspberry Pi 2 platformunu tercih ediyoruz. “Minimal Starting Point” altında “Customize” butonuna tıklayalım. Örneğin Packages bölümünden “qt” ifadesi ile arama gerçekleştirelim ve “qt5” seçeneğini işaretleyelim. Bu menüden pekçok servis ve sdk kuruluma ekleyebilirsiniz. Son olarak “Save&Build” tıklayarak kurulumun hazırlanmasını bekleyin.
- Eğitim sırasında paylaştımız ve aynı zamanda timesys hesabınızda kurulum sayfasında “Build Output” bölümünden indirebileceğiniz “raspberrypi3-development-environment.sh” dosyasını “chmod +x rasp…sh” ile çalıştırılabilir hale getirin. Ardından “./rasp…..sh” ile dosyayı çalıştırın. Karşınıza gelen terminal ekrandaki kurulum sorularını default olarak bırakın ve kurulumu tamamlayın. Kurulan “$HOME/timesys/raspberrypi3” klasörünü inceleyin.
QtCreator IDE Kurulumu ve Yapılandırılması
sudo apt-get update && sudo apt-get install qtcreator
ile sisteminizde kararlı çalışacak QtCreator sürümünü kurmuş olursunuz.- QtCreator uygulamasını açın. “Tools->Options->Build&Run” menüsünde “Qt Versions->Add” butonuna tıklayın ve
$HOME/timesys/raspberrypi3/toolchain/bin/qmake.real
dosyasını gösterin. 64bit host ile 32bit target’a geliştirme yapabilmek için eğer yüklü değilse aşağıdaki paketleri kurun:
$> sudo apt-get install libstdc++6:i386
$> sudo apt-get install libc6:i386
$> sudo apt-get install zlib1g:i386 && sudo apt-get install zlib1g-dev:i386
- “Tools->Options->Build&Run” menüsünde Compilers->Add->GCC->Compiler Path->Browse ile “$HOME/timesys/raspberrypi3/toolchain/bin/armv7l-timesys-linux-gnueabihf-g++” dosyasını gösterin. Apply butonuna tıklayın.
- “Tools->Options->Devices->Add->Generic Linux Devices->Start Wizard” ile açılan formu OPi Zero boardunuza göre doldurun ve kaydedin.
- “Tools->Options->Build&Run->Debuggers->Add->Path->Browse” ile açılan browserda
$HOME/timesys/raspberrypi3/toolchain/bin/armv7l-timesys-linux-gnueabihf-gdb
dosyasını gösterin ve kaydedin. - “Tools->Options->Build&Run->Kits->Add” ile açılan formu aşağıdaki gibi doldurun Apply/OK butonuna tıklayın.
- Device type: Generic Linux Device Type
- Device: Yukarıda kaydettiğiniz OPi profili
- Compiler: Yukarıda kaydettiğiniz Timesys compiler
- Debugger: Yukarıda kaydettiğiniz Timesys gdb
- Qt Version: Yukarıda kaydettiğiniz qmake.real ile oluşan Qt profili
Qt Console Uygulamasını Gerçekleyelim
- Projemizi oluşturmak için File->NewFileorProject->Application->Qt Console Application seçelim Kit Selection içinden yalnızca son oluşturduğumuzu seçelim. Dilerseniz versiyon kontrol seçeneğini de ekleyebilirsiniz.
- Eğer
/dev
klasörü altındattyS1
vettyS2
UART aygıt dosyalarını göremiyorsanız Allwinner FEX yapısı hakkında bilgi sahibi olmanız gerekir (Bkz. https://tr.linkedin.com/pulse/allwinner-işlemci-tabanlı-makerboardlar-bölüm-2-murat-boyar)./boot/script.bin
dosyasını “bin2fex” komutu ile text olarak kaydedin ve aşağıdaki Sunxi sayfasında anlatıldığı şekilde UART etiketlerinde arayüzü etkin hale getirin ve “fex2bin” komutu ile yeni script.bin dosyası oluşturun ve /boot altına kopyalayın yada sembolik linkleyin. - Uart’a erişim için QSerial class’ını kullanacağız ancak önümüzde çözmemiz gereken br sorun var. Timesys Qt SDK içinde libQt5SerialPort.so kütüphanesi bulunmuyor. Host PC’mizde Timesys kurulumu içine libQt5SerialPort kütüphanesini manual olarak kuracağız. Bunun için ilgili paketleri https://packages.ubuntu.com/source/trusty/qtserialport-opensource-src linkten indirebilir ya da Orange Pi içinde aşağıdaki komutlarla paket dosyalarını indirip “scp *.deb <kullanıcı>@:” ile host cihazınıza çekebilirsiniz.
$> sudo apt-get download libqt5serialport5
$> sudo apt-get download libqt5serialport5-dev
$> sudo apt-get download libudev1
- İndirdiğimiz armhf mimarideki deb dosylarını Ubuntu Archive Manager ile açalım ve “data.tar.xz” dosyalarını görüntüleyelim ardından;
- libqt5serialport5….deb dosyası için
./usr/lib/arm-linux-gnueabihf/
içeriğini~/timesys/raspberrypi3/toolchain/lib
altına sürükleyip bırakalım
- libqt5serialport5-dev….deb dosyası için
./usr/include/arm-linux-gnueabihf/qt5/
içeriğini~/timesys/raspberrypi3/toolchain/include
altına sürükleyip bırakalım./usr/lib/arm-linux-gnueabihf/
içeriğiniqt5
klasörü hariç~/timesys/raspberrypi3/toolchain/lib
altına sürükleyip bırakalım./usr/lib/arm-linux-gnueabihf/qt5/
içeriğini~/timesys/raspberrypi3/toolchain/lib/qt/
altına sürükleyip bırakalım
- Libudev…deb için
./lib/arm-linux-gnueabihf/
içeriğini~/timesys/raspberrypi3/toolchain/lib
altına sürükleyip bırakalım.
- Şimdi QSerial ile derlenebilir bir ortam sağlamış olduk.
- Host bilgisayarınızda
git clone https://github.com/mboyar/opi0-training
ile gelen klasörler içindenqt-uart
altındaki pro uzantılı dosya ile örnek QtCreator projesini açabilirsiniz. - Derleme sonrası
scp
kullanarak veya QtCreator device ayarlarınız doğru ise IDE’deki Run butonu ile cihaza uygulamayı gönderebilir ve çalıştırabilirsiniz.
- libqt5serialport5….deb dosyası için
Opi0 için Qt5 Kurulumu
$HOME/timesys/raspberrypi3/rfs
altından rootfs.tar.gz dosyasınıscp rootfs.tar.gz <kullanıcı>@<IP>:<Host path>
ile kopyalayın.- Sıradaki adımlar OPi içinde yapılır:
$> tar -xvf /mnt/rootfs.tar ./usr/lib/
$> sudo cp --preserve=links -r usr/lib/libQt5* /usr/lib/
$> sudo cp --preserve=links -r usr/lib/qt/ /usr/lib/
$> sudo apt install libqt5serialport5
- Qt5 runtime kurulumu tamamlandı..
Not: Yukarıdaki yazıda takıldığınız en ufak noktayı veya hatalı/eksik bulduğunuz konuları aşağıdaki yorumlara yazın, en kısa sürede tüm soru ve görüşlerinize dönüş yapacağız.