读书笔记《Building embedded linux system》Chapter 3 硬件支持

这几天进度比较慢,读书有些枯燥,开始看第三章:硬件支持。我看了一下第一版的CHM,不知道是不全呢还是第二版丰富了很多。

在这章中将被讨论没有MMU的结构,虽然这已经在linux 2.6版本中支持,这是对8bit的低价格微处理器,用于打印,家庭娱乐的方式,这本书不包含这些方面,针对32bit的CPU。

CPU的介绍

ARM:久闻大名,很多终端使用,例如iPod、iPhone。ARM使用RISC(Reduce Intruction Set Computing)和使用CISC(负责计算指令集)的x86的CPU不一样。RISC可以使电路更为紧凑,不需要BIOS,低功耗、低成本 。 和他的竞争芯片厂家(IMB、Intel等)不一样,ARM公司不生产自己的芯片,他根据ARM的架构为他的客户设计芯片,这些芯片具有共同的ARM指令 集,使得上面的软件可以兼容,这并不意味着可以在ARM的板块上进行同样的编程开发,只是汇编或者二进制代码在相同的修订架构上是一致的。修订架构包括有 ARMv4T、ARMv5TE(Xscale)、ARMv6(其中ARMv6KZ是用于Apple iPhone)等家族系列。

AVR32:惭愧,没怎么听过。和AVR(8bit处理器)是同一厂家,但是结构没有什么相关,支持通用的DSP和JAVA加速指令,兼容16bit指令和扩展32bit指令。AVR32在2006开始发展,目前Linux kernel支持at32ap这种型号。

Intel x86:这个大家都看起来很熟悉,包括Intel的、AMD的。有一个新的趋势是SoC。虽然在Linux系统中使用很多,但是在嵌入式OS中,占的份额 比较少,原因是比较复杂、电源利用(正在改善)和价格。现在,x86架构在linux内核中有一个内置的debugger。

M32R:在里面提到一个词FPGA,需要到网上共产主义学习一下。ASIC(Application Specific Intergrated Circuits)即专用集成电路,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。目前用CPLD(复杂可编程逻辑器件)和 FPGA(现场可编程逻辑阵列)来进行ASIC设计是最为流行的方式之一。FPGA(现场可编程门阵列)是专用集成电路(ASIC)中集成度最高的一种,用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑, 因而也被用于对CPU的模拟。用户对FPGA的编程数据放在Flash芯片中,通过上电加载到FPGA中,对其进行初始化。也可在线对其编程,实现系统在 线重构,这一特性可以构建一个根据计算任务不同而实时定制的CPU。 对M32R进行很简单的介绍,用于PDA、摄像头、引擎控制等。

MISP:用于游戏机和其他电子设备。和ARM有些类似,就是将CPU core的license给第三方,和ARM不同,但是不同系列的MISP的指令有很大的差异。MISP对Linux的支持不如Intel x86,PowerPc,当时仍有一些用于嵌入式草组哦系统,例如MontaVista。

motorola 68000:是个古老的可用于嵌入式操作系统的架构,现在已经很少使用。

PowerPC:在工作站(Apple macs)和嵌入式操作系统中都大量使用,是IBM、Apple、Freescale共同发起的。

SuperH:有日立发展起来,方式和ARM、MISP相似。SH-1和SH-2是没有MMU,linux不必支持,SH-3|4|5的某些系统Linux支持。

总线和接口(Bus and Interface)

总线和接口连接CPU和外设。先是著名的PCI,有120I/O线的 32bitPCI,184线的64bitPCI,以及新的串口的PCI-Express。为了使驱动能够工作,PCI需要软件支持,第一步的支持是 bootup的时候初始化和配置PCI设备,对于PC设备,由BIOS来完成,kernel从BIOS的表额中获取PCI的信息,但是kernel也可以 自己对PCI进行初始化和被指。这两种方式,kernel都提供了一个API给设备驱动,这样他们可以获取设备的信息并控制设备。

ExpressCard替代PCMCIA,在手提电脑中常用。还介绍了PCI/104和PCI/104-Express、SCSI。

Compact PCI应该是以前我们搞VxWorks的那些多个可插拔多个板块那种插口,他的接口是pin,支持热插拔(hot swap)。热插拔分为三种:一、基本热插拔,需要控制台进行操作;二、全热插拔,通过操作者按动卡的推进或退出,系统自动进行,并给出相关的LED显示 灯;三、高可靠性,各板块受到监控,如果板块块了,将关闭它并启动备用板块。这个在很多电信基本的设备中看到,也是vxworks使用的环境。正在发展 CompactPCIe,将提高吞吐量,并提供PCI-Express的一些优点。

