GNU/Linux嵌入式快速编程

GNU/Linux嵌入式快速编程 pdf epub mobi txt 电子书 下载 2025

[美] 鲁道夫·焦梅蒂 著,俞辉 译
图书标签:
  • GNU/Linux
  • 嵌入式
  • 快速编程
  • 开发
  • 技术
  • 实践
  • 系统
  • 教程
  • 开源
  • 硬件
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111598299
版次:1
商品编码:12358517
品牌:机工出版
包装:平装
丛书名: Linux/Unix技术丛书
开本:16开
出版时间:2018-05-01
用纸:胶版纸
页数:487

具体描述

内容简介

本书可以分为两大部分:其中部分是第二部分的基础。部分介绍如何安装一个宿主机和开发系统以及如何通过串口控制台访问嵌入式平台。首先将看到一些引导加载程序的命令以及C的编译器和交叉编译器,之后会介绍内核模块、设备驱动程序以及一些基于网络文件系统的文件系统。读者会在主机上使用模拟器来运行一个完整的目标机Debian系统,包括在Bash、PHP和Python下面的系统守护进程和脚本程序,以及闪存和Linux的MTD。接着会引入JFFS2和UBIFS系统,以及两个非常的嵌入式系统Yocto和OpenWrt。第二部分开始深入介绍所有外围设备,包括其所支持的嵌入式工具包以及如何访问和使用它们,并通过实例展示如何管理它们。

目录

