背景:

  最近在学习uboot,其中有一步很重要的任务就是需要实现uboot 的验证,没有办法验证uboot是不是自己做的,那么整个开发就会收到阻碍。另外,从公司现在开发的板子来看,uboot从sd卡启动是一个很常用的手法。苦于身边的开发板没有提供这个手段,这里也要吐槽一下供应商连这么简单的手段都不公开出来。

  好在最近参考了有关的文档,实现了出来。


平台    :Ubuntu 18.04
arm-gcc   :4.8
$ ./arm-eabi-gcc --version
arm-eabi-gcc (GCC) 4.8
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 

准备:

编译好的 uboot (具体的uboot是从 供应商手上提供的uboot编译而来的)
一张sd卡,读卡器
 

Linux制作sd启动卡:

安装以下工具
sudo apt-get install gparted
确定sd卡插入的设备节点
*为了确保万无一失,可以 检查插入sd前后 cat /proc/partitions 的区别,有新增的设备就是sd卡所在的设备节点。*
$ cat /proc/partitions
major minor #blocks name loop7
sda
sdb
sdb1

显然,这里是 sdb ,我们也可以看到有 /dev/sdb 设备存在。

删除sd卡原有的分区

* 如果想删除sd卡原有的隐藏分区也可以通过这一部实现 *
$ sudo fdisk /dev/sdb
  Welcome to fdisk (util-linux 2.31.1).
  Changes will remain in memory only, until you decide to write them.
  Be careful before using the write command.

  输入d 按下回车 :删除所有分区

  Command (m for help): d
  Selected partition
  Partition has been deleted.

  再输入w 按下回车:保存修改

  Command (m for help): w
  The partition table has been altered.
  Calling ioctl() to re-read partition table.
  Syncing disks.

此时,如果再使用 cat /proc/partitions 会发现 sdb1 消失

 

给sd卡分区

输入:
sudo gparted /dev/sdb

根据界面上面的指示进行操作:(共5步)

1: 添加分区

2:输入分区大小

3:选择fat32格式

4:确定添加

5:点击打勾以保存修改

至此,sd卡制作完毕。

 
 

制作烧写脚本

#!/bin/sh
# s5p6818 irom sd/mmc boot fusing tool.
# Author: Jianjun Jiang <@qq.com> # display usage message
USAGE()
{
echo Usage: $(basename "$0") '<device> <bootloader>'
echo ' device = disk device name for SD card.'
echo ' bootloader = /path/to/uboot.bin'
echo 'e.g. '$(basename "$0")' /dev/sdc uboot.bin'
} #[ `id -u` == ] || { echo "you must be root user"; exit ; }
[ -z "$1" -o -z "$2" ] && { USAGE; exit ; } dev="$1"
xboot="$2" # validate parameters
[ -b "${dev}" ] || { echo "${dev} is not a valid block device"; exit ; }
[ X"${dev}" = X"${dev%%[0-9]}" ] || { echo "${dev} is a partition, please use device, perhaps ${dev%%[0-9]}"; exit ; }
[ -f ${xboot} ] || { echo "${xboot} is not a bootloader binary file."; exit ; } # copy the full bootloader image to block device
dd if="${xboot}" of="${dev}" bs= seek= conv=sync sync; echo "OK"

执行脚本

 sudo ./-sdmmc.sh /dev/sdb uboot.bin

插入支持sd卡启动的开发板上,即可完成从sd卡启动uboot

以下是改动后的uboot的效果。

