基于嵌入式linux的bsp概念与开发(合集五篇)

时间:2019-05-13 04:36:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于嵌入式linux的bsp概念与开发》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于嵌入式linux的bsp概念与开发》。

第一篇:基于嵌入式linux的bsp概念与开发

引言

Linux诞生于1991年,芬兰学生LinuSTorvaldS是Linux操作系统的缔造者,与传统的操作系统不同,Linux操作系统的开发一开始就在FSF(自由软件基金会组织)的GPL(GNU Public License)的版本控制之下,Linux内核的所有源代码都采取了开放源代码的方式。Linux具有相当多的优点。

BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,其主要功能为屏蔽硬件,提供操作系统的引导及硬件驱动。Linux操作系统目前已发展为主流操作系统之一,并且还在不断的壮大和发展。

最新的2.6版内核增加了很多新特性为嵌入式应用提供广泛的支持,使得它不仅可以应用于大型系统,还可以应用于像PDA这类超小型系统中。随着Linux系统在嵌入式领域的广泛应用,对它的研究也在逐渐成为热点并且走向成熟。

在嵌入式系统开发过程中,板级支持包(BSP,BoardSuport Package)的开发已成为非常重要的环节。本文以Linux系统上的BSP技术为研究内容,讨论了BSP的基本概念和设计思想,特别针对Linux系统上BSP的层次结构、各功能模块的实现技术做了详细分析。

通过分析PC机的BIOS技术阐述了嵌入式系统中板级初始化流程和技术重点,并从源代码分析入手详细分析了PC机GURB引导程序设计技术,提出了嵌入式系统上BootLoader的程序结构和设计思想。

嵌入式操作系统对设备驱动程序的管理技术是BSP设计的重要组成部分。本文对比了Linux2.4和Linux2.6的设备驱动程序框架,同时结合大量源代码的研读,对Linux2.6内核的统一设备模型进行了深入的研究,剖析了内核对象机制的主要数据结构及驱动程序设计框架,理解了该模型对设备类的抽象机制,并在实际的项目实践中,结合所作的研究工作,圆满完成了基于ARM+Linux开发平台的BSP开发任务。

最后对本文研究工作进行了总结,并对下一步工作进行了展望。

第二篇:嵌入式开发工程师

任职要求:

1、大学本科及以上学历,2年以上工作经验,计算机电子通讯类专业毕业;

2、能够熟练使用POWER PCB或PROTEL或ORCAD等电路设计软件进行PCB设计;

3、熟悉电子元器件,能独立设计数字及模拟电路,拥有单片机开发工作经验,懂得RF433无线及红外遥控等相关知识;

4、熟练使用C语言,有嵌入式开发工作开发及智能家居防盗报警产品经验者优先。

岗位职责:

1、新产品项目设计开发工作;

2、为相关部门及项目提供技术支持;

3、产品售后返修分析,品质不断提升性能改进;

4、组织对新研发产品的制样、验证、试产、量产等工作的确认与审核。

第三篇:嵌入式简答概念总结

1.什么是嵌入式,有何特点?

答:嵌入式就是嵌入到对象体中的专用计算机系统。

嵌入式系统的特点:1.嵌入性2.专用性3.计算机系统 2.简述ARM处理器两种状态的应用特点。答:ARM处理器有ARM和Thumb两种状态。

ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态; Thumb状态:16位,处理器执行半字方式的Thumb指令。

3.ARM和Thumb两种状态之间的切换不影响处理器的工作模式和寄存器的内容。ARM处理器在处理异常时,不过处理器处于什么状态,则都将切换到ARM状态 4.ARM7TDM支持哪几种指令集?各有什么特点?

答 :ARM指令:指令集支持ARM核所有的特性,具有高效、快速的特点。

集效率高,但是代码密度低,所有的ARM指令都是可以有条件执行的;

Thumb指令:集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集,指令集具有灵活、小巧的特点。

