自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

a568713197的博客

嵌入式、LInux开发、电子

  • 博客(128)
  • 资源 (6)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Linux嵌入式工程师养成手册-----目录

本篇博客是为了让大家更加便捷去查找某一篇博客的内容前言Linux嵌入式工程师养成手册-----前言基础C语言《C和指针》学习笔记(一)第一章~第六章《C和指针》学习笔记(二)第七~第十章《C和指针》学习笔记(三)第十一章~第十五章《C和指针》学习笔记(四)第十六章~第十七章如何理解C语言的声明c语言中关于const的使用C语言中memcpy和memset的使用详解为什么不能...

2020-02-12 22:34:27 972 1

原创 2019年终总结与2020年展望

前言转眼间一年就过去了,又是拖到了1.14号才写年终总结,已经期末考试结束回到了家了,可以好好回顾一下2019年,然后对2020做一些规划和展望2019 总结收获我前半年曾经一直为了电赛废寝忘食的准备,为了得奖整夜整夜的泡在实验室,期间忽略了女朋友的感受,最后到了比赛的时候也是太过于功利,太看中结果,但是最后真的想通了,重要的不是结果而是奋斗其中的过程,在准备电赛时认识了很多小伙伴,也在准...

2020-01-15 22:19:33 910

原创 2018年终总结与2019展望

    这是一个迟到了年终总结,新的一年已经过了14天了,因为前段时间的期末考试,所以年终总结拖到了现在才写。    回顾2018年,我学到了很多,收获了很多,但也有不少的迷茫。    学习    从三月份开始学习32将近10个月的时间,32已经搞得比较顺手了,做了四个比较成型的个人项目,参加了三次电赛,玩了数不清的小模块,对32也有了一个差不多的了解,也渐渐的喜欢上了玩板子的时光,一...

2019-01-14 16:54:57 6526 22

原创 Android手机“核心科技”---Vibrator(马达)驱动分析
原力计划

前言我的博客已经断更很久了,因为疫情的原因没能开学,也无法去公司报道实习,在家十分的颓废,学习的时间零零散散,更是没有什么时间来写博客的@@(铁废物)。最近疫情好转,自己也来深圳这边某知名IC厂商(同样也让人喊YES的那个)实习,在手机部门做一些驱动相关内容的工作,以前有做过Linux驱动开发,安卓以前没有接触过,在公司就慢慢开始学习,自己下班回家后后也再分析分析代码,写写博客。因为自己也是一个初学者,在分析上有什么不正确的地方也希望大家可以指正注意:这些博客没有任何从公司电脑上拷贝的资料,参照的代码

2020-07-04 16:46:56 3161 4

原创 十种常用排序算法总结
原力计划