目  录?Contents
译者序
前言
第一部分 基础知识
第1章 开发系统的安装 2
1.1 嵌入式术语 2
1.2 系统概述 4
1.2.1 BeagleBone Black开发平台 4
1.2.2 SAMA5D3 Xplained开发平台 6
1.2.3 Wandboard开发平台 8
1.3 安装开发系统 11
1.3.1 设置宿主机 12
1.3.2 设置BeagleBone Black开发平台 14
1.3.3 设置SAMA5D3 Xplained开发平台 24
1.3.4 设置Wandboard开发平台 30
1.4 设置开发系统 35
1.4.1 通过USB、网络、overlay系统设置BeagleBone Black 36
1.4.2 通过USB、网络设置SAMA5D3 Xplained 39
1.4.3 通过USB、有线网络和无线网络设置Wandboard 42
1.4.4 通用设置 45
1.5 总结 46
第2章 管理系统控制台 47
2.1 基本操作系统管理 47
2.1.1 文件操作和命令 47
2.1.2 软件包管理 55
2.1.3 管理内核消息 60
2.2 快速浏览bootloader 62
2.2.1 环境 63
2.2.2 管理存储设备 65
2.2.3 GPIO管理 69
2.2.4 访问一个I2C设备 70
2.2.5 从网络加载文件 71
2.2.6 内核命令行 75
2.3 总结 76
第3章 C编译器、设备驱动及其开发技术 77
3.1 C编译器 77
3.1.1 宿主机和目标板不同的体系结构 78
3.1.2 编译一个C程序 80
3.1.3 编译一个内核模块 85
3.2 内核和DTS文件 87
3.2.1 重新编译内核 87
3.2.2 设备树 91
3.3 什么是设备驱动? 93
3.3.1 字符设备、块设备和网络设备 94
3.3.2 模块与内置设备 95
3.3.3 modutils(管理内核模块的一个软件包) 95
3.3.4 编写一个设备驱动 97
3.4 根文件系统 106
3.4.1 /dev目录 107
3.4.2 tmpfs文件系统 109
3.4.3 procfs文件系统 110
3.4.4 sysfs文件系统 113
3.5 网络文件系统 115
3.5.1 本机输出一个NFS 116
3.5.2 设置内核以挂载NFS 117
3.5.3 通过U-Boot和内核命令行使用NFS 119
3.5.4 NFS开发 122
3.6 模拟器的使用 122
3.6.1 执行一个程序 123
3.6.2 进入一个ARM的根文件系统树 124
3.7 总结 128
第4章 使用脚本和系统守护进程的快速编程 129
4.1 设置系统 129
4.2 系统守护进程 130
4.2.1 有用的和即用的守护进程 131
4.2.2 系统守护进程管理 132
4.3 脚本编程语言 149
4.3.1 基于PHP管理LED 150
4.3.2 基于Python管理LED 153
4.3.3 基于Bash管理LED 155
4.4 编写自定义守护进程 159
4.4.1 基于C的守护进程 160
4.4.2 基于PHP的守护进程 161
4.4.3 基于Python的守护进程 162
4.4.4 基于Bash的守护进程 162
4.5 总结 163
第5章 配置一个嵌入式操作系统 164
5.1 MTD与块设备 164
5.1.1 什么是MTD设备 165
5.1.2 管理MTD设备 167
5.1.3 Flash存储系统 170
5.2 OpenWrt系统 179
5.2.1 使用缺省配置 180
5.2.2 添加(准)LAMP系统 188
5.2.3 添加自定义配置 197
5.3 Yocto系统 200
5.3.1 使用缺省配置 201
5.3.2 添加图形支持 210
5.3.3 添加自定义程序 212
5.4 总结 215
第二部分 外围设备
第6章 通用输入输出信号——
GPIO 218
6.1 GPIO 218
6.1.1 BeagleBone Black系统下的
GPIO 221
6.1.2 SAMA5D3 Xplained系统下的GPIO 221
6.1.3 Wandboard系统下的GPIO 222
6.2 Linux下的GPIO 223
6.3 访问GPIO 225
6.3.1 基于Bash的使用 225
6.3.2 基于C的使用 227
6.4 基于脚本语言使用GPIO 234
6.4.1 基于PHP的使用 235
6.4.2 基于Python的使用 236
6.5 内核管理GPIO 237
6.5.1 使用GPIO的输入设备 238
6.5.2 LED和触发器 244
6.6 总结 248
第7章 串行端口和TTY设备——
TYY 249
7.1 TTY、串行和串口线 249
7.1.1 电气线路 250
7.1.2 BeagleBone Black系统下的
TTY 251
7.1.3 SAMA5D3 Xplained系统下的TTY 253
7.1.4 Wandboard系统下的TTY 254
7.2 串行端口的实现 254
7.3 Linux系统下的串行端口 255
7.4 通信参数 256
7.5 访问TTY 256
7.5.1 距离传感器 257
7.5.2 LF低频RFID读写器 261
7.6 使用SLIP管理内核中的TTY 263
7.7 总结 268
第8章 通用串行总线——USB 269
8.1 通用串行总线 269
8.1.1 电气线路 270
8.1.2 BeagleBone Black系统下的
USB端口 270
8.1.3 SAMA5D3 Xplained系统下
的USB端口 270
8.1.4 Wandboard系统下的USB
端口 271
8.2 Linux下的USB总线 271
8.2.1 USB主机介绍 272
8.2.2 USB设备介绍 275
8.3 USB工具 284
8.4 raw USB总线 286
8.5 总结 290
第9章 内部集成电路——I2C 291
9.1 内部集成电路总线 291
9.1.1 电子线路 292
9.1.2 SAMA5D3 Xplained系统下的I2C端口 293
9.1.3 Wandboard系统下的I2C
端口 294
9.2 Linux系统下的I2C总线 294
9.3 I2C工具 295
9.4 访问I2C设备 296
9.4.1 EEPROM、ADC和IO
扩展板 296
9.4.2 温湿度和压力传感器 303
9.4.3 串行端口 307
9.5 raw I2C总线 310
9.5.1 

前言/序言

