基于S3C2440的嵌入式LINUX操作系统内核研究.doc

上传人:laozhun 文档编号:2388139 上传时间:2023-02-17 格式:DOC 页数:35 大小:2.86MB
返回 下载 相关 举报
基于S3C2440的嵌入式LINUX操作系统内核研究.doc_第1页
第1页 / 共35页
基于S3C2440的嵌入式LINUX操作系统内核研究.doc_第2页
第2页 / 共35页
基于S3C2440的嵌入式LINUX操作系统内核研究.doc_第3页
第3页 / 共35页
基于S3C2440的嵌入式LINUX操作系统内核研究.doc_第4页
第4页 / 共35页
基于S3C2440的嵌入式LINUX操作系统内核研究.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《基于S3C2440的嵌入式LINUX操作系统内核研究.doc》由会员分享,可在线阅读,更多相关《基于S3C2440的嵌入式LINUX操作系统内核研究.doc(35页珍藏版)》请在三一办公上搜索。

1、 学校代码: 11059 学 号:0805070285Hefei University 毕业论文(设计)BACHELOR DISSERTATION论文题目: 基于S3C2440的嵌入式 LINUX操作系统内核研究 学位类别: 工学学士 学科专业: 自动化 作者姓名: 郭辉 导师姓名: 干开峰 完成时间: 2012年5月12号 基于S3C2440的嵌入式LINUX操作系统内核研究中文摘要嵌入式Linux是以Linux为基础的嵌入式操作系统,可应用于多种硬件平台,是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件等特性的一种通用操作系统。它能够适应对工业控制领域高实时性的要

2、求,被广泛应用在移动电话、个人数字助理、媒体播放器、消费性电子产品以及航空航天等领域中。本课题是以GT2440开发板为平台来研究Linux操作系统的内核,GT2440采用高主频高性能的SamsungS3C2440A处理器作为主控芯片,接口资源丰富,具有通用性。主要完成Nand Flash驱动、LCD驱动、CS8900A网卡驱动、UDA1341声卡驱动、触摸屏驱动、SD卡驱动、RTC驱动和USB驱动等移植实现。最后把移植的内核文件下载到GT2440开发板进行测试,测试结果验证了内核移植的正确性。关键词:嵌入式系统;S3C2440;Linux内核移植;驱动移植 Study of Embedded

3、Linux Operating System Kernel Based on S3C2440 AbstractEmbedded Linux is a embedded operating system based on Linux, which can be applied to a variety of hardware platforms, with full memory access control, supporting for a lot of hardware features. It can adapt to real-time requirements on the fiel

4、d of industrial control, it is widely used in mobile phones, personal digital assistants, media players, consumer electronics, and aerospace and other fields.The kernel of the Linux operating system is studied based on the GT2440 in the topic, the GT2440 uses high frequency and high-performance Sams

5、ungS3C2440A processor as the master chip, whose interface is rich in resources and versatile. Primarily the transplanting of NandFlash drive,LCD driver,CS8900A LAN Driver,UDA1341 sound card driver, touch screen driver, SD card driver, RTC driver and USB driver are finished. Finally, the kernel file

6、transplanted is downloaded to the GT2440 development board for testing, and the test results verify the correctness of the kernel transplantation.KEY WORD: Embedded system;S3C2440;Linux kernel porting;Drive transplant目录第一章 前言11.1 嵌入式系统简介11.2 嵌入式操作系统概述21.3 章节安排2第二章 开发环境搭建32.1 硬件平台32.2 交叉开发环境62.2.1 交叉

7、开发环境简介62.2.2 交叉编译环境的建立6第三章 嵌入式Linux内核移植实现83.1 嵌入式Linux内核概述83.2 嵌入式Linux内核移植实现103.2.1 移植准备工作103.2.2 CS8900A网卡驱动移植113.2.3 UDA1341声卡驱动移植153.2.4 触摸屏驱动移植163.2.5 Nand Flash驱动移植183.2.6 yaffs2文件系统的支持203.2.7 LCD驱动的移植213.2.8 RTC驱动移植223.2.9 USB驱动移植22第四章 系统的功能测试244.1 测试准备244.2 CS8900A网卡测试244.3 UDA1341测试244.4 触摸

8、屏测试254.5 LCD测试254.6 RTC实时时钟测试264.7 USB驱动测试26第五章 总结28参考文献29致 谢30第一章 前言1.1 嵌入式系统简介根据IEEE的定义,嵌入式系统是控制、监视或者辅助装置、机器和设备运行的装置。从中可看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统是与应用紧密结合的,具有很强专用性,必须结合实际系统需求进行合理的裁减利用。国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统1。嵌入式系统有以下一些特点:1.系统内核小。由于嵌入式系统一

