嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构
硬件资料:
操作系统:(非虚拟机)
zws@z-pc:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04. LTS
Release: 14.04
Codename: trusty
内核版本:
zws@z-pc:~$ uname -a
Linux z-pc 4.4.--generic #~14.04.-Ubuntu SMP Tue Sep :: UTC x86_64 x86_64 x86_64 GNU/Linux
编译器版本:
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) //gcc
gcc version 4.5.1 (ctng-1.8.1-FA) //arm-linux-gcc
开发板:TINY4412/Super4412SDK 1506
核心板:TINY4412 1306 (SOC:Exynos 4412 Cortex-A9 四核 1.5Ghz )
LCD屏:S702 5V/1A
一、 嵌入式系统硬件架构:
微处理器:
按位数:4位、8位、16位、32位和64位。
按用途:嵌入式DSP和通用的嵌入式微处理器。
嵌入式DSP专用于数字信号处理,采用哈佛结构,程序和说一句分开存储,采用一系列措施保证数字信号的处理速度。
通用嵌入式处理器一般集成了通用微处理器的核、总线、外围借口和设备的SOC芯片,有些还会将SDP作为协处理器。
一般的嵌入式处理器包括:
1. 片内存储器。
2. 外部存储器的控制器、外设接口。
3. LCD控制器。
4. 中断控制器。
5. 定时器、A/D、D/A转换器。
6. 多媒体加速器。
7.总线。
8. 其他标准接口或外设。
常用的嵌入式微处理器按照体系结构不同,可以分为以下几个系列:
1. ARM系列:过去称为高级精简指令集机器,是一个32位精简指令集RISC处理器架构。
2.MIPS系列:是一种采取精简指令集RISC的处理器架构。
3. PowerPC:是一种精简指令集RISC架构的中央处理器(CPU)。
总线:
总线是CPU与存储器和设备通信的机制,是计算机各部件之间传递数据、地址和控制信息的公共通道。
有3个重要的参数:
1. 总线宽度: 又称为总线位宽,指的是总线能同时传送数据的位数。
2. 总线频率: 工作速度的一个重要参数,频率越高速度越快。
3. 总线带宽: 又称总线传输速率,指在一定时间内总线上可传送的数据总量,用每秒最大传输数据量来衡量。
例如:总线宽度为32位,总线频率为66MHz,则总线带宽等于(32/8)x66=264MB/s。
对于ARM系列的处理器而言会按照AMBA规范来设计总线。
1. AHB(Advanced High-performance Bus):用于高性能、高时钟频率的系统模块连接。
2. ASB(Advance System Bus): 用于并不要求AHB高性能特征的地方。
3. APB(Advance Peripheral Bus):用于较低性能外设的简单连接。一般是接在AHB或ASB总线上的二级总线。
还有其他流行的片外总线:I2C总线.SPI总线、UART总线、USB总线等等。
存储器:
典型的嵌入式系统的存储器包括芯片内部的缓存(Cache)、随机存储器(RAM)、只读存储器(ROM)、芯片外部的主存(如Nor Flash、SRAM、DRAM等)和外存(如Nand Flash、SD卡等)。
高速缓存(Cache)存放的是当前使用得最多的程序代码和数据,即主存中部分内容的副本。在嵌入式系统中,Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache。一般在中高端的嵌入式微处理器中才会有。
主存是处理器能直接访问的存储器,即内存。
外村就是Nand Flas、 SD卡等。
二、 嵌入式系统的软件架构:
嵌入式系统包含一系列抽象层次,这里是正对Linux系统进行讨论的。
最底层是硬件层,即在嵌入式系统的硬件架构中提到的内容。
Linux内核建立在硬件层之上,是操作系统的核心组件。其目的是为上层应用程序提供访问底层硬件的抽象接口,以适合上层软件开发。
在整个Linux内核中,存在着高层抽象和底层抽象。高层抽象主要是为应用程序提供接口,而底层抽象主要是负责外设的驱动。处于高层抽象和底层抽象之间的是文件系统和网络协议。由于大量的文件系统和网络协议的存在,Linux内核必须处理不同格式的文件系统,而且并不会因为文件系统的不同而影响高层抽象为应用程序提供的接口。这点儿对于网络协议同样适用。
《完》
嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构的更多相关文章
- 嵌入式Linux驱动学习之路(二十五)虚拟网卡驱动程序
一.协议栈层次对比 设备无关层到驱动层的体系结构 1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过 ...
- 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
Nor Flash和Nand Flash的不同: 类型 NOR Flash Nand Flash 接口 RAM-like,引脚多 引脚少 容量 小(1M.2M...) 大(512M.1G) 读 简 ...
- 嵌入式Linux驱动学习之路(二十三)NAND FLASH驱动程序
NAND FLASH是一个存储芯片. 在芯片上的DATA0-DATA7上既能传输数据也能传输地址. 当ALE为高电平时传输的是地址. 当CLE为高电平时传输的是命令. 当ALE和CLE都为低电平时传输 ...
- 嵌入式Linux驱动学习之路(二十二)用内存模拟磁盘
安装驱动后,可在/dev/目录下发现已经生成了相应的设备文件. 格式化设备:mkdosfs /dev/ramblock. 挂载设备. 读写设备 . 驱动程序代码: /***************** ...
- 嵌入式Linux驱动学习之路(二十)USB设备驱动
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备 ...
- 嵌入式Linux驱动学习之路(十八)LCD驱动
驱动代码: /************************************************************************* > File Name: lcd ...
- 嵌入式Linux驱动学习之路(十七)驱动程序分层分离概念-平台设备驱动
平台设备驱动: 包含BUS(总线).DEVICE.DRIVER. DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表. ①把device放入bu ...
- 嵌入式Linux驱动学习之路(十六)输入子系统
以前写的一些输入设备的驱动都是采用字符设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的.不同类别的输入设备进行统一的驱动,所以 ...
- 嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖
在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开.而程序有时候会显示是两次按下,一次松开.这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定 ...
随机推荐
- 百度编辑器 UEditor 报错汇总
1,编辑文本时使用js将需要编辑内容setContent到编辑器里,总是报(IE8及IE11):'this.body' 为空或不是对象,详细如下,其实报这样的错除多半是加载先后或加载不完全导致的: 消 ...
- Java单例模式实现的几种方式
单例模式好多书上都是这么写的: public class SingleTon1 { private SingleTon1(){ } private static SingleTon1 instance ...
- PULL解析XML的运行机制详解
PULL解析简单易上手,基本上看一遍,基本上就会解析啦,但总是感觉对PULL解析的运行机制不是很了解,就总结了以下事件驱动到底是怎么执行的.. PULL: Android内置了PULL解析器.PULL ...
- 使用imeOptions
Android的软键盘右下角有Action按钮,如下图的“上一步” 在EditText中有 android:imeOptions选项,它包括完成按钮“actionDone”,发送按钮“actionSe ...
- Android 常见对话框
1.对话框通知(Dialog Notification) 当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成. 下面代码将打开一个如图所示的对话框: public void ...
- mac ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib /mysql/mysql.sock' (111)
之前装了mysql,今天打开mysql的时候报了个Can't connect to local MySQL server through socket '/var/lib /mysql/mysql.s ...
- 【读书笔记】iOS网络-理解错误源
考虑一个字节是如何从设备发往运程服务器以及如何从远程服务器将这个字节接收到设备,这个过程只需要几百毫秒时间,不过确要求网络设备都能正常工作才行.设备网络和网络互联的复杂性导致了分层网络的产生.分层网络 ...
- Android开机广播
有些时候我们常常需要某个程序开机运行.在这个时候我们就需要监听系统的开机广播,然后启动我们的程序即可. 不多说 直接上代码: public class BootReceiver extends Bro ...
- LAMP配置虚拟目录
1. httpd.conf中添加 Listen 81 2. 1 <VirtualHost 127.0.0.2:81> 2 DocumentRoot E:\ws\2011\DiscuzSp ...
- easy ui 1.4的NumberBox,失去焦点后不能再次输入小数点
这也是1.4版本的bug,现在1.4.1也发布了,经验证,该问题在新版本中已经解决了 在网上找到的解决办法,地址:http://www.jeasyui.com/forum/index.php?topi ...