Preface?前  言嵌入式计算机在最近几年变得非常复杂,而开发者专注的问题应该是如何解决当下的问题,而不用在寻找更好的外设(简称为外设)或者学习如何管理它们这些方面浪费时间。 对于有经验的嵌入式程序员和工程师来说,最大的挑战是把一个想法变成现实到底需要多长时间,本书将展示如何做到这一点。
本书展示了行业中外部环境是如何通过特定的外设进行交互的。这里将使用最新的Linux内核版本4.x,软件系统基于Debian/Ubuntu系统,而嵌入式系统则使用OpenWrt和Yocto。
本书涉及的开发板平台基于目前元件市场和专业开发板制造商中最流行的CPU。在简要介绍完每个平台之后,本书将展示如何设置这些平台,使之能运行一个完整的发行版GNU/Linux并且获得对其系统控制台的访问权。之后将介绍如何针对每个平台安装一个完整的开发系统,使开发者能够运行自己开发的程序。
第一步将在嵌入式套件下进行编程,使用C、Bash脚本或者Python/PHP等语言来编程以访问外设。之后将会介绍更多的设备驱动程序和访问外设的内容以奠定坚实的基础。读者将学习通过C程序或者脚本语言(Bash/Python)和外设进行交互,以及如何为特定的硬件配置相应的设备驱动程序。
本书使用的硬件设备几乎涵盖我们所能见过的所有连接各种开发板的方式,包括I2C、SPI、USB、1-wire总线、串行总线以及各类数字和模拟设备等。
本书中使用的编程语言依据的原则是,以最快速最简单的解决方案来解决当前的问题。特别是可以找到Bash、C、PHP、Python的示例代码。
在这些章节中将会需要使用一个守护进程、一个内核模块或者可能需要重新编译整个内核。这种情况下添加了一个简短的描述,包括读者应该做什么、可以从哪里得到更多的信息和使用工具。但要说明的是,管理一个GNU/Linux系统或者内核模块等一些基本的技能是必需的。
本书涵盖内容本书可以分为两大部分:其中第一部分是第二部分的基础。第一部分介绍如何安装一个宿主机和开发系统以及如何通过串口控制台访问嵌入式套件。首先将看到一些引导加载程序的命令以及C的编译器和交叉编译器,之后会介绍内核模块、设备驱动程序以及一些基于网络文件系统的文件系统。读者也会在主机上使用模拟器来运行一个完整的目标机Debian系统,读者也会在Bash、PHP和Python下面看到系统的守护进程和脚本程序,读者还会看到闪存和Linux的MTD(Memory Technology Device,内存技术设备)。其中会介绍JFFS2和UBIFS文件系统,以及两个非常著名的嵌入式系统Yocto和OpenWrt。
下面是第一部分中每章的简短介绍:
第1章介绍目前工业应用中的最常用的三个开发环境:BeagleBone Black系统、SAMA5 D3 Xplained系统和WandBoard系统。在简要介绍了每个开发板之后,我们将看到如何设置它们以便运行一个完整的GNU/Linux系统。我们也将看到如何在每个平台(和虚拟机中)上安装一个完整的开发系统。
第2章首先将展示如何安装开发包,然后将进一步探索串口控制台和运行在其上的shell。最后将介绍引导系统bootLoader的命令。
第3章将讲述C编译器以及交叉编译器,之后我们将看到内核模块、设备驱动程序以及一些基于NFS的文件系统,最后会看到一个开发者在主机上如何使用模拟器来运行一个完整的目标机Debian系统。
第4章将介绍系统守护进程(描述它们是什么以及如何使用它们),之后将使用Bash、PHP和Python语言来进行脚本编程。
第5章首先介绍闪存和管理闪存的软件,之后将展示Linux的内存技术设备(MTD)和两个主要的文件系统JFFS2和UBIFS,并运行它们。最后将展示如今两个最著名的嵌入式系统——Yocto和OpenWrt,学习如何在这些嵌入式系统上编写应用程序,并且把该程序添加到嵌入式系统中。
第二部分开始深入介绍所有外设。如果你是一位嵌入式开发人员,在你的职业生涯所遇到的各种外设都会涉及。在本书中,对于每一个外设,都会介绍其所支持的嵌入式套件以及如何访问和使用它。对于每种设备类型,都会结合实例展示如何管理它。
下面是第二部分中每章的简短介绍:
第6章首先简短描述GPIO线路,之后将会看到它们在嵌入式套件上是如何布局的,接着再详细了解如何以非常简单(但效率低)的方式访问这些线路,然后再以更智能(但更复杂)的方式重新再次访问。最后会在内核中通过IRQ管理和LED设备支持再快速地介绍一下GPIO管理机制。
第7章将介绍串行端口(简称串口),串口是计算机中最重要的一个外设接口(至少可以让计算机用于控制自动化行业等)。简要描述串行端口和串行设备之后,我们将通过使用一个实际的串口设备来看如何在一个GNU/Linux系统中对其进行管理。最后我们将在内核中学会如何通过一条串行线来实现网线连接的两个嵌入式系统(二者通过一条以太网电缆连接)之间的通信。
第8章将介绍USB总线,这是一种通用的总线,广泛应用于现代计算机。人们可以将各种电子设备连接到计算机,例如硬盘、键盘或其他使用相同USB端口的串行设备。
第9章将介绍I2C总线,它通常用于连接板上设备,即主计算机会将所有设备都放在同一块板上。一些
掌握嵌入式系统开发的核心秘籍 在当今科技飞速发展的时代,嵌入式系统已渗透到我们生活的方方面面,从智能手机、家用电器到汽车电子、工业自动化,它们无处不在,默默地支撑着现代社会的运转。如果你渴望深入理解和掌握嵌入式系统开发这项极具挑战性又充满前景的技能,那么,一本真正能引领你快速入门并深入实践的工具书将是不可或缺的。 本书并非一本泛泛而谈的教材,而是为所有立志成为优秀嵌入式工程师的朋友量身打造的实战指南。我们深知,对于许多初学者而言,面对复杂的硬件平台、多样的开发工具链以及层出不穷的软件技术,往往感到无从下手,容易迷失在概念的海洋中。因此,本书的编写初衷便是帮助读者迅速跨越初期的学习障碍,建立扎实的理论基础,并立即投入到实际的项目开发中去。 本书特色 理论与实践的完美融合: 我们坚信,脱离实际的理论是苍白的,而缺乏根基的实践是危险的。本书在讲解每一个概念时,都会紧密结合实际的应用场景和代码示例。读者将不会仅仅学习到“是什么”,更能理解“为什么”以及“如何做”。从最基础的 C 语言在嵌入式开发中的应用,到复杂的实时操作系统原理,再到与硬件交互的底层技术,每一个环节都力求清晰易懂,并提供可运行的代码片段,让读者能够亲手操作,加深理解。 面向实际工程的技能培养: 嵌入式开发不仅仅是编写代码,更涉及到整个工程的流程和方法。本书将引导读者学习如何搭建开发环境,如何进行交叉编译,如何调试程序,如何进行性能优化,甚至如何进行基本的硬件选型和分析。这些都是在实际嵌入式项目中不可或缺的关键技能,本书将以一种系统化的方式将它们呈现出来,帮助读者在学习过程中就养成良好的工程习惯。 精选核心技术,拒绝碎片化: 嵌入式领域技术繁杂,但核心的技术却是相对稳定的。本书专注于讲解那些在绝大多数嵌入式开发场景中都会遇到的关键技术和工具。我们不会试图覆盖所有小众的工具或过时的概念,而是聚焦于当下主流且极具价值的技术栈。例如,我们会深入讲解 C 语言作为嵌入式开发的首选语言的特性,介绍嵌入式 Linux 的基础框架和常用命令,并重点阐述如何利用成熟的开发工具链高效地进行开发和调试。 循序渐进,由浅入深: 本书的章节安排经过精心设计,力求符合读者的认知规律。我们从最基础的嵌入式系统概述、开发环境搭建开始,逐步过渡到 C 语言在嵌入式领域的深度应用,然后深入讲解嵌入式 Linux 的核心组件和开发流程。后续章节将进一步探索更高级的主题,如进程与线程管理、内存管理、设备驱动程序开发、网络通信等。这种循序渐进的学习路径,确保了读者能够稳步提升,逐步掌握复杂的知识体系。 贴近硬件的讲解: 嵌入式系统最显著的特点就是“嵌入”在硬件中。因此,理解硬件与软件的交互至关重要。本书将会在讲解软件技术的同时,适时地引入硬件相关的概念,例如内存映射、I/O 端口、中断等,并演示如何在软件层面进行相应的操作。虽然本书并非一本硬件设计手册,但它将帮助读者建立起清晰的软硬件协同工作的认知模型。 内容梗概 本书将带领读者踏上一段精彩的嵌入式系统开发之旅,内容涵盖以下关键领域: 嵌入式系统入门: 什么是嵌入式系统?它的特点、优势以及在不同领域的应用。我们将一起探索嵌入式系统的基本架构和核心组成部分,为后续的学习打下坚实的基础。 C 语言在嵌入式开发中的精髓: C 语言是嵌入式开发的基石。本书将重点回顾和深化 C 语言在嵌入式开发中的应用,包括指针的深入理解、位操作、内存管理技巧、结构体与联合体的巧妙运用,以及如何编写高效、健壮的嵌入式 C 代码。我们将探讨如何避免常见的 C 语言陷阱,以及如何利用 C 语言的特性来充分发挥硬件的性能。 嵌入式 Linux 开发环境搭建与基础: 学习如何在一台强大的 PC 上搭建一个完整的嵌入式 Linux 开发环境。我们将介绍交叉编译工具链的安装与配置,讲解如何使用命令行工具进行基本的文件操作和系统管理,以及如何在目标板上运行和调试你的第一个嵌入式 Linux 程序。 深入理解嵌入式 Linux: 掌握嵌入式 Linux 的核心概念,包括 Linux 内核的编译与配置、文件系统结构、用户空间与内核空间的通信机制。我们将深入探讨嵌入式 Linux 系统中的进程管理、线程同步、内存分配策略,以及如何高效地进行系统调试和性能分析。 设备驱动程序开发入门: 嵌入式系统离不开对各种硬件设备的控制。本书将为你揭示设备驱动程序的奥秘,讲解如何编写简单的字符设备驱动,理解中断处理机制,以及如何通过 sysfs 和 procfs 等接口与用户空间进行交互。我们将以实际的硬件设备为例,演示驱动程序的编写和调试过程。 嵌入式系统中的网络通信: 在物联网时代,网络通信能力是嵌入式系统不可或缺的一部分。本书将介绍嵌入式 Linux 下的网络编程基础,包括 Socket 编程、TCP/IP 协议栈的使用,以及如何实现常见的网络通信协议,如 HTTP、MQTT 等,帮助你构建具备联网功能的嵌入式应用。 实用的开发技巧与工具: 除了理论知识,本书还将分享大量实用的开发技巧和调试方法。我们将介绍各种常用的调试工具,如 GDB、Valgrind,以及日志系统、性能分析工具等,帮助读者快速定位和解决开发过程中遇到的各种问题。 谁适合阅读本书? 计算机科学、电子工程等相关专业的在校学生: 如果你对嵌入式系统开发充满好奇,并希望在毕业前掌握一项热门的硬技能,那么本书将是你的理想选择。 希望转型进入嵌入式开发领域的软件工程师: 无论你是 Web 开发、桌面应用还是其他领域的开发者,本书都能帮助你快速建立起嵌入式开发所需的核心知识体系。 业余爱好者和创客: 如果你对 DIY 电子项目、智能硬件开发有浓厚的兴趣,并希望用代码驱动硬件,那么本书将为你提供所需的理论和实践指导。 希望提升嵌入式开发技能的初级嵌入式工程师: 如果你已经有了一些嵌入式开发经验,但感觉在某些方面不够扎实,或者想要系统地学习更广泛的嵌入式 Linux 技术,本书也能为你提供宝贵的参考。 开启你的嵌入式开发之旅 本书并非简单地罗列知识点,而是希望通过引导性的讲解和大量的实践案例,激发你对嵌入式系统开发的兴趣,培养你解决实际问题的能力。我们相信,通过认真研读本书并动手实践,你将能够: 自信地搭建和配置嵌入式 Linux 开发环境。 熟练运用 C 语言进行高效的嵌入式系统编程。 理解嵌入式 Linux 的核心原理和运行机制。 掌握编写和调试简单的设备驱动程序。 构建具备网络通信能力的嵌入式应用。 养成良好的嵌入式软件工程开发习惯。 掌握嵌入式系统开发,就是掌握了创造智能世界的钥匙。现在,翻开本书,让我们一起踏上这段充满挑战与机遇的精彩旅程,用你的智慧和代码,构建更加智能、美好的未来!