USB,名词解析一下先,Universal Serial Bus。IEEE1394(火线),在Linux 2.6的版本得到了很好的支持。Linux还支持InfiniBand,一种高性能的光交换接口,由1-12条点对点的链接组成,最大吞吐量为 2-96Gbps,端到端的时延非常小,用于高性能的计算,特别在超级计算机中。I2C(Inter-Integrated Circuit,集成电路间),最初是Philips用于TV内部组件相互通信的,目前在嵌入式设备中常见,提供有线的数据交互,例如LCD驱动,DSP 等等,并在检测传感器中大量使用。I2C使用两根线连接设备,一个是串行时钟线,一个是栓行数据线。初始化transaction的一方为master, 虽然允许有多个master的存在,但是绝大部分的应用只有一个master。

I/O

kernel对I/O设备有两种支持,一种是native的方式,令一种I/O设备通过USB层连接。对于USB的驱动也是基于直连设备的驱动,增加了USB stack。

串口,以RS232我们最为常见,这是硬件接口,kernel不需要提供支持,而是包含了实现RS232通信芯片UART(通用异步收发)的驱动,位置 在drivers/char/serical.c。Linux将串行设备作为一个终端设备处理,而不理会底层的硬件和相关的驱动,从/dev/ttyS0 到/dev/ttyS191。

并口,在嵌入式操作系统中很少使用,通常用于打印机,但是打印去可以使用USB或者IEEE1394,所以碰 到的情况很少。有一种使用场景是multibit I/O,可以在并口出链接LED,在程序的不同位置,加入命令,显示不同的LED,这样可以跟踪程序的运行位置。

Modem:和Unix一 样,Linux将Modem看作是串口,对于真正的modem,通过在/dev的串口设备接口,以及被相同的驱动控制。有一些新的“modem”,在声卡 上稍加改装而成,叫WinModems,OS的软件可以将它们跑起来,就像真的Modem设备,但是目前只在Windows支持,Linux虽有在这方面 有些project,但是没有能对各种的WinModems提供统一支持。

DAQ:数据获取器,这在工厂和科学实验室中房间,通过转换器,将物理的事件转为一个电气值,并进行采样。在UNIX或者其他OS

中标准的借口,Comedi包是主要DAQ Linux设备借口,可以适配很多DAQ板块,Comedi还提供Comedilib,一个统一的API给上层软件,Kcomedilib,内核模块API。

键盘:在传统的嵌入式系统中,键盘被视为笨拙的东西,现在很多面向客户的可上网的嵌入式系统有某种类型的键盘,例如一个蓝牙键盘。键盘输入作为终端的的 input,属于终端I/O驱动。有其他的一些方式来避免使用物理键盘来进行终端输入,例如按键输入(手机方式),书写识别等方式,这些方式,程序获取输 入的字需要temrminal I/O编程。

Mouse在很多终端采用触摸屏的方式。在linux中,指示设备的输入事件在/dev/input。但是程序员应无须在这么低层进行操作,有很多方便的API可以获取指示的输入。

显示:显示有些在kernel中支持,但是大部分给于上层程序,在Linux中最常用的图形接口是X Window System,还有其他的包。X  window System之提供基本的图形窗口环境,没有高级的lib,可以在GNOME和QT工程中看看他们的GUI,很多著名的嵌入式Linux设备提供他们自己 的UI。声音方面,有很多工程提供sound server,在device借口上的软家,著名的有PulseAudio(PA)和JACK。这些高层的音频服务有他们的API或者支持ALSA API标准。打印原来在嵌入式操作系统中不常见,但是现在家庭路由器,办公打印服务器甚至PDA都很难需要和远端的打印机通信,虽然打印机并不是直接连到 这些设备。Linux支持CPUS(通用Unix打印系统)来实现对打印设备的配置、管理等。

存贮

嵌入式操作系统需要至少 一个固态存贮,用于存贮boot进程的最早阶段,Linux嵌入式OS也使用这个存贮,作为后续操作,包括执行代码和获取数据。Linux的术语 中,MTDs(memory technology devices)包括从传动的ROM到NOR/NAND Flash卡的各类存贮,他们之间的差异非常大,在linux kernel中提供一个统一层用于无缝连接低成的MTD芯片和成为用户模块(user module)的高层接口(这个高层接口指的是内核中的高层接口,不是app层的)。

