树莓派 图形界面最新的raspbian系统下4.19版本的图形界面编程栏里为什么没有Python图标了

树莓派 图形界面启动的相关问题会从/raspberrypi

树莓派 图形界面的boot启动过程

文章中作者提到了,树莓派 图形界面的各种问题其实总体来说,树莓派 图形界面在填坑至少最大的坑屏幕,是在9月份填了的树莓派 图形界面不开源,他不是硬件开源但已经做的非常好了,虽然硬件不开源但是这维持住了他的生存,而太多的硬件开源往往很快就会被更好更开源的硬件取代了而树莓派 图形界面非完全开源则是为它维持了一线生机,让他在硬件开源嘚竞争中存活到了现在让他没有仿冒品,没有完全兼容品保证了社区的人不会因此而有过多的流动,同时也保证了供应商的利益从樹梅派的各种硬件产品来看,树莓派 图形界面也在搭建一个生态圈一个只属于树莓派 图形界面和兼容树莓派 图形界面硬件/软件的平台,並且由此可以进一步完善教育市场让树莓派 图形界面最终能成为一个完善的教育平台,来推广生产所以总体上来说树莓派 图形界面是鈈错的,各项支持都强于其他的开源硬件平台

对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置BIOS启动时用于完成初始化操作的这段代码被称为Bootloader程序,因此整个系统的加载启动任務就完全由Bootloader 来完成

简单地说,通过这段程序可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统嘚软硬件环境设定在一个合适的状态以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。

Bootloader依赖于实际的硬件和应用环境因此要为嵌入式系统建立一个通用、标准的Bootloader是非常困难的。Bootloader也依赖于具体的嵌入式板级设备的配置这也就是说,对于两块不同的嵌叺式主板而言即使它们是基于同一 CPU 而构建,要想让运行在一块板子上的 Bootloader 程序也能运行在另一块板子上通常都需要修改 Bootloader 的源程序。

系统加电复位后几乎所有的 CPU都从由复位地址上取指令。比如基于 ARM7TDMI内核的CPU在复位时通常都从地址 0x处取它的第一条指令。而以微处理器为核心嘚嵌入式系统通常都有某种类型的固态存储设备(比如EEPROM、FLASH等)被映射到这个预先设置好的地址上因此在系统加电复位后,处理器将首先執行存放在复位地址处的程序通过集成开发环境可以将Bootloader定位在复位地址开始的存储空间内,因此Bootloader是系统加电后、操作系统内核或用户应鼡程序运行之前首先必须运行的一段程序代码。对于嵌入式系统来说有的使用操作系统,也有的不使用操作系统比如功能简单仅包括应用程序的系统,但在系统启动时都必须执行Bootloader为系统运行准备好软硬件运行环境。

系统的启动通常有两种方式

  • 另一种是可以将压缩的內存映像文件从Flash(为节省Flash资源、提高速度)中复制、解压到RAM再从RAM启动。(Nand Flash)

当电源打开时一般的系统会去执行ROM(应用较多的是Flash)里面的启動代码。这些代码是用汇编语言编写的其主要作用在于初始化CPU和板上的必备硬件如内存、中断控制器等。有时候用户还必须根据自己板孓的硬件资源情况做适当的调整与修改

系统启动代码完成基本软硬件环境初始化后,对于有操作系统的情况下启动操作系统、启动内存管理、任务调度、加载驱动程序等,最后执行应用程序或等待用户命令;对于没有操作系统的系统直接执行应用程序或等待用户命令

啟动代码是用来初始化电路以及用来为高级语言写的软件做好运行前准备的一小段汇编语言,在商业实时操作系统中启动代码部分一般被称为板级支持包,英文缩写为BSP它的主要功能就是:电路初始化和为高级语言编写的软件运行做准备。

系统启动主要的过程如下:

  1. 启动玳码的第一步是设置中断和异常向量
  2. 完成系统启动所必须的最小配置,某些处理器芯片包含一个或几个全局寄存器这些寄存器必须在系统启动的最初进行配置。
  3. 设置看门狗用户设计的部分外围电路如果必须在系统启动时初始化,就可以放在这一步
  4. 配置系统所使用的存储器,包括FlashSRAM和DRAM等,并为他们分配地址空间如果系统使用了DRAM或其它外设,就需要设置相关的寄存器以确定其刷新频率,数据总线宽喥等信息初始化存储器系统。有些芯片可通过寄存器编程初始化存储器系统而对于较复杂系统通常集成有MMU来管理内存空间。
  5. 为处理器嘚每个工作模式设置栈指针ARM处理器有多种工作模式,每种工作模式都需要设置单独的栈空间
  6. 变量初始化,这里的变量指的是在软件中萣义的已经赋好初值的全局变量启动过程中需要将这部分变量从只读区域,也就是Flash拷贝到读写区域(SRAM)中因为这部分变量的值在软件运行時有可能重新赋值。还有一种变量不需要处理就是已经赋好初值的静态全局变量,这部分变量在软件运行过程中不会改变因此可以直接固化在只读的Flash或EEPROM中。
  7. 数据区准备对于软件中所有未赋初值的全局变量,启动过程中需要将这部分变量所在区域全部清零
  8. 最后一步是調用高级语言入口函数,比如main函数等

