ARM接口编程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 嵌入式硬件概述

底层的驱动或内核开发人员通常要跟硬件紧密配合,协同完成工作。硬件电路的设计很大程度上决定了驱动代码的编写。一个熟练的底层开发人员需要同时具备硬件开发知识和软件相关能力。

1.硬件开发知识

(1)清楚硬件的设计和生产流程。

(2)清楚工作中常用硬件器件的工作原理。

(3)有看懂硬件原理图的能力,主要涉及影响到编程的关键连线和引脚的一定要能看懂。

(4)能看懂硬件(主要是能编程控制的集成电路,简称IC)的编程资料,一般是称为DataSheet的PDF文档,了解各个寄存器的设置和常见任务的处理流程。

2.软件相关能力

(1)知道如何用编程语言(主要是C语言和少量的汇编)去控制硬件。

(2)熟悉底层软件与操作系统的接口。

同一款硬件,原始的控制代码是基本一样的,但是各个操作系统对驱动与OS的接口完全不一样。Windows系列的驱动接口远比Linux复杂得多,各个操作系统也提供了不同底层函数接口用于开发,这些都需要熟练掌握。

(3)具有调试底层软件的能力,除了常用的软件调试手段(如单步Debug,查看输出信息……),有时可能需要动用软件和硬件检测设备来调试。

➢ 如网络调试,可能需要抓包软件,基于硬件的流量测试仪。

➢ 基于硬件电路的仪器,如万用电表、示波器和逻辑分析仪。

➢ 基于无线的设备,可能需要无线信号发生器或基站模拟设备。

在底层软件开发领域,还有一些非标准CPU的分支开发领域,由于采用接近于CPU的复杂结构,因此必须用编程语言去开发,但又不是普通的GCC那样的开发环境,而是自己独立的开发环境,嵌入式工程师需要掌握其中一种工具。

(4)常用数据处理,如音频加密、视频影像处理的DSP,都会有自己独立的开发环境,有的是接近汇编级的语法代码,更高级的是类似于C的编程语言。常见的DSP开发环境是TI的CCP。

(5)在网络流量很大的地方,如核心路由器、大型防火墙、网关等,这些设备有时用软件已经无法处理,往往采用基于网络处理器的方案,网络处理器会在硬件直接处理网络包,这些网络处理器也有独立的开发环境用于开发,如Intel的IXP系列。

(6)FPGA、CPLD(VHDL)用类似于Basic或C语言的开发语言去设计硬件,如MaxPlus II。

(7)LabView虚拟仪器。