5.而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,改变TI可以改变状态,相互之间的状态切换开销几乎为零。6.结合CPSR的结构,说明各标志位的含义。

答:N:标志位,负或小于。Z:标志位,零。C:进位或借位或扩展。V:溢出。(V=1,溢出)I:控制位,IRQ禁止。(0允许,1禁止)F:控制位,FIQ禁止。(0允许,1禁止)T:状态位,T=1——Thumb,T=0——ARM。M[4:0]:模式位,决定处理器的操作模式。7.说明MOV指令与LDR加载指令的区别用途。

答:mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,是由8bit连续有效位通过偶数次移位能得到的数。LDR除了普通的读数之外,也有给寄存器赋立即数的功能。它没有立即数范围的限制。因为这是一条伪指令。

什么是ARM7TDMI中的异常?简述IRQ,FIQ两种异常的响应过程。答:异常:只要正常的程序流被暂时中止,处理器就进入异常模式。

IRQ异常发生后处理器响应过程如下

1、把中断时PC的值拷贝给LR(LR=PC)

2、把程序状态寄存器CPSR拷贝给SPSR_irq

3、强制进入IRQ模式

4、强制进入ARM状态

5、跳转到PC=0x00000018处执行

6、禁止IRQ中断。

FIQ异常发生后处理器响应过程如下

1、把中断时PC的值拷贝给LR(LR=PC)

2、把程序状态寄存器CPSR拷贝给SPSR_fiq

3、强制进入FIQ模式

4、强制进入ARM状态

5、跳转到PC=0x00000018处执行

6、禁止IRQ中断。

7、禁止FIQ中断。5.IRQ 和 FIQ 之间的区别

答:IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。22.FIQ、IRQ有什么不同?向量IRQ和非向量IRQ有什么不同? FIQ的优先级比IRQ高,对外部事件响应比IRQ快。

A:向量IRQ具有中等优先级,对外部事件响应比较及时;非向量IRQ优先级最低,中断延迟时间比较长。B:向量IRQ能为每个向量IRQ中断源设置服务程序地址;而所有的非向量IRQ中断都共用一个相同的服务程序入口地址。6.ARM处理器对异常中断的响应过程

答:ARM处理器对异常中断的响应过程如下所述: 保存处理器当前状态、中断屏蔽位以及各条件标志位;设置当前程序状态寄存器CPSR中的相应位; 将寄存器lr_mode设置成返回地址;将程序计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。

8.ARM7的内部寄存器R13(SP),R14(LR),R15(PC)的主要功能和作用。

答:SP:堆栈指针寄存器,在系统中用处理器做堆栈指针。LR:链接寄存器,用于保存子程序的返回地址。PC:程序计数器,它是一个地址寄存器,总是指向下一条待取指的指令。ARM有16个32位的寄存器(r0到r15)。ARM的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。

9.ARM7TDM处理器能接受哪几种中断输入,有什么区别?

答:有两种类型:边沿触发和电平触发。边沿触发分为上升沿触发和下降沿触发;电平触发分为高电平触发和低电平触发。

二、ARM处理器的7种模式:

1、用户模式

2、系统模式

3、快中断模式(FI R)

4、一般中断模式(IRQ)

5、管理模式

6、中止(abort)

7、未定义(undefine)

用户模式外,其它6种模式称为特权模式。剩下的六种模式中除去系统模式外,统称为异常模式。

三、ARM指令中有37个寄存器,有31个通用寄存器和6个状态寄存器。

原因:系统模式和用户模式共享相同的寄存器。用户、系统模式没有“保存的程序状态寄存器(SPSR)”,而其他5种模式分别有一个对应的“保存的状态寄存器(SPSR)”,即共五个SPSR,七个模式共用一个“当时程序状态寄存器(CPSR)”,即共六个状态寄存器,还有31个通用寄存器。在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。各种模式下具体能够访问哪些寄存器完全取决于当前的处理器模式和处理器状态。ARM中一些常见英文缩写解释