9、般是应用于小型电子装置的,系统资源相对有限,所以内核较传统的操作系统要小得多。比如Enea公司的OSE分布式系统,内核只有5K。2.专用性强。嵌入式系统的个性化很强,其中的软件4种嵌入式操作系统的调度机制和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的升级是完全两个概念。3.系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。4

10、.高实时性的系统软件是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。5.嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。6.嵌入式系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设

11、备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行2-3。1.2 嵌入式操作系统概述嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。常见的嵌入式操作系统有uC/OS II、RT-thread、uCLinux、FreeRTOS、

12、RTX、Arm-Linux、VxWorks、RTEMS、pSOS、Nucleus、PalmOS、Windows CE、Windows XP Embedded、Windows Vista Embedded、嵌入式Linux等4。嵌入式Linux操作系统是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字节或几十亿字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux操作系统具有以下特点:1.内核完全开放;2.强大的网络支持功能;3.具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍;4.具有广泛

13、的硬件支持特性;5.遵循通用国际标准,便于程序的移植。本课题选择了嵌入式Linux操作系统作为研究对象,移植内核并下载运行。1.3 章节安排第一章,前言,简要介绍嵌入式系统以及嵌入式操作系统的概念;第二章,开发环境搭建,介绍内核移植的硬件平台以及交叉编译环境的建立;第三章,内核移植实现,简要介绍一下嵌入式linux内核,并详细介绍内核移植步骤;第四章,系统功能的测试,下载测试软件到开发板,观察是否能实现所需功能,第五章,总结,对毕业设计进行一个总结。第二章 开发环境搭建2.1 硬件平台GT2440是一款具有极高性价比的嵌入式开发系统,采用高主频高性能的SamsungS3C2440A处理器作为主

14、控芯片,专业的电路设计,优秀的LAYOUT,采用高品质的PCB板材和元器件,使其具备优越的稳定性;GT2440开发板总体结构如图1所示。图1 GT2440开发板总体结构图GT2440开发板硬件资源特性如下: CPU处理器-Samsung S3C2440A,主频400MHz,最高533Mhz SDRAM内存- 板载64M SDRAM- 32bit数据总线- SDRAM时钟频率高达100MHz FLASH存储- 板载256M Nand Flash,掉电非易失- 板载2M Nor Flash,掉电非易失,已经安装BIOS LCD显示- 板上集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏- 支持

15、黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024x768象素; 接口和资源- 1个10M以太网RJ-45接口(采用CS8900网络芯片)- 3个串行口- 1个USB Host- 1个USB Slave B型接口- 1个SD卡存储接口- 1路立体声音频输出接口,一路麦克风接口;- 1个2.0mm间距20针标准JTAG接口- 4 USER Leds- 4 USER buttons- 1个PWM控制蜂鸣器- 1个可调电阻,用于AD模数转换测试- 1个I2C总线AT24C08芯片,用于I2C总线测试- 1个20pin摄像头接口- 板载

16、实时时钟电池- 电源接口(12V),带电源开关和指示灯 系统时钟源- 12M无源晶振 实时时钟- 内部实时时钟(带后备锂电池) 扩展接口- 1个34 pin 2.0mmGPIO接口- 1个44 pin 2.0mm系统总线接口地址空间分配和片选信号定义S3C2440支持两种启动模式:一种是从Nand Flash启动;一种是从Nor Flash启动。在此两种启动模式下,各个片选的存储空间分配是不同的,如图2所示。图2 硬件资源分配上图中,左边是nGCS0片选的Nor Flash启动模式下的存储分配图;右边是Nand Flash启动模式下的存储分配图。在进行器件地址说明之前,有一点需要注意,nGCS

17、0片选的空间在不同的启动模式下,映射的器件是不一样的。由上图可以知道:在NANDFlash启动模式下,内部的4K Bytes BootSram被映射到nGCS0片选的空间;在Nor Flash启动模式下(非Nand Flash启动模式),与nGCS0相连的外部存储器Nor Flash就被映射到nGCS0片选的空间。SDRAM地址空间:0x300000000x340000005。2.2 交叉开发环境2.2.1 交叉开发环境简介嵌入式系统是专用计算机系统,由于其处理能力和存储能力较弱及特殊的处理器结构,使嵌入式系统中不能安装开发软件。所以,在进行嵌入式开发时,往往采用交叉编译的方式。所谓交叉编译是

18、指在宿主机(host)中编辑和编译程序,并在目标机(target)中运行由主机编译得到的可执行代码6。2.2.2 交叉编译环境的建立1.在Windows中安装虚拟机,虚拟机版本为Vmware Workstation 8.0.2。2.在Vmware Workstation虚拟机中安装Linux操作系统,版本为Red had linux 9.0。3.在Linux操作系统中安装安装交叉编译器arm-linux-gcc。下载arm-linux-gcc-4.3.3.tgz,进行解压操作:#tar xzvf arm-linux-gcc-4.3.3.tgz / 修改环境变量:在etc/profile中添加e

19、xport PATH=/usr/local/arm/4.3.3/bin:$PATH。然后输入:arm-linux-gcc v出现如图3所示的信息,说明交叉编译环境搭建成功。图3 交叉编译器版本显示3.在Windows中安装一些工具软件,如文本编辑器Notepad+,串口通信secureCRT,烧录工具DNW等,便于开发。第三章 嵌入式Linux内核移植实现3.1 嵌入式Linux内核概述Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客Linus Torvalds为尝试在英特尔x86架构上提供自由免费的类Unix

20、操作系统而开发的。该计划开始于1991年,在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助7。内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统。嵌入式Linux内核的体系结构如下:1.进程调度:负责控制进程对CPU的使用。CPU是计算机系统中最核心的资源,调度程序负责在可运行进程中公平地选择,使其中之一成为运行进程,从而充分利用CPU的资源。同时,它也负责保证内核及时对硬件进行操作。2.内存管理:标准Linux的内存管理支持虚拟内存,进程的

21、代码、数据和堆栈的总量可以超过实际内存的大小。而Linux大致可以根据平台有无存储管理单元分为两个类别:一类是和标准Linux一样运行在有硬件存储管理器的处理器上,另外一类通常针对无硬件存储管理器的CPU进行裁剪和移植。3.虚拟文件系统:隐藏了不同硬件的具体细节,为所有设备提供统一的接口。虚拟文件系统可再分为逻辑文件系统和设备驱动程序两部分。逻辑文件系统指Linux支持的文件系统,如etx2、jffs和nfs等。设备驱动程序是具体操作硬件控制器的代码。4.网络接口:负责支持标准的网络通信协议和各种网络硬件设备。其中网络通信协议部分负责实现各种标准的链路层、网络层和传输层协议;而设备驱动程序负责

22、对网络硬件进行具体操作。5.进程间通信:支持进程间各种通信机制。其通信手段主要有:信号、文件锁、管道、等待队列、信号量、消息队列、共享内存和套接字。Linux内核系统模块结构及相互依赖关系如图4所示。虚拟文件系统文件系统网络接口内存管理进程调度进程间通信图4 Linux内核系统模块结构及相互依赖关系由上图可以看出,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可继续运行。例如,当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可能在启动软盘旋转期间将该进程置为挂起等待状态,

23、而在软盘进入到正常转速后再使得该进程能继续运行。另外3个模块也是由于类似的原因而与进程调度模块存在依赖关系。其他几个模块的依赖关系有些不太明显,同样也很重要。进程调度子系统需要使用内存管理来调整特定进程所使用的物理内存空间。进程通信子系统则需要依靠内存管理器来支持共享内存通信机制。这种通信机制允许两个进程访问内存的同一区域以进行进程间信息的交换。虚拟文件系统也会使用网络接口来支持网络文件系统(NFS),同样也能使用内存管理子系统提供内存虚拟盘(ramdisk)设备。而内存管理子系统也会使用文件系统来支持内存数据块的交换操作8。Linux内核源码目录如下:1.Documentation:这个目录

24、下面没有内核代码,只有很多质量参差不齐的文档,但往往能够给我们提供很多的帮助。2.arch:所有与体系结构相关的代码都在这个目录以及include/asm-*/目录中,Linux支持的每种体系结构在arch目录下都有对应的子目。3.drivers:这个目录是内核中最庞大的一个目录,显卡、网卡、SCSI适配器、PCI总线、USB总线和其他任何Linux支持的外围设备或总线的驱动程序都可以在这里找到。4.fs:虚拟文件系统(VFS,Virtual File System)的代码,和各个不同文件系统的代码都在这个目录中。Linux支持的所有文件系统在fs目录下面都有一个对应的子目录。5.includ

