日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

imx6 linux编译,IMX6学习记录(3)-LINUX编译

發(fā)布時(shí)間:2023/12/19 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 imx6 linux编译,IMX6学习记录(3)-LINUX编译 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上面是我創(chuàng)建的群聊,歡迎新朋友的加入。

目錄

1.獲取官方kernel

2.編譯內(nèi)核

3.內(nèi)核燒錄

4.調(diào)整uboot

5.卡分區(qū)

1.獲取官方kernel

地址:http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git/tag/?h=imx_4.1.15_2.0.0_ga&id=rel_imx_4.1.15_2.1.0_ga

拉到最后,先把源碼搞下來

2.編譯內(nèi)核

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j4

不知道怎么回事,上來編譯就報(bào)錯(cuò)了

jun@ubuntu:~/i.mx6/source/linux$ make clean

./scripts/gcc-goto.sh: 行 4: $'\r': 未找到命令

./scripts/gcc-goto.sh: 行 21: 警告: 立即文檔在第 5 行被文件結(jié)束符分隔 (需要 `END')

./scripts/gcc-version.sh: 行 11: $'\r': 未找到命令

./scripts/gcc-version.sh: 行 33: 語法錯(cuò)誤: 未預(yù)期的文件結(jié)尾

/bin/sh: 1: [: -lt: unexpected operator

./scripts/gcc-version.sh: 行 11: $'\r': 未找到命令

./scripts/gcc-version.sh: 行 33: 語法錯(cuò)誤: 未預(yù)期的文件結(jié)尾

/bin/sh: 1: [: -lt: unexpected operator

./scripts/link-vmlinux.sh: 行 27: $'\r': 未找到命令

: 無效選項(xiàng)link-vmlinux.sh: 第 29 行: set: -

set: 用法: set [--abefhkmnptuvxBCHP] [-o 選項(xiàng)名] [--] [參數(shù) ...]

./scripts/link-vmlinux.sh: 行 30: $'\r': 未找到命令

./scripts/link-vmlinux.sh: 行 33: 未預(yù)期的符號(hào) `$'\r'' 附近有語法錯(cuò)誤

'/scripts/link-vmlinux.sh: 行 33: `info()

Makefile:1195: recipe for target 'vmlinuxclean' failed

make: *** [vmlinuxclean] Error 2

jun@ubuntu:~/i.mx6/source/linux$ ls -la

解決辦法

sudo apt install dos2unix

dos2unix ./scripts/gcc-goto.sh

dos2unix ./scripts/gcc-version.sh

dos2unix ./scripts/link-vmlinux.sh

3.內(nèi)核燒錄

找到編譯出來的文件

其中zimage就是內(nèi)核固件,燒錄的就是它,一個(gè)6M的文件

按照官方指導(dǎo),通過DD燒錄到SD卡

搞完內(nèi)核。還有一個(gè)設(shè)備樹也要捎進(jìn)去

4.調(diào)整uboot

啟動(dòng)是啟動(dòng)了,但是這不是我剛剛編譯出來的

將uboot的頭文件按照燒錄的地址設(shè)置啟動(dòng)位置

#define CONFIG_SYS_MMC_IMG_LOAD_PART1

#ifdef CONFIG_SYS_BOOT_NAND

#define CONFIG_MFG_NAND_PARTITION "mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs) "

#else

#define CONFIG_MFG_NAND_PARTITION ""

#endif

#define CONFIG_MFG_ENV_SETTINGS \

"mfgtool_args=setenv bootargs console=${console},${baudrate} " \

CONFIG_BOOTARGS_CMA_SIZE \

"rdinit=/linuxrc " \

"g_mass_storage.stall=0 g_mass_storage.removable=1 " \

"g_mass_storage.file=/fat g_mass_storage.ro=1 " \

"g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\

"g_mass_storage.iSerialNumber=\"\" "\

CONFIG_MFG_NAND_PARTITION \

"clk_ignore_unused "\

"\0" \

"initrd_addr=0x83800000\0" \

"initrd_high=0xffffffff\0" \

"bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \

#if defined(CONFIG_SYS_BOOT_NAND)

#define CONFIG_EXTRA_ENV_SETTINGS \

CONFIG_MFG_ENV_SETTINGS \

"panel=TFT43AB\0" \

"fdt_addr=0x83000000\0" \

"fdt_high=0xffffffff\0" \

"console=ttymxc0\0" \

"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \

"root=ubi0:rootfs rootfstype=ubifs " \

CONFIG_BOOTARGS_CMA_SIZE \

"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\

"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\

"nand read ${fdt_addr} 0x5000000 0x100000;"\

"bootz ${loadaddr} - ${fdt_addr}\0"

#else

#define CONFIG_EXTRA_ENV_SETTINGS \

CONFIG_MFG_ENV_SETTINGS \

"script=boot.scr\0" \

"image=zImage\0" \

"console=ttymxc0\0" \

"fdt_high=0xffffffff\0" \

"initrd_high=0xffffffff\0" \

"fdt_file=undefined\0" \

"fdt_addr=0x83000000\0" \

"boot_fdt=try\0" \

"ip_dyn=yes\0" \

"panel=TFT43AB\0" \

"mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \

"mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \

"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \

"mmcautodetect=yes\0" \

"mmcargs=setenv bootargs console=${console},${baudrate} " \

CONFIG_BOOTARGS_CMA_SIZE \

"root=${mmcroot}\0" \

"loadbootscript=" \

"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \

"bootscript=echo Running bootscript from mmc ...; " \

"source\0" \

"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \

"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \

"mmcboot=echo Booting from mmc ...; " \

"run mmcargs; " \

"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \

"if run loadfdt; then " \

"bootz ${loadaddr} - ${fdt_addr}; " \

"else " \

"if test ${boot_fdt} = try; then " \

"bootz; " \

"else " \

"echo WARN: Cannot load the DT; " \

"fi; " \

"fi; " \

"else " \

"bootz; " \

"fi;\0" \

"netargs=setenv bootargs console=${console},${baudrate} " \

CONFIG_BOOTARGS_CMA_SIZE \

"root=/dev/nfs " \

"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \

"netboot=echo Booting from net ...; " \

"run netargs; " \

"if test ${ip_dyn} = yes; then " \

"setenv get_cmd dhcp; " \

"else " \

"setenv get_cmd tftp; " \

"fi; " \

"${get_cmd} ${image}; " \

"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \

"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \

"bootz ${loadaddr} - ${fdt_addr}; " \

"else " \

"if test ${boot_fdt} = try; then " \

"bootz; " \

"else " \

"echo WARN: Cannot load the DT; " \

"fi; " \

"fi; " \

"else " \

"bootz; " \

"fi;\0" \

"findfdt="\

"if test $fdt_file = undefined; then " \

"if test $board_name = EVK && test $board_rev = 9X9; then " \

"setenv fdt_file imx6ull-9x9-evk.dtb; fi; " \

"if test $board_name = EVK && test $board_rev = 14X14; then " \

"setenv fdt_file imx6ull-14x14-evk.dtb; fi; " \

"if test $fdt_file = undefined; then " \

"echo WARNING: Could not determine dtb to use; fi; " \

"fi;\0" \

#define CONFIG_BOOTCOMMAND \

"run findfdt;" \

"mmc dev ${mmcdev};" \

"mmc dev ${mmcdev}; if mmc rescan; then " \

"if run loadbootscript; then " \

"run bootscript; " \

"else " \

"if run loadimage; then " \

"run mmcboot; " \

"else run netboot; " \

"fi; " \

"fi; " \

"else run netboot; fi"

#endif

現(xiàn)在還是沒跑起來

將之前yocto的鏡像下載一遍,替換掉uboot、zimage和設(shè)備樹

現(xiàn)在是可以進(jìn)linux的,但是沒有正常跑起來,內(nèi)核是今天編譯出來的

5.卡分區(qū)

現(xiàn)在跑起來是因?yàn)槲蚁认螺d了一個(gè)yocto出來的鏡像,對卡進(jìn)行了分區(qū)。