MSB:最高有效位;LSB:最低有效位;VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; SPI:全双工串行接口; CAN:控制器局域网,一种串行通讯协议; PWM:脉宽调制器; ETM:嵌入式跟踪宏; CPSR:当前程序状态寄存器; SPSR:程序保护状态寄存器; RTOS:实时操作系统; AHB:先进的高性能总线; PLL:锁相环; 8.什么是ATPCS 答:为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。这些规则包括寄存器使用规则,数据栈的使用规则,参数的传递规则等。11.ARM体系结构所支持的异常类型 答:复位①:未定义指令⑥:软件中断⑥:指令预取中止⑤:数据中止②:IRQ④;FIQ③ 12.ARM体系结构的存储器格式

答:ARM体系结构的存储器格式有如下两种:

大端格式:字数据的高字节存储在低地址中,字数据的低字节存放在高地址中;

小端格式:与大端存储格式相反,高地址存放数据的高字节,低地址存放数据的低字节。14.存储器重新映射(Remap)的原因:

使Flash存储器中的FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题; 用来处理代码空间中段边界仲裁的SRAM和Boot Block向量的使用大大减少; 为超过单字转移指令范围的跳转提供空间来保存常量。

ARM中的重映射是指在程序执行过程中通过写某个功能寄存器位操作达到重新分配其存储器地址空间的映射。一个典型的应用就是应用程序存储在Flash/ROM中,初始这些存储器地址是从0开始的,但这些存储器的读时间比SRAM/DRAM长,造成其内部执行频率不高,故一般在前面一段程序将代码搬移到SRAM/DRAM中去,然后重新映射存储器空间,将相应SRAM/DRAM映射到地址0,重新执行程序可达到高速运行的目的。19.为什么要进行存储器重映射?

为存储器分配地址的过程称为存储器映射;存储器重映射并不是对映射单元的内容进行了复制,而只是将多个地址指向了同一个存储单元,这种效果是通过芯片内部的“存储器管理部件”实现的;进行存储器重映射,可以增加系统的灵活性。

15.存储异常向量表中程序跳转使用LDR指令,而不使用B指令的原因: LDR指令可以全地址范围跳转,而B指令只能在前后32MB范围内跳转; 芯片具有Remap功能。当向量表位于内部RAM或外部存储器中,用B指令不能跳转到正确的位置。16.锁相环(PLL)注意要点:

PLL在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复PLL的设定; PLL只能通过软件使能; PLL在激活后必须等待其锁定,然后才能连接; PLL如果设置不当将会导致芯片的错误操作。

18.VIC的基本操作如下: 答:设置IRQ/FIQ中断,若是IRQ中断则可以设置为向量中断并分配中断优先级,否则为非向量IRQ。然后可以设置中断允许,以及向量中断对应地址或非向量中断默认地址。当有中断后,若是IRQ中断,则可以读取向量地址寄存器,然后跳转到相应的代码。当要退出中断时,对向量地址寄存器写0,通知VIC中断结束。当发生中断时,处理器将会切换处理器模式,同时相关的寄存器也将会映射。20.UART0的基本操作方法 设置I/O连接到UART0;设置串口波特率(U0DLM、U0DLL);设置串口工作模式(U0LCR、U0FCR); 发送或接收数据(U0THR、U0RBR);检查串口状态字或等待串口中断(U0LSR)。22.PWM基本操作方法:

连接PWM功能管脚输出,即设置PINSEL0、PINSEL1; 设置PWM定时器的时钟分频值(PWMPR),得到所要的定时器时钟; 设置比较匹配控制(PWMMCR),并设置相应比较值(PWMMRx);

设置PWM输出方式并允许PWM输出(PWMPCR)及锁存使能控制(PWMLER); 设置PWMTCR,启动定时器,使能PWM;

