3将uboot,kernel,rootfs下载到开发板上

Posted Ocean&Star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3将uboot,kernel,rootfs下载到开发板上相关的知识,希望对你有一定的参考价值。

将uboot,kernel,rootfs下载到开发板上

1、为什么要下载

所谓下载,也称烧录,部署。

1.1、什么是u-boot

Hi3518EV200 单板的 Bootloader 采用 U-boot。
u-boot是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序,通过它,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的软硬件环境,为最终调用操作系统内核做好准备。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。

1.2、什么是kernel

烧录完uboot之后,开始烧录kernel。Kerne是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。操作系统必须要以内核为基础运行,内核提供最基本的对计算机的操作,并且让计算机底层尽量安全和容易管理。

1.3、 什么是rootfs

根文件系统是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。由于init=/linuxrc,因此,在文件系统挂载后,运行的第一个程序就是根目录下的linuxrc,而这是一个指向/bin/busybox 的链接,也就是说,系统起来后运行的第一个程序就是busybox。 busybox首先将试图解析/etc/inittab来获取进一步的初始化配置信息(参考busybox源代码init/init.c中的parse_inittab()函数)。而事实上,root_qtopia中并没有/etc/inittab这个配置文件,根据busybox的裸机,它将生成默认的配置。其中最重要的一个,就是new_init_action(SYSINIT,INIT_SCRIPT,""),也就决定了接下来初始化的脚本是INIT_SCRIPT所定义的值,这个宏的默认值是"etc/init.d/rcS"。

2、通过Hitool工具烧录uboot

注意:Hitool是基于JaveEE开发的,因此运行前必须安装jre-6u45-windows-i586。注意必须是这个版本,否则不能运行。

  • [ ] (1),打开Hitool,选择对应芯片,点击HiBure

  • [ ] (2),将软件按如下图所设置

    注意:在HI3518ESDK里面的\\package\\image_uclibc_hi3518ev200里面提供了u-boot镜像,也可以是自己编译的。

  • [] (3),选中,烧写

  • [] (4),关闭Hitool,将开发板的串口连接到SecurtCRT,重启开发板,打断3s启动进入uboot模式

  • [] (5),print打印默认环境变量

3、通过tftp网络烧录

此时开发板进入uboot模式

3.1 tftp烧录之前的准备条件

  • [ ] (1),开发板要用串口线,网线连接到PC机上,并用SecurtCRT连接串口。

  • [ ] (2),重启开发板进入u-boot的命令行下

  • [ ] (3),开发板和uboot之间能tftp网络能ping通

  • [ ] (4),准备镜像

    • 步骤1,镜像在osdrv/pub/image_uclibc中,先进入此目录
    • 步骤2,将相关镜像复制到tftpboot目录下
    • cp u-boot-hi3518ev200.bin uImage_hi3518ev200 rootfs_hi3518ev200_64k.jffs2 /tftpboot/ -f
    • cd /tftpboot/
    • ls
    • ls -l
    • cd ..
    • sudo chmod -R 777 tftpboot/
    • cd /tftpboot/
    • ls
    • ls -l
  • [ ] (5),开发板和ubuntu的设置:

    • ubutun:设置桥接到有线网卡,静态分配ip
    • HI3518E进入hisilicon模式[uboot],执行以下命令设置环境变量
        • set bootcmd \'bootm 0x82000000\'
        • set bootargs mem=96M console=ttyAMA0,115200
        • set serveip 192.168.1.141
        • set ip 192.168.1.10
        • save
    • ping 192.168.1.141
  • [ ] (6),print

2.2、下载kernel

  • mw.b 0x82000000 ff 0x300000
  • tftp 0x82000000 uImage_hi3518ev200
  • sf probe 0
  • sf erase 0x100000 0x300000
  • sf write 0x82000000 0x100000 0x300000

2.3、下载rootfs

  • mw.b 0x82000000 ff 0xc00000
  • tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2
  • sf probe 0
  • sf erase 0x400000 0xc00000
  • sf write 0x82000000 0x400000 0xc00000

2.4、设置bootcmd和bootargs以正确启动【此后每次tftpboot目录镜像更新,开发板都会同步跟新镜像】

  • set bootcmd \'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000\'
  • set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)
  • save
  • reset 【即可重启系统】

以上是关于3将uboot,kernel,rootfs下载到开发板上的主要内容,如果未能解决你的问题,请参考以下文章

buildroot--uboot&kernel&rootfs全编译工具

正点原子Linux MINI板系统固化(烧录ubootlinux kernel.dtb(设备树)和 rootfs)

正点原子I.MX6U-MINI系统固化(烧录ubootlinux kernel.dtb(设备树)和 rootfs)

全志H3系统移植 | 移植主线最新uboot 2023.04和kernel 6.1.11到Nanopi NEO开发板

Linux基于busybox移植rootfs根文件系统

Linux基于busybox移植rootfs根文件系统