0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派裸机代码之前必做的事情

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2020-09-25 15:51 次阅读

树莓派4裸机基础教程芯片启动到代码执行

1.说明

2.树莓派的sd

3.config.txt的配置信息

4.小结

1.说明

在做嵌入式开发的时候,每个芯片都有自己的启动方式。在做底层优化的时候,往往也需要关注芯片的启动方式,涉及到启动时间,启动的稳定性问题。所以关注芯片的启动方式非常的重要。在使用电脑的时候,电脑上电后首先会执行BIOS,这个是厂家固化到ROM里面的代码,一般从电脑生产出来到电脑的寿命结束,其中的内容都是不会变的。而系统却可以经常更换,我们可以装Linux系统,也可以装windows系统。这个就是电脑的启动过程。

类比芯片的启动过程,大多数也是如此,比如我们一般描述嵌入式Linux在某些芯片的上的启动流程,首先芯片上电后会执行芯片内部rom的一段固化代码,这段代码会根据拨码开关选择从不同的存储介质中去读取一小段可以执行的代码放到sram中执行。这些存储介质可以是SPI Flash,可以是nand或者nor flash,或者sd卡等等。由于芯片的sram不可能做到非常大,所以第一阶段的代码往往会有限制,比如只允许使用4K内存等等。这段小的代码负责初始化sdram,然后跳转到sdram中去执行代码。由于sdram的成本比sram小许多,所以sdram往往非常的大,接着就是执行正常的程序了。

这些启动方式的选择,都是芯片设计者需要考虑的问题,一方面是成本另一方面是启动的效率问题。在使用芯片的时候,具体看设计者的思路即可。下面来分析一下树莓派4芯片的启动过程。

2.树莓派的sd卡

一般我们使用开发板的时候,很少会见到需要插上sd卡才能启动的,唯有树莓派有这个特殊的操作。那么树莓派的sd卡里面的文件究竟有什么作用呢?

树莓派在设计的时候,为了节省成本,没有使用掉电非易失性存储介质,也就在板子上不能找到相关的flash。这样芯片启动的程序只能放在sd卡里面了。本来U盘启动也是一种方式,但是树莓派4代之前的设计并不是很好,导致这种启动方式不可以使用。树莓派4也有一些尝试,但是目前树莓派4最主流的方式还是使用SD卡启动。

Raspberry Pi 4具有一个SPI连接的EEPROM(4MBits / 512KB)。其中包含用于启动系统的代码,并替换了先前在SD卡的启动分区中找到的bootcode.bin。请注意,如果Pi 4的SD卡的启动分区中存在bootcode.bin,则将其忽略。也就是说在树莓派4的启动方式上,更加的灵活,甚至可以直接去掉SD卡,从网络方式启动应用程序。具体可以看之前的文章

下面来分析一下从sd卡启动系统需要的必要的文件内容。在裸机实验中,一般只需要如下的文件就可以启动了。

启动过程可以描述如下:

首先芯片上电后执行first-stage bootloader,这是芯片固化在内部的代码,这个代码的功能是加载sd卡中的bootcode.bin文件。在树莓派4之前的版本都是需要这个文件的,但是在树莓派4上,由于有了SPI的EEPROM,所以SD卡中可以不用存在这个文件。并且启动了GPU。然后将bootcode.bin读取到了128K大小的二级缓存(L2 Cache)中。此时开始执行bootcode.bin代码。该功能用于初始化ram,并且把start4.elf加载到内存中,并且去读取config.txt中的配置信息,设置这些配置信息。上述已经描述了这几个文件的作用,但是经过实际测试发现,这个设备树文件bcm2711-rpi-4-b.dtb文件也是需要的,如果不存在也会影响串口的输出,也就是只会有乱码输出。所以推测start4.elf文件也会去读取设备树文件,然后设置一些基本的参数。毕竟这个文件的大小也可以说明其功能的丰富。

3.config.txt的配置信息

前面说到,start4.elf会读取config.txt中的配置信息,然后去设置相关的配置。先看看最简单的裸机代码启动里设置了哪些配置:

enable_uart=1 arm_64bit=0 core_freq=250 kernel=kernel7.img kernel_address=0x8000

首先enable_uart=1表示使用的是miniUART,树莓派4中,UART控制器有两种,PL011或者mini UART。

Name Type
UART0 PL011
UART1 mini UART
UART2 PL011
UART3 PL011
UART4 PL011
UART5 PL011

这里设置使能UART1作为输出信息,接着需要设置arm的频率core_freq=250。因为串口控制器是需要频率进行使能的。

arm_64bit=0告诉arm要启动的程序是32位的,由于树莓派4上的芯片是cortex-a72,是aarch64架构的,但是也支持向下兼容的32位指令。所以需要告知当前的裸机程序是32位指令集架构。

kernel=kernel7.img表示从start4.elf执行的程序是哪一个,另外kernel_address=0x8000表示需要执行的内存地址。这个地址就是裸机程序在链接时的入口地址。

