当前位置:   article > 正文

构建 imx6ull sd 卡启动_imax6ul linux sd卡

imax6ul linux sd卡

1. 硬件环境

imx6ull + 256MB tf 卡 + 512 MB 的 ddr;

ubuntu 20.04;

芯片默认的启动方式是通过 LCD_DATA0 ~ LCD_DATA23;上下拉方式来确认的;

需要注意的上下拉是 BOOT_CFG1[7] BOOT_CFG1[6] BOOT_CFG1[5] 启动选择 和 BOOT_CFG2[4] BOOT_CFG2[3] 端口选择

2. 交叉编译器与源码下载

交叉编译器去 arm 官网下载一个;

  1. # 我选择的是 arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
  2. # 下载网址见下
  3. https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

uboot 源码下载

  1. # 在 https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf 中提到了下载编译的方法
  2. # 下载 uboot 源码,并切换到分支 lf_v2023.04
  3. git clone https://github.com/nxp-imx/uboot-imx -b lf_v2023.04

linux kernel 源码下载

  1. # 在 https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf 中提到了下载编译的方法
  2. # 下载 linux kernel 源码,并切换到分支 lf-6.6.y
  3. git clone https://github.com/nxp-imx/linux-imx -b lf-6.6.y

3. 配置交叉编译器,并编译 uboot、内核

3.1 配置交叉编译器

在 uboot 同级目录建立一个 linux_imx6ull.sh,文件内容填写如下(按自己的路径配置)

  1. #!/bin/bash
  2. export ARCH=arm
  3. export CROSS_COMPILE=arm-none-linux-gnueabihf-
  4. export PATH=$PATH:/opt/work/sdk/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-linux-gnueabihf/bin

临时在当前终端生效交叉编译器,执行命令如下

source linux_imx6ull.sh

3.2 编译 uboot

  1. # 进入 uboot-imx 源码后,执行以下命令
  2. make mx6ull_14x14_evk_defconfig
  3. make -j8
  4. # 编译出的文件为 u-boot-dtb.imx
  5. ls -alh u-boot-dtb.imx

直接编译的 uboot 在板子上跑出现了以下日志:

  1. U-Boot 2023.04-dirty (Apr 29 2024 - 11:56:23 +0800)
  2. CPU: i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
  3. CPU: Industrial temperature grade (-40C to 105C) at 39C
  4. Reset cause: POR
  5. Model: i.MX6 ULL 14x14 EVK Board
  6. Board: MX6ULL 14x14 EVK
  7. DRAM: 512 MiB
  8. Core: 77 devices, 22 uclasses, devicetree: separate
  9. MMC: FSL_SDHC: 0, FSL_SDHC: 1
  10. Loading Environment from MMC... MMC: no card present
  11. *** Warning - No block device, using default environment
  12. [*]-Video Link 0 (480 x 272)
  13. [0] lcdif@21c8000, video
  14. In: serial
  15. Out: serial
  16. Err: serial
  17. MMC: no card present
  18. flash target is MMC:0
  19. MMC: no card present
  20. MMC card init failed!
  21. MMC: no card present
  22. ** Block device MMC 0 not supported
  23. Net: Could not get PHY for FEC1: addr 1
  24. Could not get PHY for FEC1: addr 1
  25. Get shared mii bus on ethernet@2188000
  26. Error: ethernet@2188000 address not set.
  27. data abort
  28. pc : [<9ee90f7e>] lr : [<9ee9d941>]
  29. reloc pc : [<87819f7e>] lr : [<87826941>]
  30. sp : 9de6c210 ip : 9de766c2 fp : 00000017
  31. r10: 878009a0 r9 : 9de74eb0 r8 : 00000100
  32. r7 : 9eeef754 r6 : 9de78ac0 r5 : 00002588 r4 : 9eeef74c
  33. r3 : 60c72453 r2 : 00000000 r1 : 3d20666d r0 : 3d20656d
  34. Flags: nzCV IRQs off FIQs off Mode SVC_32 (T)
  35. Code: f104 0708 1a1b 4401 (6898) 42b8
  36. Resetting CPU ...
  37. resetting ...

于是我执行 make menuconfig,将 net 支持取消;

  1. 一级菜单
  2. [ ] Networking support ----

再次编译刻录,uboot 没有崩溃,日志信息如下:

  1. U-Boot 2023.04-dirty (Apr 29 2024 - 13:25:43 +0800)
  2. CPU: i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
  3. CPU: Industrial temperature grade (-40C to 105C) at 38C
  4. Reset cause: POR
  5. Model: i.MX6 ULL 14x14 EVK Board
  6. Board: MX6ULL 14x14 EVK
  7. DRAM: 512 MiB
  8. Core: 71 devices, 20 uclasses, devicetree: separate
  9. MMC: FSL_SDHC: 0, FSL_SDHC: 1
  10. Loading Environment from MMC... MMC: no card present
  11. *** Warning - No block device, using default environment
  12. [*]-Video Link 0 (480 x 272)
  13. [0] lcdif@21c8000, video
  14. In: serial
  15. Out: serial
  16. Err: serial
  17. MMC: no card present
  18. flash target is MMC:0
  19. MMC: no card present
  20. MMC card init failed!
  21. MMC: no card present
  22. ** Block device MMC 0 not supported
  23. Fastboot: Normal
  24. Normal Boot
  25. Hit any key to stop autoboot: 0
  26. MMC: no card present
  27. MMC: no card present
  28. MMC: no card present
  29. Booting from net ...
  30. Unknown command 'dhcp' - try 'help'
  31. Unknown command 'dhcp' - try 'help'
  32. zimage: Bad magic!
  33. =>

不知道是我买的 tf 卡质量差还是什么,在 uboot 阶段总是读取不到 tf 卡中的文件;

于是我修改了 dts 文件,修改如下:

  1. diff --git a/arch/arm/dts/imx6ul-14x14-evk.dtsi b/arch/arm/dts/imx6ul-14x14-evk.dtsi
  2. index e23d9f40ed..fe92d44745 100644
  3. --- a/arch/arm/dts/imx6ul-14x14-evk.dtsi
  4. +++ b/arch/arm/dts/imx6ul-14x14-evk.dtsi
  5. @@ -21,8 +21,6 @@
  6. regulator-name = "VSD_3V3";
  7. regulator-min-microvolt = <3300000>;
  8. regulator-max-microvolt = <3300000>;
  9. - gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
  10. - off-on-delay-us = <20000>;
  11. enable-active-high;
  12. };
  13. @@ -351,7 +349,7 @@
  14. xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
  15. measure-delay-time = <0xffff>;
  16. pre-charge-time = <0xfff>;
  17. - status = "okay";
  18. + status = "disabled";
  19. };
  20. &uart1 {
  21. @@ -392,11 +390,13 @@
  22. };
  23. };
  24. &uart1 {
  25. @@ -392,11 +390,13 @@
  26. };
  27. &usdhc1 {
  28. - pinctrl-names = "default", "state_100mhz", "state_200mhz";
  29. - pinctrl-0 = <&pinctrl_usdhc1>;
  30. - pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
  31. - pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
  32. - cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
  33. + //pinctrl-names = "default", "state_100mhz", "state_200mhz";
  34. + pinctrl-names = "default";
  35. + pinctrl-0 = <&pinctrl_usdhc1_200mhz>;
  36. + //pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
  37. + //pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
  38. + cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
  39. + no-1-8-v;
  40. keep-power-in-suspend;
  41. wakeup-source;
  42. vmmc-supply = <&reg_sd1_vmmc>;
  43. @@ -598,7 +598,6 @@
  44. MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0xb0
  45. MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0xb0
  46. MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0xb0
  47. - MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0xb0
  48. >;
  49. };
  50. @@ -641,9 +640,8 @@
  51. MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059
  52. MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059
  53. MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059
  54. - MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */
  55. + MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x17059 /* SD1 CD */
  56. MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */
  57. - MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 /* SD1 RESET */
  58. >;
  59. };
  60. @@ -667,6 +665,8 @@
  61. MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9
  62. MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9
  63. MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9
  64. + MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x17059 /* SD1 CD */
  65. + MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */
  66. >;
  67. };

3.3 将 uboot 写入 tf 卡

利用 shell 脚本来快速写入,新建一个命令为 mksdboot.sh 的脚本,给于执行权限;

将 uboot 编译出的文件 u-boot-dtb.imx 和 mksdboot.sh 放入同级目录,执行以下命令就能将 uboot 刻录到 tf 卡;

对于 imx6ull seek 为 1k;这个在 IMX_LINUX_USERS_GUIDE.pdf 中有提到;

sudo ./mksdboot.sh

