【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动

news2024/9/20 7:58:20

前言

  • 最近为了深入研究 嵌入式Linux 的开发,把【迅为iMX6Q】开发板 找了出来,重新搭建了开发编译环境

  • 【迅为iMX6Q】开发板 的 u-boot,放在了 android 源码中,可以从 【迅为iMX6Q】开发板 网盘资料里,下载 iTOP-iMX6_android6.0.1_20200731.tar.gz,解压后,提取 uboot-imx,版本为 2015.04

提取 uboot-imx

  • 下载 iTOP-iMX6_android6.0.1_20200731,可以在 【迅为】提供的网盘地址下载,为 7z 格式化的压缩包
zhangsz@zhangsz-virtual-machine:~/linux/imx6q/android 6.0.1$ ls -la
total 14394144
drwxrwxr-x  3 zhangsz zhangsz       4096  13 17:09 .
drwxrwxr-x 12 zhangsz zhangsz       4096  13 16:53 ..
drwxr-xr-x 28 zhangsz zhangsz       4096  13 17:14 iTOP-iMX6_android6.0.1
-rwxrwxr-x  1 zhangsz zhangsz 1073741824  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.001
-rwxrwxr-x  1 zhangsz zhangsz 1073741824  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.002
-rwxrwxr-x  1 zhangsz zhangsz 1073741824  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.003
-rwxrwxr-x  1 zhangsz zhangsz 1073741824  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.004
-rwxrwxr-x  1 zhangsz zhangsz 1073741824  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.005
-rwxrwxr-x  1 zhangsz zhangsz 1073741824  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.006
-rwxrwxr-x  1 zhangsz zhangsz  862685960  13 16:54 iTOP-iMX6_android6.0.1_20200731.tar.7z.007
-rw-rw-r--  1 zhangsz zhangsz 7434417077  731  2020 iTOP-iMX6_android6.0.1_20200731.tar.gz
  • $ sudo apt install p7zip-full,安装 7z 解压缩工具

  • 7z 解压缩 7z x iTOP-iMX6_android6.0.1_20200731.tar.7z.001

zhangsz@zhangsz-virtual-machine:~/linux/imx6q/android 6.0.1$ 7z x iTOP-iMX6_android6.0.1_20200731.tar.7z.001

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs 12th Gen Intel(R) Core(TM) i7-12700F (90672),ASM,AES-NI)

Scanning the drive for archives:
1 file, 1073741824 bytes (1024 MiB)

Extracting archive: iTOP-iMX6_android6.0.1_20200731.tar.7z.001
--
Path = iTOP-iMX6_android6.0.1_20200731.tar.7z.001
Type = Split
Physical Size = 1073741824
Volumes = 7
Total Physical Size = 7305136904
----
Path = iTOP-iMX6_android6.0.1_20200731.tar.7z
Size = 7305136904
--
Path = iTOP-iMX6_android6.0.1_20200731.tar.7z
Type = 7z
Physical Size = 7305136904
Headers Size = 186
Method = LZMA2:21
Solid = -
Blocks = 1

Everything is Ok

Size:       7434417077
Compressed: 7305136904
  • 7z解压缩后为 iTOP-iMX6_android6.0.1_20200731.tar.gz

  • 再次解压,得到 iTOP-iMX6_android6.0.1,也就是基于 迅为 imx6q 开发板的 android 源码,其中包括 u-boot、Linux kernel

  • 解压缩 $ tar zxf iTOP-iMX6_android6.0.1_20200731.tar.gz

  • uboot-imx 路径:iTOP-iMX6_android6.0.1/bootable/bootloader/uboot-imx,这个就是 uboot 的源码,版本: 2015.04

在这里插入图片描述

编译 uboot-imx

  • 可以直接使用 uboot-imx 下 的 编译脚本:build_uboot.sh 编译,也可以把 uboot-imx 复制到其他的位置,单独编译 uboot

  • 可以把 uboot-imx 从 android 源码中 拷贝出来,加人 Git 管理

  • 编译脚本修改:建议使用: gcc-linaro-5.2-2015.11-2-x86_64_arm-linux-gnueabi,版本 ``gcc version 5.2.1 20151005 (Linaro GCC 5.2-2015.11-2)

export ARCH=arm
#export CROSS_COMPILE=$(pwd)/../../../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
export CROSS_COMPILE=arm-linux-gnueabi-

