NXP i.MX6 ARM-Linux从TF启动烧录笔记

项目场景:

NXP i.MX6系列产品提供PC端mfgtools工具,用USB OTG进行固件烧写,往往现场更新或批量生产时,USB烧写不便。眺望电子提供TF启动烧写方案。在眺望电子TW-IMX6DL-EVM开发板上进行如下演示,介绍TF卡启动烧录的修改过程。

编译环境及开发包:
主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15
串口工具:Xshell

注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。


解决方案:

1.Uboot修改

根据不同板子配置,6D板子配置如下:

tw@tw:~/ $ make mx6dlsabresd_config

6Q板子配置如下:

tw@tw:~/ $ make mx6qsabresd_config

2.制作TF启动卡

2.1 找到TF卡设备节点

tw@tw:~$ ls  /dev/sdb*

ls  /dev/sdb*

2.2 TF卡分区:

分成两个区,一个500M,剩下的分配到第二个区;

tw@tw:~$ sudo umount /dev/sdb
tw@tw:~$ sudo fdisk  /dev/sdb

输入p列出当前分区,如图
输入p列出当前分区

输入d 删除原来分区
输入d 删除原来分区

输入n 增加分区,第一个分区分配500M
输入n 增加分区,第一个分区分配500M

输入n 增加分区,第二个分区分配剩下的空间
输入n 增加分区,第二个分区分配剩下的空间

输入t 改变第一个分区格式为W95 FAT32 (LBA)
输入t 改变第一个分区格式为W95 FAT32 (LBA)

输入p 查看当前分区
输入p 查看当前分区

输入w 保存
输入w 保存

2.3 格式化分区:

tw@tw:~$ sudo  mkfs.vfat  /dev/sdb1

sudo  mkfs.vfat  /dev/sdb1

tw@tw:~$ sudo  mkfs.ext4  -F  -E nodiscard  /dev/sdb2

sudo  mkfs.ext4  -F  -E nodiscard  /dev/sdb2

2.4 擦除uboot环境变量:

tw@tw:~$ sudo dd if=/dev/zero of=/dev/sdb bs=1k seek=512 conv=fsync count=8

2.5 烧写uboot:

uboot编译时配置成相对应的板子

tw@tw:~$ sudo dd if=u-boot.imx  of=/dev/sdb bs=1k seek=1 conv=fsync
tw@tw:~$ sync

2.6 查看分区挂载位置(或者手动挂载)

tw@tw:~$  df

df

2.7 拷贝 zImage 和 dtb设备树到第一个分区

tw@tw:~/kernel-source$ sudo cp arch/arm/boot/zImage /media/tw/FB0F-3645/
tw@tw:~/kernel-source$ sudo cp arch/arm/boot/dts/imx6q-sabresd.dtb /media/tw/FB0F-3645/

2.8 解压 根文件系统 到第二个分区

tw@tw:~$ sudo tar -jxvf rootfs.tar.bz2  -C /media/tw/d864168c-069c-48c0-a0bf-03e770b55a00/
tw@tw:~$ sync

2.9 设置启动拨码,从TF卡启动

3.烧录脚本编写

下面脚本用于烧写固件到emmc

#!/bin/sh
umount /dev/mmcblk3p1
umount /dev/mmcblk3p2
dd if=/dev/zero of=/dev/mmcblk3 bs=1024 count=1
fdisk /dev/mmcblk3 <<EOF
n
p

+500M
n
p

t
1
c
w
EOF
dd if=/dev/zero of=/dev/mmcblk3 bs=1k seek=512 conv=fsync count=8
echo 0 > /sys/block/mmcblk3boot0/force_ro
dd if=u-boot.imx of=/dev/mmcblk3boot0  bs=512 seek=2 conv=fsync
echo 1 > /sys/block/mmcblk3boot0/force_ro
sync
mkfs.vfat /dev/mmcblk3p1
mkfs.ext4 -F  /dev/mmcblk3p2
mkdir -p /mnt/mmcblk3p1
mount -t vfat /dev/mmcblk3p1 /mnt/mmcblk3p1
cp zImage imx6q-sabresd.dtb /mnt/mmcblk3p1 
umount /mnt/mmcblk3p1
mkdir -p /mnt/mmcblk3p2
mount -t ext4 /dev/mmcblk3p2 /mnt/mmcblk3p2
tar -jxvf rootfs.tar.bz2 -C /mnt/mmcblk3p2
sync
sync
umount /mnt/mmcblk3p2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

眺望电子-ARM嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值