虚拟机版本如下:

  1. #!/bin/bash
  2. # Determine the absolute path to the executable
  3. # EXE will have the PWD removed so we can concatenate with the PWD safely
  4. PWD=`pwd`
  5. EXE=`echo $0 | sed s=$PWD==`
  6. EXEPATH="$PWD"/"$EXE"
  7. clear
  8. cat << EOM
  9. ################################################################################
  10. This script will create a bootable SD card from custom or pre-built binaries.
  11. The script must be run with root permissions and from the bin directory of
  12. the SDK
  13. Example:
  14. $ sudo ./mksdboot.sh
  15. Formatting can be skipped if the SD card is already formatted and
  16. partitioned properly.
  17. ################################################################################
  18. EOM
  19. AMIROOT=`whoami | awk {'print $1'}`
  20. if [ "$AMIROOT" != "root" ] ; then
  21. echo " **** Error *** must run script with sudo"
  22. echo ""
  23. exit
  24. fi
  25. # find the avaible SD cards
  26. echo " "
  27. echo "Availible Drives to write images to: "
  28. echo " "
  29. ROOTDRIVE=`mount | grep 'on / ' | awk {'print $1'} | cut -c6-8`
  30. echo "# major minor size name "
  31. cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>' | grep -n ''
  32. echo " "
  33. ENTERCORRECTLY=0
  34. while [ $ENTERCORRECTLY -ne 1 ]
  35. do
  36. read -p 'Enter Device Number: ' DEVICEDRIVENUMBER
  37. echo " "
  38. DEVICEDRIVENAME=`cat /proc/partitions | grep -v 'sda' | grep '\<sd.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $5}'`
  39. echo "$DEVICEDRIVENAME"
  40. DRIVE=/dev/$DEVICEDRIVENAME
  41. DEVICESIZE=`cat /proc/partitions | grep -v 'sda' | grep '\<sd.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $4}'`
  42. if [ -n "$DEVICEDRIVENAME" ]
  43. then
  44. ENTERCORRECTLY=1
  45. else
  46. echo "Invalid selection"
  47. fi
  48. echo ""
  49. done
  50. echo "$DEVICEDRIVENAME was selected"
  51. #Check the size of disk to make sure its under 16GB
  52. if [ $DEVICESIZE -gt 17000000 ] ; then
  53. cat << EOM
  54. ################################################################################
  55. **********WARNING**********
  56. Selected Device is greater then 16GB
  57. Continuing past this point will erase data from device
  58. Double check that this is the correct SD Card
  59. ################################################################################
  60. EOM
  61. ENTERCORRECTLY=0
  62. while [ $ENTERCORRECTLY -ne 1 ]
  63. do
  64. read -p 'Would you like to continue [y/n] : ' SIZECHECK
  65. echo ""
  66. echo " "
  67. ENTERCORRECTLY=1
  68. case $SIZECHECK in
  69. "y") ;;
  70. "n") exit;;
  71. *) echo "Please enter y or n";ENTERCORRECTLY=0;;
  72. esac
  73. echo ""
  74. done
  75. fi
  76. echo ""
  77. DRIVE=/dev/$DEVICEDRIVENAME
  78. echo "Checking the device is unmounted"
  79. for i in `ls -1 $DRIVE?`; do
  80. echo "unmounting device '$i'"
  81. umount $i 2>/dev/null
  82. done
  83. ENTERCORRECTLY=0
  84. while [ $ENTERCORRECTLY -ne 1 ]
  85. do
  86. read -p 'Would you like to re-partition the drive anyways [y/n] : ' CASEPARTITION
  87. echo ""
  88. echo " "
  89. ENTERCORRECTLY=1
  90. case $CASEPARTITION in
  91. "y") echo "Now partitioning $DEVICEDRIVENAME ...";PARTITION=0;;
  92. "n") echo "Abort partitioning";
  93. exit ;;
  94. *) echo "Please enter y or n";ENTERCORRECTLY=0;;
  95. esac
  96. echo ""
  97. done
  98. PARTITION=1
  99. if [ "$PARTITION" -eq "1" ]
  100. then
  101. # Set the PARTS value as well
  102. PARTS=1
  103. cat << EOM
  104. ################################################################################
  105. Now making 1 partitions
  106. ################################################################################
  107. EOM
  108. dd if=/dev/zero of=$DRIVE bs=1024 count=1024
  109. sync
  110. SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
  111. echo DISK SIZE - $SIZE bytes
  112. CYLINDERS=`echo $SIZE/255/63/512 | bc`
  113. fdisk $DRIVE << EOF
  114. n
  115. p
  116. 1
  117. 16384
  118. t
  119. b
  120. w
  121. EOF
  122. cat << EOM
  123. ################################################################################
  124. Partitioning Boot
  125. ################################################################################
  126. EOM
  127. mkfs.vfat -F 32 -n "boot" ${DRIVE}1
  128. fi
  129. echo "Buring the u-boot-dtb.imx to sdcard"
  130. if [ -e u-boot-dtb.imx ]
  131. then
  132. dd if=u-boot-dtb.imx of=${DRIVE} bs=1K seek=1 conv=fsync
  133. fi
  134. echo ""
  135. echo "Syncing...."
  136. echo ""
  137. sync
  138. sleep 1
  139. for i in `ls -1 $DRIVE?`; do
  140. echo "unmounting device '$i'"
  141. umount $i 2>/dev/null
  142. done
  143. echo "Make update sd card success!"

非虚拟机版本如下(慎用):

  1. #!/bin/bash
  2. # Determine the absolute path to the executable
  3. # EXE will have the PWD removed so we can concatenate with the PWD safely
  4. PWD=`pwd`
  5. EXE=`echo $0 | sed s=$PWD==`
  6. EXEPATH="$PWD"/"$EXE"
  7. clear
  8. cat << EOM
  9. ################################################################################
  10. This script will create a bootable SD card from custom or pre-built binaries.
  11. The script must be run with root permissions and from the bin directory of
  12. the SDK
  13. Example:
  14. $ sudo ./mksdboot.sh
  15. Formatting can be skipped if the SD card is already formatted and
  16. partitioned properly.
  17. ################################################################################
  18. EOM
  19. AMIROOT=`whoami | awk {'print $1'}`
  20. if [ "$AMIROOT" != "root" ] ; then
  21. echo " **** Error *** must run script with sudo"
  22. echo ""
  23. exit
  24. fi
  25. # find the avaible SD cards
  26. echo " "
  27. echo "Availible Drives to write images to: "
  28. echo " "
  29. ROOTDRIVE=`mount | grep 'on / ' | awk {'print $1'} | cut -c6-8`
  30. echo "# major minor size name "
  31. cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>' | grep -n ''
  32. echo " "
  33. ENTERCORRECTLY=0
  34. while [ $ENTERCORRECTLY -ne 1 ]
  35. do
  36. read -p 'Enter Device Number: ' DEVICEDRIVENUMBER
  37. echo " "
  38. DEVICEDRIVENAME=`cat /proc/partitions | grep '\<sd.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $5}'`
  39. echo "$DEVICEDRIVENAME"
  40. DRIVE=/dev/$DEVICEDRIVENAME
  41. DEVICESIZE=`cat /proc/partitions | grep '\<sd.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $4}'`
  42. if [ -n "$DEVICEDRIVENAME" ]
  43. then
  44. ENTERCORRECTLY=1
  45. else
  46. echo "Invalid selection"
  47. fi
  48. echo ""
  49. done
  50. echo "$DEVICEDRIVENAME was selected"
  51. #Check the size of disk to make sure its under 16GB
  52. if [ $DEVICESIZE -gt 17000000 ] ; then
  53. cat << EOM
  54. ################################################################################
  55. **********WARNING**********
  56. Selected Device is greater then 16GB
  57. Continuing past this point will erase data from device
  58. Double check that this is the correct SD Card
  59. ################################################################################
  60. EOM
  61. ENTERCORRECTLY=0
  62. while [ $ENTERCORRECTLY -ne 1 ]
  63. do
  64. read -p 'Would you like to continue [y/n] : ' SIZECHECK
  65. echo ""
  66. echo " "
  67. ENTERCORRECTLY=1
  68. case $SIZECHECK in
  69. "y") ;;
  70. "n") exit;;
  71. *) echo "Please enter y or n";ENTERCORRECTLY=0;;
  72. esac
  73. echo ""
  74. done
  75. fi
  76. echo ""
  77. DRIVE=/dev/$DEVICEDRIVENAME
  78. echo "Checking the device is unmounted"
  79. for i in `ls -1 $DRIVE?`; do
  80. echo "unmounting device '$i'"
  81. umount $i 2>/dev/null
  82. done
  83. ENTERCORRECTLY=0
  84. while [ $ENTERCORRECTLY -ne 1 ]
  85. do
  86. read -p 'Would you like to re-partition the drive anyways [y/n] : ' CASEPARTITION
  87. echo ""
  88. echo " "
  89. ENTERCORRECTLY=1
  90. case $CASEPARTITION in
  91. "y") echo "Now partitioning $DEVICEDRIVENAME ...";PARTITION=0;;
  92. "n") echo "Abort partitioning";
  93. exit ;;
  94. *) echo "Please enter y or n";ENTERCORRECTLY=0;;
  95. esac
  96. echo ""
  97. done
  98. PARTITION=1
  99. if [ "$PARTITION" -eq "1" ]
  100. then
  101. # Set the PARTS value as well
  102. PARTS=1
  103. cat << EOM
  104. ################################################################################
  105. Now making 1 partitions
  106. ################################################################################
  107. EOM
  108. dd if=/dev/zero of=$DRIVE bs=1024 count=1024
  109. sync
  110. SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
  111. echo DISK SIZE - $SIZE bytes
  112. CYLINDERS=`echo $SIZE/255/63/512 | bc`
  113. fdisk $DRIVE << EOF
  114. n
  115. p
  116. 1
  117. 16384
  118. t
  119. b
  120. w
  121. EOF
  122. cat << EOM
  123. ################################################################################
  124. Partitioning Boot
  125. ################################################################################
  126. EOM
  127. mkfs.vfat -F 32 -n "boot" ${DRIVE}1
  128. fi
  129. echo "Buring the u-boot-dtb.imx to sdcard"
  130. if [ -e u-boot-dtb.imx ]
  131. then
  132. dd if=u-boot-dtb.imx of=${DRIVE} bs=1K seek=1 conv=fsync
  133. fi
  134. echo ""
  135. echo "Syncing...."
  136. echo ""
  137. sync
  138. sleep 1
  139. for i in `ls -1 $DRIVE?`; do
  140. echo "unmounting device '$i'"
  141. umount $i 2>/dev/null
  142. done
  143. echo "Make update sd card success!"

