KaynakTarihVersiyonİşlem
Zafer SATILMIŞ2020-04-040.1Döküman oluşturuldu

1.Amaç

Bu belgenin amacı IMX8M Mini (imx8mm) işlemcisini içeren IMX8M Mini Geliştirme kartı üzerinde Gömülü Linux sisteminin nasıl kurulacağını anlatmaktır. Bu geliştirme kartı için üç farklı yolla Linux sistemini kurulabilir. Yocto, buildroot ve u-boot, kernel, busyboox derleme..

Bu belgede bu üç adım ile Linux sisteminin kurulması anlatılacaktır. Bu sayede okuyucu bu üç yöntemin farkını da görmüş olacaktır. Ayrıca başka bir board ya da kendi kişisel bordumuz için Linux kurulumunu yapabilme kabiliyeti kazanacağız.

2. IMX8M Mini Evk

Im8mm evk bordunda ilk dikkatimizi çeken 4 çekirdek(4x Cortex-A53 @ 1.8 GHz) olması. Ayrıca içerisinde 1x Cortex-M4 @ 400 MHz de içermektedir. Geliştirme kartının diğer güzel bir özelliği ise üzerinde MIPI-CSI Camera mini-SAS connector ve MIPI-DSI Display mini-SAS connector girişlerinin olması. Ayrıca kutu içerisinde MIPI-DSI to HDMI dönüştürücüde çıktığından elinizde MIPI-DSI display olmasa da HDMI üzerinden çıkış alabilirsiniz.

2. Yocto İle IMX8MM Evk İçin Linux Kurulumu

Yocto ile sistem kurulumu bence kurulum yöntemlerinin en basiti. Çünkü başta ayarlamaları yaptıktan sonra sizin için toolchain u-boot, kernel, rootfs, dtb ve sd kart imajı oluşturmaktadır. Fakat tüm bunları yapabilmesi için hızlı ve sağlam internet bağlantısı ve yaklaşık 300 GByte alan gerekmektedir. Tüm bunları sağladıktan sonra yaklaşık 6-8 saat derleme süresi sürmektedir. Eğer arada hata almaz ve derlemeniz bozulmaz ise yocto ile mutlu olabilirsiniz. Fakat ben hernekadar yocto kullanımını anlatsam da yocto kullanımını önermiyorum. Kendi linux kurulumunuzu versiyonlama, değişiklik yapma gibi adımlar oldukça problemli ve bilgisayarda oldukça büyük yer kaplıyor.

Imx8mm evk için yocto derlemesinde ilk olarak kendi PC mizde yocto için gerekli olan paketleri güncelleyelim. Ben yocto derlemesini Lİnux-Ubuntu-18.04 üzerinde yaptım. Eğer mümkün ise sizin de bu sürümü kullanmanızı öneririm. Okuyuculara bu belgenin dışında NXP’ nin i.MX Yocto Project User’s Guide.pdf isimli belgesini de okuması faydalı olacaktır. Bu ve diğer faydalı belgeleri buradan indirebilirsiniz.

  1. Gerekli Paketler ve Güncellemeler
$ sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib \build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \xz-utils debianutils iputils-ping libsdl1.2-dev xterm

$ sudo apt-get install autoconf libtool libglib2.0-dev libarchive-dev python-git \sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 \help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev \mercurial automake groff curl lzop asciidoc u-boot-tools dos2unix mtd-utils pv \libncurses5 libncurses5-dev libncursesw5-dev libelf-dev zlib1g-dev
  1. Yocto İndrilmesi
$ mkdir ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo$ export PATH=~/bin:$PATH



$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"
$ git config --list
$ mkdir imx-yocto-bsp$ cd imx-yocto-bsp$ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.3.0.xml
$ repo sync

Yukarıda indirdiğimiz yocto linux-sumo versiyonuna ait.
https://source.codeaurora.org/external/imx/imx-manifest adresine bakarsanız farklı sürümleri görebilirsiniz.

İkinci adım sonrasında elimizde bir yocto projesi oldu. Derlemeye başlamadan hangi içerikte bir imaj elde etmek istiyorsak yocto için bu parametreleri vermemiz gerekiyor. 

DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b <build_dir>

Yukarıdaki komut ile hangi makina için hangi sürümün kullanılacağını ayarlamamız gerekmektedir.  source fsl-setup-release.sh değişmeden kalacaktır. fsl-setup-release.sh indirdiğimiz yocto projesinde bulunmakta.
zafer@zaferPc:~/imx-yocto-bsp$ ls
Build_xwayland downloads fsl-setup-release.sh README README-IMXBSP  setup-environment sources
<build dir> ise derlenen çıktıların nereye kaydedileceğini gösteren dizin ismi. Distro için tüm seçenekleri /imx-yocto-bsp/sources/meta-fsl-bsp-release/imx/meta-sdk/conf/distro dizininin altında görebilirsiniz.


zafer@zaferPc:~/imx-yocto-bsp/sources/meta-fsl-bsp-release/imx/meta-sdk/conf/distro$ ls
fsl-imx-fb.conf
fsl-imx-x11.conf

imx-wayland-ivi.conf
fsl-imx-wayland.conf
fsl-imx-xwayland.conf
include

Machine için /imx-yocto-bsp/sources/meta-fsl-bsp-release/imx/meta-bsp/conf/machine dizini altında tüm seçenekleri görebilirsiniz.

