嵌入式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驱动学习之路(十五)按键驱动-定时器防抖
在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开.而程序有时候会显示是两次按下,一次松开.这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定 ...
随机推荐
- android gps定位LocationManager
android location provider有: * LocationManager.GPS_PROVIDER:GPS,精度比较高,但是慢而且消耗电力,而且可能因为天气原因或者障碍物而无法获取卫 ...
- iOS cookie问题
获取cookie时汉字应转换为UTF8格式
- 网络编程---HTTP
URL: 什么是URL ? URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资 ...
- vs出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
经过本人测试,这种问题一般出现在装了svn的项目. 其实删除了删除sln和csproj文件中的SVN配置信息就行了 需要删除的信息 sln文件中: GlobalSection(SubversionSc ...
- 荷兰国旗 Flag of the Kingdom of the Netherlands
问题描述:现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球.白球.蓝球.这个问题之所以叫做荷兰国旗,是因为将红白蓝三色的小球弄成条状物,并有序排列 ...
- [在线] html 转 pdf
http://www.htm2pdf.co.uk/
- MVC中使用SignaIR入门教程
一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...
- JAVA中的字符串小结
String字符串是只读的,不可变的 查看String类的源码,可以发现String类是被final关键字修饰的: 另外还可以看下String类源码中的其它方法实现,随便举个可以修改String值的方 ...
- Aforge.net之旅——开篇:从识别验证码开始
时间过得真快啊,转眼今年就要过去了,大半年都没有写博客了,要说时间嘛,花在泡妹子和搞英语去了,哈哈...前几天老大问我 怎么这么长时间都没写博客了,好吧,继续坚持,继续分享我的心得体会. 这个系列我们 ...
- 0016 Java学习笔记-异常-如果try-catch-finally中都存在return语句会怎样?
上午在搜索"System.runFinalization"的时候,搜到 http://www.cnblogs.com/Skyar/p/5962253.html ,其中有关于try- ...