前言常用的有十种排序算法,包含了插入、选择、交换、分治、线性五种类别,本篇博客将对这十种排序算法做一个总结,并附带C++代码总体表格分别来看插入排序在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。void InserttSort(int array[], int length){ ...

2020-03-04 17:53:54 397

原创 WSL+VScode快速搭建Linux下C/C++开发环境

背景自己最近开始了复习数据结构以及刷题,因为不太喜欢Windows下IDE解决所有问题的方式,而且想要再练习练习Makefile的编写以及GDB调试所以需要搭建一个Linux环境来进行代码的编译运行,摆在我面前有三种方案:Linux实体机Linux虚拟机WSL(Windows Subsystem for Linux,Windows下的Linux子系统)为什么选择这个方案搭建Linu...

2020-03-01 22:08:20 1792

转载 cin 在 Ctrl+Z 或 Ctrl+D 后无法获取输入

自己写了一个数字计数的小程序,我先输入一堆数字,输入完成后再输入一个要搜索的数字但是我输入完数字集合按下ctrl+d后,程序就直接结束了,根本不会在第二在输入的地方停留,我在网上查了查,发现很多人遇到了这个问题首先看到的解决方法是,输入完成后加一句cin.clear();但是我用了没有效果,又看到可以再加一句cin.sync();用了以后同样没有效果,前一个的作用是将错误状态更改为...

2020-02-15 09:49:10 353

原创 Linux嵌入式工程师养成手册-----前言

为什么会有这些博客自己现在已经要进入大三下学期,很快就会面临秋招,自己从进入大学开始就从事嵌入式相关的开发,从arduino到STM32再到ARM+Linux开发,自己接触了不少的东西,写这些博客一个是为了对自己以往的知识进行一个总结,再一个也是希望可以给入门嵌入式的各位同学们提供一些帮助,都是从无到有,从看别人的到写自己的也是一个分享的过程。可能大家觉得总结并不是特别的重要,但是我想说把知识...

2020-02-12 21:51:33 3155 2

原创 ROCK PI4介绍与上手

在五月份左右的时候将自己的树莓派2B出掉了,在暑假时想买树莓派4B但是拍下了一直不发货而且还爆出了USB type-C口的设计缺陷就默默选择了退款,后来发现了ROCK PI4这款板子,样子看上去很像是树莓派,不过采用了不同的SOC方案,纸面性能不错很让人眼馋ROCK PI4是Radxa推出的开源单板计算机,采用的是瑞芯微的RK3399的6核(2A72+4A53)高性能SOC,具体参数如下可以...

2019-12-18 19:15:17 4162 3

原创 为什么不能在中断中使用printf--不可重入函数

前言前两天在笔试的时候遇到了关于能否在中断中使用printf的问题,当时有点蒙,笔试结束后查阅了资料,这里进行以下总结可重入函数和不可重入函数printf不能在中断中被调用的原因是它是一个不可重入函数,而在中断中要避免调用不可重入函数,首先我们先说说什么是可重入函数,什么是不可重入函数简单说来,区分一个函数是否可重入就是看这个函数能否在未返回的时候再次被调用。而造成一个函数不可重入的原因往...

2019-12-16 20:07:25 991

原创 Linux驱动开发(十九):SPI驱动

#简介Linux下的SPI驱动和I2C驱动类似,也是分为主机控制器驱动和设备驱动在LInux

2019-12-16 18:43:29 1770

原创 Linux驱动开发(十八):I2C驱动

简介I2C是我们在单片机开发时时常会用到的通讯接口,用来与一些字符型设备进行通信,比如:陀螺仪、温度传感器等等,同样的在Linux下I2C驱动也是十分重要的。有了操作系统的加持,我们不用像在32上那样去软件实现IIC协议,更多的是去学习Linux I2c的驱动框架,首先我们先来了解一下它的驱动框架,如下图Linux 的I2C体系结构主要分为3个部分I2C核心提供了I2C总线驱动和设备注...

2019-11-27 20:15:25 895

原创 Linux驱动开发(十七):LCD驱动(Framebuffer子系统)

Framebuffer设备在裸机开发LCD的时候要初始化eLCDIF控制器,重点是LCD屏幕width、height、hspw、hbp、hfp、vspw、vbp、vfpLinux中的应用程序最终通过操作LCD的显存来实现在LCD上显示字符、图片等信息,因为虚拟内存的存在,驱动程序设置的显存和应用程序访问的显存要是同一片物理内存Framebuffer子系统,帧缓冲,简称fb,fb是一种机制,将...

2019-11-26 20:30:14 628 2

原创 Linux驱动开发(十六):INPUT子系统

简介输入设备是典型的字符驱动,其工作原理一般是在按键、触摸等动作发生时在底层产生一个中断(或者驱动通过Timer定时查询),然后CPU通过SPI、I2C或外部存储器总线读取键值、坐标等数据,并将它们放到一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取它们的键值、坐标等数据在这些工作中只有中断、读取键值(坐标值)是与设备相关的,而输入设备的缓冲区管理以及字符设备驱动的...

2019-11-24 22:12:50 211

原创 Linux驱动开发(十五):异步通知

简介前面使用阻塞和非阻塞的方式来读取驱动中的按键值都是应用程序主动读取的,对于非阻塞的方式还需要应用程序通过poll函数不断的轮询Linux内核提供了异步通知这个机制来实现驱动程序主动向应用程序发出通知,报告自己可以访问,然后应用程序再从驱动程序中读取或写入数据,软件中断的方式”信号“类似于硬件上的中断,是软件层面上对中断的模拟,设备可以被读写时发出信号阻塞、非阻塞、异步通知是针对不同的场...

2019-11-19 19:18:13 182

原创 Linux驱动开发(十四):阻塞与非阻塞IO——轮询操作

非阻塞IO非阻塞式IO则会轮询等待知道设备资源可以使用或者直接放弃如果用户以非阻塞方式访问设备提供轮询的处理方式可以通过select、epoll、poll函数来查询设备是否可以操作到应用程序调用以上三个函数 驱动中的poll函数就会执行,我们在驱动中需要编写poll函数三种IO多路复用的机制比较select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,...

2019-11-19 15:33:16 137

原创 Linux驱动开发(十三):阻塞与非阻塞IO——等待队列

阻塞与非阻塞IO阻塞式IO在请求资源时如果不能获取到设备资源,会将应用程序挂起,知道资源可以被获取非阻塞式IO则会轮询等待知道设备资源可以使用或者直接放弃使用非阻塞访问从设备读取数据,当设备不可用或数据位准备好时会立即返回错误码,表示数据读取失败,应用程序会再次读取数据,一直往复循环,直到数据读取成功调用read函数的时候加上O_NONBLOCK就是非阻塞方式打开这篇博客先记录阻塞式...

2019-11-19 14:24:49 151

原创 Linux驱动开发(十二):MISC杂项设备驱动

简介杂项设备驱动,就是最简单的字符设备驱动,通常嵌套在platform总线驱动中实现复杂的驱动主设备号都为10,不同的设备使用不同的从设备号MISC设备驱动用于解决字符设备驱动不断增加设备号紧张的问题MISC设备会自动创建cdev,不需要以前那样手动创建采用MISC设备驱动可以简化字符设备驱动的编写驱动框架我们需要向Linux内核注册一个miscdevice设备,miscdevice...

2019-11-17 17:00:43 173

原创 Linux驱动开发(十一):pinctrl子系统和GPIO子系统

pinctrl子系统和GPIO子系统简介简介配置寄存器来控制IO的方式太过于原始,Linux内核提供了pinctrl子系统和gpio子系统用于GPIO驱动,当然pinctrl子系统负责的就不仅仅是GPIO的驱动了而是所有pin脚的配置。pinctrl子系统是随着设备树的加入而加入的,依赖于设备树。GPIO子系统在之前的内核中也是存在的,但是pinctrl子系统的加入GPIO子系统也是有很大的...

2019-11-14 20:25:32 789

原创 Linux驱动开发(十):设备树下的platform平台设备驱动

这里写自定义目录标题简介关于platform驱动框架bus、driver、device驱动的分层platform驱动模型platform总线platform驱动platform设备引入设备树后的变化实验代码与分析实验代码代码分析总结简介在今年五月份我在4412上学习了platform总线设备的驱动编写,了解了引入platform总线的目的以及带来的方便之处,初步了解了Linux内核总线、设备、...

2019-11-14 17:20:43 432

原创 Linux设备树相关操作

Linux设备树相关操作以及驱动开发流程简介相关文件组成和介绍dts和bingings设备树文件之间的关系官方文档设备树dts的基本构造节点和根节点简介最近在学习设备树以及设备基于设备树的驱动开发,其实我是一直在纠结要不要写这篇博客的,因为自己了解的仅仅是设备树的一些定义,一些操作,还没有去看源码,这样写出来的博客并不是太有深度的,但是还是想记录一下自己的学习历程,对自己这一周多的学习大概做一...

2019-11-01 14:52:05 280

原创 Uboot学习笔记(四)Uboot启动过程分析

Uboot启动过程分析简介链接脚本start.s分析lowlevel_init.s分析start_armboot分析简介在见面我们已经分析了4412的启动流程以及编译4412的Uboot的流程,这两个流程其实是并不适用于所有芯片的,可以说是4412的特有流程,别的芯片可能类似但是差别不会太小,这次我们分析Uboot的启动过程,这是从一上电到执行main_loop之前的操作,这个部分会有一部分的...

2019-10-21 18:39:11 258

原创 Uboot学习笔记(三)Uboot编译过程分析

Uboot编译过程分析简介build_uboot.sh分析关于make config的部分mkconfig分析Makefile分析简介通过阅读讯为提供的使用手册,我们可以知道三星Exynos4412的Uboot的编译是通过调用build_uboot.sh来实现的,这个脚本文件通过传入参数的不同来生成不同内存大小、emmc大小的核心板的uboot.bin二进制文件,例如:SCP封装2GDDR内存...

2019-10-18 12:33:10 221

原创 Uboot学习笔记(二)Exynos4412启动过程分析

Exynos4412启动过程分析简介iROMBL1BL2简介注意:这部分不具有普适性,仅针对Exynos4412芯片,不同的芯片会有不同的启动方式,但是都是比较类似的,会有细节上的不同。这次Uboot的学习笔记我打算分为4个部分。分别是Exynos4412启动过程分析、Uboot编译过程分析、Uboot启动过程分析和Uboot引导内核分析。将对4412芯片从上电到加载Linux内核镜像的过程...

2019-10-17 22:08:16 276 1

原创 Uboot学习笔记(一)ARM汇编

ARM汇编碎碎念简介可以参考的文档基本语法常用汇编指令数据处理指令数据传输指令算数逻辑运算指令比较指令特殊寄存器操作指令加载/存储指令栈操作指令跳转指令协处理器指令异常产生指令ARM汇编伪指令碎碎念从五月份开始忙了很多事,电赛、找实习、实习、离职,可能自己有点飘飘然了吧,刚刚大三觉得自己的能力已经足够去工作了,但是经过一个多月的工作还是觉得自己有不少的差距,不想继续做MCU,但是Linux也仅...

2019-10-17 14:54:51 544 3

原创 Numpy和Pandas学习笔记

这里写自定义目录标题简介Numpynumpy的几种属性关键字基本运算索引一维索引二维索引array合并array分割Pandas与numpy的不同SeriesDataFramePandas选择数据设置数据处理丢失数据数据的导入导出合并 concat简介这是两个在科学运算中最为重要的两个模块应用:数据分析、机器学习、深度学习优点:运算速度快:Numpy和Pandas都是采用C语言编写,P...

2019-07-17 21:59:36 377

原创 旋转倒立摆调节经验

旋转倒立摆调节经验前言程序框架关于直立关于自动起摆前言近期在做2013年电赛控制类题目–简易旋转倒立摆装置,自己并不是自动化专业的学生,没有学过自动控制原理,倒立摆其实是一个十分经典的自动控制模型,我们只能是边做边学习,逐渐去了解倒立摆。我认为倒立摆有两个难点,一个是自动起摆一个是机械结构,其中自动起摆涉及到PID算法与运动方程的求解,而机械结构主要是尽量减小转动阻尼同时避免旋转时线的缠绕。...

2019-06-12 19:27:12 6008 17

原创 第十届蓝桥杯嵌入式赛后总结及对以后参赛同学的建议

赛后总结及对以后参赛同学的建议赛后总结个人情况关于蓝桥杯这个比赛参赛指导建议赛前准备比赛时的一些事项一些别的点赛后总结个人情况自己在这次的蓝桥杯(第十届)中省赛以 省一(也是陕西赛区嵌入式组第一名)出线,在国赛中获得了 国二 的成绩(大概是国二五六名的样子,差国一应该也就是俩三个客观题的分数)。自己从大一下学期开始学习32到现在有一年多的时间,用32做过不少的项目,参加电赛时使用的也是32...

2019-05-28 20:10:14 2669

原创 4412开发板学习之Linux驱动开发(九):中断控制及按键中断实现

中断控制及按键中断实现基本概念相关函数与结构体中断注册函数中断释放函数相关结构体硬件软件准备工作代码与分析驱动代码驱动代码分析实验安装模块查看中断总结一下基本概念在这里就不讲解什么是中断了,在单片机中我们对中断都已经相当了解了中断的处理流程是:按下(产生中断)-》跳转到异常向量入口,执行中断函数中断函数要:保护现场、执行中断处理函数、恢复现场我们需要做什么:学会使用中断注册函数,了解注册...

2019-05-07 01:02:17 867 1

原创 4412开发板学习之Linux驱动开发(八):GPIO读操作与按键轮询实现

GPIO读操作与轮询按键GPIO读操作硬件查找对应IO口寄存器配置软件需要的函数注册设备代码及分析实验效果轮询按键原理分析硬件软件用到的函数先前准备工作代码及分析实验效果总结GPIO读操作前面我们使用GPIO来控制IO口,点亮了LED灯,当然,IO口是可以有多种配置的,输入输出是最基本的两种,今天我们就来尝试一下GPIO的输入操作,我们使用4412开发板上的3、4号拨码开关来实现硬件查找对...

2019-05-07 00:45:37 844

原创 4412开发板学习之Linux驱动开发(七):字符设备驱动的基本操作(生成设备节点、编写设备驱动)

字符设备驱动的基本操作(生成设备节点、编写设备驱动)生成字符类设备节点设备类的概念生成字符类设备节点相关函数、结构体及头文件实验代码代码分析实验效果编写字符驱动说明实验代码代码分析实验效果生成字符类设备节点设备类的概念前面介绍的设备中的模型:bus,device,driver都是有比较明确的定义,bus代表总线,device代表实际的设备和接口,driver代表驱动class是设备类,它是...

2019-05-04 23:59:52 574

原创 4412开发板学习之Linux驱动开发(六):字符设备驱动的基本操作(申请设备号、注册设备)

这里写自定义目录标题前言给模块传递参数传递单个参数传递多个参数实验代码代码分析效果申请字符类设备号静态申请字符类设备号重要的头文件函数功能实验代码代码分析效果动态申请字符类设备号函数功能实验代码代码分析演示注册字符类设备函数及头文件介绍实验代码代码分析效果前言一开始纠结了半天这篇博客应该叫什么,本来想叫字符设备驱动开发流程,但是转念一想现在仅仅是学了一些皮毛,也仅仅是字符设备驱动的一些最基本的...

2019-05-04 23:12:48 598

原创 4412开发板学习之Linux驱动开发(五):4412MMU及GPIO操作(点灯)

4412MMU及GPIO操作(点灯)物理地址与虚拟地址与传统MCU的对比4412中的物理地址MMU内存管理单元存储器分类4412中的存储器映射物理地址和虚拟地址其他的地址概念GPIO操作GPIO初始化EXYNOS4_GPL2(0)的分析GPIO的数量S5P_VA_GPIO2虚拟地址与物理地址的映射GPIO初始化流程LED驱动程序用到的头文件管脚调用、赋值以及配置点灯实验硬件连接生成设备节点的代码生...

2019-05-01 01:29:15 987

原创 4412开发板学习之Linux驱动开发(四):生成设备节点以及编写简单应用调用驱动

生成设备节点以及编写简单应用调用驱动生成设备节点关于杂项设备杂项设备内核文件结构体如何生成设备节点代码代码分析结果演示编写简单应用调用驱动基本原理写代码前应知道的需要的头文件调用的函数编译代码实验代码代码分析结果演示对设备节点与设备注册、驱动注册的区分代码演示测试重点区分生成设备节点Linux到2.6版本时改动巨大,针对以前版本的资料直接跳过学习要“以始为终”工作用不到的就不去浪费时间关于...

2019-04-30 00:28:24 684

原创 4412开发板学习之Linux驱动开发(三):以module的方式注册设备

以module的方式注册设备为什么么要以module的方式注册设备注册设备分析代码实现在驱动代码中获取设备注册的信息代码实现分析代码测试不注册设备安装驱动注册设备首先注册设备查看设备注册驱动卸载驱动并释放设备总结为什么么要以module的方式注册设备在前面的博客我记录了如何注册设备和如何注册驱动,我们可以明显的看出设备的注册是很麻烦的,需要修改平台文件,需要配置menuconfig,需要重新编...

2019-04-28 21:22:37 640

原创 4412开发板学习之Linux驱动开发(二):总线、设备、驱动注册流程

设备驱动注册到源码总线、设备、驱动注册流程图说明首先关于平台platform总线关于设备关于驱动注册设备注册设备的流程查看设备是否注册成功注册驱动(很重要)一些说明编写驱动程序代码分析实验测试安装驱动查看驱动卸载驱动几句总结总线、设备、驱动注册流程图说明以上这个图片是相当重要的一个图片吗,它完整诠释了设备和驱动的注册流程。首先关于平台platform总线总线是Linux中很重要的一个概...

2019-04-28 17:30:06 788

原创 4412开发板学习之Linux驱动开发(一):HELLO WORLD

驱动开发HELLO WORLD前言最小驱动模块示意图Hello World源码及分析使用Makefile进行编译Makefile源码及分析编译流程分析编译在开发板进行模块的操作将.ko文件复制到开发板安装模块查看模块卸载模块前言开始学习Linux驱动开发了,对于所有的程序员来说,任何语言,任何工具,第一个程序当然是Hello World了最小驱动模块示意图Hello World源码及分析...

2019-04-24 19:30:29 1260 2

原创 博客访问破十万纪念

从大一入学开始写博客,转眼已经快两年了,今天博客的访问量突破了十万。当然,这对大佬来说可能只是一个零头,但对我这个刚刚踏入技术大门的小白来说也是莫大的鼓励了,有这么多的人曾经看过我写下的博客,曾经评论过我的博客,曾经在我的博客中学到了东西,解决了问题,这就是很令人喜悦的。技术不能离开分享,我们从网络上学到东西,再把这些知识经过自己的提炼总结再发出来,后来者学习起来必然会更加的轻松,这才是互...

2019-04-11 16:09:30 1266 6

原创 《Linux内核设计与实现》读书笔记:中断与中断处理(上半部、下半部)

什么是中断 中断的本质是一种特殊的电信号,由硬件发向处理器,处理器接收到中断后会做出相应的处理 中断由硬件产生并直接送入中断控制器的输入引脚,中断控制器的作用是使用复用技术将多路终端管线只通过一个和处理器相连接的管线与处理器通信 不同设备对应的中断不同,而每个中断都通过一个唯一的数字标志,这样处理器才能给不同的中断对应不同的中断处理程序 这些中断值被称为中断...

2019-04-08 00:08:44 1013

原创 STM32用一个定时器输出多路不同频率及占空比的PWM(输出比较模式)

我们使用STM32输出PWM时会使用定时器的PWM输出模式来进行生成,但是这样子生成PWM是有局限的,它只能生成四路频率相同的PWM,当你设定了TIMx_PSC(预分频寄存器)和TIMx_ARR(自动重装载寄存器),这时PWM的频率就被定下来了,为系统的时钟/TIMx_PSC+1/TIMx_ARR+1,你可以通过改变各个通道的CCR寄存器来改变占空比。但是如果我们想生成多路不同频率的PWM...

2019-04-07 16:13:44 19845 9

STM32编码器测速代码

STM32使用定时器的编码器模式进行测速 适用于带编码盘的直流减速电机 适用于增量编码器

2019-04-15

STM32-UCOSIII实战-----RTC+DHT11+按键+LCD显示

STM32F4的工程,使用的是原子探索者开发板,其他的开发板或者芯片可以参考移植,工程讲解https://blog.csdn.net/a568713197/article/details/83869751

2018-11-08

位置PID代码

位置PID代码 可以实现带编码盘的直流减速电机的位置控制,可以配合平衡小车家的上位机进行PID的学习

2019-04-30

基于STM32的五子棋对战平台

基于STM32F4(原子探索者)的五子棋对战平台,可以实现触摸下子、人机对战、人人对战、帮助、悔棋、开关音量的功能,别的平台或板子可以参考移植,博客及视频https://blog.csdn.net/a568713197/article/details/80461127

2018-11-08

平衡小车家步进电机平衡车资料

平衡小车家的步进电机平衡车资料 包含代码、驱动、原理图等

2019-04-15

STM32F103C8T6核心板测试代码(点灯)库函数&寄存器双版本

STM32F103C8T6核心板测试代码(点灯)库函数&寄存器双版本 可以作为工程模板使用

2019-04-30

爱吃肉的大高个的留言板

发表于 2020-01-02 最后回复 2020-05-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除