用户评价

评分

读完《GNU/Linux嵌入式快速编程》的封面介绍,我脑海中浮现出许多关于具体开发实践的疑问。例如,在网络通信方面,书中是否会深入讲解TCP/IP协议栈在嵌入式Linux上的配置和优化,以及如何利用Socket API进行高效的网络编程?对于嵌入式设备间的通信,是否会涵盖一些诸如CAN总线、Modbus等工业通信协议的应用案例?此外,我一直对嵌入式系统的安全性感到担忧,书中是否会提及一些基础的安全加固措施,例如用户权限管理、文件系统加密,或者防范常见网络攻击的策略?鉴于其“快速编程”的定位,我预期书中会提供大量可以直接套用的代码片段和配置模板,帮助读者迅速解决实际开发中遇到的问题。当然,我也希望这本书能够引导读者建立起更深层次的理解,而不仅仅是停留在“拿来主义”的层面。

评分

刚拿到这本《GNU/Linux嵌入式快速编程》,还在我满心期待地翻阅时,就立刻被它详实的内容和深入浅出的讲解所吸引。尽管我还没有完全深入到每一个章节,但初步浏览下来,我能感受到作者在选择主题上的独到之处。例如,书中对嵌入式系统硬件基础的介绍,似乎非常细致,不是那种蜻蜓点水式的带过,而是真正从底层原理出发,讲解了CPU架构、内存管理、I/O接口等核心概念。这一点对于我这样想要构建自己嵌入式系统底层知识体系的读者来说,无疑是巨大的福音。我尤其关心书中对特定嵌入式芯片家族的深入剖析,例如是否会对ARM Cortex-M系列进行详细的寄存器讲解,或者是否有关于FPGA与SoC结合的案例分析。虽然这部分内容我还没来得及细读,但仅从目录和前言的描述,就足以让我对它的实用性和前瞻性充满信心。我预期这本书能帮助我更好地理解嵌入式系统的工作机制,为后续更复杂的开发打下坚实的基础。

