可能我们只知道傻傻按照官方教程烧录镜像,从来没有想过这个问题。我们都知道树莓派的一个镜像可以烧录树莓派的全系列板子,树莓派的cpu架构有armv6,armv7的区别,它是如何做到通用的?打开boot分区可以看到不只有一个zimage,启动时肯定根据不同的pi选择了不同的zimage和dtd,它是根据什么区分不同pi的?另外一个问题是它的文件系统是共用的,里面自带的软件是没有区分armv6和armv7,那也就是说这两个架构的应用都是通用的?是否可以根据树莓派的这个原理做一个f1c100s和v3s的通用镜像
最近编辑记录 kekemuyu (2019-11-06 09:42:54)
离线
感觉有点麻烦,又有点容易。
假如是TF版本,
容易,就是搞定uboot就行。
麻烦,就是spl(boot0)都难做到兼容,一个spl走天下。
离线
感觉有点麻烦,又有点容易。
假如是TF版本,
容易,就是搞定uboot就行。
麻烦,就是spl(boot0)都难做到兼容,一个spl走天下。
愿闻其详,uboot如何区分不同的cpu?我觉得必须是cpu向uboot传达了某个参数,uboot才能知道启用那个zimage
最近编辑记录 kekemuyu (2019-11-06 09:59:36)
离线
关键在u-boot,首先要u-boot最开始程序首先判断出cpu类型和板子型号然后选择性加载不同的uboot,也就是说uboot要有三个部分,一个是f1c100s的uboot,一个是v3s,在这两个之前,有一段汇编代码判断cpu型号,然后和决定加载后面的uboot版本
离线
关键在u-boot,首先要u-boot最开始程序首先判断出cpu类型和板子型号然后选择性加载不同的uboot,也就是说uboot要有三个部分,一个是f1c100s的uboot,一个是v3s,在这两个之前,有一段汇编代码判断cpu型号,然后和决定加载后面的uboot版本
”汇编代码判断cpu型号“还有这操作,我记得cpu内部还有个brom,里面也有boot程序,是不是需要brom的支持才行
离线
烧了3d光固化打印机固件nanodlp之后, 发现果然如此, 一个固件走天下, 每款树莓派固件都可以用.
离线
树莓派启动不是靠u-boot,而是博通自己的闭源GPU-Bootloader,开机时加载先在第一个fat32的分区里寻找特定的启动文件bootcode.bin来启动GPU,GPU 启动后会检索附加配置文件(config.txt、fixup.dat),根据其内容设置 CPU 运行参数及内存分配情况,随后将用户代码加载至内存,在树莓派 1 代中,用户代码部分被保存在 kernel.img 文件中,2 代中,该文件更名为 kernel7.img,3 代和4代中,该文件更名为 kernel8.img。
与其他arm的机器不同的,树莓派上电后的初始化工作大多是在 GPU 中完成
离线
树莓派是因为在GPU中有一段固化了的Bootloader,所以能够识别型号来选内核。
离线