make distclean

if [ "$1" = "plus" ]
then
        #plus
        echo "****************** build imx6q plus ******************"
        cp include/configs/mx6sabresd.h_2G include/configs/mx6sabresd.h
        make mx6qpsabresdandroid_config
else
        #6q
        echo "****************** build imx6q ******************"
        #make mx6qsabresdandroid_config
        make mx6qsabresd_defconfig
fi

make -j4

编译产物

  • 编译生成了 u-boot.bin 与 u-boot.imx,这里的 u-boot.imx 用于烧写到 SD卡或者 emmc 中

烧写到 SD 卡

  • u-boot.imx 烧写到 SD 卡的 0x400(1K 字节)偏移的位置,SD 卡前面的1K 字节,用于分区表 MBR 与 预留空间

  • u-boot.imx 带有 IVT 等 imx6q 启动需要的信息,直接烧写 u-boot.bin 无法引导

  • 首先把 SD 卡通过读卡器,插入电脑,在 ubuntu 中连接,然后 df -l 确认 SD 卡识别的设备号,如 sdb sdc

在这里插入图片描述

  • 如我的 SD 卡识别为 : /dev/sdc1 ~ /dev/sdc4,SD 卡设备为: /dev/sdc/dev/sdc1 ~ /dev/sdc4 代表有四个分区

  • 由于 u-boot 烧写到 SD 卡 1K字节偏移的位置,所以不会影响分区表,但是 SD 卡分区时,需要在SD 前面偏移一定的空间,如偏移8M字节,用于 u-boot 与 u-boot env 变量的保存。

  • 烧写命令使用: sudo dd if=u-boot.imx of=/dev/sdc bs=512 seek=2 && sync

注意这里的 if=u-boot.imx 输入文件
of=/dev/sdc ,这里是 SD 设备,不是分区
bs=512 读写的块大小,512字节
seek=2 前面2个块(1K字节)偏移
sync 为了数据同步到 SD 卡中

zhangsz@zhangsz-virtual-machine:~/linux/imx6q/uboot/uboot-imx_android6.0.1$ sudo dd if=u-boot.imx of=/dev/sdc bs=512 seek=2 && sync
814+0 records in
814+0 records out
416768 bytes (417 kB, 407 KiB) copied, 0.0644534 s, 6.5 MB/s

修改 uboot-imx

  • 直接编译的 uboot-imx,发现启动有问题,首先需要根据开发板 DDR 的配置,我当前的开发板是 2G DDR,默认是1G DDR 配置,所以需要更改

  • 进入 board/freescale/mx6sabresd$ cp mx6q_4x_mt41j128.cfg_2G mx6q_4x_mt41j128.cfg,也就是把 DDR 配置改为 2G的

  • 修改 sd 卡引脚配置,主要是 CD 引脚,需要根据原理图进行修改

  • 迅为开发板 imx6q, sd 卡 cd 引脚为:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

static iomux_v3_cfg_t const usdhc2_pads[] = {
	MX6_PAD_SD2_CLK__SD2_CLK	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_SD2_CMD__SD2_CMD	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_SD2_DAT0__SD2_DATA0	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_SD2_DAT1__SD2_DATA1	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_SD2_DAT2__SD2_DATA2	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_SD2_DAT3__SD2_DATA3	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_NANDF_D4__SD2_DATA4	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_NANDF_D5__SD2_DATA5	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_NANDF_D6__SD2_DATA6	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_NANDF_D7__SD2_DATA7	| MUX_PAD_CTRL(USDHC_PAD_CTRL),
	MX6_PAD_GPIO_4__GPIO1_IO04	| MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
};

在这里插入图片描述

  • 还需要修改: USDHC2_CD_GPIO
#define USDHC2_CD_GPIO	IMX_GPIO_NR(1, 4)

在这里插入图片描述

重新编译并下载

在这里插入图片描述

  • 运行效果
U-Boot 2015.04 (Jan 04 2023 - 20:53:15)