评分

这本书的“快速编程”几个字,让我对它的实操性和效率性有了很高的期望。我之前接触过不少关于嵌入式开发的书籍,但很多都过于理论化,或者需要花费大量时间去搭建环境和学习基础知识。《GNU/Linux嵌入式快速编程》似乎瞄准的是希望能够快速上手、高效产出的读者群体。我关注书中关于代码示例的质量和数量,是否能覆盖到实际开发中的常见场景。例如,在设备驱动开发方面,是否会提供一些传感器、通信模块(如SPI、I2C、UART)的驱动开发实例,并且这些示例是否能够直接在常见的嵌入式开发板上运行?另外,书中对于嵌入式系统调试的策略和技巧,是否会有专门的章节介绍?远程调试、内存泄漏检测、性能分析等,都是提升开发效率的关键环节。如果这本书能在这方面提供实用建议和工具使用指南,对我来说将非常有价值。

评分

作为一个长期在Linux环境下进行软件开发的程序员,我对《GNU/Linux嵌入式快速编程》的期待,很大程度上源于它对GNU/Linux生态系统在嵌入式领域的应用。我比较好奇的是,书中对于交叉编译工具链的搭建和使用,是否会有详尽的步骤指导,比如如何配置GCC、GDB等工具,以及如何针对不同的目标平台进行优化。另外,对于嵌入式Linux发行版的选择和定制,例如Yocto Project或Buildroot,作者的讲解深度如何?我希望能够了解到如何在资源受限的环境下,高效地构建和部署定制化的Linux系统,包括内核的配置、驱动的开发以及文件系统的构建。书中关于应用程序开发的部分,是否会涉及多线程、进程间通信等并发编程技术,以及如何利用Linux提供的API来实现高效的数据处理和系统控制?这些都是我在实际嵌入式项目开发中经常会遇到的挑战,如果书中能够提供清晰的解决方案和代码示例,那将极大地提升我的开发效率。

评分

从书名来看,《GNU/Linux嵌入式快速编程》似乎非常注重实战性,这一点正是吸引我的地方。我希望它能提供一些关于嵌入式系统性能优化的技巧和方法,例如如何减少代码的内存占用,如何提高程序的执行速度,以及如何进行功耗管理。在嵌入式开发中,这些往往是至关重要的考量因素。我特别想知道,书中是否会探讨一些常用的嵌入式通信协议,比如MQTT、CoAP等,以及如何在Linux环境下实现这些协议的客户端或服务器端。此外,对于一些更高级的主题,例如实时操作系统(RTOS)与Linux的结合,或者容器化技术(如Docker)在嵌入式设备上的应用,作者是否会涉及?这些都是当前嵌入式领域的热点技术,如果书中能提供一些前瞻性的指导,那我将非常欣喜。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有