天嵌 ARM开发社区

 找回密码
 注册
查看: 2889|回复: 0

开发板烧写程序

[复制链接]
非也 发表于 2019-3-19 13:43:08 | 显示全部楼层 |阅读模式
  烧写就是将写好的程序编译好形成HEX或BIN文件后,将这个程序写进单片机芯片的过程就叫烧写,是沿用最早的单片机只能一次性写入,因此就叫做烧写,后来有了紫外线可擦除的EEPROM,现在有了可随时擦除的FLASH ROM,但依然沿用叫烧写了,这样也方便特指PC向MCU写入程序。免得和单片机工作时串口的上传和下次数据相混淆。


  开发板烧写

  开发板没有BootLoader的烧写(flash中没有任何内容时,或误擦除uboot),仅用于烧写bootloader和裸机程序到flash上。

  1)并口Wiggler JTAG调试板 配合HJTAG软件,可以烧写nandflash和norflash,并口速度较慢 (需要用到并口,现在笔记本电脑基本没有并口了,这个方法局限性很大)。

  2)HJTAG USB仿真器 配合HJTAG软件,可以烧写nandflash和norflash,速度极快,适用于没有并口的电脑。

  3)Jlink V8仿真器配合JFlash Arm软件,只能烧写Norflash(也可间接烧写Nandflash,间接烧写到Nandflash是借助sdram来实现烧写的,稍微有一点难,这里公司为了节约成本很多都采用nandflash来启动内核,norflash和nandflash这里区别就明显体现出来了,norflash可以像内存一样直接操作,nandflash只能通过控制寄存器来操作,这里大家一定明白过来,硬件上的差异也是很大的),适用于没有并口的电脑。


  开发板有u-boot,使用uboot烧写,flash中需要能正常运行uboot,适用于烧写bootloader,kernel和rootfs。

  1)USB口,提供的uboot集成了USB Download的功能,可配合提供的DNW软件,方便的下载程序,缺点是烧写速度太慢。

  2)网口,也是一种速度较快的下载方式,uboot中集成了tftp Download功能,可配合任意一种tftp Server软件实现下载程序。同样可用于windows和linux平台,推荐大家使用这种方式来下载,因为速度非常的快。

  3)串口,使用串口Xmodem协议下载程序,相比USB和网口,速度较慢,不推荐此方式

  4)U盘,不需要PC机软件的支持,将U盘插在板上,就可以利用uboot下载U盘中要烧写的文件,并可实现全自动烧写

  5)SD/TF卡,等同于U盘烧写程序。


  烧写程序

  1、uboot的烧写 下载Uboot分为两个步骤,第一步将uboot下载到系统的扩展RAM并运行,第二步通过内存中运行的uboot把整个uboot下载到内存再烧写到nandflash。

  第一步下载uboot到扩展RAM:首先使用短路块选择系统从内部启动,复位或者上电就会在串口软件(115200 8 n 1)看到打印的信息LPC31xx READY FOR PLAIN IMAGE》,此时使用串口软件的发送文件选择发送u-boot-init.bin,再发送u-boot.bin,之后就会在RAM中启动uboot,打印输出启动信息,并进行倒计时,此时发送任意字符给系统,停止计时,关闭串口软件,使用超级终端连接系统。

  第二步烧写uboot到nandflash在超级终端中输入loady命令,再使用传送/发送文件,选择Ymodem协议,发送u-boot.bin,接收完成后,先擦除nand erase,可以全擦掉(不用给参数),也可以使用使用参数指定区域,一般第一次要全擦,而后使用nand_params将flash的信息写入其中,最后使用nand write 0x30001000 0x4000 0x100000,其中,0x30001000是uboot在内存中的地址;0x4000 uboot在flash中存放的起始地址,需要根据实际的分区情况而定;0x100000是uboot的大小,不小于实际大小;至此,将uboot写入到nandflash中,可以将短路跳线去掉,使其从nandflash启动。


  2、内核的烧写

  在uboot启动倒计时,击任意键停止,输入loady,与uboot烧写相似,使用的命令主要有:
  1. nand erase 0x200000(地址) 0x200000(大小)
  2. nand write 0x30001000 0x200000 0x200000
复制代码

  3、文件系统的烧写 文件系统的烧写,可以通过与内核相似的方法使用串口烧写,也可以通过挂载nfs使用mtd_debug 工具烧写,由于文件系统较大,使用第一种方式会慢一些。

  串口烧写使用到的命令
  1. Loady
  2. nand erase 0x600000 0x3a00000(目前的分区情况)
  3. nand write 0x30001000 0x600000 0x800000(实际大小)
复制代码

  使用nfs烧写用到的命令
  1. mtd_debug erase /dev/mtd2 0 0x3a00000
  2. mtd_debug write /dev/mtd2 0 0x800000
  3. ubi.img
复制代码

  各项的含义可以参考mtd_debug的帮助,直接mtd_debug即可获取说明,其中的len可以使用十进制数,但是在uboot中是不可以的,不加0x也会认为是十六进制。

  4、启动挂载文件系统的选项
  在uboot中可以通过环境变量设置启动的选项,一般只需要配置挂载的文件系统是nfs还是ubi,及内核启动选项。挂载nanflash中的ubifs:
  1. setenv bootargs console=ttyS0,115200n8 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs;
复制代码

  挂载129.1.4.199上/rfs/rootfs,并且本机的ip设为129.1.31.33等:
  1. setenv bootargs noinitrd root=/dev/nfs console=ttyS0,115200n8 nfsroot=129.1.4.199:/rfs/rootfs,proto=tcp,nfsvers=3,nolock ip=129.1.31.33:129.1.4.199:129.1.88.1:255.255.0.0::eth0:off
复制代码

  启动内核的选项:
  1. setenv bootcmd nand read 0x30001000 0x200000
  2. 0x200000\; bootm 0x30001000\;
复制代码

  修改过uboot的环境变量都需要saveenv命令保存修改。

  注:本烧写方法并不是所有板子通用,请酌情参考!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-3-29 01:08 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表