CPU:   Freescale i.MX6Q rev1.5 at 792 MHz
CPU:   Temperature 16 C
Reset cause: POR
Board: MX6-SabreSD
I2C:   ready
DRAM:  2 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
LCD type:5.0
bootsystem:android
bootargs=console=ttymxc0,115200 androidboot.console=ttymxc0 consoleblank=0 vmalloc=256M init=/init video=mxcfb0:dev=lcd,VGA_800480,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off androidboot.hardware=freescale cma=384M
Display: 5.0 (800x480)
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc0 is current device
Net:   FEC [PRIME]
Normal Boot
Hit any key to stop autoboot:  0
reading boot-topeet_9.7.img
** Unable to read file boot-topeet_9.7.img **
Unknown command 'boota' - try 'help'
=>
  • 根据LCD 屏,修改 LCD type,我当前的屏为 5寸屏,修改 setenv lcdtype '5.0'
=> setenv lcdtype '5.0'
=> saveenv
Saving Environment to MMC...
Writing to MMC(0)... done
=> reset
resetting ...

LCD 显示

  • uboot 默认显示 LOGO 图片

在这里插入图片描述

在这里插入图片描述

  • 【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动成功

小结

  • 可以直接使用 NXP 官方的 u-boot 进行移植,不过 迅为提供的 u-boot,网络驱动、LCD 驱动都适配好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下redis环境搭建(可查看源码及Debug调试进入源码)及简易使用

Windows下redis环境搭建(可查看源码及Debug调试进入源码)及简易使用 在我们使用redis进行学习的过程中,在Windows平台上进行学习是一个非常高效的选择,因此下面介绍如何在Windows环境下搭建一个redis环境(即可Debug调试…

数据结构之入门二叉树

文章目录前言1.二叉树的知识铺垫2.二叉树的具体实现1.递归实现前中后序遍历2.其它相关接口的实现1.求二叉树的节点个数2.求叶子节点个数3.二叉树查找值为x的节点3.求树高度4.求k层节点的个数5.层序遍历6.判断二叉树是否是完全二插树3.总结前言 之前用数组实现了一种特殊的完全…

解决word写论文改成两栏时mathtype的公式无法居中的问题

想要的格式 投论文的时候,有很多期刊的要求是两栏排版,比如中国电机工程学报 理论上,用mathtype输入的公式,会根据word的格式自动地调整自己的缩进量(更确切地说,是会自动调整制表位)。比如下…

新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)

目录 你好,蓝桥云课 👋 🌲欢迎来到蓝桥云课🌲 为什么要用 Linux 实验精神 蓝桥云课课程 加入课程 开始实验 实验环境 讨论发帖 实验报告 有效学习时间 我们的目标是星辰大海 🍐Linux 桌面环境使用指南&…

【C++ Primer】阅读笔记(4):string

目录 简介初始化string对象初始化方法直接初始化与拷贝初始化string对象上的操作操作方式读取string对象(cin>>s、cout<<s)getline(is,s)empty()size()string对象的比较(>、<、<=、>=)两个string对象相加(s1+s2)字面值与string对象相加遍历string对象参…

Jenkins复制和导出导入job

一、同一个Jenkins中复制job如果是同一个Jenkins复制job&#xff0c;只需要在创建Job时&#xff0c;选择Copy from一个已有的job即可。也就是在下方上面的红框中输入你新建job的名称&#xff0c;在下面的红框中输入你想要复制的job(已经建好的job)&#xff0c;然后点击确定。这…

【C初阶】实用调试技巧

实用调试技巧前言一、什么是bug&#xff1f;二、调试是什么&#xff1f;&#xff08;一&#xff09;调试&#xff08;二&#xff09;调试的基本步骤&#xff08;三&#xff09;Debug和Release的介绍。1.简单介绍三、Windows环境调试介绍&#xff08;一&#xff09;调试环境的准…

【SAP Abap】SAP ALV开发(REUSE_ALV_GRID_DISPLAY_LVC)全网最详细 DEMO

SAP ALV开发&#xff08;REUSE_ALV_GRID_DISPLAY_LVC&#xff09;全网最详细 DEMO1、ALV 简介2、演示程序1、ALV 简介 ALV 报表程序&#xff0c;是我们在 SAP 项目中最常开发的程序类型。 SAP 系统提供了三种 ALV 实现方式&#xff0c;分别是&#xff1a; FM ALV&#xff0c;…

win10下安装多个JDK配置方法