如果沒得鏡像,那這個(gè)uboot和kernel就不能正常用了

從SD卡讀zimage和設(shè)備樹是要文件系統(tǒng)的

嘗試自行劃分一個(gè)分區(qū)出來

首先對照官方出來的卡狀態(tài)

98

總共兩分區(qū),按理說只要和這個(gè)分區(qū)一樣,uboot就可以找到內(nèi)核鏡像和設(shè)備樹,以及文件系統(tǒng)了

首先格式化整個(gè)卡片

開始分配第一個(gè)分區(qū),最小是16M,分不出8M。

第二個(gè)分區(qū)

整個(gè)盤

為了確定改動(dòng)是有效的,將內(nèi)核和uboot都全編譯一次

時(shí)間戳

首先寫入uboot

拷貝zimage和設(shè)備樹進(jìn)boot盤

文件系統(tǒng)先空著不管他

查看終端打印信息

其中uboot是U-Boot 2016.03 (Oct 23 2019 - 15:52:59 +0800)

kernel是:Oct 23 15:56:44 CST 2019

說明是正常從uboot跳轉(zhuǎn)到了kernel

U-Boot 2016.03 (Oct 23 2019 - 15:52:59 +0800)

CPU: Freescale i.MX6ULL rev1.0 528 MHz (running at 396 MHz)

CPU: Industrial temperature grade (-40C to 105C) at 31C

Reset cause: POR

Board: MX6ULL 14x14 EVK

I2C: ready

DRAM: 512 MiB

NAND: 256 MiB

MMC: FSL_SDHC: 0

*** Warning - bad CRC, using default environment

Display: TFT43AB (480x272)

Video: 480x272x24

In: serial

Out: serial

Err: serial

Net: FEC0 MXC: board_eth_init:failed

No ethernet found.

Normal Boot

Hit any key to stop autoboot: 0

switch to partitions #0, OK

mmc0 is current device

switch to partitions #0, OK

mmc0 is current device

reading boot.scr

** Unable to read file boot.scr **

reading zImage

6680408 bytes read in 587 ms (10.9 MiB/s)

Booting from mmc ...

reading imx6ull-14x14-evk.dtb

35969 bytes read in 22 ms (1.6 MiB/s)

Kernel image @ 0x80800000 [ 0x000000 - 0x65ef58 ]

## Flattened Device Tree blob at 83000000

Booting using the fdt blob at 0x83000000

Using Device Tree in place at 83000000, end 8300bc80

Starting kernel ...

Booting Linux on physical CPU 0x0

Linux version 4.1.15 (jun@ubuntu) (gcc version 4.9.4 (Linaro GCC 4.9-2017.01) ) #2 SMP PREEMPT Wed Oct 23 15:56:44 CST 2019

CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d

CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

Machine model: Freescale i.MX6 ULL 14x14 EVK Board

Reserved memory: created CMA memory pool at 0x8c000000, size 320 MiB

Reserved memory: initialized node linux,cma, compatible id shared-dma-pool

Memory policy: Data cache writealloc

PERCPU: Embedded 12 pages/cpu @8bb32000 s16960 r8192 d24000 u49152

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048

Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw

PID hash table entries: 2048 (order: 1, 8192 bytes)

Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)

總結(jié)

以上是生活随笔為你收集整理的imx6 linux编译,IMX6学习记录(3)-LINUX编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。