DSP

对ARM和嵌入式Linux的认识

2019-07-13 18:49发布

  嵌入式系统开发分为硬件部分和软件部分: 硬件部分: 1、        ARM介绍 嵌入式产品硬件,主要是一块以(ARM、 DSP、 FPGA)为核心的开发板。根据不同的需求,配置不同的外设,因为嵌入式产品是为特定应用而生的,所以利用这些嵌入式芯片可以开发出很多产品;ARM是一款嵌入式芯片,往往说到ARM是指内核是ARM的,一般内核部分会加上cache ram rom等构成cpu,在此基础上其余部分都叫外设,外设和cpu通过总线连接,常见外设有:usb,lcd,keyboard,uart,gpio,iic总线等控制器,类似的还有DSP、FPGA都是内核+外设构成一个硬件板子。简单来讲,嵌入式硬件就是内核+外设。 2、        嵌入式硬件开发 硬件开发,主要流程是1需求分析:确定要做什么系统,系统会涉及到那些模块,相应模块分别对应什么设备;2选型:选择合适的芯片和外设,先看有没有类似的产品,选择比较成熟的产品作为开发基础,加快开发效率;3进入开发阶段。 软件部分: 1、        linux介绍 linux最大特点就是开源,内核代码全部开放,这就可以让我们自己根据需求定制自己的操作系统,操作系统主要功能就是管理片上所有资源,任务调度,为应用程序运行服务的。 2、        软件开发  嵌入式软件开发,包括基于操作系统之上的应用程序开发,和操作系统内核的驱动开发(驱动属于内核的一部分)。嵌入式软件部分编程,就是在pc机上编写代码,最后下载到板子上执行。   嵌入式技能描述: 1、        开发环境搭建:嵌入式开发需要交叉开发环境,因为我们编码工作都在pc上完成,运行在pc上的是基于x86体系的,在arm上运行需要编译成特定代码,运用交叉编译器编译。其中包括1u-boot/vivi(相当于BIOS)的移植,这种bootloader是严重依赖于硬件,所以不同板子有不同配置,一般都根据板子进行配置修改;2内核裁剪,内核是一个很庞大的体系,支持很多服务,而我们需求可能只有几种,为了减小嵌入式产品资源开销,内核都进行裁剪(驱动加入或者删除);3根文件系统制作,应用程序是基于文件系统之上的,有了内核必须要有文件系统才能运行应用程序。 2、        应用程序开发:主要是用C语言或者C++按需求开发代码,最后交叉编译,下载到板子运行。开发环境Qt,vim编辑器;交叉编译器arm-linux-gcc; 3、        Makefile编写:代码编写后,要写一个Makefile来编译源代码,Makefile就是按照规则运行gcc命令,最终生成可执行文件,类似于批处理或者说是批编译。 4、        设备驱动开发:驱动是根据特定硬件的,要根据硬件厂商提供的datasheet进行编写,基本上是编写fileoperation里面的函数(open、close、read、write、ioctrl等),最后将设备驱动加载进内核(通过建立设备节点让操作系统知道这个设备)。 5、        基于板子外设的软件开发:嵌入式ARM最强大的功能是控制能力,类似于早期的单片机,但是比单片机要有强大的网络通信能力,支持操作系统,更多外设; 这种软件开发就是通过编程,根据硬件datasheet,让ARM控制硬件的控制器完成各种硬件的协调工作。(比如板子上一个引脚接上lcd,让这个引脚对应地址内容为1就可以点亮这个lcd 6、        熟悉电子线路基本知识:模电,数电,高频电子,信号处理。 7、        熟悉基于linux的socket网络编程。     注:都是自己理解,可能有不对的地方,望批评指正,谢谢!