嵌入式开发包括系统、驱动、应用三部份。系统不在这儿说了,进程调度、内存管理等。
应用层在驱动的基础上实现其各个功能:比如显示需要先有LCD驱动,实现点、线、字符的 *** 作,在这儿实现写点的 *** 作即为最底层的驱动,首先要根据LCD的DATASHEET初始化设置LCD各参数,然后写一个点到LCD上,是最基本的部份,当然要和硬件打交道;还有一些芯片本身包含的控制驱动器,如CAN,时钟、USB同样也需要DATASHEET初始化设置,并实现其功能。
有的厂家已有例子程序,但这不是万能的,需要根据不同系列的MCU芯片进行移植调试,在此芯片上将驱动函数定义好接口、验证、封装,供应用层使用。就是所谓的驱动开发。
如果你从事的只是应用层的开发,那是使用别人封装好的驱动函数来组合发挥应用就行了,也同样是嵌入式行列!
#include <linux/moduleh> 模块头文件
#include <linux/kernelh> 驱动要写入内核,与内核相关的头文件
#include <linux/fsh> 文件系统头文件
#include <linux/inith> 初始化头文件
#include <linux/delayh> 延时头文件
#include <asm/irqh> 与处理器相关的中断
#include <linux/interrupth> *** 作系统中断
#include <asm/uaccessh> 与处理器相关的入口
//#include <asm/arch/regs-gpioh> 与处理器相关的IO口 *** 作
#include <mach/regs-gpioh> 同上
//#include <asm/hardwareh> 与处理器相关的硬件
#include <mach/hardwareh> 同上
#include <linux/deviceh> 设备驱动文件
#include <linux/pollh> 轮询文件
#include <linux/gpioh> *** 作系统相关的IO口文件
#include <stdioh> 标准输入输出
#include <stdlibh> 标准库
#include <unistdh>
#include <sys/ioctlh> IO控制
以下6个是提供的函数中所需的头文件
具体我也不详
#include <sys/typesh>
#include <sys/stath>
#include <fcntlh>
#include <sys/selecth>
#include <sys/timeh>
#include <errnoh>
嵌入式Linux开发从下到上分为:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。
一、嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力。熟练掌握嵌入式硬件知识,熟悉硬件开发模式和设计模式,熟悉ARM32位处理器嵌入式硬件平台开发、并具备产品开发经验。精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般需要有4~8层高速PCB设计经验。
二、嵌入式驱动开发:熟练掌握Linux *** 作系统、系统结构、计算机组成原理、数据结构相关知识。熟悉嵌入式ARM开发,至少掌握Linux字符驱动程序开发。具有单片机、ARM嵌入式处理器的移植开发能力,理解硬件原理图,能独立完成相关硬件驱动调试,具有扎实的硬件知识,能够根据芯片手册编写软件驱动程序。
三、嵌入式系统开发:掌握Linux系统配置,精通处理器体系结构、编程环境、指令集、寻址方式、调试、汇编和混合编程等方面的内容;掌握Linux文件系统制作,熟悉各种文件系统格式(YAFFS2、JAFFS2、RAMDISK等);熟悉嵌入式Linux启动流程,熟悉Linux配置文件的修改;掌握内核裁减、内核移植、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部署Linux系统等整个流程;、熟悉搭建Linux软件开发环境(库文件的交叉编译及环境配置等);
四、嵌入式软件开发:精通Linux *** 作系统的概念和安装方法、Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和Make项目管理工具等知识;精通C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识、数据结构的基础内容,包括链表、队列等;掌握面向对象编程的基本思想,以及C语言的基础内容;精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库;熟悉常用的图形库的编程,如QT、GTK、miniGUI、fltk、nano-x等。
所以如果你要做嵌入式软件开发的话,上面那些知识基本够用了。
嵌入式驱动的话,国内一般搞嵌入式linux驱动的比较多,但是对于小白来说难度还是挺高的。
他涉及到linux驱动的加载模式(kernel模块方式加载)和模块编写语法,这才是基础。
还有 *** 作系统的原理得明白。
各种硬件的工作原理和分类(字符设备、块设备、网络设备),网络设备的驱动最难
然后就是驱动的机制和策略是非常不容易把握的平衡点。
但是对于有嵌入式linux系统从事经验的人来说,学起来倒不是太难。
以上就是关于嵌入式跟驱动是什么关系全部的内容,包括:嵌入式跟驱动是什么关系、嵌入式linux中编写驱动程序的时候用到的头文件问题、嵌入式linux系统开发详解_嵌入式linux系统介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)