3.4 编译 kernel

  1. # 进入 linux-imx 源码后,执行以下命令
  2. make imx_v7_defconfig
  3. make zImage -j8
  4. make dtbs
  5. # 编译出的文件为 zImage
  6. ls -alh arch/arm/boot/zImage
  7. ls -alh arch/arm/boot/dts/nxp/imx/imx6ull-14x14-evk.dtb
  8. # 将编译出的两个文件拷贝到 tf 卡分区 1 中,也就是默认分区中
  9. zImage imx6ull-14x14-evk.dtb

3.5 调试 uboot 加载内核

  1. ## 在 uboot 常用命令如下
  2. # 列举出 Host Controller 的个数
  3. mmc list
  4. # 列举出 sd 卡的信息
  5. mmc info
  6. # 切换到 mmc 设备 0
  7. mmc dev 0
  8. # 切换到 mmc 设备 1
  9. mmc dev 1
  10. # 重新扫描 mmc 设备
  11. mmc rescan
  12. # 列举出 mmc 设备 0 中的分区 1 的文件信息(fat 格式的分区)
  13. fatls mmc 0:1
  14. # 查看 uboot 的环境变量
  15. print
  16. # 查看 loadaddr 变量的值
  17. print loadaddr
  18. # 将 mmc 设备 0 中的分区 1 的 zImage 加载到 0x80800000 处(fat 格式的分区)
  19. fatload mmc 0:1 0x80800000 zImage
  20. # 将 mmc 设备 0 中的分区 1 的 imx6ull-14x14-evk.dtb 加载到 0x83000000 处(fat 格式的分区)
  21. fatload mmc 0:1 0x83000000 imx6ull-14x14-evk.dtb
  22. # 默认会自动加载设备 0 中的分区 1 的文件到 RAM 中的;
  23. # 如果设备信息不一致,可以在以下文件中查找修改
  24. uboot-imx/include/configs/mx6ullevk.h
  25. # 0x80800000、0x83000000 是 uboot 中人为指定的;
  26. # ram 空间范围可以见 imx6ull 芯片手册中的内存划分部分;

