树莓派(0):树莓派基础知识

开启树莓派之旅

记得我刚买树莓派的时候,还对这小东西一无所知。去某宝买了一些教学资料和一些书,杂七杂八的什么都有,花了很多不必要的时间,现在想想真是后悔。

写这一系列博客,一来技术共享,大家共同进步,二来自己哪天又要用这小东西的时候能直接看着博客顺利上手。

1.什么是树莓派

了解树莓派的最好方式当然是去树莓派官方网址 raspberrypi.com

以下内容针对树莓派3B进行介绍,新出的树莓派4B可到此处进行对比。

树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备PC的所有基本功能。
树莓派3B

(图片来源:Raspberry Pi User Guide 4th Edition)
该文档下载链接
提取码:henj

2.树莓派3B参数表

树莓派型号Raspberry Pi 3B
SOCBroadcom BCM2837
CPUCortex-A53 64Bit Soc at 1.2GHz
GPUBroadcom VideoCore IV,OpenGL ES 2.0,1080p 30 h.264/MPEG-4 AVC高清解码器
内存1GB SDRAM @ 400MHz (LPDDR2)
板载资源Sandisk Micro SD card 16GB class 10 (ours)
蓝牙Bluetooth 4.1/Bluetooth Low Energy(BLE)
无线网络802.11.b/g/n wireless LAN
以太网网口Ethernet over USB 2.0(max. throughput 100Mbps)
USB4x USB Ports
GPIO40 pins
音频接口3.5mm插孔,HDMI电子输出或IIS
视频接口Full Size HDMI, MIPI DSI display port, MIPI CSI camera port
电源输入5V/2.5A DC via micro USB or GPIO
重量45g
总体尺寸85 x 56 x 17mm
工作环境温度0-50℃
操作系统Debian GNU/Linux、 Fedora、 Arch Linux 、 RISC OS、 Windows10 IoT

raspberry

  • 关于GPU的分配:
    1GB内存要用于Broadcom BCM2837上的中央处理器(CPU)和图形处理器(GPU),因此要在两者之间合理分配内存。默认情况下GPU占64M,剩下全部用于CPU。
    1)如果将树莓派用作文件服务器或Web服务器,不需要使用视频输出,可以减少分配给GPU的内存数量(最少为16MB);
    2)如果用它来浏览网页,看B站甚至运行3D游戏,那么应该为GPU分配较大的内存,从而提高GPU性能,使其更好地渲染3D游戏画面;如果需要接入摄像头,则至少要为要为GPU分配128MB显存。

以下内容是上学期课程所整理的一些东西,新手可选择性跳过,不过了解一下绝对大有帮助:)

3.运行环境(Run-Time Environment)

目标平台上为运行嵌入式软件而必须的的软件环境。

3.1启动代码(Start-up code)

首先,需要知道的是树莓派传统的desktop computer那样启动。VideoCore(a.k.a the Graphics processor)实际上 是在ARM CPU之前 启动的!

树莓派的SOC内部集成了ARM CPU,GPU,ROM,SDRAM,以及其他设备,所以可以把SoC想象成主板和CPU一起压缩成一个芯片(arm系统结构的PC)。

  1. 当给树莓派加电后,最先执行保存在ROM中的代码,这些代码是芯片出厂的时候就设定的,通常被称为 first-stage bootloader,这些代码固化硬件内部,可以认为是SoC硬件的一部分。
    first-stage bootloader的主要工作是加载位于SD卡上第一个分区的bootloader(称为second-stage bootloader ),第一个分区必须是FAT32格式。

  2. second-stage bootloader 主要是bootloader.bin。可以把SD卡取出,放到Windows或Linux系统中,就可以看到bootloader.bin文件。需要说明的是,上电或者重启后,cpu和ram都没有初始化,因此,执行second-stage bootloader 的实体是GPU,bootcode.bin是加载到GPU的128KB大小的L2Cache中,再执行的。
    bootcode.bin的主要工作是初始化ram,并把start.elf(也位于SD卡的第一分区)加载到内存中

  3. start.elf就是third-stage bootloader,start.efl从第一个分区中加载config.txt,可以把config.txt想象成bios配置信息,内部的配置都可以改变。
    start.elf把ram空间划分为2部分:CPU访问空间GPU访问空间
    SoC芯片只访问属于GPU地址空间的内存区,例如,GPU的物理内存地址空间为0x000F000 – 0x0000FFFF,CPU的物理内存地址空间为0x00000000 – 0x0000EFFF,如果GPU访问0x0000008,那么它访问的物理地址为0x000F008。(实际上,ARM处理器的mmu部件把GPU的内存空间映射到0xC0000000 开始)。

  4. config.txt在内存地址空间分配完成后才加载,因此,不可以在config.txt中更改内存地址的配置。然而,可以通过配置多个elf文件来让start.elf和config.txt支持多种配置空间。start.elf还从SD卡的第一个分区中加载cmdline.txt(如果cmdline.txt存在的话)。该文件保存的是启动kernel(不一定是Linux的内核)的参数。

  5. 至此,SoC进入了boot的最后阶段,start.efl把kernel.img,ramdisk,dtb加载到内存的预定地址,然后向cpu发出重启信号,因此cpu就可以从内存的预定地址执行kernel的代码,就进入了软件定义的系统启动流程。

  6. 启动操作系统后,GPU代码没有unloaded。事实上,start.elf不仅仅是GPU的固件,它还是一个专有的操作系统,叫做VideoCore OS。当普通OS (Linux)需要一个不能直接访问的元素时,Linux使用邮箱消息系统与VCOS通信。