s5p6818 从SD卡启动程序(制作SD启动卡)的更多相关文章

  1. Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序

    Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序 1. 一键启动的过程 1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件 & ...

  2. idea debug启动项目慢或者启动不了

    使用debug无法启动项目但是使用run就可以启动程序,而且启动比以前的debug模式快的多 原因: 启动不了的原因是在项目中的方法上打了断点,导致项目无法继续编译 取消方法断点就可以了 在idea官 ...

  3. ZYNQ的Linux Linaro系统镜像制作SD卡启动

    ZYNQ的Linux Linaro系统镜像制作SD卡启动 0. 概述 ZYNQ生成uboot的时候和正常的ARM设备不太一样,ZYNQ属于二次辅助启动uboot然后由uboot启动内核,大概意思就是 ...

  4. ZYNQ的Linux Linaro系统镜像制作SD卡启动(仅使用mkfs部分,其他部分待看)

    0. 概述 ZYNQ生成uboot的时候和正常的ARM设备不太一样,ZYNQ属于二次辅助启动uboot然后由uboot启动内核,大概意思就是 ZYNQ内部有一个机制,该机制不可修改,可以通过拨码开关控 ...

  5. 制作SD卡启动自己编译的uboot.bin

    README for FriendlyARM Tiny4412 -----------------------------------------------------1. Build uboot ...

  6. pandaboard es 制作SD启动卡OMAP4460

    1. 本次使用的是chipsee的板子,带屏幕的,先把资料传到Ubuntu的共享目录下 2. 进入共享目录 /mnt/hgfs/ubuntu_share/pandboard_es_linux# 3. ...

  7. OMAPL138制作SD卡启动介质及重装Linux系统

    OMAPL138制作SD卡启动盘及重装Linux系统 手里的创龙的OMAPL138平台的系统SSH坏掉了,我重新移植了openssh还是不好使,没有办法了只能重装OMAPL138的系统了,按照创龙给的 ...

  8. 基于tiny4412原生uboot修改制作SD启动并烧写到emmc

    最近入手tiny4412的标准板,底板SDK型号为1506.但是因为友善之臂提供的superboot不能进入boot菜单,此时我就不能通过tftp下载内核和通过nfs挂载根文件系统,于是想自己做个ub ...

  9. 手动制作用于启动BeagleBoneBlack(am335x)的SD

    1.需求MLO.u-boot.img.uImage.Systemfile 获取MLO.u-boot.img下载U-boot源码,解压获得源码,进入源码目录 cd /home/zyr/Source_co ...

随机推荐

  1. Go by Example-图解数组

    基本概念 1.数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 2.在 Go 中因为数组的内存布局是连续的,所以可以通过索引(位置 ...

  2. Leetcode题 257. Binary Tree Paths

    Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...

  3. oracle查询表指定字段类型

    查询表某字段类型,如下: SELECT data_type FROM all_tab_cols WHERE table_name = UPPER('SRIS_P_BaseInfo') and colu ...

  4. Python-文件读写及修改

    文件的读写有三种形式:读.写和追加. 一.读模式 r 和读写模式 r+ 1.读模式 r 读模式r特点:(1)只能读,不能写:(2)文件不存在时会报错. (1)例:读取当前目录下的books.txt文件 ...

  5. PM2用法简介【命令行启动 --env 参数设置使用问题】

    环境切换 正式开发中分为不同的环境(开发环境.测试环境.生产环境),我们需要根据不同的情景来切换各种环境 pm2通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参 ...

  6. python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型

    线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...

  7. js事件函数中(ev)是什么鬼?

    首先,从ev所在的位置就可以得知,ev是参数. 在ev中包含了事件触发时的函数, 比如: click事件的ev中包含着e.pageX,e.pageY keydown事件中包含着ev.keyCode等 ...

  8. 算法习题---4.4信息解码(UVa213)

    一:题目 消息编码方案要求在两个部分中发送一个被编码的消息.第一部分:称为头,包含消息的字符.第二部分包含一个模式 表示信息.你必须写一个程序,可以解码这个消息. (一)题目详细 你的程序的编码方案的 ...

  9. SSM配置基于注解AOP

    pom.xml <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...

  10. Windows .net服务器系列 wmic命令使用示例--Examples of WMIC commands for Windows .NET SERVER Family

    1.0 Method execution: NICCONFIG (Win32_NetworkAdapterConfiguration) WMIC NICCONFIG WHERE Index=1 CAL ...