参考ti论坛上面的一篇文章:

链接:https://pan.baidu.com/s/1SLSUbCRrIULJJf_BNI3sEQ 密码: hvem

自己稍微修改的debrick.sh

链接: https://pan.baidu.com/s/1pOrEKuhHGa3E0JcU0KUtbw 密码: k9nz

准备所需工具:

1、SD卡,4G-Kingston

2、SD卡读卡器-SSK

3、PC电脑,电脑预装虚拟机以及Ubuntu系统。

4、boneblack开发板

5、预向emmc中烧写的MLO、u-boot.img、uEnv.txt、uImage、am335x-boneblack.dtb ==>  boot_partition.tar.gz

          Self_for_BoneBlack_filesystem ==> rootfs_partition.tar.gz

其中用到的MLO、u-boot.img、uEnv.txt、uImage、am335x-boneblack.dtb,Self_for_BoneBlack_filesystem都可以自己编译出来。

6、串口线连接boneblack板卡,利用串口打印信息,方便调试。

我自己编译好的文件:

boot_partition.tar.gz制作好的要写入emmc分区1的文件

链接: https://pan.baidu.com/s/1WU4bxCL1TLuHYuAysLr_ug 密码: ujrj

rootfs_partition.tar.gz制作好的要写入emmc中的文件系统(在分区2中)

链接: https://pan.baidu.com/s/1nnbLMIuIslNojVRhXnrNSw密码: rkkf

要在SD卡中运行的文件系统:FlasherFS.tar.gz

链接: https://pan.baidu.com/s/1lMGLR_godXMhQMkC5MzeLg 密码: uqag

首先进入自己的虚拟机ubuntu系统中打开终端进入存放主要文件的目录:

    cd /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/

    目录下有一下文件:

    运行脚本Download_for_eMMC.sh

    链接: https://pan.baidu.com/s/1cgxBaI_S62MYk2K4fJvjcQ 密码: c3xx

#!/bin/sh

