imx6 板卡移植官方yocto版本(2_定制系统)
- 上一節中已經講述了如何去構建編譯環境,這一節講一下如何定制專屬于自己板卡的系統。1.配置linux內核官方repo下來的yocto項目里配置了多個內核可選,我們可以在yocto目錄下/source/meta-fsl-arm/recipes-kernel/linux中找到,配置的三個內核如下:linux-fslc_3.8.bb-->kernelmainline(fromkernel.org)linux-imx_2.6.35.3.bb-->kernelfromFSL,
上一節中已經講述了如何去構建編譯環境,這一節講一下如何定制專屬于自己板卡的系統。
1. 配置linux內核
官方repo下來的yocto項目里配置了多個內核可選,我們可以在yocto目錄下/source/meta-fsl-arm/recipes-kernel/linux 中找到,配置的三個內核如下:
linux-fslc_3.8.bb --> kernel mainline (from kernel.org)
linux-imx_2.6.35.3.bb --> kernel from FSL, for imx5x and imx28
linux-imx_3.0.35.bb--> kernel from FSL for imx6
我的板子是imx6的,因此我選的是linux-imx6,如果你用的是高版本的yocto,那內核可能跟我的不一樣,不過配置沒有什么大的變化。?內核的arch/arm/configs目錄下有一些默認的配置可選,yocto也有自己的配置可用,現在講一下自定義配置內核。
//首先創建一個配置xxxx_defconfig
$ cp xxx_defconfigmeta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/mx6//這里要對應你yocto版本的目錄
$ bitbake -c cleansstate linux-imx
//清理一下之前編譯的狀態
$ bitbake linux-imx
//編譯內核
$ bitbake fsl-image-gui //編譯整個工程,不是必須的
2. 使用menuconfig配置具體項
$ bitbake -c menuconfig linux-imx
$ cp tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/3.0.35-r33.10/git/.config ../sources/meta-fsl-arm/recipes-kernel/linux/linux-imx-
3.0.35/mx6/defconfig
$ bitbake -c cleansstate linux-imx
$ bitbake fsl-image-gui
3. 如果想用linux主線版本的最新內核,可以通過改配置conf/local.conf,不一定支持,而且有危險(主要是BUG沒人測試)
PREFERRED_PROVIDER_virtual/kernel = "linux-fslc"
4. 用yocto不太適合開發(主要是腳本啥的太智能,找半天麻煩),此時我們編譯的工具鏈就有作用了。當執行完bitbake
meta-toolchain后
工具鏈就生成腳本了,看下面:
$ ls tmp/deploy/sdk/poky-eglibc-x86_64-arm-toolchain-1.4.1.sh
tmp/deploy/sdk/poky-eglibc-x86_64-arm-toolchain-1.4.1.sh //前提你編譯沒出錯,版本不一定跟我的一樣
現在安裝一下:
$ source poky-eglibc-x86_64-arm-toolchain-1.4.1.sh
[sudo] password for daiane:
Enter target directory for SDK (default: /opt/poky/1.4.1):
You are about to install the SDK to "/opt/poky/1.4.1". Proceed[Y/n]?y
Extracting SDK...done
Setting it up...done
SDK has been successfully set up and is ready to be used.
測試一下,隨便寫一個helloworld程序:
$ arm-poky-linux-gnueabi-gcc helloworld.c -o hello
$ ls
hello helloworld.c
$ ./hello
-bash: ./hello: cannot execute binary file
//肯定報錯
$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
5. 用導出的工具鏈編譯導出的內核?
$ source /opt/poky/1.4.1/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi
//導出環境變量,也可以寫入/etc/bash.bashrc文件
$ cd linux-imx
$ export ARCH=arm
$ export CROSS_COMPILE=$TARGET_PREFIX
$ unset LDFLAGS
$ make imx6_defconfig
$ make uImage?
//也可以使用zImage,路徑在/arch/arm/boot目錄下
6. 編譯busybox,制作文件系統
$ source /opt/poky/1.4.1/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi
//導出環境變量,也可以寫入/etc/bash.bashrc文件
$ cd busybox1.2?
//busybox我是從官網下載的,版本自己決定?
$ export ARCH=arm
$ export CROSS_COMPILE=$TARGET_PREFIX
$ unset LDFLAGS
$ make menuconfig?
//定義自己需要的命令,不懂的請參考busybox配置?
$ make&;&;make install?
7. 將制作好的內核與文件系統通過網口或者U盤測試一下是否可用。
總結
以上是生活随笔為你收集整理的imx6 板卡移植官方yocto版本(2_定制系统)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: imx6 板卡移植官方yocto版本(1
- 下一篇: Linux Graphic DRI 显