嵌入式系统烧写uboot/bootloader/kernel的一般方法
本文介绍了在嵌入式系统中烧写uboot/bootloader/kernel 的一般方法,以及如果uboot或者内核出现错误,  www.2cto.com  
引导失败等情况时如何重新烧写uboot/kernel.
烧写uboot/kernel的方式一般有两种,一种是在linux本身(shell中),直接将uboot/kernel的影像文件(二进制文件)使用操作烧写flash的命令烧写到flash特定分区上,
另一种是在uboot界面上,通过配置serverip,ipaddr,使用tftp命令下载uboot/kernel到flash上
例子如下:
//一,在linux的shell中烧写uboot/kernel
mtd write命令是自定义的烧写flash命令。
//烧写uboot ,/dev/mtd0 是bootloader 的特定分区
mtd write u-boot.bin /dev/mtd0 
//烧写kernel, mtd1 是kernel的特定分区
mtd write vmlinux.elf /dev/mtd1
//重启
reboot 
//二,在uboot界面中烧写uboot/kernel,以kernel为例子
//在bootloader 界面中
//本机uboot 的ip地址
setenv ipaddr 10.10.167.10
//服务器ip地址
setenv serverip 10.10.167.249
//下载linux内核vmlinux52
tftpboot 0 vmlinux52
// 烧写到flash 上。
// 0x20000000 是vmlinux52的存贮位置。 
// 0x1dd00000 是系统内核的起始位置(每个设备位置不同), 
// +0x600000是文件长度
upgrade 0x20000000 0x1dd00000 +0x600000
// 重启linux
bootoctliux
*************************************** **
如果因为uboot或者内核有错误而导致启动失败,出现卡死状态等,那么需要判断问题是出在uboot阶段还是linux阶段,这可以通过观察启动过程中的debug信息来判断,
如果uboot出现问题是比较麻烦的,因为这需要有一个装有正确的uboot/bootloader的flash芯片作为引导,
将系统重新引导至uboot界面中,之后再重新烧写uboot到系统本身的flash中,进而烧写内核(如有必要)。 
一,重新烧写uboot
首先需要一个特定的PCLL(flash芯片),这个PCLL上固化了一个正确的bootloader, 通过这个bootloader可以成功进入bootloader界面, 在此条件下重新烧写uboot/bootloader。
使用此PLCC的步骤是:
在系统下电情况下, 使用跳线/拨码开关等将此系统的启动方式变从外部flash(即PLCC)引导,
之后将系统上电, 这时会从PLCC 启动。
启动成功后,进入uboot界面,  即命令行显示Dream 5220# #(类似命令行提示符)
此时将版卡的启动方式变为 从 nor flash 启动。  之后重新烧写uboot到此nor flash 上。  
再用 kermit  来操作。
Kermit是一个串口服务工具,类似与minicom ,功能比minicom 多。
//kermit/usb0.cfg  是kermit 的配置文件, 在其中可以配置 /dev/ttyUSB0 等路径
kermit -y kermit/usb0.cfg
-y kermit/usb0.cfg   指定配置文件。
该文件内容如下:
/*
set line /dev/ttyUSB0                                                                                                                
set speed 115200
set carrier-watch off 
set hardshake none
set flow-control none
robust
set file type bin 
set file name lit 
set rec pack 1000
set send pack 1000
set window 5
*/
将此文件保存在主目录下, 命名为:kermit/usb0.cfg(可自定义)
执行后进入kermit 界面, 按 c 
进入 串口界面(就是设备的界面)
切换回kermit 界面快捷键:Ctrl + \  , 之后再按 c  。
执行:
Dream 5220# # detect  
显示:
Checking for NOR flash...
Flash detect 33554432Mb
这说明flash状态良好。
//让串口进入接受状态。
Dream 5220# # loadb 
进入kermit 界面: ctrl + \  按 c
执行:
send  uboot.bin
就是将当前目录下的uboot.bin 文件发送给串口。
完成后,进入串口界面。
执行:
Dream 5220# # upgrade 0x20000000 0x1dc00000 +0xe0000
0x20000000 是 kermit 执行 send  后 将文件send 到的默认地址。
再将文件写到nor flash 的首地址:0x1dc00000  +0xe0000为写的长度。
执行:reset。让系统重启。
/*
至此,新的uboot烧写完成,reset后, 如果还是不成功的话,那么问题肯定出在linux的的启动阶段或者新的uboot还是有问题,这可以通过启动过程中的debug信息看出来
一,如果内核有问题,导致linux没有进入shell界面,要重新进入Uboot环境,就是在reset 之后,一直按 ctrl + c  ,这样在uboot启动完成后, 不会进入kernel的启动阶段,而是停留在uboot的命令行中,
在这个uboot 环境下,烧写新内核, 配置ipaddr,serverip等,同最开始的例子中操作是一样的。
//本机uboot 的ip地址
setenv ipaddr 10.10.167.10
//服务器ip地址
setenv serverip 10.10.167.249
//下载linux内核vmlinux52
// 在服务器的tftpboot目录下存在相应文件,搭建到tftp服务环境
tftpboot 0 vmlinux52
// 烧写到flash 上。
// 0x20000000 是vmlinux52的存贮位置。 
// 0x1dd00000 是系统内核的起始位置(每个设备位置不同), 
// +0x600000是文件长度
upgrade 0x20000000 0x1dd00000 +0x600000
在reset 之前,一般还要设置一下环境变量。
比如
setenv linux_args mtdparts=octeon_nor0:1m(BOOT),7m(LINUX),21m(CONFIG),3m(MD)
setenv bootcmd 'bootoctlinux 0x1dd00000 coremask=0x3 mem=700'
//保存
saveenv
bootoctliux
二 ,如果新烧写的uboot本身有问题,那么修改uboot代码,编译通过后, 使用PLCC重复上述烧写过程。

嵌入式系统烧写uboot/bootloader/kernel的一般方法相关推荐

  1. [Arduino]烧写Arduino BootLoader的几种方法

    [Arduino]烧写Arduino BootLoader的几种方法 身为Arduino 电子工程师,很多时候都会涉及到自制各种功能的Arduino 电路板(亦或者说是功能扩展板),但是从网上或者其他 ...

  2. X2000 halley5开发板,烧写uboot,kernel,文件系统到开发板

    烧写工具使用的是其它sdk里的工具,SDK编译 里使用的SDK里没有烧录工具. 注意烧写使用的usb口 如果使用虚拟机,开发板usb口连接电脑后,虚拟机会提示连接到主机,还是虚拟机.如果使用linux ...

  3. 迅为i.MX6ULL终结者Mfgtools修改单独只烧写Uboot,内核,文件系统

    1.打开mfgtools_for_6ULL文件夹,找到cfg.ini文件,如果您的板子是EMMC的修改如图 1: 如果您的板子是NAND的,修改如图 2: 2.打开"Profiles\Lin ...

  4. 用J-Link烧写u-boot到Nor Flash—— 韦东山嵌入式Linux视频学习笔记04

    说明:本文的实验环境为Windows7+JZ2440 J-Link 只支持烧写 Nor Flash,不支持烧写 Nand Flash(为什么呢?先不探究原因). 如果想烧写程序到Nand Flash, ...

  5. 【Tiny4412】Tiny4412编译和烧写uboot

    00. 目录 文章目录 00. 目录 01. Uboot简介 02. 安装交叉编译器 03. 编译Uboot 04. 烧写Uboot 05. 测试Uboot 06. 常见问题解决 07. 附录 01. ...

  6. uboot通过u盘烧写linux内核,向Flash中烧写uboot和linux操作系统

    向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ====================================== ...

  7. 系统烧写方法(MfgTool烧写工具)

    目录 MfgTool 工具简介 MfgTool 工作原理简介 USB接线 系统烧写原理 烧写NXP 官方系统 烧写自制的系统 系统烧写 网络开机自启动设置 改造我们自己的烧写工具 改造MfgTool ...

  8. 转”使用UBOOT烧写根文件系统和内核的方法

    "转"使用UBOOT烧写根文件系统和内核的方法 2012-08-13 20:39:28 分类: 原文地址:"转"使用UBOOT烧写根文件系统和内核的方法 作者: ...

  9. 用JLINK烧写U-boot到Nand Flash中

    很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor ...

最新文章

  1. android 启动速度优化终极方案
  2. 数据结构之单链表尾插法创建-RearCreate
  3. 获取RadioButton选中的值
  4. 【TensorFlow】Anaconda下快速安装TensorFlow教程
  5. BZOJ.4821.[SDOI2017]相关分析(线段树)
  6. 曹大带我学 Go(9)—— 开始积累自己的工具库
  7. log4j 禁止类输出日志_log4j 2过滤spring日志遇到的问题
  8. 抽象类与接口的区别(
  9. 《深入浅出WPF》视频列表
  10. python货币转换c_货币转换 C
  11. 中国移动推自有品牌终端利大于弊
  12. 基于CAA的CATIA二次开发环境搭建全过程(亲测可用)
  13. python输入个人所得税计算_python-计算个人所得税
  14. python制作恶搞_Python:恶搞,将你朋友照片做成熊猫人表情包
  15. 皮尔森相关性系数的计算python代码(一)
  16. Daily English - ... is driving me up a wall.
  17. 宋词欣赏 李清照
  18. 平安金融云为互联网金融行业注入发展新动能
  19. 详解EBS接口开发之销售订单挑库发放(转载)
  20. C语言中String库函数大全

热门文章

  1. [命令行] curl查询公网出口IP
  2. 【微信】【汇总】微信小程序开源项目库汇总
  3. rax自定义微信小程序导航栏
  4. C语言坐标结构,关于c语言结构体偏移的一点思考(一)
  5. office计算机二级作业,计算机二级office复习资料
  6. 系统工程与开放自动化系统
  7. Linux 多个网卡配置静态IP地址
  8. DA14580 主机从扫描到建立连接全过程分析(含代码)
  9. 【娱乐时间】漫威API 回味复联11年
  10. Jupyter Notebook简介、安装及使用教程