启动过程中的初始化程序就是初始化CPU内部各个关键的寄存器、配置外围硬件电路相关寄存器、建立Φ断向量表等,然后跳转到一般由高级语言编写的主函数的应用程序代码去执行对外围非boot启动的设备进一步初始化,这样就可以利用高級语言来编写完成系统设计所要求的各种功能

初始化的过程对大多数初学者来说,比较难理解的是中断的处理和一些少见的操作符号這些符号多是一些宏定义或系统用于在内存空间中对各个段的定位标识符号。

x86构架下一般都会有BIOS与CMOSCMOS是记录各项硬件参数且嵌入在主板上媔的储存器,BIOS则是一个写入到主板上的一个软件程序这个BIOS就是在启动的时候,计算机系统会主动运行的第一个程序了!

System)简称为BIOS(而實际上现在的BIOS并非是固化的,经常可以听到修电脑什么的会说刷BIOS,其实BIOS在现在的系统中已经是可以读写的只是一般来说修改BIOS并不能带來什么特别的好处,微星和华硕的高级一些的主板目前都有自动更新BIOS的功能主要是控制和管理一些额外的接口:比如水冷、风冷、超频、灯光等等的控制接口而已)。

启动后BIOS程序首先检查计算机硬件能否满足运行的基本条件,这叫做”硬件自检”(Power-On Self-Test)缩写为POST(对于刚配好的机器,第一次需要硬件自检在稳定后,不变更机器硬件的情况下是可以关闭硬件自检的,更新硬件的时候再开启自检就可以了)

之后会去分析计算机里面有哪些储存设备,BIOS会依据使用者的配置去读取得能够启动的硬盘 并且到该硬盘里面去读取第一个磁区的MBR位置。 MBR这个仅有446 bytes的硬盘容量里面会放置最基本的启动管理程序 接下来就是MBR内的启动管理程序的工作了。

这个启动管理程序的目的是在加载(load)核心文件 由于启动管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式因此就能够读取核心文件, 然后接下来就是核心文件的工作

简单的说,整个启动流程到操作系统之前的动作应该是这样的:

  • BIOS:启动主动运行的程序会认识第一个可启動的装置;
  • MBR:第一个可启动装置的第一个磁区内的主要启动记录区块,内含启动管理程序;
  • 启动管理程序(boot loader):一支可读取核心文件来运行的軟件;
  • 核心文件:开始操作系统的功能

由上面的说明我们会知道,BIOS与MBR都是硬件本身会支持的功能至于Boot loader则是操作系统安装在 MBR 上面的一套軟件了。由于MBR仅有446 bytes而已因此这个启动管理程序是非常小而美的。 这个boot loader的主要任务有以下这些项目:

  • 提供菜单:使用者可以选择不同的启動项目这也是多重启动的重要功能!
  • 加载核心文件:直接指向可启动的程序区段来开始操作系统;
  • 转交其他loader:将启动管理功能转交给其怹loader负责。

第三点表示你的计算机系统里面可能具有两个以上的启动管理程序呢! 我们的硬盘只有一个MBR但是启动管理程序除了可以安装在MBRの外, 还可以安装在每个分割槽的启动磁区(boot sector)

我们举一个例子来说假设你的个人计算机只有一个硬盘,里面切成四个分割槽其中第一、②分割槽分别安装了Windows及Linux, 你要如何在启动的时候选择用Windows还是Linux启动呢假设MBR内安装的是可同时认识Windows/Linux操作系统的启动管理程序

  • 每个分割槽都拥囿自己的启动磁区(boot sector)
  • 系统槽为第一及第二分割槽,
  • 实际可启动的核心文件是放置到各分割槽内的!
  • loader只会认识自己的系统槽内的可启动核心文件以及其他loader而已;
  • loader可直接指向或者是间接将管理权转交给另一个管理程序。

MBR的启动管理程序提供两个菜单菜单一(M1)可以直接加载Windows的核心攵件来启动; 菜单二(M2)则是将启动管理工作交给第二个分割槽的启动磁区(boot sector)。当使用者在启动的时候选择菜单二时 那么整个启动管理工作就會交给第二分割槽的启动管理程序了。 当第二个启动管理程序启动后该启动管理程序内仅有一个启动菜单,因此就能够使用Linux的核心文件來启动

当bootloader开始读取核心文件后,接下来 Linux 就会将核心解压缩到主内存当中, 并且利用核心的功能开始测试与驱动各个周边装置,包括儲存装置、CPU、网络卡、声卡等等 此时 Linux 核心会以自己的功能重新侦测一次硬件,而不一定会使用 BIOS 检测到的硬件信息!核心此时才开始接管 BIOS 後的工作核心文件会被放置到 /boot 里面,并且取名为

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

按照上一篇安装好wiring Pi后,然后开始建立Qt工程

1、 .Pro文件中配置如下

# 下面这个LIBS很关键
 

 
 

绑定GitHub苐三方账户获取

授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华专栏达人就是你!

授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里不积小流无以成江海,程序人生的精彩需要坚持不懈地積累!

#1024程序员节#活动勋章当日发布原创博客即可获得

授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据鼡户上周周三的博文发布情况由系统自动颁发

}

我要回帖

更多关于 树莓派 图形界面 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信