4.小结

本文主要描述了一个树莓派裸机代码之前所做的事情,这些启动流程是非常值得思考的,每一个步骤都有其设定的含义。剩下的config.txt文件中的配置其实还是有很多可以尝试的,比如修改启动地址,或者去使能某些外设等等。由于目前研究的是最简单的裸机代码,所以这些配置会在以后更高级的功能中慢慢说到。比如比较重要的安全可信技术,也需要修改配置文件。前期理解芯片的启动过程有助于对后面编写裸机代码的分析。

- END -

原文标题:树莓派4裸机基础教程:芯片启动到代码执行

文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50378

    浏览量

    421677
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105508

原文标题:树莓派4裸机基础教程:芯片启动到代码执行

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    树莓与Arduino的区别是什么

    在当今的科技世界中,树莓(Raspberry Pi)和Arduino是两个经常被提及的名字。它们都是开源硬件平台,但它们的目标、功能和用途却大相径庭。 1. 目标和用途 树莓(Ra
    的头像 发表于 11-11 11:14 304次阅读

    ARM开发板与树莓的比较

    ARM开发板和树莓都是基于ARM架构的单板计算机,它们在教育、工业控制、物联网等领域有着广泛的应用。 硬件配置 ARM开发板和树莓的硬件配置各有特点,具体取决于不同的型号和制造商。
    的头像 发表于 11-05 11:11 224次阅读

    树莓gpio有什么用,树莓gpio接口及编程方法

    一、树莓GPIO的用途 树莓(Raspberry Pi)是一款小巧、功能强大的单板计算机,广泛应用于编程教育、物联网项目、家庭媒体中心等领域。GPIO(General Purpos
    的头像 发表于 10-22 18:09 455次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 449次阅读

    树莓网关:物联网应用的新标杆

    什么是树莓树莓(Raspberry Pi)是一种基于Linux的小型单板计算机,由英国的树莓
    的头像 发表于 10-09 16:44 229次阅读
    类<b class='flag-5'>树莓</b><b class='flag-5'>派</b>网关:物联网应用的新标杆

    树莓和51单片机哪个有优势

    树莓和51单片机是两种不同的硬件平台,它们各自有其特点和优势。在决定使用哪一个之前,我们需要了解它们的基本特性、应用场景和开发难度。 1. 简介 1.1 树莓
    的头像 发表于 09-02 09:04 661次阅读

    树莓和单片机的优缺点是什么

    树莓(Raspberry Pi)和单片机(Microcontroller)是两种广泛应用于电子项目和嵌入式系统的硬件平台。它们各自具有独特的优缺点,适用于不同的应用场景。 树莓
    的头像 发表于 08-30 18:21 1436次阅读

    树莓的功能用途是什么

    树莓(Raspberry Pi)是一款由英国树莓基金会研发的信用卡大小的单板计算机,自2012年推出以来,已经发展出多个型号和版本。树莓
    的头像 发表于 08-30 18:01 2217次阅读

    树莓4B的性能特点及应用

    树莓4B简介 树莓4B是一款基于ARM架构的单板计算机,其搭载了四核Cortex-A72 CPU,主频高达1.5GHz,同时配备了4GB LPDDR4内存。此外,它还具备了丰富的接
    的头像 发表于 08-30 16:54 1385次阅读

    树莓gui开发用什么ide

    树莓(Raspberry Pi)是一款功能强大的微型计算机,可以运行多种操作系统,如Raspbian、Ubuntu等。在树莓派上进行GUI(图形用户界面)开发,可以使用多种集成开发环境(IDE
    的头像 发表于 08-30 16:49 658次阅读

    树莓是x86还是arm

    树莓(Raspberry Pi)是一款由英国树莓基金会(Raspberry Pi Foundation)开发的微型计算机。它基于ARM架构,而非x86架构。 一、
    的头像 发表于 08-30 15:42 753次阅读

    树莓装ubuntu和raspbian哪个更好

    树莓(Raspberry Pi)是一款由英国树莓基金会开发的单板计算机,广泛应用于教育、科研、物联网等领域。树莓
    的头像 发表于 08-30 15:41 1040次阅读

    树莓5,Raspberry Pi 5 评测

    )连接器,可用于之前发布的Raspberry Pi Pico Debug kit调试,或用于与其他微控制器建立UART连接。 眼尖的同学会注意到 Pi 5 的USB和以太网接口位置发生了交换。树莓5似乎
    发表于 06-19 14:51

    树莓主板如何连接电脑

    树莓派到电脑之前,我们需要准备一些材料。以下是所需材料的列表: 一台树莓主板:确保你有一台可用的树莓
    的头像 发表于 01-07 15:40 1801次阅读

    基于树莓的环境监测系统

    树莓(Raspberry Pi)是一种小型而功能强大的计算机,其性能和功能足以支持许多应用领域。在环境监测系统中,树莓也被广泛应用。本文将详细介绍基于
    的头像 发表于 01-04 15:15 1835次阅读