运行过程中要更改比较值时,更改之后要设置锁存使能。

使用双边沿PWM输出时,建议使用PWM2、PWM4、PWM6;使用单边PWM输出时,在PWM周期开始时为高电平,匹配后为低电平,使用PWMMR0作为PWM周期控制,PWMMRx作为占空比控制。

一、简答题 2.嵌入式处理器可以分为以下几大类:嵌入式微处理器、嵌入式微控制器、嵌入式DS P处理器、嵌入式片上系统(SOC)。

5.常见的4种嵌入式操作系统?

嵌入式Linux、wince、VxWorks、uC/OS-II 11.ARM7TDMI处理器采用几级流水线处理,使用何种存储器编地方式? ARM7TDMI的流水线分3级,分别为:取指、译码、执行。统一编址方式。14.ARM7TDMI有几种寻址方式?

寄存器寻址(MOV R1,R2)立即寻址(MOV R0,#0xFF000)寄存器移位寻址(MOV R0,R2,LSL #3)寄存器间接寻址(LDR R1,[R2])基址寻址(LDR R2,[R3,#0x0C])多寄存器寻址(LDMIA R1!,{R2-R7,R12})堆栈寻址(STMFD SP!,{R1-R7,LR})相对寻址(BEQ LOOP)26.嵌入式处理器的最小系统包含那些基本电路?

(1)供电系统(2)时钟系统(3)复位及其配置系统(4)存储器系统(可选)(5)调试测试接口。()7.试说明LPC2000系列芯片内部向量中断控制器(VIC)的功能特点?

最多32个中断请求输入;16个向量IRQ中断;16个优先级,可动态分配优先级;

可产生软件中断;当I=1时,禁止IRQ中断,反之使能之;当F=1时,禁止FIQ中断,反之使能之。8.试说明LPC2000系列芯片的向量中断和非向量中断的功能特点?

向量IRQ:具有中等优先级和16个slot,最多可分配16个向量IRQ中断。向量IRQ中断对外部事件响应比较及时,常用于处理重要事件。

非向量IRQ:优先级最低,中断延迟时间比较长,常用于处理一般事件中断。

9.试说明LPC2000系列芯片内部定时器的功能特点?(1)各含有32位可编程预分频器;(2)具有 4路捕获通道;(3)具有4个匹配寄存器;(4)具有4个匹配输出通道。

10.简要描述LPC2000系列芯片内部定时器的预分频功能,匹配功能,捕获功能? 预分频功能:对定时器时钟源进行分频;

匹配功能:通过匹配寄存器来设置定时器的匹配值,发生匹配时间时,匹配控制寄存器用来设置定时器的动作(复位或中断),外部匹配寄存器用来设置匹配输出引脚的动作。

捕获功能:通过捕获控制寄存器来设置捕获信号,发生捕获事件时,定时器的计数值保存到捕获寄存器中。

6.看图填写下表的寄存器功能说明内容。

PINSELx 引脚选择寄存器IOxDIRIO端口方向控制寄存器 IOxSET设置IO端口为高电平IOxCLR设置IO端口为低电平IOxPINIO端口当前电平状态寄存器。

3、ARM指令的条件码有多少个?默认条件是什么? 16个,默认条件是无条件执行AL 6.举例说明B和BL指令的区别?

B指令跳转到指定个地址去执行程序;BL指令先讲下一条指令的地址复制到R14链接寄存器中,然后跳转到指定地址,运行程序。

第四篇:嵌入式Linux开发流程

嵌入式Linux开发流程

嵌入式 linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都经过以下过程:

建立开发环境。操作系统一般 REDHAT-LINUX,版本 7 到9 都可以,选择定制安装或全部安装,通过网络下载相应的 GCC 交叉编译器进行安装(比如 arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。

配置开发主机。配置 MINICOM,一般参数为115200,数据位 8位,停止位 1,无奇偶校验,软硬件控制流设为无。在 WINDOWS 下的超级终端的配置也是这样。MINICOM软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,主要是配置 NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。

建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,如 U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的 ARM7、ARM9 系列芯片,这样就需要编写烧写开发板上 flash 的烧写程序,网络上有免费下载的 WINDOWS 下通过JTAG并口简易仿真器烧写 ARM 外围 flash 芯片的程序。也有 LINUX 下公开源代码的J-FLASH 程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果你购买了厂商提供的仿真器,当然比较容易烧写flash了,但是其中的核心技术是无法了解的。这对于需要迅速开发应用的人来说可以极大地提高开发速度。

下载别人已经移植好的 LINUX 操作系统,如 UCLINUX、ARM-LINUX、PPC-LINUX等,如果有专门针对你所使用的CPU移植好的 LINUX 操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带 MMU的 CPU可以使用模块方式调试驱动,对于 UCLINUX 这样的系统好像只能编译进内核进行调试。

建立根文件系统,从下载使用 BUSYBOX 软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于 /etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile 等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用 mkcramfs、genromfs 等工具产生烧写映象文件。

建立应用程序的 flash 磁盘分区,一般使用JFFS2 或 YAFFS 文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性 flash(NOR 型)512K-32M,有的系统使用非线性 flash(NAND型)8-512M,有的两个同时使用,需要根据应用规划 flash的分区方案。

开发应用程序,可以下载到根文件系统中,也可以放入 YAFFS、JFFS2 文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于UCOS-II 的方式。

烧写内核、根文件系统、应用程序。

发布产品。

第五篇:嵌入式开发工程师-简历

【个人信息】姓名:

身高:

性别:

学历:

籍贯:

专业:电子信息工程

联系电话:

E-mail:

【求职意向】 嵌入式开发工程师或相关工作,对LINUX驱动开发极感兴趣

【工作经验】 2009.3----2010.3中山长宝GPS卫星导航有限公司

 2009.1----2009.3中山世博游艺有限公司

【教育背景】 2010.3——2010.7广州粤嵌通信科技股份有限公司(简称粤嵌教育)ARM+Linux培训

 2005.9——2009.6广州大学松田学院电子信息工程工学学士

【项目经验】

 GPS车载终端,GPS个人定位器(从事一年相关工作)基于ARM9的嵌入式智能家居系统(QT图像界面,应用程序,驱动等)基于ARM9的嵌入式视频点播系统(包括本地播放,网络播放)ARM9(S3C2440)的嵌入式系统移植(Uboot,Kernel,Rootfs,Driver)LINUX简单聊天工具

【相关技能】

 英语水平: 四 级 掌握C、C++编程,有良好的编程风格 了解Linux内核机制,熟悉Linux驱动开发 熟练使用单片机(如STC系列,SST系列,INTEL系列)熟悉ARM9的硬件结构 熟悉Linux操作系统、交叉编译环境,掌握常用脚本编写 熟悉BootLoader制作,内核的剪裁,驱动及根文件系统的移植 熟悉QT编程 , TCP/IP协议,掌握Linux应用编程 了解SQL基础知识 熟悉GSM.GPS的使用

【语言水平】 粤语/国语流利;英语已通过CET-4,可阅读专业相关资料

项目简介

 GPS车载终端,GPS个人定位器

软件环境: KEIL 51

硬件环境: BENQ M23,M33 通信模块,51单片机,和GPS模块

项目描述: 通过MCU把GPS采集的数据处理后,通过串过发送AT指令使GSM

拨通GPRS网络,再把采集的GPS数据,按照定义好的协议上存到监

控平台

 ARM9(S3C2440)LED流水灯、LCD文字及图片显示设计

软件环境: ADS1.2

硬件环境:ARM9(2440)开发板

项目描述: 将设计的程序移植到ARM9上,并成功驱动LED、LCD,完成LED

流水灯、LCD文字及图片显示项目

 ARM9(S3C2440)嵌入式系统移植

软件环境: Linux2.6.24,U-boot,Qtopia

硬件环境: ARM9(2440)开发板

项目描述: 在2440上成功完成了U-boot移植,Linux内核的剪裁与移植,根文

件系统的制作,并完成了LED、LCD等驱动的移植。

 基于ARM9的VOD点播系统

软件环境: Linux2.6.12,U-boot,Qtopia

硬件环境: GEC2440开发板

项目描述: 培训实战项目,完成了S3C2440嵌入式系统的整体移植,它基于

QT图形界面,移植了MPlayer播放器,实现了VOD(本地和网络)

多媒体点播, ARM9(S3C2440)嵌入式智能家居系统

软件环境: Linux2.6.12,U-boot,Qtopia

硬件环境: ARM9(2440)开发板

项目描述: 本系统主要实现温度检测,红外检测,蜂鸣器报警,步进机转动(模拟控

制家电),GSM短信通知等驱动,QT图形界面显示和应用编程.把温

度传感器和红外线采集的数据,传给应用程序,应用程序把数据显示

在QT界面,当应用程序检测到温度过高或有人闯进时,应用程序就调

用蜂鸣器报警驱动,并发短信通知主人,主人也可以下发短信控制步

进机转动

本人做的LINUX驱动简介

 ds18b20温度传感器Linux驱动

该驱动为字符型驱动程序,能从ds18b20芯片读取温度信息.ds18b20芯片采用了独特的1-wire bus技术,只用一根数据线即可实现与cpu芯片的连接(利用了cpu gpio本身的弱上拉电阻)。本驱动程序的重点是实现字符驱动的读函数接口。由于硬件连线简单,对ds18b20的软件操作较为繁琐,每一个操作都要要经过以下三个步骤:(1)芯片初始化(2)芯片选择(因为一线总线上可挂载多个ds18b20, 所以必须通过一定的机制指明操作的对象)(3)发送功能命令(例如,温度查询命令)和读取数据。在初始化的步骤中,cpu拉低数据线,然后释放数

据线,经过一定时间读取数据线上的值,如为低电平,则表明数据上挂载了ds18b20,否则初始化失败。在芯片选择的步骤中,由于只挂载了一片ds18b20, 所以只需发送skip rom命令即可。在发送功能命令的步骤中,首先发送温度查询命令(convert t), 然后在数据线上读取两个字节的温度数据,温度数据按由低位低字节向高位高字节的顺序发送,余下的为温度无关数据,可忽略。温度数据的0-10位为数值位(最小单位为0.0625), 11-15位为扩展符号位。该驱动使用linux的udelay函数来实现时序操作所要求的延时操作。

 使用内存模拟块设备并挂载ext2文件系统(简单块设备驱动)

本驱动程序使用kmalloc分配出一块内存区域来模拟块设备,并在该块设备上挂载ext2文件系统。本驱动程序同时实现了字符设备和块设备驱动接口。块设备的内容通过字符驱动的写函数由用户空间写入。块设备接口实现的重点是其初始化函数和request函数的实现。在初始化函数中完成以下操作:注册块设备主设备号(register_blkdev),注册request函数的实现并获取与之关联的request_queue,设置request_queue的一些参数(例如,blk_queue_hardsect_size和blk_queue_max_sectors),分配(alloc_disk)和设置块设备结构体gendisk,注册gendisk。在request函数的实现中完成以下操作:获取request_queue中的第一个request结构体(elv_next_request), 遍历该request结构体中每一个bio(rq_for_each_bio)中的每一个segment(bio_for_each_segment),在循环体中将每个segment的数据发送到块设备控制器(或从块设备控制器中读入segment中)。遍历完成后,从request_queue中移除该request结构体(end_that_request_first),重复以上操作,直到request_queue为空,最后调用end_that_request_last做一些收尾工作。可以看到,块设备的驱动格式较为固定,不像字符驱动那样灵活。文件系统通过以下方法制作:首先建立一个2M大小的“空白”文件(dd),然后格式化该文件(mkfs.ext2),最后通过mount命令进行挂载,并创建文件系统内容。制作好的文件系统通过字符驱动的写接口写入驱动内存(cat), 最后挂载块设备。

 蜂鸣器驱动

本驱动程序属于字符型驱动,由于该蜂鸣器物理硬件连接的是定时器的TOUT1管脚,只要实现定时器1的PWM功能即可,实现PWM功能,我们需要设置定时器的频率,也就是蜂鸣器的频率,并设置占空比.蜂鸣器启动的代码在IOCTL系统调用里实现,并把蜂鸣器的响应时间,以参数形式传给IOCTL这自己定义的函数.驱动蜂鸣器。

 红外感应驱动

本驱动程序属于字符型驱动,红外感应的原理,简单的描述就是当有人靠近时,该模块相应的管脚会产生高电平,没人靠近时,该管脚为低电平.此工作原理,相当于一个外部中断,所以只要住一个带有外部中断的字符驱动即可

 GSM驱动(即串口驱动)

本驱动程序属于字符型驱动,首先用ioremap申请串口相关控制寄存器,再编写串口接受和发送的中断程序,当寄存器UTRSTAT的第0位为真,表示接受到收据,当寄存器UTRSTART第2位为1时,表示可以发送寄存器为空,可以发送数据

【求职感言】 我对嵌入式计算机行业抱有热情,有强烈的求知欲和对新技术和新方法的热

忱,希望能得到一个良好的平台和起点,得到锻炼和提升的机会

【业余爱好】

● 看书,篮球,足球,魔兽争霸

【自我评价】●具备吃苦、耐劳的能力,敢于面对错误和承担责任。

下载基于嵌入式linux的bsp概念与开发(合集五篇)word格式文档
下载基于嵌入式linux的bsp概念与开发(合集五篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    关于嵌入式开发的一点建议

    CSDN:很多人都讲嵌入式开发很难,能不能就你学习和工作经验与大家分享下嵌入式开发如何开始和深入?作为嵌入式研发工程师,你认为其应具备哪些知识结构和实战能力? 卜茂霞:说到嵌入......

    Android 嵌入式开发心得体会

    Android 嵌入式开发心得体会 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发......

    嵌入式开发学习心得(精选5篇)

    个人学习嵌入式心得体会 就我个人而言,从最开始对嵌入式一窍不通到现在越学越感兴趣,当然相应在嵌入式方面的提高也是很明显的。学习潜入式越来越成为我学习生活的一部分,现在......

    基于ARMLINUX的嵌入式GUI的设计与开发.

    基于ARM LINUX的嵌入式GUI的设计与开发 摘 要:GUI设计在嵌入式系统设计中占据着举足轻重的地位,MiniGUI为一种适合于嵌入式系统的、功能强大的GUI,本文介绍了基于ARM和Linux的M......

    嵌入式开发学习心得(共5篇)

    嵌入式开发学习心得 嵌入式开发学习心得 就我个人而言,从最开始对嵌入式一窍不通到现在越学越感兴趣,当然相应在嵌入式方面的提高也是很明显的。学习嵌入式越来越成为我学习中......

    嵌入式开发—C语言面试题

    嵌入式开发—C语言面试题 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件......

    软件开发工程师(嵌入式开发)岗位职责

    1.设计芯片驱动程序,编写软件概要和详细设计说明书。2.编写驱动代码,并进行单元测试和系统测试。3.配合硬件工程师调试硬件电路。4.单板软件需求分析、设计、编码与测试。......

    广告概念的开发

    学习导航 通过学习本课程,你将能够: ● 了解卖点与概念的区别和联系; ● 掌握广告概念的四个组成要素; ● 明白广告概念的三段论形式; ● 知道广告概念的开发流程。 广告概念的开......