Hangi sürümü ve makineyi seçeceğimize karar verdikten aşağıdaki  gibi gerekli komutların koşulması gerekmektedir.  

  1. Sürüm ve Makine Ayarlamaları
$ cd ~/imx-yocto-bsp$DISTRO=fsl-imx-xwayland MACHINE=imx8mmevk fsl-setup-release.sh -b build_xwayland

Bu komutları koştukran sonra build_xwayland dizni altındaki (bu dizin ismini yukarıda biz verdik, siz hangi ismi verdiyseniz o dizin altına gidiniz) conf/ dizini içinde local.conf dosyası oluşur.(imx-yocto-bsp/build_xwayland/conf) Bu dosyayı cat ile  açtığımızda yaptığımız ayarlamaları görürüz.

Bu dosyaya istediğimiz bir paketi de ekleyebiliriz. Bunun için aşağıdaki satırı local.conf dosyasınına eklememiz gerekmektedir.
CORE_IMAGE_EXTRA_INSTALL += “<package_name1 package_name2>”
Örneğin CORE_IMAGE_EXTRA_INSTALL += “chromium-ozone-wayland”. Tüm paketler http://layers.openembedded.org/layerindex/branch/master/layers/ adresinde bulunmaktadır.

local.conf dosyası içerisinde ayrıca u-boot ayarlaması da yapılmaktadır. Çünkü kullandığınız board üzerinde bellek için NAND flash, EMMC gibi farklı teknolojideki ürünleri kullanmış olabilirsiniz. Bunun için UBOOT_CONFIG=**** şeklinde atama yapmamız lazım.
Bu değişikliği yaptıktan sonra aşağıdaki komut koşulur.
$ MACHINE=<machine name> bitbake -c deploy u-boot-imx

Local.conf dosyasında yapılabilecek bir başka değişiklik ise bazı kaynak sağlayıcıların seçimi. Örneğin linux ya da u-boot için kendi sitelerinin yanında İ.MX topluluğunun sunduğu kaynaklar da kullanılabilinir. Bunun için aşağıdaki gibi bir kullanım yapılmalıdır.

PREFERRED_PROVIDER_<component>_<soc family> = “<provider>”PREFERRED_PROVIDER_u-boot_mx6 = “u-boot-imx”

Yukarıda $ MACHINE=<machine name> bitbake -c deploy u-boot-imx satırında neden u-boot-imx yazdığımızı da anlamış olduk. Çünkü biz imx sağladığı yocto projesini indirdiğimiz için bu ayarlar kendiliğinden oluşmakta.

  1. Derleme

Yukarıdaki adımlar sonrasında en sonunda derleme adımına geldik. Derleme adımı için bitbake <parameter> <component> komutunu koşmamız gerekmektedir. 

Biz projemizi qt destekli derlemek istediğimiz için fsl-image-qt5-validation-imx kullanacağız. Derleme için bitbake fsl-image-qt5-validation-imx komutu koşulacaktır. 

Sabırla beklenen başırılı derleme sonucunda aşağıdaki dizinde istenilen tüm çıktılar bulunacaktır.
        imx-yocto-bsp/build_xwayland/tmp/deploy/images/imx8mmevk 

  1. Toolchain Oluşturma

Yukarıdaki derleme sonucunda elimize sadece bordumuzu ayağa kaldıracak u-boot, kernel ve rootfs oluştu. Fakat bordumuz üzerinde bir uygulama yazıp derlemek için toolchain gerekmektedir. Bunun için tıpkı yukarıdaki adımlara benzer adımları yapacağız. İlk olarak yukarıdaki 1. Ve 2 adımları uygulayarak yocto projesini indirelim. Daha sonrasında sürüm ve makine ayarlarını yapalım. Bu ayarlar için yukarıdaki ayar setini aynen kullanabiliriz.  

$ cd ~/imx-yocto-bsp$DISTRO=fsl-imx-xwayland MACHINE=imx8mmevk fsl-setup-release.sh -b build-xwayland -b build_xwayland

Daha sonra aşağıdaki komutları sırasıyla çağırarak derleme işi yapılır 

$ bitbake meta-ide-support
$ bitbake meta-toolchain

Yukarıdaki adımlardan sonra aslında derleme işimiz bitmiş oluyor. Fakat uygulamalarımızın glibc dışındaki kütüphanelere de gereksinim duyabileceği için son bir derleme adımı daha gerekmektedir. Bunun için aşağıdaki adımları sırasıyla koşalım.

$ cd ~/imx-yocto-bsp$DISTRO=fsl-imx-xwayland MACHINE=imx8mmevk fsl-setup-release.sh -b build_xwayland
$ bitbake -c populate_sdk fsl-image-qt5-validation-imx

Derleme adımından sonra imx-yocto-bsp/build_xwayland/tmp/deploy/sdk dizini altındaki fsl-imx-xwayland-glibc-x86_64-fsl-image-gui-aarch64-toolchain-4.14-**.sh çalıştıralım. 

Tüm bu adımların sonunda /opt dizini altında fsl-imx-xwayland_** şeklinde toolchain ait dizinimiz oluşacaktır. 

Qt Creator içinde imx8mm için KIT oluştururken gerekli olacak olan qmake ise aşağıdaki dizinde bulunmaktadır.