Reference:How the Raspberry Pi boots up

3.2操作系统

树莓派操作系统简介
Raspbian Stretch with Desktop基于Debian,Arm版的Linux系统,兼容性和性能优秀,当前实用最广泛的操作系统
Raspbian Stretch with Desktop and recommended software相比上一个多了一些推荐软件,比如一些IDE、Office、游戏等
Raspbian Stretch Lite基于Debian,不带图形界面,相比第一个小很多,4G内存卡就够
Pidora基于Fedora,是拥有另一种风格的树莓派操作系统
Arch Linux ARM基于Arch Linux,对linux操作系统很熟悉的人大都实用此版本
Raspbmc在Raspbian基础上定制的XBMC影音播放系统,将树莓派设置成电视机的Linux操作系统
OpenELECNOOBS安装推荐版本之一,用得最多的XBMC跨平台分支,是一个小的XBMC媒体操作系统
Windows10 IoT微软官方针对物联网(IoT)的一个Windows版本
Ubuntu MATE针对树莓派的版本,界面个性美观
Snappy Ubuntu Core针对物联网(IoT)的一个发行版本
CentOS针对ARM的发行版,基于Red Hat Linux ,CentOS 是RHEL(Red Hat Enterprise Linux)源代码再编译的产物,而且在RHEL的基础上修正了不少已知的 Bug ,稳定性值得信赖
FreeBSD针对树莓派的发行版,由于FreeBSD宽松的法律条款,其代码被好多其他系统借鉴包括苹果公司的OS X,正是由于OS X的UNIX兼容性,使得OS X获得了UNIX商标认证。
Kali针对树莓派的发行版,Kali Linux面向专业的渗透测试和安全审计,黑客的最爱

3.3编程环境

为完成嵌入式软件开发而必须的软硬件工具。

3.3.1 文本编辑器:vi/vim,gedit, nano
nano(小白最爱)

nano是一个小巧自由,并且友好的编辑器,在大部分linux上都有nano命令。相对vi,不熟悉linux的话nano比较简单,只需要知道如何进入编辑,如何保存退出即可。

vi(标准)

vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样。对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。

vim(编程最爱)

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
安装vim只需要以下两步操作
卸载vim-tiny:$ sudo apt-get remove vim-common
安装vim full:$ sudo apt-get install vim

gedit(纯文本)

是Linux下的一个纯文本编辑器,但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括gb2312、gbk在内的多种字符编码。

3.3.2交叉编译工具:gcc

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。

树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件。与此同时,PC机上也可使用gcc工具链生成可执行代码,但是和树莓派上的gcc工具不同,PC机上的gcc工具生成intel或amd芯片上可执行的代码,但树莓派却是arm系列的芯片,显然存在不小的差异。那么使用交叉工具链便可在PC机上开发树莓派中可执行程序。 虽然树莓派的主频可达700MHz远高于一般的嵌入式系统,但相比于PC机其性能还是差些,使用交叉工具链可节约开发时间。在编译链接同等规模的代码时,PC机所用的时间应少于树莓派所用时间,通过交叉编译的方法提高效率

3.3.3交叉调试工具:gdb

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。在UNIX平台下做软件,GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。

一般来说,GDB主要帮忙完成下面四个方面的功能:

  1. 启动程序,可以按照自定义的要求随心所欲的运行程序。
  2. 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
  3. 当程序被停住时,可以检查此时程序中所发生的事。
  4. 动态的改变程序的执行环境。

OKay,基础知识先整理这么多,接下来开始动手实践!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值