环境变量配置 此电脑 --- 属性 -- 高级系统设置 -- 环境变量 -- 系统变量 -- 新建 1、配置JAVA_HOME JAVA6_HOME jdk1.6的安装路径 JAVA8_HOME jdk1.8的安装路径 JAVA_HOME %JAVA8_HOME% 两个%表示引用变量的值&#xff0c;直接用JAVA_HOME&#xff0c;就能表示一连串长…

SAR影像变化检测方法之(SAR_CD_DDNet(无监督变化检测))论文阅读

一、论文信息 1、论文标题&#xff1a;Change Detection in Synthetic Aperture Radar Images Using a Dual-Domain Network 2、代码链接&#xff1a;https://github.com/summitgao/SAR_CD_DDNet 二、摘要 合成孔径雷达(SAR)图像的变化检测是一项关键而具有挑战性的任务。现…

Android---BottomAppBar

目录 BottomAppBar FloatingActionButton UI 完整代码 BottomAppBar Material Design 的一个重要特征是设计 BottomAppBar 。可适应用户不断变化的需求和行为。因此&#xff0c;BottomAppBar 是一个从标准物质指导的演变。它更注重功能&#xff0c;增加参与…

ansible 第三天

1.挂载本地光盘到/mnt 2.配置yum源仓库文件通过多种方式实现 仓库1 &#xff1a; Name: RH294_Base Description&#xff1a; RH294 base software Base urt: file:///mnt/BaseOS 不需要验证钦件包 GPG 签名 启用此软件仓库 仓库 2: Name: RH294_Stream Description &#xff1…

Android Studio 用WIFI无线调试adb (3种方法)

最近数据线一直被boss借走&#xff0c;一旦借走就无法调试了&#xff0c;所以就打算不用数据线调试了&#xff0c;使用WIFI进行调试。 一、命令 1、首先配置adb环境变量 首先找到andoridSDK的路径中的platform-tools文件夹 &#xff0c;将他的路径复制我的是 C:\Users\YiShi…

365天深度学习训练营-第P7周:YOLOv5-Backbone/YOLOv5-C3模块实现

目录 一、前言 二、我的环境 三、代码实现 1、C3模块 2、Backbone模块 一、前言 >- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/xLjALoOD8HPZcH563En8bQ) 中的学习记录博客** >- **&#x1f366; 参考文章&#xff1a;36…

【算法】day03:动态规划dp

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录1. 青蛙跳台阶2. 矩形覆盖3. 二进制中1的个数4. 链表中倒数第k个结点普通小孩也要热爱生活&#xff01; 1. 青蛙跳台阶 跳台阶 1&#xff09;思路&#xff1a;如果青蛙在第n个台阶上&#xff0c;那么它要么来自n-1…

python命名规范

1.命名有字母、数字和下划线三个组成 2.项目名、包名、模块名、python文件名 都应该用英文开头&#xff0c;不能纯数字&#xff0c;否则无法识别 3.脚本名不能跟系统模块或三方模块重复 4.函数、类、方法、参数名称不能跟系统现有名称重复 5.类名必须以大写字母开头、除了类…

Kafka在windows下下载、启动、测试详细教程

目录 下载地址 启动 启动zookeeper 启动kafka 队列操作 创建消息队列名 删除消息队列名 查看所有的队列 测试 生产测试 消费测试 下载地址 Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloadswindows下kafka3.0版本的…

G120系列变频器进行参数备份(上传或下载)的2种基本方法介绍(Startdrive+SD卡)

G120系列变频器进行参数备份(上传或下载)的2种基本方法介绍(Startdrive+SD卡) 1. 通过SINAMICS SD存储卡对G120系列变频器进行参数上传/下载的具体方法 适配范围:CU240B-2(DP)/CU240E-2(DP/PN)/CU250S-2(DP/PN) 可将变频器的参数设置保存至 SINAMICS SD 卡。在进行变频器更…

回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入多输出

回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入多输出 目录回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入多输出预测效果基本介绍程序设计往期精彩参考资料预测效果 基本介绍 MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入多输出&#xff0c;运行…

docker swarm 集群部署和验证

docker swarm可以轻松的部署集群,实现负载均衡,服务器的扩容和扩容的反义词. 首先docker的官方文档非常的不稳定,梯子也不解决问题.还好有替代 docs.docker.com 用不了 https://docs.docker.com.zh.xy2401.com/engine/swarm/swarm-tutorial/ 很好 场景: 三台机器 x.x.x.104 x.…