设备默认加载内核,启动信息如下:

  1. U-Boot 2023.04-dirty (Apr 29 2024 - 17:51:02 +0800)
  2. CPU: i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
  3. CPU: Industrial temperature grade (-40C to 105C) at 56C
  4. Reset cause: POR
  5. Model: i.MX6 ULL 14x14 EVK Board
  6. Board: MX6ULL 14x14 EVK
  7. DRAM: 512 MiB
  8. Core: 71 devices, 20 uclasses, devicetree: separate
  9. MMC: FSL_SDHC: 0, FSL_SDHC: 1
  10. Loading Environment from MMC... *** Warning - bad CRC, using default environment
  11. [*]-Video Link 0 (480 x 272)
  12. [0] lcdif@21c8000, video
  13. In: serial
  14. Out: serial
  15. Err: serial
  16. switch to partitions #0, OK
  17. mmc0 is current device
  18. flash target is MMC:0
  19. Fastboot: Normal
  20. Normal Boot
  21. Hit any key to stop autoboot: 0
  22. switch to partitions #0, OK
  23. mmc0 is current device
  24. switch to partitions #0, OK
  25. mmc0 is current device
  26. Failed to load 'boot.scr'
  27. 9447888 bytes read in 553 ms (16.3 MiB/s)
  28. Booting from mmc ...
  29. 45482 bytes read in 7 ms (6.2 MiB/s)
  30. Kernel image @ 0x80800000 [ 0x000000 - 0x9029d0 ]
  31. ## Flattened Device Tree blob at 83000000
  32. Booting using the fdt blob at 0x83000000
  33. Working FDT set to 83000000
  34. Using Device Tree in place at 83000000, end 8300e1a9
  35. Working FDT set to 83000000
  36. Modify /soc/bus@2200000/epdc@228c000 disabled
  37. Starting kernel ...
  38. .......
  39. [ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw
  40. .......
  41. [ 3.490949] Loading compiled-in X.509 certificates
  42. [ 3.546142] imx_thermal 20c8000.anatop:tempmon: Industrial CPU temperature grade - max:105C critical:100C passive:95C
  43. [ 3.569584] cfg80211: Loading compiled-in X.509 certificates for regulatory database
  44. [ 3.581876] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
  45. [ 3.587791] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
  46. [ 3.596546] clk: Disabling unused clocks
  47. [ 3.600882] ALSA device list:
  48. [ 3.603874] No soundcards found.
  49. [ 3.607827] Waiting for root device /dev/mmcblk0p2...
  50. [ 3.613104] platform regulatory.0: Falling back to sysfs fallback for: regulatory.db
  51. [ 13.932900] platform sound-wm8960: deferred probe pending

如果想要启动完成,需要在 tf 卡的分区 2 中放入文件系统,分区 2 需要为 ext4 或 ext3 格式的文件系统。

4. 制作 ramdisk

  1. # 参考博客:
  2. https://blog.csdn.net/weixin_42262944/article/details/103284614

4.1 配置内核支持 ramdisk

  1. # 内核默认支持了 ramdisk
  2. Device Drivers --->
  3. [*] Block devices --->
  4. (16) Default number of RAM disks
  5. (65536) Default RAM disk size (kbytes)
  6. # 将其修改为如下,使用 1 个 ram 块设备,4MB 的 ram 空间
  7. Device Drivers --->
  8. [*] Block devices --->
  9. (1) Default number of RAM disks
  10. (4096) Default RAM disk size (kbytes)
  11. # 配置完成后,重新编译,更新 zImage 文件到 tf 卡中
  12. make zImage -j8

4.2 编译 busybox

  1. # 下载 busybox 源码
  2. wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2
  3. # 解压
  4. tar -xvf busybox-1.36.1.tar.bz2
  5. # 进入 busybox 目录
  6. cd busybox-1.36.1
  7. # 使用默认配置
  8. make menuconfig
  9. # 配置静态编译、交叉编译器前缀、安装路径;
  10. Settings --->
  11. [*] Build static binary (no shared libs)
  12. (arm-none-linux-gnueabihf-) Cross compiler prefix
  13. (../ramdisk) Destination path for 'make install'
  14. # 在配置了交叉编译器的前提下
  15. make -j8
  16. # 安装 busybox 文件
  17. make install
  18. # 进入安装目录,创建一些必须的配置文件
  19. cd ../ramdisk/
  20. mkdir -p mnt tmp var usr sys proc etc lib dev bin sbin root home
  21. mkdir -p usr/lib lib/modules
  22. # 创建设备节点,一个 console,一个 null
  23. cd dev/
  24. sudo mknod -m 666 console c 5 1
  25. sudo mknod -m 666 null c 1 3
  26. cd ../
  27. # 复制 busybox 中的 examples/bootfloppy/etc 的文件
  28. cp ../busybox-1.36.1/examples/bootfloppy/etc ./ -a
  29. # 修改文件的用户与用户组为 root
  30. sudo chown root:root -R *

4.3 制作 ramdisk.img.gz

  1. # 在 ramdisk 同级目录执行以下命令
  2. sudo dd if=/dev/zero of=ramdisk.img bs=1K count=4096 conv=fsync
  3. sudo mkfs.ext4 -i 4096 ramdisk.img -d ramdisk
  4. sudo fsck.ext4 -pvf ramdisk.img
  5. gzip -9 -f ramdisk.img

5. 修改 uboot,使其启动 ramdisk.img.gz

将 ramdisk.img.gz 拷贝到 tf 卡中;

5.1 在 uboot 临时启动

  1. # 在 uboot 命令行中执行以下命令
  2. # 读取 tf 卡分区 1 中的 zImage 文件(分区为 fat32 格式)
  3. fatload mmc 0:1 0x80800000 zImage
  4. # 读取 tf 卡分区 1 中的 ramdisk.img.gz 文件(分区为 fat32 格式)
  5. fatload mmc 0:1 0x84000000 ramdisk.img.gz
  6. # 读取 tf 卡分区 1 中的 imx6ull-14x14-evk.dtb 文件(分区为 fat32 格式)
  7. fatload mmc 0:1 0x85000000 imx6ull-14x14-evk.dtb
  8. # 设置给内核的传参:调试串口为 ttymxc0,波特率为 115200;文件系统设备为 /dev/ram0;读写;initramfs 地址为 0x84000000,大小为 4MB;init 应用为 linuxrc;文件系统类型为 ext4,;等待 rootfs 挂载
  9. setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rw initrd=0x84000000,0x400000 init=/linuxrc rootfstype=ext4 rootwait'
  10. # 启动内核
  11. bootz 80800000 - 85000000

在 imx6ull 手册中可知 ram 空间从 0x8000000 开始;

0x80800000:内核加载地址,随意定的;

0x84000000:ramdisk.img.gz 加载地址,随意定的;要给 zImage 文件留足解压空间;

0x85000000:imx6ull-14x14-evk.dtb 加载地址,随意定的;要给 ramdisk.img.gz 留足解压空间;

完整的启动日志如下:

  1. U-Boot 2023.04-dirty (Apr 29 2024 - 17:51:02 +0800)
  2. CPU: i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
  3. CPU: Industrial temperature grade (-40C to 105C) at 49C
  4. Reset cause: POR
  5. Model: i.MX6 ULL 14x14 EVK Board
  6. Board: MX6ULL 14x14 EVK
  7. DRAM: 512 MiB
  8. Core: 71 devices, 20 uclasses, devicetree: separate
  9. MMC: FSL_SDHC: 0, FSL_SDHC: 1
  10. Loading Environment from MMC... *** Warning - bad CRC, using default environment
  11. [*]-Video Link 0 (480 x 272)
  12. [0] lcdif@21c8000, video
  13. In: serial
  14. Out: serial
  15. Err: serial
  16. switch to partitions #0, OK
  17. mmc0 is current device
  18. flash target is MMC:0
  19. Fastboot: Normal
  20. Normal Boot
  21. Hit any key to stop autoboot: 0
  22. => fatload mmc 0:1 0x80800000 zImage
  23. 9447888 bytes read in 557 ms (16.2 MiB/s)
  24. => fatload mmc 0:1 0x84000000 ramdisk.img.gz
  25. 995096 bytes read in 60 ms (15.8 MiB/s)
  26. => fatload mmc 0:1 0x85000000 imx6ull-14x14-evk.dtb
  27. 45482 bytes read in 5 ms (8.7 MiB/s)
  28. => setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rw initrd=0x84000000,0x400000 init=/linuxrc rootfstype=ext4 rootwait'
  29. => bootz 80800000 - 85000000
  30. Kernel image @ 0x80800000 [ 0x000000 - 0x9029d0 ]
  31. ## Flattened Device Tree blob at 85000000
  32. Booting using the fdt blob at 0x85000000
  33. Working FDT set to 85000000
  34. Using Device Tree in place at 85000000, end 8500e1a9
  35. Working FDT set to 85000000
  36. Modify /soc/bus@2200000/epdc@228c000 disabled
  37. Starting kernel ...
  38. [ 0.000000] Booting Linux on physical CPU 0x0
  39. [ 0.000000] Linux version 6.6.3-gccf0a99701a7 (liangtao@RedmiBook) (arm-none-linux-gnueabihf-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009, GNU ld (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 2.41.0.20231009) #4 SMP PREEMPT Mon May 6 09:18:08 CST 2024
  40. [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
  41. [ 0.000000] CPU: div instructions available: patching division code
  42. [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
  43. [ 0.000000] OF: fdt: Machine model: Freescale i.MX6 ULL 14x14 EVK Board
  44. [ 0.000000] Memory policy: Data cache writealloc
  45. [ 0.000000] Reserved memory: created CMA memory pool at 0x96000000, size 160 MiB
  46. [ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
  47. [ 0.000000] OF: reserved mem: 0x96000000..0x9fffffff (163840 KiB) map reusable linux,cma
  48. [ 0.000000] Zone ranges:
  49. [ 0.000000] Normal [mem 0x0000000080000000-0x000000009fffffff]
  50. [ 0.000000] HighMem empty
  51. [ 0.000000] Movable zone start for each node
  52. [ 0.000000] Early memory node ranges
  53. [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009fffffff]
  54. [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
  55. [ 0.000000] percpu: Embedded 12 pages/cpu s18900 r8192 d22060 u49152
  56. [ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/ram0 rw initrd=0x84000000,0x400000 init=/linuxrc rootfstype=ext4 rootwait
  57. [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
  58. [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
  59. [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129920
  60. [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
  61. [ 0.000000] Memory: 328504K/524288K available (14336K kernel code, 1378K rwdata, 4508K rodata, 1024K init, 425K bss, 31944K reserved, 163840K cma-reserved, 0K highmem)
  62. [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
  63. [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
  64. [ 0.000000] rcu: RCU event tracing is enabled.
  65. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
  66. [ 0.000000] Trampoline variant of Tasks RCU enabled.
  67. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
  68. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
  69. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
  70. [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
  71. [ 0.000000] Switching to timer-based delay loop, resolution 41ns
  72. [ 0.000003] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
  73. [ 0.000041] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
  74. [ 0.003389] Console: colour dummy device 80x30
  75. [ 0.003485] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
  76. [ 0.003523] CPU: Testing write buffer coherency: ok
  77. [ 0.003627] pid_max: default: 32768 minimum: 301
  78. [ 0.004057] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
  79. [ 0.004107] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
  80. [ 0.006297] CPU0: update cpu_capacity 1024
  81. [ 0.006340] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
  82. [ 0.009762] RCU Tasks: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1.
  83. [ 0.010317] Setting up static identity map for 0x80100000 - 0x80100060
  84. [ 0.010855] rcu: Hierarchical SRCU implementation.
  85. [ 0.010878] rcu: Max phase no-delay instances is 1000.
  86. [ 0.012437] smp: Bringing up secondary CPUs ...
  87. [ 0.012505] smp: Brought up 1 node, 1 CPU
  88. [ 0.012534] SMP: Total of 1 processors activated (48.00 BogoMIPS).
  89. [ 0.012557] CPU: All CPU(s) started in SVC mode.
  90. [ 0.013863] devtmpfs: initialized
  91. [ 0.034658] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
  92. [ 0.035402] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
  93. [ 0.035458] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
  94. [ 0.047699] pinctrl core: initialized pinctrl subsystem
  95. [ 0.052756] NET: Registered PF_NETLINK/PF_ROUTE protocol family
  96. [ 0.070772] DMA: preallocated 256 KiB pool for atomic coherent allocations
  97. [ 0.074297] thermal_sys: Registered thermal governor 'step_wise'
  98. [ 0.074519] cpuidle: using governor menu
  99. [ 0.075064] CPU identified as i.MX6ULL, silicon rev 1.1
  100. [ 0.091608] platform soc: Fixed dependency cycle(s) with /soc/bus@2000000/gpc@20dc000
  101. [ 0.137847] failed to find ocotp node
  102. [ 0.138308] failed to find ocotp node
  103. [ 0.138768] No ATAGs?
  104. [ 0.138902] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
  105. [ 0.138931] hw-breakpoint: maximum watchpoint size is 8 bytes.
  106. [ 0.142268] imx6ul-pinctrl 20e0000.pinctrl: initialized IMX pinctrl driver
  107. [ 0.146970] imx6ul-pinctrl 2290000.iomuxc-snvs: no groups defined in /soc/bus@2200000/iomuxc-snvs@2290000
  108. [ 0.147048] imx6ul-pinctrl 2290000.iomuxc-snvs: initialized IMX pinctrl driver
  109. [ 0.150578] imx mu driver is registered.
  110. [ 0.151748] imx rpmsg driver is registered.
  111. [ 0.155318] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
  112. [ 0.159751] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation.
  113. [ 0.165456] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation.
  114. [ 0.171073] gpio gpiochip2: Static allocation of GPIO base is deprecated, use dynamic allocation.
  115. [ 0.176766] gpio gpiochip3: Static allocation of GPIO base is deprecated, use dynamic allocation.
  116. [ 0.182587] gpio gpiochip4: Static allocation of GPIO base is deprecated, use dynamic allocation.
  117. [ 0.196572] SCSI subsystem initialized
  118. [ 0.198092] usbcore: registered new interface driver usbfs
  119. [ 0.198205] usbcore: registered new interface driver hub
  120. [ 0.198332] usbcore: registered new device driver usb
  121. [ 0.203795] i2c i2c-0: IMX I2C adapter registered
  122. [ 0.207608] i2c 1-003c: Fixed dependency cycle(s) with /soc/bus@2100000/csi@21c4000/port/endpoint
  123. [ 0.207895] i2c i2c-1: IMX I2C adapter registered
  124. [ 0.209019] mc: Linux media interface: v0.10
  125. [ 0.209227] videodev: Linux video capture interface: v2.00
  126. [ 0.209443] pps_core: LinuxPPS API ver. 1 registered
  127. [ 0.209460] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
  128. [ 0.209516] PTP clock support registered
  129. [ 0.214168] MIPI CSI2 driver module loaded
  130. [ 0.214335] Advanced Linux Sound Architecture Driver Initialized.
  131. [ 0.216842] Bluetooth: Core ver 2.22
  132. [ 0.216985] NET: Registered PF_BLUETOOTH protocol family
  133. [ 0.217004] Bluetooth: HCI device and connection manager initialized
  134. [ 0.217037] Bluetooth: HCI socket layer initialized
  135. [ 0.217058] Bluetooth: L2CAP socket layer initialized
  136. [ 0.217108] Bluetooth: SCO socket layer initialized
  137. [ 0.218145] vgaarb: loaded
  138. [ 0.219481] clocksource: Switched to clocksource mxc_timer1
  139. [ 0.220168] VFS: Disk quotas dquot_6.6.0
  140. [ 0.220293] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
  141. [ 0.252636] NET: Registered PF_INET protocol family
  142. [ 0.253295] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
  143. [ 0.257301] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
  144. [ 0.257390] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
  145. [ 0.257448] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
  146. [ 0.257557] TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
  147. [ 0.257824] TCP: Hash tables configured (established 4096 bind 4096)
  148. [ 0.258041] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
  149. [ 0.258123] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
  150. [ 0.258550] NET: Registered PF_UNIX/PF_LOCAL protocol family
  151. [ 0.260189] RPC: Registered named UNIX socket transport module.
  152. [ 0.260226] RPC: Registered udp transport module.
  153. [ 0.260239] RPC: Registered tcp transport module.
  154. [ 0.260251] RPC: Registered tcp-with-tls transport module.
  155. [ 0.260263] RPC: Registered tcp NFSv4.1 backchannel transport module.
  156. [ 0.264162] PCI: CLS 0 bytes, default 64
  157. [ 0.264773] Trying to unpack rootfs image as initramfs...
  158. [ 0.267828] rootfs image is not initramfs (no cpio magic); looks like an initrd
  159. [ 0.270857] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available
  160. [ 0.275532] Bus freq driver module loaded
  161. [ 0.278291] Initialise system trusted keyrings
  162. [ 0.290235] workingset: timestamp_bits=14 max_order=17 bucket_order=3
  163. [ 0.292242] NFS: Registering the id_resolver key type
  164. [ 0.292420] Key type id_resolver registered
  165. [ 0.292439] Key type id_legacy registered
  166. [ 0.292549] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
  167. [ 0.292572] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
  168. [ 0.292679] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
  169. [ 0.293578] fuse: init (API version 7.39)
  170. [ 0.342652] Freeing initrd memory: 4096K
  171. [ 0.755153] Key type asymmetric registered
  172. [ 0.755188] Asymmetric key parser 'x509' registered
  173. [ 0.755377] io scheduler mq-deadline registered
  174. [ 0.755401] io scheduler kyber registered
  175. [ 0.755468] io scheduler bfq registered
  176. [ 0.777613] mxsfb 21c8000.lcdif: supply lcd not found, using dummy regulator
  177. [ 0.891229] sii902x bound to mxs-lcdif from 21c8000.lcdif
  178. [ 0.894267] Console: switching to colour frame buffer device 60x34
  179. [ 0.993064] mxsfb 21c8000.lcdif: initialized
  180. [ 1.006086] imx-sdma 20ec000.dma-controller: Direct firmware load for imx/sdma/sdma-imx6q.bin failed with error -2
  181. [ 1.006136] imx-sdma 20ec000.dma-controller: Falling back to sysfs fallback for: imx/sdma/sdma-imx6q.bin
  182. [ 1.011239] mxs-dma 1804000.dma-controller: initialized
  183. [ 1.022881] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 201, base_baud = 5000000) is a IMX
  184. [ 1.023036] printk: console [ttymxc0] enabled
  185. [ 1.942258] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 202, base_baud = 5000000) is a IMX
  186. [ 1.951801] serial serial0: tty port ttymxc1 registered
  187. [ 1.993104] random: crng init done
  188. [ 1.996625] imx_rngc 2284000.rng: Freescale RNGB registered (HW revision 2.129)
  189. [ 2.005186] imx sema4 driver is registered.
  190. [ 2.022240] brd: module loaded
  191. [ 2.042006] loop: module loaded
  192. [ 2.058289] spi-nor spi4.0: unrecognized JEDEC id bytes: ff ff ff ff ff ff
  193. [ 2.076659] tun: Universal TUN/TAP device driver, 1.6
  194. [ 2.082517] CAN device driver interface
  195. [ 2.092755] pps pps0: new PPS source ptp0
  196. [ 2.103930] fec 20b4000.ethernet: Invalid MAC address: 00:00:00:00:00:00
  197. [ 2.110957] fec 20b4000.ethernet: Using random MAC address: 8a:96:4b:4d:cc:2f
  198. [ 2.126803] fec 20b4000.ethernet eth0: registered PHC device 0
  199. [ 2.136814] pps pps1: new PPS source ptp1
  200. [ 2.148139] fec 2188000.ethernet: Invalid MAC address: 00:00:00:00:00:00
  201. [ 2.155332] fec 2188000.ethernet: Using random MAC address: ee:cd:f8:9c:7a:e7
  202. [ 2.165102] fec 2188000.ethernet eth1: registered PHC device 1
  203. [ 2.171855] e1000e: Intel(R) PRO/1000 Network Driver
  204. [ 2.176858] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
  205. [ 2.183952] usbcore: registered new device driver r8152-cfgselector
  206. [ 2.190476] usbcore: registered new interface driver r8152
  207. [ 2.196110] usbcore: registered new interface driver lan78xx
  208. [ 2.201963] usbcore: registered new interface driver asix
  209. [ 2.207482] usbcore: registered new interface driver ax88179_178a
  210. [ 2.213751] usbcore: registered new interface driver cdc_ether
  211. [ 2.219756] usbcore: registered new interface driver smsc95xx
  212. [ 2.225621] usbcore: registered new interface driver net1080
  213. [ 2.231510] usbcore: registered new interface driver cdc_subset
  214. [ 2.237552] usbcore: registered new interface driver zaurus
  215. [ 2.243322] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
  216. [ 2.251059] usbcore: registered new interface driver cdc_ncm
  217. [ 2.256843] usbcore: registered new interface driver r8153_ecm
  218. [ 2.263125] usbcore: registered new interface driver usb-storage
  219. [ 2.273702] imx_usb 2184000.usb: No over current polarity defined
  220. [ 2.896391] mxs_phy 20c9000.usbphy: Data pin can't make good contact.
  221. [ 2.909039] ci_hdrc ci_hdrc.1: EHCI Host Controller
  222. [ 2.914166] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
  223. [ 2.959523] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
  224. [ 2.965524] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
  225. [ 2.973926] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  226. [ 2.981341] usb usb1: Product: EHCI Host Controller
  227. [ 2.986257] usb usb1: Manufacturer: Linux 6.6.3-gccf0a99701a7 ehci_hcd
  228. [ 2.992864] usb usb1: SerialNumber: ci_hdrc.1
  229. [ 2.999066] hub 1-0:1.0: USB hub found
  230. [ 3.003156] hub 1-0:1.0: 1 port detected
  231. [ 3.013451] input: 20cc000.snvs:snvs-powerkey as /devices/platform/soc/2000000.bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0
  232. [ 3.027530] SPI driver ads7846 has no spi_device_id for ti,tsc2046
  233. [ 3.035200] SPI driver ads7846 has no spi_device_id for ti,ads7843
  234. [ 3.041588] SPI driver ads7846 has no spi_device_id for ti,ads7845
  235. [ 3.047805] SPI driver ads7846 has no spi_device_id for ti,ads7873
  236. [ 3.057874] input: iMX6UL Touchscreen Controller as /devices/platform/soc/2000000.bus/2040000.tsc/input/input1
  237. [ 3.076009] snvs_rtc 20cc000.snvs:snvs-rtc-lp: registered as rtc0
  238. [ 3.082479] snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01T00:29:34 UTC (1774)
  239. [ 3.092331] i2c_dev: i2c /dev entries driver
  240. [ 3.101551] pxp-v4l2 pxp_v4l2: initialized
  241. [ 3.116067] Bluetooth: HCI UART driver ver 2.3
  242. [ 3.120776] Bluetooth: HCI UART protocol H4 registered
  243. [ 3.125953] Bluetooth: HCI UART protocol BCSP registered
  244. [ 3.131635] Bluetooth: HCI UART protocol LL registered
  245. [ 3.136891] Bluetooth: HCI UART protocol Three-wire (H5) registered
  246. [ 3.143365] Bluetooth: HCI UART protocol Marvell registered
  247. [ 3.149119] usbcore: registered new interface driver btusb
  248. [ 3.157238] sdhci: Secure Digital Host Controller Interface driver
  249. [ 3.163578] sdhci: Copyright(c) Pierre Ossman
  250. [ 3.167964] sdhci-pltfm: SDHCI platform and OF driver helper
  251. [ 3.177644] sdhci-esdhc-imx 2190000.mmc: Got CD GPIO
  252. [ 3.194873] usbcore: registered new interface driver usbhid
  253. [ 3.207254] usbhid: USB HID core driver
  254. [ 3.214687] mma8452 0-001e: mounting matrix not found: using identity...
  255. [ 3.221618] mma8452 0-001e: supply vdd not found, using dummy regulator
  256. [ 3.229021] mma8452 0-001e: supply vddio not found, using dummy regulator
  257. [ 3.239782] mmc1: SDHCI controller on 2194000.mmc [2194000.mmc] using ADMA
  258. [ 3.249864] mmc0: SDHCI controller on 2190000.mmc [2190000.mmc] using ADMA
  259. [ 3.273904] wm8960 1-001a: supply DCVDD not found, using dummy regulator
  260. [ 3.281394] wm8960 1-001a: supply DBVDD not found, using dummy regulator
  261. [ 3.288287] wm8960 1-001a: supply AVDD not found, using dummy regulator
  262. [ 3.295390] wm8960 1-001a: supply SPKVDD1 not found, using dummy regulator
  263. [ 3.302571] wm8960 1-001a: supply SPKVDD2 not found, using dummy regulator
  264. [ 3.311431] wm8960 1-001a: Failed to issue reset
  265. [ 3.323266] rpmsg-codec-wm8960 1-001a: Failed to issue reset
  266. [ 3.351772] NET: Registered PF_LLC protocol family
  267. [ 3.358025] NET: Registered PF_INET6 protocol family
  268. [ 3.366723] Segment Routing with IPv6
  269. [ 3.370737] In-situ OAM (IOAM) with IPv6
  270. [ 3.375147] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
  271. [ 3.383604] NET: Registered PF_PACKET protocol family
  272. [ 3.388939] can: controller area network core
  273. [ 3.393632] NET: Registered PF_CAN protocol family
  274. [ 3.398709] can: raw protocol
  275. [ 3.402029] can: broadcast manager protocol
  276. [ 3.406446] can: netlink gateway - max_hops=1
  277. [ 3.411649] Bluetooth: RFCOMM TTY layer initialized
  278. [ 3.416851] Bluetooth: RFCOMM socket layer initialized
  279. [ 3.422336] Bluetooth: RFCOMM ver 1.11
  280. [ 3.426334] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
  281. [ 3.431907] Bluetooth: BNEP filters: protocol multicast
  282. [ 3.437501] Bluetooth: BNEP socket layer initialized
  283. [ 3.442818] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
  284. [ 3.448870] Bluetooth: HIDP socket layer initialized
  285. [ 3.454529] lib80211: common routines for IEEE802.11 drivers
  286. [ 3.460482] Key type dns_resolver registered
  287. [ 3.494604] Registering SWP/SWPB emulation handler
  288. [ 3.512597] mmc1: Failed to initialize a non-removable card
  289. [ 3.531507] Loading compiled-in X.509 certificates
  290. [ 3.586721] imx_thermal 20c8000.anatop:tempmon: Industrial CPU temperature grade - max:105C critical:100C passive:95C
  291. [ 3.610160] cfg80211: Loading compiled-in X.509 certificates for regulatory database
  292. [ 3.622459] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
  293. [ 3.628372] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
  294. [ 3.637181] clk: Disabling unused clocks
  295. [ 3.641278] platform regulatory.0: Falling back to sysfs fallback for: regulatory.db
  296. [ 3.649678] ALSA device list:
  297. [ 3.652680] No soundcards found.
  298. [ 3.656598] RAMDISK: gzip image found at block 0
  299. [ 3.789674] EXT4-fs (ram0): mounted filesystem 5caf1ad2-5083-4b68-bf15-debf54d306b4 r/w without journal. Quota mode: none.
  300. [ 3.801067] VFS: Mounted root (ext4 filesystem) on device 1:0.
  301. [ 3.807271] devtmpfs: mounted
  302. [ 3.812316] Freeing unused kernel image (initmem) memory: 1024K
  303. [ 3.818672] Run /linuxrc as init process
  304. Processing /etc/profile... Done
  305. ~ # ls
  306. bin home lost+found root tmp
  307. dev lib mnt sbin usr
  308. etc linuxrc proc sys var
  309. ~ #

5.2 修改 uboot 文件

通过编译后的 uboot-imx/include/config.h 可知,imx6ull 使用 uboot-imx/include/configs/mx6ullevk.h 来配置环境变量;

直接修该文件即可,我的修改如下:

  1. liangtao:uboot-imx$git diff include/configs/mx6ullevk.h
  2. diff --git a/include/configs/mx6ullevk.h b/include/configs/mx6ullevk.h
  3. index 9a0c14efce..875e9267df 100644
  4. --- a/include/configs/mx6ullevk.h
  5. +++ b/include/configs/mx6ullevk.h
  6. @@ -87,7 +87,7 @@
  7. "fdt_high=0xffffffff\0" \
  8. "initrd_high=0xffffffff\0" \
  9. "fdt_file=undefined\0" \
  10. - "fdt_addr=0x83000000\0" \
  11. + "fdt_addr=0x85000000\0" \
  12. "tee_addr=0x84000000\0" \
  13. "tee_file=undefined\0" \
  14. "boot_fdt=try\0" \
  15. @@ -97,7 +97,7 @@
  16. "mmcpart=1\0" \
  17. "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \
  18. "mmcautodetect=yes\0" \
  19. - "mmcargs=setenv bootargs console=${console},${baudrate} " \
  20. + "mmcargs=setenv bootargs console=${console},${baudrate} root=/dev/ram0 initrd=0x84000000,0x400000 init=/linuxrc rootfstype=ext4 rootwait" \
  21. BOOTARGS_CMA_SIZE \
  22. "root=${mmcroot}\0" \
  23. "loadbootscript=" \
  24. @@ -107,13 +107,14 @@
  25. "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
  26. "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
  27. "loadtee=fatload mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file}\0" \
  28. + "loadramdisk=fatload mmc 0:1 0x84000000 ramdisk.img.gz\0" \
  29. "mmcboot=echo Booting from mmc ...; " \
  30. "run mmcargs; " \
  31. "if test ${tee} = yes; then " \
  32. "run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; " \
  33. "else " \
  34. "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
  35. - "if run loadfdt; then " \
  36. + "if run loadfdt; run loadramdisk; then " \
  37. "bootz ${loadaddr} - ${fdt_addr}; " \
  38. "else " \
  39. "if test ${boot_fdt} = try; then " \

使用命令将 uboot 写入 tf 卡

  1. ${DRIVE} 是你的 tf 卡节点,比如 /dev/sdb
  2. sudo dd if=u-boot-dtb.imx of=${DRIVE} bs=1K seek=1 conv=fsync

上电启动日志如下:

  1. U-Boot 2023.04-dirty (May 08 2024 - 15:09:36 +0800)
  2. CPU: i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
  3. CPU: Industrial temperature grade (-40C to 105C) at 47C
  4. Reset cause: POR
  5. Model: i.MX6 ULL 14x14 EVK Board
  6. Board: MX6ULL 14x14 EVK
  7. DRAM: 512 MiB
  8. Core: 71 devices, 20 uclasses, devicetree: separate
  9. MMC: FSL_SDHC: 0, FSL_SDHC: 1
  10. Loading Environment from MMC... *** Warning - bad CRC, using default environment
  11. [*]-Video Link 0 (480 x 272)
  12. [0] lcdif@21c8000, video
  13. In: serial
  14. Out: serial
  15. Err: serial
  16. switch to partitions #0, OK
  17. mmc0 is current device
  18. flash target is MMC:0
  19. Fastboot: Normal
  20. Normal Boot
  21. Hit any key to stop autoboot: 0
  22. switch to partitions #0, OK
  23. mmc0 is current device
  24. switch to partitions #0, OK
  25. mmc0 is current device
  26. Failed to load 'boot.scr'
  27. 9447888 bytes read in 546 ms (16.5 MiB/s)
  28. Booting from mmc ...
  29. 45482 bytes read in 4 ms (10.8 MiB/s)
  30. 995096 bytes read in 59 ms (16.1 MiB/s)
  31. Kernel image @ 0x80800000 [ 0x000000 - 0x9029d0 ]
  32. ## Flattened Device Tree blob at 85000000
  33. Booting using the fdt blob at 0x85000000
  34. Working FDT set to 85000000
  35. Using Device Tree in place at 85000000, end 8500e1a9
  36. Working FDT set to 85000000
  37. Modify /soc/bus@2200000/epdc@228c000 disabled
  38. Starting kernel ...
  39. [ 0.000000] Booting Linux on physical CPU 0x0
  40. [ 0.000000] Linux version 6.6.3-gccf0a99701a7 (liangtao@RedmiBook) (arm-none-linux-gnueabihf-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009, GNU ld (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 2.41.0.20231009) #4 SMP PREEMPT Mon May 6 09:18:08 CST 2024
  41. [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
  42. [ 0.000000] CPU: div instructions available: patching division code
  43. [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
  44. [ 0.000000] OF: fdt: Machine model: Freescale i.MX6 ULL 14x14 EVK Board
  45. [ 0.000000] Memory policy: Data cache writealloc
  46. [ 0.000000] Reserved memory: created CMA memory pool at 0x96000000, size 160 MiB
  47. [ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
  48. [ 0.000000] OF: reserved mem: 0x96000000..0x9fffffff (163840 KiB) map reusable linux,cma
  49. [ 0.000000] Zone ranges:
  50. [ 0.000000] Normal [mem 0x0000000080000000-0x000000009fffffff]
  51. [ 0.000000] HighMem empty
  52. [ 0.000000] Movable zone start for each node
  53. [ 0.000000] Early memory node ranges
  54. [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009fffffff]
  55. [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
  56. [ 0.000000] percpu: Embedded 12 pages/cpu s18900 r8192 d22060 u49152
  57. [ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/ram0 initrd=0x84000000,0x400000 init=/linuxrc rootfstype=ext4 rootwaitroot=/dev/mmcblk0p2 rootwait rw
  58. [ 0.000000] Unknown kernel command line parameters "rootwaitroot=/dev/mmcblk0p2", will be passed to user space.
  59. [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
  60. [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
  61. [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129920
  62. [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
  63. [ 0.000000] Memory: 328504K/524288K available (14336K kernel code, 1378K rwdata, 4508K rodata, 1024K init, 425K bss, 31944K reserved, 163840K cma-reserved, 0K highmem)
  64. [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
  65. [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
  66. [ 0.000000] rcu: RCU event tracing is enabled.
  67. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
  68. [ 0.000000] Trampoline variant of Tasks RCU enabled.
  69. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
  70. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
  71. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
  72. [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
  73. [ 0.000000] Switching to timer-based delay loop, resolution 41ns
  74. [ 0.000003] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
  75. [ 0.000044] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
  76. [ 0.003380] Console: colour dummy device 80x30
  77. [ 0.003470] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
  78. [ 0.003510] CPU: Testing write buffer coherency: ok
  79. [ 0.003616] pid_max: default: 32768 minimum: 301
  80. [ 0.004050] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
  81. [ 0.004100] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
  82. [ 0.006285] CPU0: update cpu_capacity 1024
  83. [ 0.006330] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
  84. [ 0.009752] RCU Tasks: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1.
  85. [ 0.010303] Setting up static identity map for 0x80100000 - 0x80100060
  86. [ 0.010837] rcu: Hierarchical SRCU implementation.
  87. [ 0.010861] rcu: Max phase no-delay instances is 1000.
  88. [ 0.012424] smp: Bringing up secondary CPUs ...
  89. [ 0.012491] smp: Brought up 1 node, 1 CPU
  90. [ 0.012517] SMP: Total of 1 processors activated (48.00 BogoMIPS).
  91. [ 0.012538] CPU: All CPU(s) started in SVC mode.
  92. [ 0.013845] devtmpfs: initialized
  93. [ 0.034662] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
  94. [ 0.035394] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
  95. [ 0.035452] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
  96. [ 0.047723] pinctrl core: initialized pinctrl subsystem
  97. [ 0.052762] NET: Registered PF_NETLINK/PF_ROUTE protocol family
  98. [ 0.070799] DMA: preallocated 256 KiB pool for atomic coherent allocations
  99. [ 0.074304] thermal_sys: Registered thermal governor 'step_wise'
  100. [ 0.074527] cpuidle: using governor menu
  101. [ 0.075092] CPU identified as i.MX6ULL, silicon rev 1.1
  102. [ 0.091735] platform soc: Fixed dependency cycle(s) with /soc/bus@2000000/gpc@20dc000
  103. [ 0.138989] failed to find ocotp node
  104. [ 0.139458] failed to find ocotp node
  105. [ 0.139922] No ATAGs?
  106. [ 0.140057] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
  107. [ 0.140088] hw-breakpoint: maximum watchpoint size is 8 bytes.
  108. [ 0.143474] imx6ul-pinctrl 20e0000.pinctrl: initialized IMX pinctrl driver
  109. [ 0.148158] imx6ul-pinctrl 2290000.iomuxc-snvs: no groups defined in /soc/bus@2200000/iomuxc-snvs@2290000
  110. [ 0.148238] imx6ul-pinctrl 2290000.iomuxc-snvs: initialized IMX pinctrl driver
  111. [ 0.151932] imx mu driver is registered.
  112. [ 0.152999] imx rpmsg driver is registered.
  113. [ 0.156559] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
  114. [ 0.161029] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation.
  115. [ 0.166698] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation.
  116. [ 0.172536] gpio gpiochip2: Static allocation of GPIO base is deprecated, use dynamic allocation.
  117. [ 0.178010] gpio gpiochip3: Static allocation of GPIO base is deprecated, use dynamic allocation.
  118. [ 0.183868] gpio gpiochip4: Static allocation of GPIO base is deprecated, use dynamic allocation.
  119. [ 0.197677] SCSI subsystem initialized
  120. [ 0.199202] usbcore: registered new interface driver usbfs
  121. [ 0.199315] usbcore: registered new interface driver hub
  122. [ 0.199444] usbcore: registered new device driver usb
  123. [ 0.204693] i2c i2c-0: IMX I2C adapter registered
  124. [ 0.208546] i2c 1-003c: Fixed dependency cycle(s) with /soc/bus@2100000/csi@21c4000/port/endpoint
  125. [ 0.208835] i2c i2c-1: IMX I2C adapter registered
  126. [ 0.209961] mc: Linux media interface: v0.10
  127. [ 0.210174] videodev: Linux video capture interface: v2.00
  128. [ 0.210388] pps_core: LinuxPPS API ver. 1 registered
  129. [ 0.210407] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
  130. [ 0.210460] PTP clock support registered
  131. [ 0.215047] MIPI CSI2 driver module loaded
  132. [ 0.215219] Advanced Linux Sound Architecture Driver Initialized.
  133. [ 0.217730] Bluetooth: Core ver 2.22
  134. [ 0.217876] NET: Registered PF_BLUETOOTH protocol family
  135. [ 0.217895] Bluetooth: HCI device and connection manager initialized
  136. [ 0.217928] Bluetooth: HCI socket layer initialized
  137. [ 0.217950] Bluetooth: L2CAP socket layer initialized
  138. [ 0.218001] Bluetooth: SCO socket layer initialized
  139. [ 0.219055] vgaarb: loaded
  140. [ 0.220442] clocksource: Switched to clocksource mxc_timer1
  141. [ 0.221134] VFS: Disk quotas dquot_6.6.0
  142. [ 0.221263] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
  143. [ 0.253612] NET: Registered PF_INET protocol family
  144. [ 0.254276] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
  145. [ 0.258313] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
  146. [ 0.258400] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
  147. [ 0.258441] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
  148. [ 0.258548] TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
  149. [ 0.258816] TCP: Hash tables configured (established 4096 bind 4096)
  150. [ 0.259027] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
  151. [ 0.259110] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
  152. [ 0.259537] NET: Registered PF_UNIX/PF_LOCAL protocol family
  153. [ 0.261157] RPC: Registered named UNIX socket transport module.
  154. [ 0.261196] RPC: Registered udp transport module.
  155. [ 0.261209] RPC: Registered tcp transport module.
  156. [ 0.261221] RPC: Registered tcp-with-tls transport module.
  157. [ 0.261233] RPC: Registered tcp NFSv4.1 backchannel transport module.
  158. [ 0.265093] PCI: CLS 0 bytes, default 64
  159. [ 0.265701] Trying to unpack rootfs image as initramfs...
  160. [ 0.268718] rootfs image is not initramfs (no cpio magic); looks like an initrd
  161. [ 0.271874] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available
  162. [ 0.276534] Bus freq driver module loaded
  163. [ 0.279291] Initialise system trusted keyrings
  164. [ 0.291209] workingset: timestamp_bits=14 max_order=17 bucket_order=3
  165. [ 0.293196] NFS: Registering the id_resolver key type
  166. [ 0.293370] Key type id_resolver registered
  167. [ 0.293389] Key type id_legacy registered
  168. [ 0.293500] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
  169. [ 0.293525] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
  170. [ 0.293631] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
  171. [ 0.294542] fuse: init (API version 7.39)
  172. [ 0.343422] Freeing initrd memory: 4096K
  173. [ 0.755735] Key type asymmetric registered
  174. [ 0.755769] Asymmetric key parser 'x509' registered
  175. [ 0.755953] io scheduler mq-deadline registered
  176. [ 0.755978] io scheduler kyber registered
  177. [ 0.756047] io scheduler bfq registered
  178. [ 0.778219] mxsfb 21c8000.lcdif: supply lcd not found, using dummy regulator
  179. [ 0.891646] sii902x bound to mxs-lcdif from 21c8000.lcdif
  180. [ 0.894696] Console: switching to colour frame buffer device 60x34
  181. [ 0.993292] mxsfb 21c8000.lcdif: initialized
  182. [ 1.006311] imx-sdma 20ec000.dma-controller: Direct firmware load for imx/sdma/sdma-imx6q.bin failed with error -2
  183. [ 1.006364] imx-sdma 20ec000.dma-controller: Falling back to sysfs fallback for: imx/sdma/sdma-imx6q.bin
  184. [ 1.011493] mxs-dma 1804000.dma-controller: initialized
  185. [ 1.023086] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 201, base_baud = 5000000) is a IMX
  186. [ 1.023243] printk: console [ttymxc0] enabled
  187. [ 1.954850] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 202, base_baud = 5000000) is a IMX
  188. [ 1.964398] serial serial0: tty port ttymxc1 registered
  189. [ 2.005773] random: crng init done
  190. [ 2.009296] imx_rngc 2284000.rng: Freescale RNGB registered (HW revision 2.129)
  191. [ 2.017875] imx sema4 driver is registered.
  192. [ 2.034930] brd: module loaded
  193. [ 2.054575] loop: module loaded
  194. [ 2.070965] spi-nor spi4.0: unrecognized JEDEC id bytes: ff ff ff ff ff ff
  195. [ 2.089120] tun: Universal TUN/TAP device driver, 1.6
  196. [ 2.095090] CAN device driver interface
  197. [ 2.105339] pps pps0: new PPS source ptp0
  198. [ 2.116532] fec 20b4000.ethernet: Invalid MAC address: 00:00:00:00:00:00
  199. [ 2.123571] fec 20b4000.ethernet: Using random MAC address: 66:5d:a7:7b:6f:24
  200. [ 2.139311] fec 20b4000.ethernet eth0: registered PHC device 0
  201. [ 2.149401] pps pps1: new PPS source ptp1
  202. [ 2.161055] fec 2188000.ethernet: Invalid MAC address: 00:00:00:00:00:00
  203. [ 2.167844] fec 2188000.ethernet: Using random MAC address: 2a:b8:ea:b0:b1:97
  204. [ 2.177649] fec 2188000.ethernet eth1: registered PHC device 1
  205. [ 2.184499] e1000e: Intel(R) PRO/1000 Network Driver
  206. [ 2.189505] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
  207. [ 2.196647] usbcore: registered new device driver r8152-cfgselector
  208. [ 2.203164] usbcore: registered new interface driver r8152
  209. [ 2.208793] usbcore: registered new interface driver lan78xx
  210. [ 2.214642] usbcore: registered new interface driver asix
  211. [ 2.220161] usbcore: registered new interface driver ax88179_178a
  212. [ 2.226422] usbcore: registered new interface driver cdc_ether
  213. [ 2.232446] usbcore: registered new interface driver smsc95xx
  214. [ 2.238309] usbcore: registered new interface driver net1080
  215. [ 2.244180] usbcore: registered new interface driver cdc_subset
  216. [ 2.250218] usbcore: registered new interface driver zaurus
  217. [ 2.255994] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
  218. [ 2.263584] usbcore: registered new interface driver cdc_ncm
  219. [ 2.269368] usbcore: registered new interface driver r8153_ecm
  220. [ 2.275769] usbcore: registered new interface driver usb-storage
  221. [ 2.286323] imx_usb 2184000.usb: No over current polarity defined
  222. [ 2.906747] mxs_phy 20c9000.usbphy: Data pin can't make good contact.
  223. [ 2.919389] ci_hdrc ci_hdrc.1: EHCI Host Controller
  224. [ 2.924575] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
  225. [ 2.970605] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
  226. [ 2.976615] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
  227. [ 2.985021] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  228. [ 2.992330] usb usb1: Product: EHCI Host Controller
  229. [ 2.997239] usb usb1: Manufacturer: Linux 6.6.3-gccf0a99701a7 ehci_hcd
  230. [ 3.003945] usb usb1: SerialNumber: ci_hdrc.1
  231. [ 3.010154] hub 1-0:1.0: USB hub found
  232. [ 3.014242] hub 1-0:1.0: 1 port detected
  233. [ 3.024537] input: 20cc000.snvs:snvs-powerkey as /devices/platform/soc/2000000.bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0
  234. [ 3.038619] SPI driver ads7846 has no spi_device_id for ti,tsc2046
  235. [ 3.045568] SPI driver ads7846 has no spi_device_id for ti,ads7843
  236. [ 3.052078] SPI driver ads7846 has no spi_device_id for ti,ads7845
  237. [ 3.058293] SPI driver ads7846 has no spi_device_id for ti,ads7873
  238. [ 3.068185] input: iMX6UL Touchscreen Controller as /devices/platform/soc/2000000.bus/2040000.tsc/input/input1
  239. [ 3.086389] snvs_rtc 20cc000.snvs:snvs-rtc-lp: registered as rtc0
  240. [ 3.092859] snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01T00:57:19 UTC (3439)
  241. [ 3.102719] i2c_dev: i2c /dev entries driver
  242. [ 3.111943] pxp-v4l2 pxp_v4l2: initialized
  243. [ 3.126395] Bluetooth: HCI UART driver ver 2.3
  244. [ 3.131192] Bluetooth: HCI UART protocol H4 registered
  245. [ 3.136374] Bluetooth: HCI UART protocol BCSP registered
  246. [ 3.141980] Bluetooth: HCI UART protocol LL registered
  247. [ 3.147240] Bluetooth: HCI UART protocol Three-wire (H5) registered
  248. [ 3.153702] Bluetooth: HCI UART protocol Marvell registered
  249. [ 3.159457] usbcore: registered new interface driver btusb
  250. [ 3.167591] sdhci: Secure Digital Host Controller Interface driver
  251. [ 3.173926] sdhci: Copyright(c) Pierre Ossman
  252. [ 3.178312] sdhci-pltfm: SDHCI platform and OF driver helper
  253. [ 3.188005] sdhci-esdhc-imx 2190000.mmc: Got CD GPIO
  254. [ 3.203420] usbcore: registered new interface driver usbhid
  255. [ 3.209047] usbhid: USB HID core driver
  256. [ 3.224379] mma8452 0-001e: mounting matrix not found: using identity...
  257. [ 3.231415] mma8452 0-001e: supply vdd not found, using dummy regulator
  258. [ 3.238531] mma8452 0-001e: supply vddio not found, using dummy regulator
  259. [ 3.258330] mmc1: SDHCI controller on 2194000.mmc [2194000.mmc] using ADMA
  260. [ 3.266363] mmc0: SDHCI controller on 2190000.mmc [2190000.mmc] using ADMA
  261. [ 3.281861] wm8960 1-001a: supply DCVDD not found, using dummy regulator
  262. [ 3.289437] wm8960 1-001a: supply DBVDD not found, using dummy regulator
  263. [ 3.296846] wm8960 1-001a: supply AVDD not found, using dummy regulator
  264. [ 3.304038] wm8960 1-001a: supply SPKVDD1 not found, using dummy regulator
  265. [ 3.311285] wm8960 1-001a: supply SPKVDD2 not found, using dummy regulator
  266. [ 3.319700] wm8960 1-001a: Failed to issue reset
  267. [ 3.330955] rpmsg-codec-wm8960 1-001a: Failed to issue reset
  268. [ 3.361640] NET: Registered PF_LLC protocol family
  269. [ 3.367795] NET: Registered PF_INET6 protocol family
  270. [ 3.376522] Segment Routing with IPv6
  271. [ 3.380585] In-situ OAM (IOAM) with IPv6
  272. [ 3.384752] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
  273. [ 3.393338] NET: Registered PF_PACKET protocol family
  274. [ 3.398581] can: controller area network core
  275. [ 3.403283] NET: Registered PF_CAN protocol family
  276. [ 3.408340] can: raw protocol
  277. [ 3.411465] can: broadcast manager protocol
  278. [ 3.415903] can: netlink gateway - max_hops=1
  279. [ 3.421192] Bluetooth: RFCOMM TTY layer initialized
  280. [ 3.426373] Bluetooth: RFCOMM socket layer initialized
  281. [ 3.431844] Bluetooth: RFCOMM ver 1.11
  282. [ 3.435851] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
  283. [ 3.441419] Bluetooth: BNEP filters: protocol multicast
  284. [ 3.446862] Bluetooth: BNEP socket layer initialized
  285. [ 3.452101] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
  286. [ 3.458385] Bluetooth: HIDP socket layer initialized
  287. [ 3.464272] lib80211: common routines for IEEE802.11 drivers
  288. [ 3.470248] Key type dns_resolver registered
  289. [ 3.505633] Registering SWP/SWPB emulation handler
  290. [ 3.533638] mmc1: Failed to initialize a non-removable card
  291. [ 3.543986] Loading compiled-in X.509 certificates
  292. [ 3.605162] imx_thermal 20c8000.anatop:tempmon: Industrial CPU temperature grade - max:105C critical:100C passive:95C
  293. [ 3.620844] cfg80211: Loading compiled-in X.509 certificates for regulatory database
  294. [ 3.633246] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
  295. [ 3.639154] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
  296. [ 3.647921] clk: Disabling unused clocks
  297. [ 3.652235] ALSA device list:
  298. [ 3.655226] No soundcards found.
  299. [ 3.659145] RAMDISK: gzip image found at block 0
  300. [ 3.664028] platform regulatory.0: Falling back to sysfs fallback for: regulatory.db
  301. [ 3.800309] EXT4-fs (ram0): mounted filesystem 5caf1ad2-5083-4b68-bf15-debf54d306b4 r/w without journal. Quota mode: none.
  302. [ 3.811751] VFS: Mounted root (ext4 filesystem) on device 1:0.
  303. [ 3.817954] devtmpfs: mounted
  304. [ 3.822986] Freeing unused kernel image (initmem) memory: 1024K
  305. [ 3.830917] Run /linuxrc as init process
  306. Processing /etc/profile... Done
  307. ~ # ls
  308. bin home lost+found root tmp
  309. dev lib mnt sbin usr
  310. etc linuxrc proc sys var
  311. ~ #

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/772712
推荐阅读
相关标签
  

闽ICP备14008679号