##此脚本的目的是将已经编译好的MLO、u-boot.img、uEnv.txt、uImage、am335x-boneblack.dtb等文件压缩后复制到SD卡的文件系统(FlasherFS)中
##将要烧写的文件系统(rootfs.partition.tar.gz)也复制到SD卡的文件系统(FlasherFS)中
##然后压缩文件系统为FlasherFS.tra.gz #指定MLO(SPL)的路径
MLO="/home/zyr/Source_code/u-boot-2016.03/am335x-boneblack/MLO" #指定u-boot.img的路径
ubootimg="/home/zyr/Source_code/u-boot-2016.03/am335x-boneblack/u-boot.img" #指定uEnv.txt的路径
uEnvtxt="/home/zyr/Source_code/u-boot-2016.03/am335x-boneblack/uEnv.txt" uEnvtxtemmc="/home/zyr/Source_code/uEnv.txt" #指定filesystem的路径
filesystem="/home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/Self-for-Boneblack-filesystem.tar.gz" #指定Blageboneblackdtb的路径
Beaglebonedtb="/home/zyr/Source_code/linux-3.14.65/arch/arm/boot/dts/am335x-boneblack.dtb" #指定uImage的路径
uImage="/home/zyr/Source_code/linux-3.14.65/arch/arm/boot/uImage" ##制作烧写emmc的文件系统
cp -v ${MLO} /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
cp -v ${ubootimg} /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
cp -v ${uImage} /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
cp -v ${uEnvtxtemmc} /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
cp -v ${Beaglebonedtb} /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
sync ##MLO、u-boot.img、uEnv.txt、uImage、am335x-boneblack.dtb这些文件是要放在emmc中运行的
tar -cvzf boot_partition.tar.gz MLO u-boot.img uImage uEnv.txt am335x-boneblack.dtb
sync rm -f /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/MLO
rm -f /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/u-boot.img
rm -f /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/uImage
rm -f /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/uEnv.txt
rm -f /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/am335x-boneblack.dtb
sync ##制作在emmc中运行的文件系统以及相应的环境变量的设置
mkdir -p /home/zyr/Source_code/Self_for_BoneBlack_filesystem/opt/backup/uboot/
cp -v ${MLO} /home/zyr/Source_code/Self_for_BoneBlack_filesystem/opt/backup/uboot/
cp -v ${ubootimg} /home/zyr/Source_code/Self_for_BoneBlack_filesystem/opt/backup/uboot/
cp -v ${uEnvtxtemmc} /home/zyr/Source_code/Self_for_BoneBlack_filesystem
sync cp -v ${uImage} /home/zyr/Source_code/Self_for_BoneBlack_filesystem/boot/
cp -v ${uEnvtxtemmc} /home/zyr/Source_code/Self_for_BoneBlack_filesystem/boot/
mkdir -p /home/zyr/Source_code/Self_for_BoneBlack_filesystem/boot/dtbs/
cp -v ${Beaglebonedtb} /home/zyr/Source_code/Self_for_BoneBlack_filesystem/boot/dtbs
sync ##压缩Self_for_BoneBlack_filesystem(运行在emmc中的文件系统)
cd /home/zyr/Source_code/Self_for_BoneBlack_filesystem
tar -cvzf rootfs_partition.tar.gz ./*
mv rootfs_partition.tar.gz /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
sync ##将运行在emmc中的系统所需要的boot_partition.tar.gz,rootfs_partition.tar.gz复制到FlasherFS文件系统中
##FlasherFS文件系统是运行在SD卡中的里边有烧写emmc的脚本。
cd /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
cp -v boot_partition.tar.gz /home/zyr/Source_code/FlasherFS/home/root/
cp -v rootfs_partition.tar.gz /home/zyr/Source_code/FlasherFS/home/root/
sync cd /home/zyr/Source_code/FlasherFS
tar -cvzf FlasherFS.tar.gz ./*
sync mv FlasherFS.tar.gz /home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard
sync ##tar -cvzf rootfs_partition.tar.gz {filesystem}

      sh Download_for_eMMC.sh

      此脚本的目的:

      1、将MLO、u-boot.img、uEnv.txt、uImage、am335x-boneblack.dtb这些文件压缩成boot_partition.tar.gz

      2、向自制的文件系统中添加MLO、u-boot.img、uEnv.txt、uImage、am335x-boneblack.dtb这些东西,并压缩成 rootfs_partition.tar.gz(在emmc中运行的u- boot、kernel、文件系统)

      3、向要在sd卡中运行的文件系统FlasherFS拷入boot_partition.tar.gz, rootfs_partition.tar.gz并压缩为FlasherFS.tar.gz。

其次插入SD卡及其读卡器

      在终端中查看SD卡信息:

      

      然后运行Setup-microSD-emmc.sh脚本

      链接:https://pan.baidu.com/s/1Mt3nFT9XB0SJFkSR133Gxw 密码: 9eur

#!/bin/sh

#指定SD卡的路径(lsblk查看SD卡的路径)
DISK="/dev/sdb" #指定MLO(SPL)的路径
MLO="/home/zyr/Source_code/u-boot-2016.03/am335x-boneblack/MLO" #指定u-boot.img的路径
ubootimg="/home/zyr/Source_code/u-boot-2016.03/am335x-boneblack/u-boot.img" #指定uEnv.txt的路径
uEnvtxt="/home/zyr/Source_code/u-boot-2016.03/am335x-boneblack/uEnv.txt" #指定filesystem的路径
filesystem="/home/zyr/Source_code/BeagleBone/BeagleBone-crate-SDcard/FlasherFS.tar.gz" #指定Blageboneblackdtb的路径
Beaglebonedtb="/home/zyr/Source_code/linux-3.14.65/arch/arm/boot/dts/am335x-boneblack.dtb" #指定uImage的路径
uImage="/home/zyr/Source_code/linux-3.14.65/arch/arm/boot/uImage" #擦除SD卡
dd if=/dev/zero of=${DISK} bs=1M count=
sync #烧写MLO,U-boot
dd if=${MLO} of=${DISK} count= seek= bs=128K
sync
dd if=${ubootimg} of=${DISK} count= seek= bs=384K
sync
#dd if=/home/zyr/MLO of=${DISK} count= seek= bs=128K
#dd if=/home/zyr/u-boot.img of=${DISK} count= seek= bs=384K #创建分区(Linux系统)
sfdisk --unit M ${DISK} <<-__EOF__
,,L,*
__EOF__ #格式化分区(格式化为ext4)
mkfs.ext4 -L rootfs ${DISK}
## Make sure posted writes are cleaned up
sync
sync
echo "Formatting done." mkdir -p /media/rootfs/
mount ${DISK} /media/rootfs mkdir -p /media/rootfs/opt/backup/uboot/
cp -v ${MLO} /media/rootfs/opt/backup/uboot/
cp -v ${ubootimg} /media/rootfs/opt/backup/uboot/
cp -v ${uEnvtxt} /media/rootfs/ tar xfvp ${filesystem} -C /media/rootfs
sync
sync
chown root:root /media/rootfs/
chmod /media/rootfs/ cp -v ${uImage} /media/rootfs/boot/
echo "This uImage is for BeagleBoneBlack kernel. What different from Am335x_evmsk is where the filesysytem run. "
echo "Am335x_evmSk's filesysytem is running in sd's part 2."
echo "BeagleBoneBlack's filesystem is running in Sd's part 1."
cp -v ${uEnvtxt} /media/rootfs/boot/
mkdir -p /media/rootfs/boot/dtbs/
cp -v ${Beaglebonedtb} /media/rootfs/boot/dtbs sh -c "echo '/dev/mmcblk0p1 / auto errors=remount-ro 0 1' >> /media/rootfs/etc/fstab" sync
sync
umount /media/rootfs

此脚本的目的是制作用于烧写emmc的SD的启动文件系统。可以以参考:

http://www.cnblogs.com/BigOBlue/p/7699075.html

将制作好的SD卡插入BoneBlack开发板SD卡槽就可以对emmc进行擦写了。

Note:当这些都做完了,有可能emmc只能运行u-boot和kernel,但是到运行文件系统时可能出错。基本原因就是uEnv.txt中环境变量设置不对emmc找不到文件系统所在的位置。(运行在emmc中的uEnv.txt  链接: https://pan.baidu.com/s/1Tdh41t9x76Fk4exTANF4CQ 密码: uttp )

、此目录下的uEnv.txt是为在Emmc中运行的系统的环境变量的设置。此uEnv.txt的环境变量的设置与在SD卡中运行的环境变量的是不一样的。不一样的地方是emmc是mmc1,而SD卡是mmc0.
、目录下的Self_for_BoneBlack_filesystem文件夹是专门为利用SD卡烧写emmc的文件系统(此文件系统是emmc所用)。
、bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 rootwait 当烧写完emmc之后从emmc启动之后u-boot可以启动,当内核启动之后根据打印信息看到emmc配置成了mmcblk0p1,mmcblk0p2。所以将根文件系统放在/dev/mmcblk0p2中。

Note:虽然在我用的u-boot中并没有发现类似初始化emmc的函数和emmc引脚的配置只有:

static struct module_pin_mux mmc0_pin_mux_sk_evm[] = {
{OFFSET(mmc0_dat3), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT3 */
{OFFSET(mmc0_dat2), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT2 */
{OFFSET(mmc0_dat1), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT1 */
{OFFSET(mmc0_dat0), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT0 */
{OFFSET(mmc0_clk), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_CLK */
{OFFSET(mmc0_cmd), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_CMD */
{OFFSET(spi0_cs1), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC0_CD */
{-},
}; static struct module_pin_mux mmc1_pin_mux[] = {
{OFFSET(gpmc_ad3), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_DAT3 */
{OFFSET(gpmc_ad2), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_DAT2 */
{OFFSET(gpmc_ad1), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_DAT1 */
{OFFSET(gpmc_ad0), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_DAT0 */
{OFFSET(gpmc_csn1), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_CLK */
{OFFSET(gpmc_csn2), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_CMD */
{OFFSET(gpmc_csn0), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_WP */
{OFFSET(gpmc_advn_ale), (MODE() | RXACTIVE | PULLUP_EN)}, /* MMC1_CD */
{-},
};

但是经过查看数据手册的得知,boneblack的开发板中的emmc(MTFC4GLDEA 0M WT)引脚是可以只配置数据脚的DAT0-DAT3的也就是说emmc有两种运行模式就是数据线0-3,模式和0-7模式。所以虽然没看到u-boot对emmc的所有引脚配置但是u-boot还是可是使用emmc的(纯属自己理解,欢迎板砖)。

BoneBlack am335x利用SD卡烧写板卡上的emmc的更多相关文章

  1. uboot从SD卡烧写内核和文件系统

    环境:ubuntu 13.04一.首先制作sd启动盘: 插入SD卡    sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/m ...

  2. tiny6410采用sd卡烧写的问题

    今天想用32G的SD卡来烧写tiny6410的uboot但是失败了,换了一张4G的卡就可以了, 还有sd卡启动的uboot使用tftp命令是有问题的

  3. fastboot烧写Andriod 以及SD 卡烧写LinuxQT,

    EMMC是一种FLASH,SD(TF)卡是另外的一种存储,通过控制拨码开关指引CPU去读EMMC还是SD卡的u-boot文件. u-boot的作用 初始化内存控制区,访问存储器,把内核从存储器读取出来 ...

  4. iTOP-4418开发板TF卡烧写-引导uboot

    基于迅为iTOP-4418开发板 将 TF 卡接入开发板,将拨码开关设置为 TF 卡启动,进入 uboot 模式,如下图所示. 如下图所示,使用命令“fastboot”,接着就可以通过 OTG 给 e ...

  5. AM335X的SD卡更新系统学习记录

    一般利用一张SD卡就能进行系统的更新,以前一直不知是什么原理,最近了解了下,对了解到的内容做个记录.使用的是AM335X平台,系统是Linux,文件系统是EXT3: 1.首先需要一张分好分区的SD卡( ...

  6. 菜鸟在ubuntu 16.04下制作am335x的SD卡启动盘反思

    以前只在消费电子平台android和rtos上做软件,每次都是公司的环境现成的,根本不用去想启动加载那部分 的事情,最近在做一个工控机的项目时,接触到了TI的arm335x系列的平台,才发现在嵌入式的 ...

  7. 用FATFS在SD卡里写一串数字

    用FATFS写SD卡,如写入数组 s[] ={1,2,3,4,5,6} 想要在txt中显示“123456” 就要把 s[0]=1+'0'    或 s[0]=1+48   或 s[0]=1+0x30  ...

  8. 往SD卡中写文件的方法。

    package com.lixu.writetosd; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...

  9. 安卓 往SD卡里写文件不能及时更新的问题

    我们做Android开发时奖保存图片到SD卡,但是Gallery中不能及时显示 下面我找到了问题所在然后解决了这个问题. 当保存图片后打开gallery时,有的会自动给你刷新,有的不行,这样就导致图片 ...

随机推荐

  1. Java 对象初始化生命周期

    class Man { String name; int age = 20; public static int sex = 1; Man(String name, int age) { //supe ...

  2. ORA 00972 错误处理

    Oracle 11G SQL 写好的脚本执行后报错:ORA 00972 标识符过长 可能的原因一: select 语句中的字段别名太长,中文字符别名最长为10个汉字,简化别名名称,问题得到解决. 可能 ...

  3. C# Func的同步、异步调用

    using System; namespace ActionDemo { class Program { static void Main(string[] args) { Console.Write ...

  4. 通过BurpSuite和sqlmap配合对dvwa进行sql注入测试和用户名密码暴力破解

    0x1 工具和环境介绍 dvwa:渗透测试环境 BurpSuite:强大的WEB安全测试工具 sqlmap:强大的sql注入工具 以上工具和环境都在kali linux上安装和配置. 0x2 步骤说明 ...

  5. 生成Word/ATU报表提示 font family not found

    1.先从你本机 C:\Windows\Fonts 拷贝或者网络上下载你想要安装的字体文件(*.ttf文件)到 /usr/share/fonts/chinese/TrueType 目录下(如果系统中没有 ...

  6. leetcode之 两数之和

    # -*- coding: utf-8 -*- # @Time : 2018/9/27 21:41 # @Author : cxa # @File : twonum.py # @Software: P ...

  7. linux文件管理 -> 系统压缩打包

    如果希望windows和Linux互相能使用的压缩工具, 建议.zip格式 压缩的好处主要有: 节省磁盘空间占用率 节省网络传输带宽消耗 网络传输更加快捷 Linux系统常见的后缀名所对应的压缩工具 ...

  8. ASP防XSS代码

    原作是在GitHub上,基于Node.js所写.但是..ASP的JS引擎跟V8又有些不同..于是,嗯.. <% Function AntiXSS_VbsTrim(s) AntiXSS_VbsTr ...

  9. 列表选择Spinner

    1.只用XML配置来显示列表 在res\values中添加一个arrays.xml 1 <?xml version="1.0" encoding="utf-8&qu ...

  10. python基础-类的反射

    1)反射是通过字符串方式映射内存中的对象. python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr, 改四个函数分别用于对对象内部执行:检查是 ...