所有这些都是从Ubuntu 16.04下收集的。
由于缺乏对该板的免费访问映像的能力,因此决定构建固件(Olimex A13-Olinuxino)。 而且制造商提出购买带有图像的SD卡,当时它的价格约为10欧元,这实际上是行不通的,此外,它是为显示器而设计的。
我们将配置引导加载程序配置以从SD卡引导。 由于板上没有NAND存储器,并且所有其他引导选项都略有歪曲(谁可以组装uboot以便从USB介质引导,请让他向前走两个步骤并进行共享)。 allwinner a13处理器加载算法可在制造商的网站上找到。 或者这是数据表中的剪辑。

从算法中可以清楚地看到,首先在SD卡上检查了引导加载程序,然后检查了其余部分,仅在最后检查了引导加载程序的USB。 因此,只要平板电脑和智能手机以适当的方式插入SD卡,便可以使用Ubuntu来完成。 显然,如果不是全部的话,那么对于许多手臂处理器制造商来说,这种算法将是近似的。
首先,您需要为此断开SD卡,以免在键入命令的过程中犯错误,我们将整个过程简化为一个脚本文件(我宁愿将所有内容简化为此类文件,因为您必须多次运行它)。
UBOOT版本
让我们更详细地讨论引导加载程序,然后选择UBOOT,我们抽出了u-boot-2018.05的版本,当时是后者。
假定已经安装了所有必要的组装软件。 然后通过配置引导加载程序开始构建。
要开始配置,您需要转到带有UBOOT的文件夹,并从中执行以下命令:
make O=../olimex-uboot # -j4 # ARCH=arm # CROSS_COMPILE=arm-linux-gnueabihf- # xconfig # GUI
作为执行的结果,我们得到了这样的窗口。

这就是所谓的X版本的配置器,他们通常使用console选项;在其中提供了更多信息,但这更加明显,它将完全满足我们的需求。
然后,如果您有很多时间或不介意自己,则可以从头开始配置引导加载程序。 但是,最好通过文件菜单下载该板的最终配置。 在包含引导加载程序源的文件夹中/u-boot-2018.05/configs/中,选择文件A13-OlinuXino_defconfig这是我们的配置,所有内容均已安装。 接下来,单击“保存”并关闭窗口,因为此处无需进行任何更改。
它仍然可以运行build命令:
make O=../olimex-uboot -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
在此命令中,元素都与上一个相同,只是没有xconfig参数,这就是配置的含义。 就是这样,引导加载程序已组装好。
组装完成后,在命令中指定的文件夹中,我们需要找到此文件“ u-boot-sunxi-with-spl.bin”,这是所需的引导程序。
接下来,要将引导加载程序上传到SD卡,请使用以下命令:
dd if=../olimex-uboot/u-boot-sunxi-with-spl.bin # of=/dev/sdb # SD bs=1024 seek=8 # 8KiB ,
引导后刚刚记录的引导程序将指向SD卡/ dev / sdb1的下一部分,它将在其中查找包含环境变量的脚本文件,该脚本包含进一步加载的说明。
该文件应命名为boot.scr,具有此名称的文件在下载后将查找uboot。 当然,如果您进入UBOOT配置,则可以更改文件名以及下载方法,但是让我们详细介绍一下此选项。
您还应该编译devicetree文件,因为它们位于/u-boot-2018.05/arch/arm/dts/中的引导程序的源代码中,我们对文件sun5i-a13-olinuxino.dts感兴趣。 它表示处理器的寄存器和外围设备的配置。 这是一个通用配置文件,因此,当一个uboot引导加载程序用于不同的处理器,但使用不同的dts文件时,则可以使用该选项。 Linux内核的源代码中包含相同的dts文件,它们基本相同,只是编写方式略有不同,您可以选择从何处获取组装好的设备树。 通常,要构建dts文件,您需要运行以下命令:
make O=../olimex-uboot -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs # dts
编译后的文件将位于../olimex-uboot/arch/arm/dts/。
考虑更详细地获取boot.scr文件。
首先,使用以下内容创建boot.cmd文件:
load mmc 0 0x43000000 sun5i-a13-olinuxino.dtb load mmc 0 0x42000000 uImage setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait console=ttyS0,115200 bootm 0x42000000 – 0x43000000
但是,为了使uboot能够理解指令,此文件必须采用脚本形式,为此,您需要运行以下命令:
mkimage -C none -A arm -T script -d boot.cmd boot.scr
其中boot.scr是必需文件。
第一行加载mmc 0 0x43000000 sun5i-a13-olinuxino.dtb将设备树文件加载到RAM中的指定地址。 load mmc 0表示您需要从SD卡的第一部分下载文件,而uboot的编号为零而不是一个。
第二行加载mmc 0 0x42000000 uImage将在指定地址加载汇编的Linux内核。
对于我们的版本,由于我们计划不使用监视器,因此不需要通常通常使用的setenv视频模式变量。
第三行:
setenv bootargs # root=/dev/mmcblk0p2 # SD rootfs rootfstype=ext4 # rootfs rw # rootwait console=ttyS0,115200 # uart0
好了,最后一个bootm命令从较早加载到内存中的内核加载内核。
在下一篇文章中,应该放在SD卡第一部分的最后一部分将是Linux内核内核的形成。
文章的第一部分文章的第三部分