您尚未登录。

楼主 #1 2019-11-06 09:41:45

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

可能我们只知道傻傻按照官方教程烧录镜像,从来没有想过这个问题。我们都知道树莓派的一个镜像可以烧录树莓派的全系列板子,树莓派的cpu架构有armv6,armv7的区别,它是如何做到通用的?打开boot分区可以看到不只有一个zimage,启动时肯定根据不同的pi选择了不同的zimage和dtd,它是根据什么区分不同pi的?另外一个问题是它的文件系统是共用的,里面自带的软件是没有区分armv6和armv7,那也就是说这两个架构的应用都是通用的?是否可以根据树莓派的这个原理做一个f1c100s和v3s的通用镜像

最近编辑记录 kekemuyu (2019-11-06 09:42:54)

离线

#2 2019-11-06 09:54:28

超级萌新
会员
注册时间: 2018-05-04
已发帖子: 408
积分: 407

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

感觉有点麻烦,又有点容易。

假如是TF版本,
容易,就是搞定uboot就行。
麻烦,就是spl(boot0)都难做到兼容,一个spl走天下。

离线

楼主 #3 2019-11-06 09:57:23

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

超级萌新 说:

感觉有点麻烦,又有点容易。

假如是TF版本,
容易,就是搞定uboot就行。
麻烦,就是spl(boot0)都难做到兼容,一个spl走天下。

愿闻其详,uboot如何区分不同的cpu?我觉得必须是cpu向uboot传达了某个参数,uboot才能知道启用那个zimage

最近编辑记录 kekemuyu (2019-11-06 09:59:36)

离线

#4 2019-11-06 10:09:41

ippen
会员
注册时间: 2018-07-22
已发帖子: 345
积分: 339.5

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

关键在u-boot,首先要u-boot最开始程序首先判断出cpu类型和板子型号然后选择性加载不同的uboot,也就是说uboot要有三个部分,一个是f1c100s的uboot,一个是v3s,在这两个之前,有一段汇编代码判断cpu型号,然后和决定加载后面的uboot版本

离线

楼主 #5 2019-11-06 10:15:09

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

ippen 说:

关键在u-boot,首先要u-boot最开始程序首先判断出cpu类型和板子型号然后选择性加载不同的uboot,也就是说uboot要有三个部分,一个是f1c100s的uboot,一个是v3s,在这两个之前,有一段汇编代码判断cpu型号,然后和决定加载后面的uboot版本

”汇编代码判断cpu型号“还有这操作,我记得cpu内部还有个brom,里面也有boot程序,是不是需要brom的支持才行

离线

#6 2019-11-06 10:31:59

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

在 spl 用汇编指令可以判断 cpu 类型, 然后加载不同的 u-boot, 这个应该可行,至于brom 那个没有用吧。





离线

#7 2020-01-31 20:51:58

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

烧了3d光固化打印机固件nanodlp之后, 发现果然如此, 一个固件走天下, 每款树莓派固件都可以用.

离线

#8 2020-02-02 00:09:38

chainsx
会员
注册时间: 2019-08-01
已发帖子: 37
积分: 31.5

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

树莓派启动不是靠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 中完成

离线

#9 2020-02-02 00:11:27

chainsx
会员
注册时间: 2019-08-01
已发帖子: 37
积分: 31.5

Re: 树莓派的一个镜像是如何做到适配不同架构的芯片的,能否做一个f1c100s/v3s的通用镜像。

树莓派是因为在GPU中有一段固化了的Bootloader,所以能够识别型号来选内核。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn