E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
嵌入式Linux驱动
嵌入式Linux驱动
笔记(十七)------详解V4L2框架(UVC驱动)
你好!这里是风筝的博客,欢迎和我一起交流。VideoforLinux2,简称V4l2,是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。首先来看看所有的v4l2驱动都必须要有的几个组成部分:–用来描述每一个v4l2设备实例状态的结构(structv4l2_dev
风筝丶
·
2017-11-18 00:00
Linux驱动
嵌入式Linux驱动
笔记(十六)------设备驱动模型(kobject、kset、ktype)
###你好!这里是风筝的博客,###欢迎和我一起交流。前几天去面试,被问到Linux设备驱动模型这个问题,没答好,回来后恶补知识,找了些资料,希望下次能答出个满意答案。Linux早期时候,一个驱动对应一个设备,也就对应一个硬件地址,那当有两个一样的设备的时候,就要写两个驱动,显然是不合理的。应该是从Linux2.5开始,就引入了device-bus-driver模型。其中设备驱动模型主要结构分为k
风筝丶
·
2017-10-27 00:00
Linux驱动
嵌入式Linux驱动
开发(六)——异步通知
之前,获取按键值的方式都是应用程序主动去查询,无论是poll机制还是阻塞的read,那么,另外一种思路就是让驱动程序来通知应用程序,而不让他自己去查询,那么这样做的好处就是不会干扰到应用程序的工作,只需要等具体的事情发生了再去处理即可。应用程序从硬件获取信息主要有三种方式:死循环read:耗费资源严重,无意义read+wait_event_interruptiblepoll+read关于异步通知,
故事狗
·
2017-10-16 21:14
嵌入式Linux驱动
开发(六)——异步通知
之前,获取按键值的方式都是应用程序主动去查询,无论是poll机制还是阻塞的read,那么,另外一种思路就是让驱动程序来通知应用程序,而不让他自己去查询,那么这样做的好处就是不会干扰到应用程序的工作,只需要等具体的事情发生了再去处理即可。应用程序从硬件获取信息主要有三种方式:死循环read:耗费资源严重,无意义read+wait_event_interruptiblepoll+read关于异步通知,
故事狗
·
2017-10-16 21:14
嵌入式Linux驱动
笔记(十五)------编译使用tslib支持LCD触摸屏
你好!这里是风筝的博客,欢迎和我一起交流。从网上下载tslib,比如我这里用的是tslib-1.4编译之前先安装三个文件:sudoapt-getinstallautoconfsudoapt-getinstallautomakesudoapt-getinstalllibtool解压:tarxzftslib-1.4.tar.gzcdtslib./autogen.shmkdirtmpecho“ac_cv
风筝丶
·
2017-10-14 00:00
Linux驱动
嵌入式Linux驱动
开发(五)——poll机制原理以及驱动实现
之前的文章里面说到了关于使用两种方式来获取不同的按键值,具体的文章可以参看以下文章:
嵌入式Linux驱动
开发(三)——字符设备驱动之查询的方式获取按键值
嵌入式Linux驱动
开发(四)——字符设备驱动之中断方式以及中断方式获取按键值前情回顾
故事狗
·
2017-10-10 23:23
嵌入式Linux驱动
开发(五)——poll机制原理以及驱动实现
之前的文章里面说到了关于使用两种方式来获取不同的按键值,具体的文章可以参看以下文章:
嵌入式Linux驱动
开发(三)——字符设备驱动之查询的方式获取按键值
嵌入式Linux驱动
开发(四)——字符设备驱动之中断方式以及中断方式获取按键值前情回顾
故事狗
·
2017-10-10 23:23
[
嵌入式Linux驱动
]S5PV210的蜂鸣器Linux驱动
智能家居报警器控制驱动程序:1.本驱动使用platform模型进行设计,分为Alarm_Beeper_device和Alarm_Beeper_driver两个文件2.注册杂项设备(misc),主设备号固定是10(misc),从设备号由系统自动分配,加载成功后使用lsmod可以看到: Alarm_Beeper_device Alarm_Beeper_driver3.加载driver驱动模块之
Im刘北席
·
2017-09-18 00:00
嵌入式
ARM
C代码案例
[
嵌入式Linux驱动
]S5PV210的DHT11温湿度传感器Linux驱动
智能家居温湿度传感器驱动程序:1.本驱动使用platform模型进行设计,分为Temp_And_Humidity_device和Temp_And_Humidity_driver两个文件2.注册杂项设备(misc),主设备号固定是10(misc),从设备号由系统自动分配,加载成功后使用lsmod可以看到: Temp_And_Humidity_device Temp_And_Humidity_dr
Im刘北席
·
2017-09-17 18:01
嵌入式
ARM
C语言
C代码案例
Linux
嵌入式Linux驱动
笔记(十三)------spi设备之RFID-rc522驱动
你好!这里是风筝的博客,欢迎和我一起交流。上一节讲了spi框架:通俗易懂式分析了解spi框架现在我们写一下spi的设备驱动程序,rc522是一款刷卡模块,类似于学校食堂的刷卡机。以kernel4.8.17为例:之前我们给mach-smdk2440.c文件添加了:&s3c_device_spi0,现在我要把rc522设备接在2440的spi1接口上,所以我们应该修改为:&s3c_device_spi
风筝丶
·
2017-09-13 00:00
Linux驱动
嵌入式Linux驱动
笔记(十二)------通俗易懂式分析了解spi框架
你好!这里是风筝的博客,欢迎和我一起交流。之前讲过i2c框架:通俗易懂式分析了解i2c框架如果之前你看懂了,那其实spi框架也差不多。同样的,先上张图:老规则,从上往下看起,以kernel4.8.17为例:在mach-smdk2440.c文件里:staticstructplatform_device*smdk2440_devices[]__initdata={ &s3c_device_ohci,
风筝丶
·
2017-09-09 00:00
Linux驱动
嵌入式Linux驱动
笔记(十一)------i2c设备之mpu6050驱动
上一节讲了i2c框架:
嵌入式Linux驱动
笔记(十)——通俗易懂式了解i2c框架这次就来写一写真正的i2c设备驱动:mpu6050是一款6轴运动处理组件,采用i2c通信接口。
风筝丶
·
2017-09-07 00:00
Linux驱动
嵌入式Linux驱动
笔记(十)------通俗易懂式分析了解i2c框架
你好!这里是风筝的博客,欢迎和我一起交流。了解i2c框架时,在别的博客看到一张图,非常好,引用如下:其中,i2c_client是具体的设备实例,是通过i2c总线连接到i2c_adapter的。无论是什么i2c设备,都可以通过i2c_adapter来访问i2c总线,i2c_adapter屏蔽了底层i2c总线控制时序,向上层提供一个统一的接口。以kernel4.8.17为例:在mach-smdk244
风筝丶
·
2017-09-06 00:00
Linux驱动
嵌入式Linux驱动
笔记(九)------dts设备树在2440使用
你好!这里是风筝的博客,欢迎和我一起多多交流。ARM社区一贯充斥的大量垃圾代码导致Linus盛怒,因此社区在2011年到2012年进行了大量的工作。ARMLinux开始围绕DeviceTree展开,DeviceTree有自己的独立的语法,它的源文件为.dts,编译后得到.dtb,Bootloader在引导Linux内核的时候会将.dtb地址告知内核。之后内核会展开DeviceTree并创建和注册相
风筝丶
·
2017-08-24 00:00
Linux驱动
嵌入式Linux驱动
开发(四)——字符设备驱动之中断方式以及中断方式获取按键值
之前我们完成了关于通过查询的方式获取按键键值的驱动程序,可以参考:嵌入式Linux开发——裸板程序之中断控制器。虽然读取键值没有什么问题,但是测试程序占用CPU过高,一直在不断的查询,资源消耗过大,这个问题非常严重,我们必须要来解决一下。但是在解决这个问题之前,我们先来思考一个问题,除了不断的这样read,是不是还有其他的方法可以获取按键的键值呢?自然是有的,这个方式就是通过终端的方式来获取键值。
故事狗
·
2017-08-22 17:03
嵌入式Linux驱动
开发(四)——字符设备驱动之中断方式以及中断方式获取按键值
之前我们完成了关于通过查询的方式获取按键键值的驱动程序,可以参考:嵌入式Linux开发——裸板程序之中断控制器。虽然读取键值没有什么问题,但是测试程序占用CPU过高,一直在不断的查询,资源消耗过大,这个问题非常严重,我们必须要来解决一下。但是在解决这个问题之前,我们先来思考一个问题,除了不断的这样read,是不是还有其他的方法可以获取按键的键值呢?自然是有的,这个方式就是通过终端的方式来获取键值。
故事狗
·
2017-08-22 17:03
嵌入式Linux驱动
开发(三)——字符设备驱动之查询的方式获取按键值
之前的文章讨论了字符设备驱动的框架以及通过自负设备驱动程序来控制开发板上的LED
嵌入式Linux驱动
开发(一)——字符设备驱动框架入门
嵌入式Linux驱动
开发(二)——字符设备驱动之控制LED在这里我们可以简单的复习一下
故事狗
·
2017-08-18 12:07
嵌入式Linux驱动
开发(三)——字符设备驱动之查询的方式获取按键值
之前的文章讨论了字符设备驱动的框架以及通过自负设备驱动程序来控制开发板上的LED
嵌入式Linux驱动
开发(一)——字符设备驱动框架入门
嵌入式Linux驱动
开发(二)——字符设备驱动之控制LED在这里我们可以简单的复习一下
故事狗
·
2017-08-18 12:07
嵌入式Linux驱动
笔记(八)------依赖Linux kernel驱动的pwm编写
你好!这里是风筝的博客,欢迎和我一起交流。之前我们写Linux驱动,都是自己写,从platformdriver到platformdevice,都是自己一手包办,其实,在kernel里,很多驱动都已经写好了的,只需我们会用就好了,省时省力。现在以pwm驱动为例,芯片是2440的芯片:查阅芯片手册我们可以知道,S3C2440上有4通道16位具有PWM功能的定时器,1通道16位基于DMA或基于中断运行的
风筝丶
·
2017-08-16 20:21
Linux驱动
嵌入式Linux驱动
开发(二)——字符设备驱动之控制LED
关于驱动程序框架,请参考:
嵌入式Linux驱动
开发(一)——字符设备驱动框架入门同时,在这篇文章里面留下了两个问题,现在先来解决其中的第一个问题,就是如何用驱动程序来操作需要操作的硬件。
故事狗
·
2017-08-13 17:20
嵌入式Linux驱动
开发(二)——字符设备驱动之控制LED
关于驱动程序框架,请参考:
嵌入式Linux驱动
开发(一)——字符设备驱动框架入门同时,在这篇文章里面留下了两个问题,现在先来解决其中的第一个问题,就是如何用驱动程序来操作需要操作的硬件。
故事狗
·
2017-08-13 17:20
嵌入式Linux驱动
开发(一)——字符设备驱动框架入门
提到了关于Linux的设备驱动,那么在Linux中I/O设备可以分为两类:块设备和字符设备。这两种设备并没有什么硬件上的区别,主要是基于不同的功能进行了分类,而他们之间的区别也主要是在是否能够随机访问并操作硬件上的数据。字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。块设备:应用程序可以随机访问设
故事狗
·
2017-08-13 12:41
嵌入式Linux驱动
开发(一)——字符设备驱动框架入门
提到了关于Linux的设备驱动,那么在Linux中I/O设备可以分为两类:块设备和字符设备。这两种设备并没有什么硬件上的区别,主要是基于不同的功能进行了分类,而他们之间的区别也主要是在是否能够随机访问并操作硬件上的数据。字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。块设备:应用程序可以随机访问设
故事狗
·
2017-08-13 12:41
嵌入式Linux应用学习(一)------QT控制LED设备硬件
Windows下QTCreator版本为5.3.2Linux下QTCreator版本为5.6首先,在Windows下编译好应用程序:控制LED,当然要有LED小灯的驱动了,在这里:
嵌入式Linux驱动
学习笔记
风筝丶
·
2017-07-31 00:00
Linux应用
嵌入式Linux驱动
笔记(七)------浅析tty与uart框架
你好!这里是风筝的博客,欢迎和我一起多多交流。 看一个驱动模型,先从注册函数看起。先看下设备文件:在init.c(arch/arm/plat-samsung)文件,有:staticstructcpu_table*cpu;注意哦,这里有个结构体指针变量cpu,一定要记住,有大用!!!将下来: static int __init s3c_arch_init(void) { int re
风筝丶
·
2017-07-28 00:00
Linux驱动
嵌入式Linux驱动
笔记(六)------浅析input输入子系统框架
(文章写得比较早,当时自己也是一知半解,描述的不好,后来我参考了网上的大量资料,重新写了一篇:
嵌入式Linux驱动
笔记(二十五)------Input子系统框架)基于设备驱动分层的思想,其实理解了platform
风筝丶
·
2017-07-23 00:00
Linux驱动
嵌入式Linux驱动
笔记(六)------浅析input输入子系统框架
(文章写得比较早,当时自己也是一知半解,描述的不好,后来我参考了网上的大量资料,重新写了一篇:
嵌入式Linux驱动
笔记(二十五)------Input子系统框架)基于设备驱动分层的思想,其实理解了platform
风筝丶
·
2017-07-23 00:00
Linux驱动
嵌入式Linux驱动
笔记(五)------学习platform设备驱动
你好!这里是风筝的博客,欢迎和我一起交流。 设备是设备,驱动是驱动。如果把两个糅合写一起,当设备发生变化时,势必要改写整个文件,这是非常愚蠢的做法。如果把他们分开来,当设备发生变化时,只要改写设备文件即可,驱动文件巍然不动。从linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device和platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备
风筝丶
·
2017-07-18 00:00
Linux驱动
嵌入式Linux驱动
笔记(四)------USB键盘驱动程序
你好!这里是风筝的博客,欢迎和我一起交流。Kernel版本为4.4.17.编写USB键盘的驱动,可以参考Kernel里的usbkbd.c这个文件.我越发觉得驱动都是按套路来的.......流程都差不多一样.在这个文件里,最主要就是看usb_kbd_probe函数和usb_kbd_irq函数了。在文件最开头有个数组:staticconstunsignedcharusb_kbd_keycode[256
风筝丶
·
2017-07-14 00:00
Linux驱动
嵌入式Linux驱动
笔记二)------定时器
你好!这里是风筝的博客,欢迎和我一起交流。内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于和kernel/timer.c文件中。定时器的回调函数运行过一次后就不会再被运行了(相当于自动注销),但可以通过在回调函数中重新改变自己来周期运行。timer的API函数:初始化定时器:voidinit_timer(structtimer_list*time
风筝丶
·
2017-07-12 00:00
Linux驱动
嵌入式Linux驱动
笔记(三)------LCD驱动程序
你好!这里是风筝的博客,欢迎和我一起交流。开发板为JZ2440,以LinuxKernel4.4.17为例在Kernel自带的s3c2410fb.c文件中,就是LCD的驱动。我们可以照着这个文件编写一个LCD驱动。在文件中s3c24xxfb_probe函数就是LCD的初始化.对着这个函数写即可.值得注意的是,函数里对clk时钟的操作:info->clk=clk_get(NULL,"lcd");if(
风筝丶
·
2017-07-12 00:00
Linux驱动
嵌入式Linux驱动
笔记(一)------第一个LED驱动程序
你好!这里是风筝的博客,欢迎和我一起交流。//应用程序: #include #include #include #include /*leddrvteston *leddrvtestoff */ intmain(intargc,char**argv) { intfd; intval=1; fd=open("/dev/led",O_RDWR); if(fd\n",argv[0]); return0;
风筝丶
·
2017-07-03 00:00
Linux驱动
嵌入式linux驱动
-DMA笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10二、实现使用dma把一块数据存储到另一块上。实现过程:1.创建字符设备驱动。包括定义file_operations结构变量,注册字符设备register_chrdev,使用class_create、class_device_create自动创建设备节点。2.关于DMA的设置。(1)分配中断。如:requ
时光左an
·
2017-05-16 00:00
嵌入式linux驱动
嵌入式linux驱动
-I2C笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10二、过程参考drivers/i2c/chips/eeprom.c,drivers/i2c/chips/ds1374.c。1.分配一个i2c_driver结构体2.设置i2c_driver结构体 设置两个重要的成员 .attach_adapter=xxx_adapter //在函数xxx_adapter
时光左an
·
2017-05-10 00:00
嵌入式linux驱动
嵌入式linux驱动
-nand flash笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10
时光左an
·
2017-04-24 00:00
嵌入式linux驱动
嵌入式linux驱动
-块设备笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10二、基本知识1.块设备上的数据以块为单位的形式存放(如页,扇区等),不是以字节为单位的读写的,块设备需要整块的读写。块设备每次读写,都需要把整块数据读出。读出后再找出要读的数据,或把要写的数据加进去,再整块的写入块设备。这意味着,块设备读写都会变慢。为了提高速度,系统使用了算法,简单的说就是每次读写,系
时光左an
·
2017-04-13 00:00
嵌入式linux驱动
嵌入式linux驱动
-usb实现按键功能笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10二、过程三、程序#include #include #include #include #include #include staticstructinput_dev*usb_key_dev; staticchar*usb_buff; staticdma_addr_tusb_buff_phys; st
时光左an
·
2017-04-12 00:00
嵌入式linux驱动
嵌入式linux驱动
-触摸屏笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10二、过程三、程序#include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include stat
时光左an
·
2017-04-12 00:00
嵌入式linux驱动
嵌入式linux驱动
-bus-driver-device模型笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ24403、ubuntu9.10二、概念 一个现实的linux设备驱动通常需要挂接在一种总线上,对于本身依附于PCI,USB,IIC,SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SOC系统中集成的独立的外设控制器,挂接在SOC内存空间的外设等确不依附于此类总线。基于这一背景,linux发明了一种虚拟的总线,称为platfo
时光左an
·
2017-03-27 00:00
嵌入式linux驱动
嵌入式linux驱动
-lcd驱动笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ2440v33、ubuntu9.10二、二期视频讲的是3.5寸tft屏的JZ2440v3用的4.3寸tft屏,参数有所不同。程序#include #include #include #include #include #include #include #include #include #include #include #includ
时光左an
·
2017-03-27 00:00
嵌入式linux驱动
嵌入式linux驱动
-输入子系统笔记
一、开发环境1、内核:Linux 2.6.22.6;2、JZ24403、ubuntu9.10二、过程1、分配input_dev结构体 使用input_allocate_device函数,如:先定义一个input_dev结构体类型变量:staticstructinput_dev*key_dev;使用input_allocate_device函数分配:key_dev=input_allocate_d
时光左an
·
2017-03-24 00:00
嵌入式linux驱动
嵌入式Linux驱动
及内核模块问题总结
一、驱动程序测试 1、在Kconfig文件中添加相应的configxxx编译选项,在Makefile中添加obj-$(CONFIG_xxx)+=xx.o 2、配置好后需要先编译一遍内核和dtb文件,在makemodules才能正确加载模块。二、内核驱动设备号、设备类、设备节点等的操作 1、第一组组合 ①、intalloc_chrdev_region(dev_t*dev,uns
Soldier_L
·
2016-11-14 00:00
嵌入式Linux
基于mini2440的led字符设备驱动程序
刚开始学习
嵌入式linux驱动
程序,看了些以前国嵌的视频发现一些函数根本找不到,很多的函数已经更新了。linux内核代码更新比较快,很多新的技术会很快取代旧的技术,这也是linux作为开源系统的特点。
c1194758555
·
2016-11-04 18:09
linux驱动程序设计
好消息:8月25日广州嵌入式Linux开发免费项目约定你
时隔一周,粤嵌广州总部也不容落后,在粤嵌广州总部举办《
嵌入式Linux驱动
开发详解免费体验课》,上周错过的朋友以及没有玩够儿的朋友可千万记住这个时间咯,机会难得,不可再失~~8月25日,粤嵌广州总部:
·
2015-11-13 07:38
linux
嵌入式Linux驱动
程序
转自:一塌糊涂的BLOG 在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实
·
2015-11-13 06:57
linux
嵌入式linux驱动
开发班
From:http://www.akaedu.org/pages/center11_qudong.html 基 于Linux的嵌入式系统目前获得了广泛应用,在嵌入式Linux核心层的开发中,设备驱动的编写占据了大部分的工作量,能编写出真正可用的驱动程序存在 着很多技术要点,本课程的开设兼顾初学者和有一定开发经验人员的需要,通过对嵌入式Linux系统理论知识和实际代码分析相结合的方式,
·
2015-11-02 10:28
linux
嵌入式linux的驱动程序
[摘至嵌入式linux设备驱动开发详解] 1.4
嵌入式linux驱动
程序 1.4.1 嵌入式linux的内核空间和用户空间 目前,各种处理器都能防止资源的未经授权访问,包括嵌入式处理器。
·
2015-10-31 10:04
linux
关于linux模块驱动简单的Makefile
( 转)
嵌入式Linux驱动
开发笔记 Linux驱动一般以模块module的形式来加载,首先需要把驱动编译成模块的形式。
·
2015-10-27 15:40
makefile
嵌入式linux驱动
开发之点亮led(驱动编程思想之初体验)
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的。个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的住,不然真像一些人说的,学了一年嵌入式感觉还没找到门。 不能再扯了,涉及到linux的驱动开发知识面灰常广,再扯文章就会变得灰常长。首先还是回到led驱动的本身上,自从linux被移植到arm上后,
·
2015-10-27 12:28
linux
手把手教你写Linux I2C设备驱动 tvp5158
LinuxI2C驱动是
嵌入式Linux驱动
开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如RTC实时时钟芯片、音视频采集芯片、音视频输出芯片
zouwen198317
·
2015-10-19 12:00
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他