各类板子 bring up

111 篇文章 30 订阅
104 篇文章 24 订阅

什么是 bring up

“Bring-up”(也写作 bringup)是一个术语,它在嵌入式系统开发中经常使用。它的本意是指在产品开发的早期阶段,将一个新的嵌入式系统板卡、芯片组或模块加电并启动,然后测试其基本功能并使其运行起来的过程。通常这个过程也包括了配置bootloader、内核和设备驱动程序等软件,直到系统能够正常运行为止。

嵌入式系统的 bring-up 过程对于确保产品的正确性和可靠性至关重要。在这个阶段,开发团队会进行硬件和软件调试,以确保系统的所有组成部分能够与各种外设或组件互相通信,如存储器,网络接口,用户接口等。只有这个过程被完成了,才能进入到更高级的测试和开发流程,例如进行性能测试、功能测试或应用开发。

如何进行 bring up

进行 bring-up 通常需要遵循以下基本步骤:

  • 验证硬件:在进行bring-up之前,需要验证电路板中的处理器和其他硬件是否正确。可以使用硬件验证板和测试基本电路来完成此过程。

  • 配置 bootloader:需要为设备选择一个合适的引导加载器(如U-Boot),并将其配置为启动和加载内核。

  • 移植和定制驱动程序:根据具体的设备和应用需求,可能需要移植、定制或编写操作系统驱动程序,以确保所有硬件资源和外围设备都可以正确运行。

  • 系统集成测试:在完成硬件和软件开发后,需要进行全面的系统集成测试,以确保设备的所有功能都可以正常工作,并且符合设备的性能和可靠性需求。

需要注意的是,不同的系统平台和项目可能会有不同的 bring-up 需求和实现方式。在进行 bring-up 之前,需要仔细研究设计文档、硬件规格、操作系统和应用需求,并进行详细的规划和测试。整个 bring-up 过程需要进行仔细的测试和调试,以确保系统的稳定性、性能和可靠性。

实例

以下是几个嵌入式开发板 bring up 的流程

树莓派 3b+

树莓派默认使用 BCP(Broadcom bootloader)进行启动,需要在 SD 卡中创建一个boot分区,然后将启动文件复制到该分区中。
Broadcom bootloader是树莓派设备所使用的启动引导程序。树莓派设备采用的是Broadcom BCM2835/6/7系列处理器,这些处理器需要通过该引导程序来加载操作系统,并把处理器的硬件环境初始化到正常工作状态,完成设备的启动流程。
Broadcom bootloader通常是存储在树莓派设备的SD卡中的一个bootcode.bin文件中。在设备开机时,处理器首先从SD卡中加载该文件,然后执行其中的代码,从而启动树莓派设备。
此外,树莓派设备的bootloader还允许用户在SD卡中创建配置文件(config.txt)和设备树文件(.dtb),以微调设备的配置和硬件环境以适应各种应用需求。
具体步骤:

  • 将 SD 卡格式化为 FAT32 文件系统
  • 复制下列文件到 SD 卡
    在这里插入图片描述

这样便可正常启动了,启动流程:
上电 --> bootcode.bin --> start.elf --> fixup.dat --> config.txt --> kernel --> rootfs
其中,config.txt:

kernel = zImage
kernel_address=0x00080000
arm_64bit=1
enable_uart=1

参考:https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-boot-modes
如果启动有问题,可以将 bootcode.bin 的串口打印功能打开,这样会打印出错信息,帮助 bring up。
具体方法如下:

sed -i -e "s/BOOT_UART=0/BOOT_UART=1/" bootcode.bin

也可使用二进制编辑器手动修改。

rk3399

在这里插入图片描述
按照上述表格构建就可以了

uboot:(无文件系统)
    sudo dd if=idbloader.img of=/dev/sdb seek=64 
    sudo dd if=uboot.img of=/dev/sdb seek=16384 
    sudo dd if=trust.img of=/dev/sdb seek=24576
kernel:(fat32)
    mkdir boot 
    cp arch/arm64/boot/dts/rockchip/rk3399-firefly-linux.dtb boot/rk3399.dtb 
    cp arch/arm64/boot/Image boot/
rootfs:(ext4)
    sudo dd if=linuxroot.img of=/dev/sdb seek=262144

启动流程:
idboader.img(SPL) -->uboot.img --> trust.img --> extlinux/extlinux.conf --> Image --> rootfs
其中,extlinux.conf 内容如下:

label rockchip-kernel-4.4
    kernel /Image
    fdt /rk3399-firefly-linux.dtb
    append earlycon=uart8250,mmio32,0xff1a0000 root=PARTUUID=B921B045-1D rootwait rootfstype=ext4 init=/sbin/init

Banana Pi R64

在这里插入图片描述
参考:FW-WEB Wiki
快速 bring up 技巧:烧录官方镜像,如 2018-12-11-debian-8-stretch-mate-desktop-preview-bpi-r64-sd-emmc.img,再将 bootloader、dtb、kernel、rootfs 手动一一替换成我们编译的文件。

IMX6ULL

在这里插入图片描述
参考:《IMX6UL参考手册.pdf》
启动流程:
bootrom --> IVT(指明 image 复制到内存的首地址,指明程序入口地址) --> boot data --> DCD --> uboot.bin --> dtb --> zImage --> rootfs
注意:imx6ull 处理器在启动时通常会从 SD 卡的第三个扇区开始读取。SD 卡第一扇区(MBR)和第二个扇区(GPT)通常不会读取,而是从 SD 卡的第三个扇区开始读取引导二进制文件(例如 U-Boot),然后根据 IVT 的配置,将其加载到 RAM 中并执行。

技巧

当无法 bring up 时,可以下载官方 image 文件进行 bring up,然后通过 winhex 等二进制工具分析 bring up 所需内容,并逐一准备。

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li-Yongjun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值