PATA和SATA都是ATA标准的,也就是常说的 IDE。IDE在工作站和服务器中常用,存放OS的bootloader、root 文件系统,还可能包括swap区,但是在很多的嵌入式操作系统中,不一定都具备ATA/IDE能力,如果想在系统中使用IDE硬盘,但在flash中没有 具备ATA能力的监控程序(boot monitor)或者引导加载程序,需要在kernel和引导监控程序一同放置在flash或者ROM中,才能在系统开启的时候取得它,然后设定引导监控 程序,让它在启动时使用该内核以便存取IDE磁盘。现在的CompactFlash、SD不属于MTD,linux可以很好地支持这些。

网络

网络部分介绍了以太网,红外线网络(需要近距离,因此对入侵的防范比较好)。

无线网络802.11,也就是wifi,802.11有A、B、G、N,A使用5GHz的频率,提供54Mbps的带宽,B使用2.4GHz频率,提 供11Mbps的带宽,G提供54Mbps,N提供248Mbps的带宽。Linux支持B、G、N,据说A的功耗大,距离短,穿透力差。GNOME工程 的networkManager提供图形界面。在Linux2.6中,重写了stack,使得更好地支持最新的芯片。

蓝牙设备不需要配置可作恶wipivonet的一部分,设备自动检测其他设备,并公布他们的服务,使得其他piconet的设备可以使用这些服务。Linux的蓝牙堆栈是BlueZ,具有GPL。

上面讲述的都是通用的网络,还有工业级别的网络。在工业应用上,由于电磁等环境特性,在一些场合不能使用通用的网络类型。例如有汽车制造发展的CAN,是最为普片的fieldbus。Linux在2.6.25开始支持CAN。此外还有Modbus.

系统监控

虽然我们在设计和开发时候减少错误的出现,但是硬件和软件的错误总是很难完全避免的,因此需要系统监控进行错误检测和恢复。Linux支持两种系统监 控:watchdog定时器和硬件健康检查(例如电压是否符合要求、温度是否过热等),watchdog timer可以是软件也可以是硬件,通过是否在定期内清空来决定是否reboot系统。硬件健康检查是硬件方式。Linux内核支持很多watchdog timer,可以在kernel尽力配置菜单中的watchdog cards子菜单中查看。我们可以在/dev/watchdog中查看,这个需看门狗监控程序周期重写以避免系统的reboot。Linux通过 lm_sensors工程支持一些硬件的检测设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
This is a book about developing the software and hardware you never think about. We're talking about the nitty-gritty behind the buttons on your microwave, inside your thermostat, inside the keyboard used to type this description, and even running the monitor on which you are reading it now. Such stuff is termed embedded systems, and this book shows how to design and develop embedded systems at a professional level. Because yes, many people quietly make a successful career doing just that. Building embedded systems can be both fun and intimidating. Putting together an embedded system requires skill sets from multiple engineering disciplines, from software and hardware in particular. Building Embedded Systems is a book about helping you do things in the right way from the beginning of your first project: Programmers who know software will learn what they need to know about hardware. Engineers with hardware knowledge likewise will learn about the software side. Whatever your background is, Building Embedded Systems is the perfect book to fill in any knowledge gaps and get you started in a career programming for everyday devices. Author Changyi Gu brings more than fifteen years of experience in working his way up the ladder in the field of embedded systems. He brings knowledge of numerous approaches to embedded systems design, including the System on Programmable Chips (SOPC) approach that is currently growing to dominate the field. His knowledge and experience make Building Embedded Systems an excellent book for anyone wanting to enter the field, or even just to do some embedded programming as a side project. What You Will Learn Program embedded systems at the hardware level Learn current industry practices in firmware development Develop practical knowledge of embedded hardware options Create tight integration between software and hardware Practice a work flow leading to successful outcomes Build from transistor level to the system level Make sound choices between performance and cost Who This Book Is For Building Embedded Systems: Programmable Hardware is for embedded-system engineers and intermediate electronics enthusiasts who are seeking tighter integration between software and hardware. Those who favor the System on a Programmable Chip (SOPC) approach will in particular benefit from this book. Students in both Electrical Engineering and Computer Science can also benefit from this book and the real-life industry practice it provides. Table of Contents Chapter 1: The Whole Picture Chapter 2: Power On and Bootloader Chapter 3: Inside the CPU Chapter 4: RAM, DMA, and Interrupt Chapter 5: Bus Architecture Chapter 6: Firmware Coding in C Chapter 7: Firmware Coding in the C++ and Script Languages Chapter 8: Building and Deployment Chapter 9: Field-Programmable Gate Arrays Chapter 10: System on Programmable Chip (SOPC) Chapter 11: De-Bounce, Power Management, and Display Chapter 12: Fixed Point Math Chapter 13: Popular Ways of Console Communications: Prepare the Tools Chapter 14: Work Flow

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值