25、e:这个目录包含了内核中大部分的头文件,它们按照下面的子目录进行分组。include/asm-*/,这样的子目录有多个,每一个都对应着一个arch的子目录。6.init:内核的初始化代码。包括main.c、创建早期用户空间的代码以及其他初始化代码。7.ipc:即进程间通信(interprocess communication)。它包含了共享内存、信号量以及其他形式IPC的代码。8.kernel:内核中最核心部分,包括进程的调度(kernel/sched.c),以及进程的创建和撤销(kernel/fork.c和kernel/exit.c)等,和平台相关的另外一部分核心的代码在arch/*/ker

26、nel目录。9.lib:库代码,实现了一个标准C库的通用子集,包括字符串和内存操作的函数(strlen、mmcpy和其他类似的函数)以及有关sprintf和atoi的系列函数。与arch/lib下的代码不同,这里的库代码都是使用C编写的,在内核新的移植版本中可以直接使用。10.mm:包含了体系结构无关部分的内存管理代码,体系相关的部分位于arch/*/mm目录下。:网络相关代码,实现了各种常见的网络协议,如TCP/IP、IPX等。12.scripts:该目录下没有内核代码,只包含了用来配置内核的脚本文件。当运行make menuconfig或者make xconfig之类的命令配置内核时,用户

27、就是和位于这个目录下的脚本进行交互的。13.block:block层的实现。最初block层的代码一部分位于drivers目录,一部分位于fs目录,从2.6.15开始,block层的核心代码被提取出来放在了顶层的block目录。14.crypto:内核本身所用的加密API,实现了常用的加密和散列算法,还有一些压缩和CRC校验算法。15.security:这个目录包括了不同的Linux安全模型的代码,比如NSA Security-Enhanced Linux。16.sound:声卡驱动以及其他声音相关的代码。17.usr:实现了用于打包和压缩的的cpio等9。3.2 嵌入式Linux内核移植实现

28、3.2.1 移植准备工作1.为了方便修改程序,在windows平台下面操作。需要windows和Linux之间共享文件,实现如下:(1)安装smb服务器。(2)配置smb服务器:建立一个共享的目录和win7可以访问的用户名和密码。(3)在win7中创建一个虚拟网卡,设置虚拟网卡的静态ip地址,例如:192.168.3.1。(4)设置虚拟机网络:vmnet8,host-only;subnet的ip:192.168.3.0。(5)设置linux eth0的ip地址和虚拟网卡ip地址在一个网段,例如:192.168.3.100。(6)启动smb服务器:#service smb start。(7)wi

29、n7中win+r输入192.168.3.100即可访问共享的资源。2.准备内核干净的源码,从官网下载,本课题用的是linux2.3.61版本的内核,即文件linux-2.6.31.tar.bz2。解压至工作目录linux-2.6.31。3.指定内核为arm,交叉编译器为linux修改linux-2.6.31下的Makefile:183行:linux ARCH?=arm184行:CROSS_COMPILE?=arm-linux-修改Makefile权限为可写可执行,保存。4.修改时钟修改arch/arm/mach-s3c2440/mach-smdk2440.c163行:s3c24xx_init_

30、clocks(12000000)。5.载入配置文件#make menuconfig进入Load an Alternate Configuration File输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig在System Type下,s3c24XX Machine那部分,只选中:SMDK2410/A9M2410SMDK2440SMDK2440 with S3C2440 cpu moudle进入Kernel Features选择Use the ARM EABI to compile the kernel和Allow old ABI binaries

31、 to run with this kernel保存配置文件改名为:.config并退出10。编译:#make zImage,把镜像烧进NandFlash跑一下,看串口是否打印出信息。3.2.2 CS8900A网卡驱动移植CS8900A工作流程图如图5所示。图5 CS8900A工作流程图移植时首先确定网卡的地址为0x19000000,中断号为EINT9。修改drivers/net/cs89x0.c,指定CS8900A使用的资源:#elif defined(CONFIG_ARCH_S3C2410)#include #include #define S3C24XX_PA_CS8900 0x1900

32、0000static unsigned int netcard_portlist _initdata =0,0;static unsigned int cs8900_irq_map = IRQ_EINT9,0,0,0;然后修改入口函数cs89x0_probe:#if defined(CONFIG_ARCH_S3C2410) unsigned int oldval_bwscon; unsigned int oldval_bankcon3;#endif#if defined(CONFIG_ARCH_S3C2410) /设置MAC,总线宽度等if(netcard_portlist0)return -

