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驱动
开发(I2C专题)(七)
devicetree\bindings\i2c\i2c-gpio.yamlLinux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt
Linux
嵌入式学习者。
·
2023-09-19 09:17
Linux
驱动以及裸机
linux
驱动开发
运维
【新书速递】嵌入式
Linux驱动
领域开发的实战指南
嵌入式Linux的灵活性,为嵌入式计算而设计的高效、节能的处理器的可用性,以及新处理器的低成本,使许多工业公司在嵌入式处理器的基础上开发新的产品成为可能。现在的工程师虽然可以用强大的工具开发以前无法想象的应用程序,但是他们不一定十分了解Linux提供的丰富特性。今天为大家介绍《嵌入式Linux设备驱动程序开发指南(原书第2版)》,本书将告诉你如何为设备树嵌入式Linux系统开发设备驱动程序。你将学
hzbooks
·
2023-09-18 03:21
嵌入式
网络
编程语言
人工智能
大数据
Linux驱动
开发 通过字符设备驱动分步注册方式编写LED驱动
通过字符设备驱动分步注册方式编写LED驱动,完成设备文件和设备的绑定:head.h:#ifndef__HEAD_H__#define__HEAD_H__typedefstruct{unsignedintMODER;unsignedintOTYPER;unsignedintOSPEEDR;unsignedintPUPDR;unsignedintIDR;unsignedintODR;}gpio_t;#
Satellitex
·
2023-09-17 18:59
linux
驱动开发
运维
Linux驱动
中断与时间篇——低分辨率定时器
文章目录内核延时函数接口delay接口sleep接口delay和sleep的区别低分辨率定时器jiffies和HZ相关接口定时器使用示例单次定时循环定时内核延时函数接口延时的函数有delay和sleep两种类型:delay接口voidndelay(unsignedlongnsecs);//纳秒延时voidudelay(unsignedlongusecs);//微妙延时voidmdelay(unsi
嵌入式Linux充电站
·
2023-09-17 06:26
Linux驱动
linux
驱动开发
Linux驱动
中断与时间篇——高精度定时器hrtimer
文章目录前言相关接口使用示例单次定时循环定时前言低分辨率定时器是用jiffies来定时的,所以会受到HZ影响,如果HZ为200,代表每秒种产生200次中断,那一个jiffies就需要5毫秒,所以精度为5毫秒。如果精度需要达到纳秒级别,则需要使用高精度定时器hrtimer。相关接口高分辨率定时器(hrtimer)以ktime_t来定义时间,精度可以达到纳秒级别,ktime_t定义如下:typedef
嵌入式Linux充电站
·
2023-09-17 06:26
Linux驱动
linux
驱动开发
Linux驱动
中断与时间篇——中断下半部的三种方法
文章目录什么是中断下半部softirq软中断实例tasklettasklet使用tasklet实例workqueue什么是中断下半部当产生一个中断时,会进入中断处理程序。但中断处理程序必须快速、异步、简单的对硬件做出迅速响应并完成那些时间要求很严格的操作。因此,对于那些其他的、对时间要求相对宽松的任务,就应该推后到中断被激活以后再去运行。这样,整个中断处理流程就被分为了两个部分:第一个部分是中断处
嵌入式Linux充电站
·
2023-09-17 06:53
Linux驱动
linux
驱动开发
linux内核进程间通信IPC----消息队列
在
Linux驱动
程序
~我爱中国~
·
2023-09-16 21:03
linux
linux驱动
开发day6--(epoll实现IO多路复用、信号驱动IO、设备树以及节点和属性解析相关API使用)
一、IO多路复用--epoll实现1.核心:红黑树、一张表以及三个接口、2.实现过程及API1)创建epoll句柄/创建红黑树根节点intepfd=epoll_create(intsize--无意义,>0即可)----------成功:返回根节点对应文件描述符,失败:-12)将要监测的文件描述符挂载到红黑树上a.structepoll_eventevent;定义事件结构体b.structepoll
林黛玉倒拔垂杨柳~
·
2023-09-15 22:53
linux
驱动开发
stm32
嵌入式
Linux驱动
开发(I2C专题)(五)
I2C系统驱动程序模型参考资料:Linux内核文档:Documentation\i2c\instantiating-devices.rstDocumentation\i2c\writing-clients.rstLinux内核驱动程序示例:drivers/eeprom/at24.c1.I2C驱动程序的层次I2CCore就是I2C核心层,它的作用:提供统一的访问函数,比如i2c_transfer、i
嵌入式学习者。
·
2023-09-14 22:10
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式
Linux驱动
开发(I2C专题)(六)
完善虚拟的I2C_Adapter驱动并模拟EEPROM参考资料:Linux内核文档:Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txtLinux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yamlLinux内核驱动程序:使用GPIO模拟I2CLinux-4.9.8
嵌入式学习者。
·
2023-09-14 22:10
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式
Linux驱动
开发(I2C专题)(四)
编写APP直接访问EEPROM参考资料:
Linux驱动
程序:drivers/i2c/i2c-dev.cI2C-Tools-4.2:https://mirrors.edge.kernel.org/pub/
嵌入式学习者。
·
2023-09-14 22:38
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式linux led驱动有几种写法,嵌入式
Linux驱动
开发(二)——字符设备驱动之控制LED...
同时,在这篇文章里面留下了两个问题,现在先来解决其中的第一个问题,就是如何用驱动程序来操作需要操作的硬件。关于开发板点亮LED的问题,在这里简单介绍一下,也可以参考之前我写的文章:嵌入式Linux开发——裸板程序点亮开发板上的LED灯首先为了操作硬件,看接线原理图是必不可少的一步,这几个LED的原理图相对来说比较简单,在这里说一下,如果需要看懂稍微复杂一点的原理图,可以参见:Linux嵌入式开发入
陈咏开
·
2023-09-14 21:48
嵌入式linux
led驱动有几种写法
linux 驱动中建立进程,
linux驱动
编写之进程独占驱动
一、描述嵌入式开发系统中,有各种硬件资源,而有些硬件资源使用时候是需要进程独占的。也就是说,同一时刻只有一个进程允许使用这个硬件资源,其他的进程只能放弃执行或者挂起等待。在设计其对应驱动的时候,就需要做独占处理。example:led灯驱动,4盏LED灯,在open的时候调用驱动,对其引脚进行配置。如果没有进程独占驱动的处理机制,效果如下:根据测试结果可以得到结论,调用了4次应用程序led_tes
yypmzqdf
·
2023-09-14 21:48
linux
驱动中建立进程
韦东山 嵌入式
Linux驱动
开发基础知识 上【hello驱动 像单片机那样驱动 用结构体封装驱动 分别注册到内核
韦东山git用户首先确定一个设备。电脑里需要先有对应的驱动文件才能对这个设备能进行open()等操作Linux内核里给驱动文件规定了一个结构体,驱动开发人员可以挑选一些需要的功能进行实现,最基础的就是open()/write()/read().写一个不用硬件的hello驱动先写一个驱动文件现在开始写的代码都是在内核里面了,不是在用户空间了。先写一个能打开/关闭设备,能读/写内容这4个功能的驱动。编
晓蓝WQuiet
·
2023-09-14 21:17
Linux
驱动开发
linux
单片机
linux驱动
开发(一)
1.Linux设备驱动种类及层次Linux设备驱动的种类:字符设备驱动,块设备驱动,网络设备驱动字符设备驱动:按照字节流来访问,只能顺序访问,不能无序访问的设备。块设备驱动:按照block(512字节)来访问,可以顺序访问,也可以无序访问的设备网络设备驱动:网络设备驱动没有设备文件,网络设备驱动主要是用来实现网络数据的收发工作2.Linux内核模块2.1内核模块三要素入口:安装驱动的时候执行(in
早晚像我师傅一样牛*
·
2023-09-14 21:17
linux
驱动开发
运维
Ubuntu16.04无法识别Intel® Wi-Fi 6 AX201 160MHz
1.
linux驱动
支持的内核版本https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html需要5.2
佛忙逆
·
2023-09-14 21:03
ARM体系结构及接口技术(部分理论知识)
相关的概念指令->指令集->架构->arm内核->SOC1.1课程目的为学习驱动打基础了解ARM处理器硬件的工作原理驱动开发1>裸机驱动开发:没有操作系统,单片机(MCU)开发:stm32只需要具备C语言即可2>
linux
°嘟嘟嘟嘟
·
2023-09-14 20:14
arm
反汇编
嵌入式
Linux驱动
开发(I2C专题)(三)
无需编写驱动直接访问设备_I2C-Tools介绍参考资料:
Linux驱动
程序:drivers/i2c/i2c-dev.cI2C-Tools-4.2:https://mirrors.edge.kernel.org
嵌入式学习者。
·
2023-09-14 10:43
Linux
驱动以及裸机
linux
驱动开发
运维
linux驱动
开发--day4(字符设备驱动注册内部流程、及实现备文件和设备的绑定下LED灯实验)
一、字符设备驱动注册的内部过程1.分配structcdev对象空间2.初始化structcdev对象3.注册cdev对象二、注册字符设备驱动分步实现1.分配字符设备驱动对象2.字符设备驱动对象初始化3.设备号的申请4.根据申请的设备号和驱动对象注册驱动三、open函数回调驱动中操作方法open的路线1.应用层打开文件系统中的存在文件,会有inode号,且系统内核中就会存在一个inode对象(str
林黛玉倒拔垂杨柳~
·
2023-09-14 10:12
驱动开发
stm32
linux
嵌入式
Linux驱动
开发(I2C专题)(二)
I2C系统的重要结构体参考资料:
Linux驱动
程序:drivers/i2c/i2c-dev.cI2CTools:https://mirrors.edge.kernel.org/pub/software/
嵌入式学习者。
·
2023-09-13 20:22
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式
Linux驱动
开发(I2C专题)(一)
一、I2C协议1.1、硬件连接I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备。1.2、IIC传输数据的格式1.2.1、写操作流程如下:主芯片要发出一个start信号然后发出一个设备地址(用来确定是往哪一个芯片写数据),方向(读/写,0表示写,1表示读)从设备回应(用来确定这个设备是否存在),然后就可以传输数据主设备发送一个字节数据给从设备,
嵌入式学习者。
·
2023-09-13 20:20
Linux
驱动以及裸机
linux
驱动开发
运维
CAN分析仪:便携式CAN总线分析仪
配套Windows或
Linux驱动
;配套包含动态库、库函
爆爆带盐人
·
2023-09-13 08:19
can分析仪
usb转can
测试工具
linux驱动
开发---day3(自启动创建设备节点进行点灯实验、ioctl函数实现点灯实验)
自动创建设备节点udev机制的实现过程udev是自动创建设备节点,逻辑在用户空间过程:1)首先注册字符设备驱动,得到标识设备的设备号2)获得设备信息后,先创建一个设备类,向上提交目录信息,使用class_create3)然后创建设备对象,向上提交设备节点信息,使用device_create4)在向上提交设备节点信息后,会自动发起热插拔事件通知udev进程去查询设备节点的信息,以及在/dev下创建设
林黛玉倒拔垂杨柳~
·
2023-09-13 04:41
linux
stm32
驱动开发
嵌入式裸机设计思想——时间片轮裸机开发架构+状态机+定时器调度机制
前言(1)如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假
Linux驱动
实习岗位,可C站直接私聊,或者邮件:
[email protected]
,此消息至2025年1月1日前均有效
风正豪
·
2023-09-12 17:53
MCU裸机教程
架构
单片机
嵌入式
Linux驱动
程序开发(一)基本概念和方法
姓名:薛绍宏学号:19020100016学院:电子工程学院转自:https://blog.csdn.net/iteye_2060/article/details/82089821?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162722233316780264011150%2522%252C%2522scm%2522%253A%2
Jetho
·
2023-09-12 16:31
嵌入式
Linux驱动
开发(同步与互斥专题)(二)
一、自旋锁spinlock的实现自旋锁,顾名思义:自己在原地打转,等待资源可用,一旦可用就上锁霸占它。①原地打转的是CPUx,以后CPUy会解锁:这涉及多个CPU,适用于SMP系统;②对于单CPU系统,自旋锁的“自旋”功能就去掉了:只剩下禁止抢占、禁止中断要理解spinlock,要通过2个情景来分析:①一开始,怎么争抢资源?不能2个程序都抢到。这挺好解决,使用原子变量就可以实现。②某个程序已经获得
嵌入式学习者。
·
2023-09-12 12:22
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式
Linux驱动
开发(同步与互斥专题)(一)
一、内联汇编1.1、语法内联汇编实现加法1.2、同步互斥失败的例子进程A在读出valid时发现它是1,减1后为0,这时if不成立;但是修改后的值尚未写回内存;假设这时被程序B抢占,程序B读出valid仍为1,减1后为0,这时if不成立,最后成功返回;轮到A继续执行,它把0值写到valid变量,最后也成功返回。这样程序A、B都成功打开了驱动程序。1.3、原子操作的原理与使用所谓“原子操作”就是1.2
嵌入式学习者。
·
2023-09-12 12:21
Linux
驱动以及裸机
linux
驱动开发
运维
Linux驱动
【day2】
mychrdev.c:#include#include#include#include#include#include"head.h"unsignedintmajor;//保存主设备号charkbuf[128]={0};unsignedint*vir_moder;unsignedint*vir_odr;unsignedint*vir_rcc;unsignedint*vir_moder2;unsig
慕晚洛
·
2023-09-12 12:14
linux
Android IPC 系列之AIDL
众所周知,运行在不同进程里的程序想要通讯那是比较困难的,一般采用Socket建立两者的联系,还有类似共享内存的方式去读取共享的配置,而Binder是基于这2种的一种优化,是属于比较轻量级并且
linux驱动
也有相应的支持
jimdear
·
2023-09-12 05:17
如何编译
linux驱动
ko
1.概述本文描述了liunx驱动ko的编译方法,其中单编驱动ko是本文的重点。什么是ko?在Linux中一个.ko文件就是一个模块文件。linux提供了一种称为模块(Module)的机制,模块具有以下特点:1、模块自身不被编译到内核映像中,从而不影响内核映像的大小2、一旦模块被加载,模块和内核中的其他部分的功能完全一样。实验环境如下:硬件环境基于MINI2440开发板,软件环境基于linux-2.
liyinuo2017
·
2023-09-11 08:04
linux
arm开发
嵌入式硬件
arm
简单认识驱动与模块
Linux驱动
的分类Linux中,将设备分为三
三三不尽
·
2023-09-11 05:32
驱动
zynqmp APU(linux)和RPU(裸机)通过IPI中断实现同步
需要更改的
linux驱动
基于platform框架实现如下:#include#include#include#include#include#include#includ
kissskill
·
2023-09-10 19:55
linux
zynqmp
IPI
IPI
中断
非AMP框架
zynqmp
程序人生
【ARM】使用模板编写dht11温湿度
linux驱动
程序
❤️作者主页:凉开水白菜❤️作者简介:共同学习,互相监督,热于分享,多加讨论,一起进步!❤️专栏资料:https://gitee.com/stylle/linux_code❤️点赞收藏⭐再看,养成习惯订阅的粉丝可通过PC端文末加我微信,可对文章的内容进行一对一答疑!DHT11温湿度简介修改并统一函数名字修改.h文件内容修改probe函数和remove函数probe函数remove函数添加DHT11
凉开水白菜
·
2023-09-10 03:29
Linux
arm开发
linux
Linux系统中驱动框架基本概述
大家好,今天跟大家简单聊聊
Linux驱动
框架以及概述。
ST小智
·
2023-09-09 19:01
linux
linux系统中驱动框架基本分析
大家好,今天分享一篇
Linux驱动
软件设计思想的文章。由于文章较长,可以先收藏后再慢慢看。一、
Linux驱动
的软件架构1.1出发点为适应多种体系架构的硬件,增强系统的可重用和跨平台能力。
ST小智
·
2023-09-09 10:31
linux
rk3288 i2c-tools使用
i2c-tools源码下载
Linux驱动
程序:drivers/i2c/i2c-dev.cI2C-Tools-4.2:https://mirrors.edge.kernel.org/pub/software
习惯就好zz
·
2023-09-09 09:35
#
I2C
i2c
i2c-tools
linux
kernel
100ask
【深入理解Linux内核锁】七、互斥体
我的圈子:高级工程师聚集地我是董哥,高级嵌入式软件开发工程师,从事嵌入式
Linux驱动
开发和系统开发,曾就职于世界500强企业!创作理念:专注分享高质量嵌入式文章,让大家读有所得!
卍一十二画卍
·
2023-09-08 16:19
深入理解Linux驱动程序开发
#
Linux内核锁
linux
Linux驱动开发
Linux内核锁
嵌入式硬件
ubuntu
Linux驱动
程序开发快速参考
Linux设备驱动程序开发快速参第1章设备驱动简介从这里开始,我们进入内核编程的世界.第2章介绍了模块化,解释了内部的秘密以及展示了运行模块的代码.第2章谈论字符驱动以及展示一个基于内存的设备驱动的代码,出于乐趣对它读写.使用内存作为设备的硬件基础使得任何人可以不用要求特殊的硬件来运行代码.调试技术对程序员是必备的工具,第4章介绍它.对那些想分析当前内核的人同样重要的是并发的管理和竞争情况.第5章
流媒体程序员
·
2023-09-08 14:17
linux
程序开发
struct
semaphore
list
class
嵌入式
Linux驱动
开发(LCD屏幕专题)(三)
1.硬件相关的操作LCD驱动程序的核心就是:分配fb_info设置fb_info注册fb_info硬件相关的设置硬件相关的设置又可以分为3部分:引脚设置时钟设置LCD控制器设置2.在设备树里指定LCD参数framebuffer-mylcd{compatible="100ask,lcd_drv";pinctrl-names="default";pinctrl-0=;backlight-gpios=;
嵌入式学习者。
·
2023-09-08 10:20
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式
Linux驱动
开发(LCD屏幕专题)(四)
单Buffer的缺点与改进方法1.单Buffer的缺点如果APP速度很慢,可以看到它在LCD上缓慢绘制图案即使APP速度很高,LCD控制器不断从Framebuffer中读取数据来显示,而APP不断把数据写入Framebuffer假设APP想把LCD显示为整屏幕的蓝色、红色很大几率出现这种情况:LCD控制器读取Framebuffer数据,读到一半时,在LCD上显示了半屏幕的蓝色这是APP非常高效地把
嵌入式学习者。
·
2023-09-08 10:20
Linux
驱动以及裸机
linux
驱动开发
运维
Linux驱动
开发
1.Linux如何找到设备文件通过文件名和设备号设备号:主设备号和次设备号主设备号区分不同种类的设备次设备号区分同一类型不同的设备Linux的驱动链表会管理这些设备驱动1.添加(编写完驱动程序加载到内核)2.查找(调用驱动程序,用户层去调用open)驱动插入链表的顺序由设备号检索2.驱动开发驱动的开发就是添加驱动和调用驱动添加驱动:设备名设别号驱动函数(操作寄存器驱动IO口)用户态open()会进
C有点难。
·
2023-09-08 07:15
Linux
驱动开发
linux
linux驱动
开发--day1(驱动、内核模块及相关命令、内核模块传参)
#include#includeinta=10;module_param(a,int,0664);MODULE_PARM_DESC(a,"thisisavalue");charb=97;module_param(b,byte,0664);MODULE_PARM_DESC(b,"thisisachar");char*c="hi";module_param(c,charp,0664);MODULE_P
林黛玉倒拔垂杨柳~
·
2023-09-07 11:56
linux
驱动开发
c语言
嵌入式
Linux驱动
开发(LCD屏幕专题)(二)
一、结合APP分析LCD驱动程序1、openapp:open("/dev/fb0",...)主设备号:29,次设备号:0--------------------------------------------------------------kernel:fb_open//fbmem.cstructfb_info*info;info=get_fb_info(fbidx);if(info->fbo
嵌入式学习者。
·
2023-09-07 11:23
Linux
驱动以及裸机
linux
驱动开发
运维
Linux驱动
编程(驱动程序基石)(下)
一、中断的线程化处理复杂、耗时的事情,尽量使用内核线程来处理。上节视频介绍的工作队列用起来挺简单,但是它有一个缺点:工作队列中有多个work,前一个work没处理完会影响后面的work。解决方法有很多种,比如干脆自己创建一个内核线程,不跟别的work凑在一块了。对于中断处理,还有另一种方法:threadedirq,线程化的中断处理。中断的处理仍然可以认为分为上半部、下半部。上半部用来处理紧急的事情
嵌入式学习者。
·
2023-09-07 11:52
Linux
驱动以及裸机
linux
数据结构
运维
嵌入式硬件
嵌入式
Linux驱动
开发(LCD屏幕专题)(一)
一、LCD简介总的分辨率是yres*xres。1.1、像素颜色的表示以下三种方式表示颜色1.2、如何将颜色数据发送给屏幕每个屏幕都有一个内存(framebuffer)如下图,内存中每块数据对用屏幕上的一个像素点,设置好LCD后,只需把颜色数据写入framebuffer即可。二、Framebuffer驱动框架Framebuffer驱动属于字符设备驱动,我们先说字符设备驱动框架如下图:驱动主设备号构造
嵌入式学习者。
·
2023-09-07 11:47
Linux
驱动以及裸机
linux
驱动开发
面经——嵌入式常见面试题总结100题(下)
1)作者:天泉证道发布时间:2018-11-0809:33:43网址:https://guoyanzhang.blog.csdn.net/article/details/83855895目录51,简述
LINUX
行稳方能走远
·
2023-09-06 03:49
嵌入式知识
linux
嵌入式
面试
echo 写设备节点后无限循环调用
linux驱动
下的write函数
一、用echo1>dev/chardevnode0命令往chardevnode0这个设备节点写数据的时候发现老是无限循环调用
linux驱动
下的write函数。
Donald Linux
·
2023-09-05 18:33
Linux学习
【ZYNQ】
Linux驱动
之梦开始的地方
软件版本:Vivado2021.1操作系统:WIN1064bit、Ubuntu18.04硬件平台:ZYNQUltraScale文章目录1.1系统框图1.2介绍1.2.1寄存器查询手册1.2.2物理地址与虚拟地址1.2.3MIO介绍1.2.4PS的LED引脚介绍1.3搭建工程1.4程序分析1.4.1驱动程序分析1:内存映射2:设置MIO功能3:设置MIO输出电流的大小4:设置引脚是SchmittTr
菜虚鲲001
·
2023-09-05 15:29
linux
fpga
ZYNQ
Linux驱动
——input子系统
一、input子系统基本框架Linux内核为了两个目的:简化纯输入类外设(如:键盘、鼠标、游戏杆、轨迹球、触摸屏。。。等等)的驱动开发统一输入类外设产生的数据格式(structinput_event),更加方便应用层编程设计了输入子系统事件处理层:接收来自核心层上报的事件,并选择对应的handler(事件处理器structinput_handler)去处理。内核维护着多个事件处理器对象,每个inp
西班牙大马猴
·
2023-09-04 16:19
linux
运维
Cortex-A7 架构
参考《Cortex-A7TechnicalReferenceManua.pdf》和《ARMCortex-A(armV7)编程手册V4.0.pdf》【正点原子】I.MX6U嵌入式
Linux驱动
开发指南V1.6
是东东东啊
·
2023-09-04 11:48
Linux驱动学习
架构
上一页
8
9
10
11
12
13
14
15
下一页
按字母分类:
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
其他