博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
烧写uboot
阅读量:4283 次
发布时间:2019-05-27

本文共 2389 字,大约阅读时间需要 7 分钟。

前言
一般嵌入式 会用 flash 作为 uboot 的容器所以烧写uboot 就是将 uboot 的二进制程序写入 flash 而烧写flash 需要 flash 驱动,所以烧写成功,肯定存在flash驱动.

1/在裸板上烧写uboot

大多都是利用了板端的jtag接口(不包括hitool和烧写器),利用 将PC端的 软件将 uboot文件传递给jtag接口,然后板端将得到的数据直接烧写到flash中.
这个过程中 其实是分步骤的一般是
1.将flash驱动及烧写算法通过jtag接口写入内存 2.将数据写入内存 3.执行算法将内存中的数据写入flash.
  • 通过jlink套件(利用jtag接口)
套件包括软件(jlink软件和jflash软件)和硬件(jlink)        1/硬件联通    2/jlink软件        //testwspeed         //speed 115200    3/jflash软件        //配置 .jflash 文件        //connect program       - 注意: 需要jlink套件 支持该soc,即有相应的 .jflash 文件,或者自己编写这个文件.
  • 烧写器(直接和flash芯片交互)

    烧写器大多需要将芯片吹下来放到烧写器上烧写,浪费时间和生命.但有些烧写器支持不用吹下来的烧写.

    这个过程中 其实是分步骤的一般是 1.烧写器启动 2.将数据写入烧写器内存 3. 烧写器调用驱动(烧写器固件中)将内存中的数据写入flash.

    所以要烧写器固件支持烧写改款flash

  • 芯片厂商提供的软件

这个过程中 其实是分步骤的一般是 1.芯片从bootrom启动(芯片中固化了bootrom,只要是芯片出厂就会固化,注意,不是uboot) 2.等待上位机的连接 3.连接成功 4.上位机通过接口(看芯片厂商提供什么接口)发送数据到内存. 5.bootrom调用bootrom 中的驱动将内存中的数据写入flash

所以这个方式也需要芯片厂商提供的 bootrom 支持 什么 flash.肯定要支持接口驱动程序(例如串口)

烧写方式还有另一种可能 1.芯片从bootrom启动(芯片中固化了bootrom,只要是芯片出厂就会固化,注意,不是uboot) 2.等待上位机的连接 3.连接成功 4.上位机通过接口(看芯片厂商提供什么接口)发送数据(一般是uboot)到内存. 5.交付控制权给uboot,uboot启动 6.uboot 开始自己烧写自己(目前启动的uboot)到flash

这种方式不需要芯片厂商提供的 bootrom flash.但肯定要支持接口驱动程序(例如串口),另外uboot 肯定要支持该 flash

海思厂商  - hitool(通过串口)        hitool是海思提供的一个工具,用来通过串口实现和海思的芯片交互     海思的芯片里面有一个bootrom    1/可以通过boot_sel、bootrom、NFBOOT_PIN 管脚配置从bootrom启动    2/启动之后,会对串口进行检测,如果有数据发来,会接收数据并写到sram,根据数据初始化sdram,然后初始化内存,并重定位uboot,然后从内存启动    3/主机发送flash烧写命令给从内存启动的uboot    4/uboot将内存中的数据烧写到flash    注意:    1/boot_sel、bootrom、NFBOOT_PIN配置从bootrom启动    2/uboot支持所对应的ddr,因为要烧写到sdram里面,所以肯定要初始化        3/串口一定保证能正常使用    4/uboot必须支持flash,因为要烧写uboot到flash
jz2440提供的工具 (通过jtag) - oflash软件 和 硬件openjtag - oflash 是基于s3c2440的jz2440做的通过jtag接口烧写软件的软件 - 要配套openjtag

2/通过uboot烧写uboot

烧写方式一般是 1.芯片从uboot启动 2.uboot 通过接口接收数据放入内存(接口可以是串口,网络,usb) 3. uboot 调用uboot 自身的 flash驱动 写flash
  • 串口
loady
  • 网络
tftp
nfs
  • usb接口
- dnw    - dnw是三星推出的一个工具,通过usb传输文件的一个工具    - 使用三星提供的一个uboot启动,并设置其uboot等待usb接口来的数据    - 用dnw工具将uboot.bin从pc机上传送给板端的USB接口.    - 板端接收usb接口的数据并放入内存,直至接收完成.    - uboot将内存中的uboot.bin烧入flash

3/通过文件系统烧写uboot

flash 一般有分区 uboot bootargs kernelImage rootfs ,此时需要调用 linux内核的flash 驱动程序将 uboot 分区 擦除,并写入另一个uboot. 如果linux 能挂载文件系统成功,即能启动成功,肯定有该 flash 的驱动程序.但是如果 写 一个新的 flash 就不好说了.
在linux的shell中烧写uboot/kernelmtd write命令是自定义的烧写flash命令。1///烧写uboot ,/dev/mtd0 是bootloader 的特定分区 mtd write u-boot.bin /dev/mtd0 2///烧写kernel, mtd1 是kernel的特定分区mtd write vmlinux.elf /dev/mtd13///重启reboot

转载地址:http://vtigi.baihongyu.com/

你可能感兴趣的文章
队列在Http请求中的一点理解
查看>>
好想在你身边
查看>>
写给还在迷茫中挣扎的你
查看>>
在迷茫中执着前行
查看>>
笔记本连接无线但不能上网,网速极慢
查看>>
小蜗牛,慢慢爬
查看>>
Java关键字 -- Super
查看>>
Java -- 入口函数浅析
查看>>
EventBus 的简单使用
查看>>
Banner 浅析
查看>>
Android Crash框架Recovery
查看>>
限制 EditText 最多输入两位小数
查看>>
Android中attrs.xml文件的使用详解
查看>>
TabLayout 解析
查看>>
android获取屏幕尺寸、密度(判断手机屏幕类型)
查看>>
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
查看>>
Android drawable 目录下不同精度 浅析
查看>>
Drawable 文件夹——xml文件
查看>>
OkHttp 新手上路
查看>>
Android 蓝牙如何使用
查看>>