33、ENODEV;netcard_portlist0 = (unsigned int)ioremap(S3C24XX_PA_CS8900, SZ_1M) + 0x300;dev-dev_addr0 = 0x08;dev-dev_addr1 = 0x89;dev-dev_addr2 = 0x89;dev-dev_addr3 = 0x89;dev-dev_addr4 = 0x89;dev-dev_addr5 = 0x89;oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON);*(volatile unsigned int *)S3C2410

34、_BWSCON) = (oldval_bwscon & (3chip_type, dev-irq);#if defined(CONFIG_ARCH_S3C2410) ret = request_irq(dev-irq, &net_interrupt, IRQF_TRIGGER_RISING, dev-name,dev);#else ret = request_irq(dev-irq, &net_interrupt, 0, dev-name, dev);#endif在drivers/net/cs89x0.c中适当的位置加上CONFIG_ARCH_S3C2410宏编译开关,可以参考:CONFIG_

35、ARCH_PNX010X:net_open(struct net_device *dev) struct net_local *lp = netdev_priv(dev); int result = 0; int i; int ret;#if !defined(CONFIG_MACH_IXDP2351) & !defined(CONFIG_ARCH_IXDP2X01) & !defined(CONFIG_ARCH_PNX010X) & !defined(CONFIG_ARCH_S3C2410) if (1 irq) & lp-irq_map) = 0) printk(KERN_ERR %s:

36、IRQ %d is not in our map of allowable IRQs, which is %xn,dev-name, dev-irq, lp-irq_map); ret = -EAGAIN; goto bad_out; #endif#if defined(CONFIG_ARCH_PNX010X) | defined(CONFIG_ARCH_S3C2410) result = A_CNF_10B_T;#endif内核配置文件修改,修改drivers/net/kconfig中的描述:config CS89x0tristate CS89x0 supportdepends on NET

37、_ETHERNET & (ISA | EISA | MACH_IXDP2351 | ARCH_IXDP2X01 | MACH_MX31ADS | MACH_QQ2440) |ARCH_S3C2410-help- Support for CS89x0 chipset based Ethernet cards. If you have a network (Ethernet) card of this type, say Y and read the Ethernet-HOWTO, config CS89x0_NONISA_IRQdef_bool ydepends on CS89x0 != nde

38、pends on MACH_IXDP2351 | ARCH_IXDP2X01 | MACH_MX31ADS | MACH_QQ2440 |ARCH_S3C2410/*必须添加ARCH_S3C2410,否则出现eth0: IRQ 53 is not in our map of allowable IRQs, which is 1c20的错误*/ 11-13。最后配置CS8900A网卡,在内核目录下执行make menuconfig后,选中:Device Drivers -* Network device support -*Ethernet (10 or 100Mbit) -DM9000supp

39、ortCS89x0 support3.2.3 UDA1341声卡驱动移植UDA1341工作流程如图6所示。图6 UDA1341工作流程图移植时需要修改的代码如下:在arch/arm/mach-s3c2440/mach-smdk2440.c添加:static struct platform_device *smdk2440_devices _initdata = &s3c_device_uda1341, 在arch/arm/plat-s3c24xx/devs.c添加: #include #include static struct s3c24xx_uda134x_platform_data s3

40、c24xx_uda134x_data = .l3_clk = S3C2410_GPB4, .l3_data = S3C2410_GPB3, .l3_mode = S3C2410_GPB2, .model = UDA134X_UDA1341, ; struct platform_device s3c_device_uda1341 = .name = s3c24xx_uda134x, .dev = .platform_data = &s3c24xx_uda134x_data, ; EXPORT_SYMBOL(s3c_device_uda1341);在arch/arm/plat-s3c/includ

41、e/plat/devs.h添加extern struct platform_device s3c_device_uda1341; arch/arm/mach-s3c2410/include/mach/regs-gpio.h这个文件的内容修改为:static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = .l3_clk = S3C2410_GPB (4), .l3_data = S3C2410_GPB (3), .l3_mode = S3C2410_GPB (2), .model = UDA134X_UDA1341, ;

42、配置内核,支持UDA1341:Device Drivers: * Sound card support ? * Advanced Linux Sound Architecture? * CCS Mixer API * CSS PCM(digital audio) API * Verbose procfs contents * ALSA for SoC audio support? * SoC audio for the Samsung S3C24XX chips * SoC I2S Audio support for UDA134X wired to a S3C24XX 143.2.4 触摸屏驱动移植触摸屏的工作流程如图7所示。图7 触摸屏工作流程图触摸屏驱动移植涉及有三个文件:s3c2410_ts.c,s3c2440_adc.c,s3c2440adc.h,将s3c2410_ts.c拷贝到

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号