嵌入式最小硬件系统组成(类比手机配置)

选择嵌入式核心板,就和我们通过看配置挑选手机一样,重点关注的内容非常相像。

嵌入式设备犹如自定义的计算机类设备,具有强烈的可配置以及定制的性质,但是这里面又有一部分都通用的,被称为最小系统或者核心板。

嵌入式最小系统组成,类比手机配置:处理器、时钟、电源、存储、通用接口和调试接口

wps1.jpg

处理器

角色:对应手机内核处理器,嵌入式设备上有如STM32和ARM等微处理器,作为系统的核心,负责执行指令和控制其他硬件部件。

主要参数:

(1)可以是单核或多核处理器;智能手机等常使用多核处理器,分别用于处理不同的任务。

(2)CPU核的框架可能是ARM或MIPS,当前智能硬件工业使用ARM为主。

(3)除了CPU核还可能包含GPU核、DSP核。

举例:

国产芯片RK3399为例,CPU处理器采用big.LITTLE大小核架构,大核选用的是双核Cortex-A72,四小核选用的是Cortex-A53

时钟

角色:类似人体的心脏提供脉搏,芯片内部时钟源使用的RC振荡器,嵌入式设备上的外部时钟源使用的时钟晶振,常见的有32.768KHz低速晶振和24MHz高速晶振,为整个系统基本的时间控制和同步机制,为包括处理器和外围电路运作提供所需的时钟信号。

嵌入式设备时钟系统会包括多个时钟源和时钟分频器/倍频器,用于满足不同外设和内部电路的需求。

CPU工作频率(主频)通过时钟源倍频、分频得到。通过修改系统寄存器来完成设置。

时钟子系统指提供给SOC各外设组件时钟的树状结构。提供时钟模块叫做provider,包括时钟源、倍频、分频、多路选择、门控制,使用时钟的模块则称为consumer。

举例:

#cat /sys/kernel/debug/clk/clk_summary //查看时钟树

每个i2c都有两个时钟,一个是控制时钟clk_i2c,控制时钟只能从PLL分频得到;另一个是配置时钟pclk_i2c,配置时钟是从pclk_perilp1而来,自身只是门控制开关,不能进行频率修改。

电源

角色:类似人体供能单元,嵌入式设备有电源电路,低压差稳压器LDO把标压转换为系统电压,为系统提供稳定的电力供应。

供电有两种方式:一种是GPIO供电,另一种就是使用电源管理芯片管理供电、电源转换、电压调节和电源监控等。

类比手机的强制重启,复位电路设计中,通过复位芯片(如MAX811等)实现上电自动复位和手动复位,使系统可以在异常情况下能够正确重启。

电源管理中最重要的机制是Regulator电源机制,通过软件实现,Regulator是指在为其他模块供电的电源型设备,而被供电的模块则称为是consumer。

举例:

比如RK平台的电源管理芯片RK808,通过I2C控制实现了的三种工作模式的管理,PMIC通过normal模式管理系统正常运行;通过sleep模式管理系统休眠时需要待机来减低自身功耗;通过Shutdown模式管理系统下电流程。通过DTS设备树进行相关配置。

存储

角色:对应手机存储,嵌入式设备有如RAM、ROM、Flash等类型,存储操作系统、应用程序和数据。

手机配置中的内存是DRAM,存储指的是NAND flash;

内部存储DRAM作为系统运行所需的存储,存储系统和堆栈信息;内部部存储flash存储操作系统和用户程序;外部存储扩展系统的存储容量,如SD卡、硬盘等用于用户自定义存储内容。

举例:

使用DRAM(动态随机存取存储器)技术的包括DDR和LPDDR,当前处理器芯片片内中一般集成了DDRx的控制器。

使用nand flash技术的包括手机的存储和电脑的固态硬盘。

存储子系统MTD,为硬件和系统上层软件之间提供了一个抽象的接口,便于驱动开发,MTD的实现代码在/kernel/drivers/mtd/目录下。

SD卡存储是由早期的MMC演变而来的,通过软件设置,当插入SD卡时,自动为其挂载文件系统。软件中mmc卡的驱动文件是kernel/include/linux/mmc/host.h。

wps1.jpg

通用接口

角色:通过通用接口,才可以连接外部设备比如传感器、执行器、显示器等,实现最小系统与外部环境的交互。

常见类型:并口如GPIO,自定义外部连接;串口如UART;通信接口如以太网接口、USB、I2C、SPI等。

举例:

RK3399包含有五组可复用的GPIO接口。每组通过编号划分IO接口名,可通过软件设置上拉、下拉或者中断模式。

控制GPIO有两种方法,传统的做法时写一个单独的驱动程序去控制GPIO,另一种是在嵌入式系统中借助虚拟文件系统去控制GPIO。

#echo out > /sys/class/gpio/gpio12/directon //设置GPIO的输入或者输出的方向

调试接口

角色:类似生病扎针,嵌入式设备调试接口比如JTAG或者ADB接口,通过调试接口对系统进行调试和编程操作。

区别在于嵌入式开发一般会留足开发接口,比如串口以及USB。串口已经逐渐被淘汰,但台式机基本还是会保留串口。通过USB使用ADB功能,用于命令行基础调试。

首先要配置USB功能,可以debugfs文件系统查看USB设备信息:

#cat /sys/kernel/debug/usb/devices

小结

更多更新请关注《森哥谈成像技术》

结尾森哥总结,手机作为一类嵌入式设备,理解手机配置,就理解了嵌入式设备最小系统的构成,有助于我们聚焦核心,为项目挑选到适合的平台:

(1)ARM作为CPU内核,CLOCK时钟模块作为RK3399外部时钟源;

(2)PMU模块控制系统的整个电源管理,保证系统的有序、合理供电;

(3)DDR3存储模块为系统运行提供动态存储空间;SD卡存储模块作为主要的外部存储空间;

(4)GPIO作为基本的输入输出接口提供基本的通用IO功能;

(5)通过USB ADB模块实现Android程序的下载和调试。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值