在ubuntu下使用啥工具对uboot及内核进行烧写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ubuntu下使用啥工具对uboot及内核进行烧写相关的知识,希望对你有一定的参考价值。

如题,我想通过linux平台对U-boot及内核等进行所有操作,尤其是烧写uboot和内核,有什么工具吗,怎么烧写法,注意什么,答得好的另外加悬赏,悬赏10-20不定。

tftp比较通用的 网络烧写 DNW USB烧写 参考技术A 只需要ARM的交叉编译器加uboot源码和内核源码就行 参考技术B DNW也有linux版本的追问

DNW在linux下应该怎么烧写,能介绍一下吗,本人菜鸟

追答

你可以在网上下一个源代码,用GCC编译一下 应该执行就可以用吧 几年前用过 现在不记得了

参考技术C 直接把文件系统也列举了吧。烧写uboot、内核及文件系统的方法 :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烧写相似,使用的命令主要有:nand erase 0x200000(地址) 0x200000(大小)

nand write 0x30001000 0x200000 0x200000

3、文件系统的烧写

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

串口烧写使用到的命令

loady

nand erase 0x600000 0x3a00000(目前的分区情况)

nand write 0x30001000 0x600000 0x800000(实际大小)

使用nfs烧写用到的命令

mtd_debug erase /dev/mtd2 0 0x3a00000

mtd_debug write /dev/mtd2 0 0x800000 ubi.img

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

4、启动挂载文件系统的选项

在uboot中可以通过环境变量设置启动的选项,一般只需要配置挂载的文件系统是nfs还是ubi,及内核启动选项。

挂载nanflash中的ubifs:

setenv bootargs console=ttyS0,115200n8 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs;

挂载129.1.4.199上/rfs/rootfs,并且本机的ip设为129.1.31.33等:

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

启动内核的选项:

setenv bootcmd nand read 0x30001000 0x200000 0x200000\; bootm 0x30001000\;

修改过uboot的环境变量都需要saveenv命令保存修改。本回答被提问者采纳
参考技术D 你是想用ubuntu做主机,来烧写开发板吧?可以用minicom连接串口进行操作。追问

不是,暂时用虚拟机,虚拟机要注意什么吗

海思烧录工具HiTool的使用方法以及烧录uboot

1.什么是HiTool

HiTool是海思公司提供的用于海思芯片的烧录工具,可用于烧录uboot、kernel、rootfs等。这里只是简单的介绍用HiTool通过串口去烧写uboot,更加仔细的使用方法可以参考海思SDK开发包里的两篇文档《HiBurn 工具使用指南》和《HiTool工具平台 使用指南》。

2.安装HiTool

HiTool可以从海思的SDK开发包里获取,HiTool是基于jave开发的,因此需要搭建jave的运行环境,需要先安装“jre-6u45-windows-i586”再安装Hitool,这里注意“海思芯片、HiTool、jre”三者版本的对应,最好都按照官方的文档要求来。

3.用HiTool烧录uboot

1.打开HiTool软件,先选择芯片的型号,然后会看到“Welcome To HiTool”,点击HiBrun,进入HiTool软件,你会看到上面图片的画面。
2.确保PC和开发板可以通过串口通信;
3.本地PC配置选择串口,因为我们是通过串口烧录,注意串口号不要选错,可以通过设备管理去查看串口号;
4.传输方式:选择串口;
5.选中烧录的文件目录:(1)文件选项里选中要烧录的uboot文件;(2)器件类型选中spi,因为我们是烧写到spi Flash中;(3)文件系统:不用选,因为我们这次只是烧写uboot,不涉及文件系统;(4)开始地址:uboot是最开始运行的代码,直接烧写到0地址处;(5)长度:要烧写的长度必须大于整个uboot的长度,并且长度要是Flash块大小的整数倍。
6.点击“烧写”,会看到“串口已经连接,请给单板上电,若已经上电,请断电后重新上电”,此时将开发板断电重启,和单片机类似。
7.可以在下方的控制台看到烧录过程中的打印信息,感兴趣的可以通过打印去分析整个烧录的过程。

4.烧录工程中可能遇到的错误:

1.HiTool工具找不到串口:首先在设备管理里确认你没有搞错串口号,然后将HiTool工具关掉重启;
2.分区的起始地址和分区大小都是以 KB 或 MB 为单位,而且必须是 flash 块大小的整数倍,否则可能会出错。
3.烧录时显示连接不上串口:确保串口没有被其他终端模拟软件打开,因为串口是不支持多开的;
4.其他的错误可以看控制台的打印,然后根据打印去查询SDK包里关于HiTool的介绍文档。

5.用HiTool烧录uboot到spi flash的原理

参考博客《用HiTool烧写uboot到spi flash的原理》

6.kernel、rootfs的烧写

kernel、rootfs的烧写不能通过串口,默认是通过网络的方式传输,通过向uboot发送TFTP命令和Write命令进行烧写。

以上是关于在ubuntu下使用啥工具对uboot及内核进行烧写的主要内容,如果未能解决你的问题,请参考以下文章

Linux——Linux驱动之设备树编译环境搭建实践总结(设备树uboot内核编译及镜像烧写)

Linux——Linux驱动之设备树编译环境搭建实践总结(设备树uboot内核编译及镜像烧写)

iTOP4412精英版Ubuntu16.04系统编译uboot

linux下kermit工具的使用

Uboot初次编译烧写启动(界面log信息简析)

海思烧录工具HiTool的使用方法以及烧录uboot