电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
【野火i.MX6ULL ARM Linux开发板连载】01搭建开发环境
分 享
扫描二维码分享
【野火i.MX6ULL ARM Linux开发板连载】01搭建开发环境
野火
IMX6ULL
评测
嵌入式与Linux那些事
关注
发布时间: 2021-04-12
丨
阅读: 1832
> 哈喽,大家好。我是小仲。非常感谢电子芯吧客能给我这个机会来测评野火的IMX6ULL开发板,感谢野火电子提供的硬件平台。板子在3.31号就收到了,但是,由于最近一直很忙,拖到了现在才开始写测评。接下来的一段时间,会基于野火IMX6ULL开发板写一系列教程,主要侧重于**驱动和内核的调试技巧**。这方面的文章,我也是第一次写,过程中可能会踩不少坑,可能更新时间间隔会很。如果有写的不好的,大家可以及时指出,有任何意见和建议也可以联系我。 > > 今天分享的是本次测评的第一篇文章,开发板的搭建环境教程。 > > 本文由嵌入式与Linux那些事创作,未经作者授权,禁止转载。 > > CSDN:[嵌入式与Linux那些事](https://blog.csdn.net/qq_16933601?spm=1000.2115.3001.5343) > > 博客园:[嵌入式与Linux那些事](https://www.cnblogs.com/dongxb/) > > 公众号:[嵌入式与Linux那些事](https://gitee.com/dongxingbo/Picture/blob/master/Wechat/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81_%E6%99%AE%E9%80%9A.png) [TOC] # 1. 开箱测评 ## 1.1 资料下载 野火资料下载链接如下。 综合资料百度云:https://pan.baidu.com/s/1kJdJ6xc12Yg4rPby_MatDA 提取码:4u7d 在线文档:http://doc.embedfire.com/linux/imx6/base/ 第一期-零基础入门篇-47集 :https://www.bilibili.com/video/BV1JK4y1t7io 第二期-内核编程篇-20集 :https://www.bilibili.com/video/BV1PK411T7MA 第三期-裸机开发篇-21集 :https://www.bilibili.com/video/BV1JK4y1Y7xQ 第四期-驱动开发篇-82集 :https://www.bilibili.com/video/BV1pf4y1974n 全部视频云盘下载:https://pan.baidu.com/s/1jp15pPk5gCF3q2IKDF_95A 提取码:wcfa 视频课件云盘下载:https://pan.baidu.com/s/1NM47YIOC6JWu95uCDZ0NyA 提取码:a0h9 视频课件仓库 :https://gitee.com/Embedfire-imx6/embed_linux_tutorial_ppt > 建议观看在线文档。本地下载的pdf版本会有一些错误。 ## 1.2 开发板简介 之前学习驱动开发一直使用的是韦老师的S3C2440,搭配韦老师的第二期视频一起学习,效果很不错。由于马上要工作了,所以,想换一个新一点的平台,熟悉下环境。正好看到了电子芯吧客的试用申请,于是,寒假在家的时候就提交了申请。今天终于收到了这块板子,话不多说,开箱测评。 这么大一个袋子,快递包裹的挺严实,里面塞了气泡膜,保护工作很到位。 ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E9%87%8E%E7%81%ABIMX6ULL%E5%BC%80%E7%AE%B1%E5%9B%BE2.png) ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E9%87%8E%E7%81%ABIMX6ULL%E5%BC%80%E7%AE%B1%E5%9B%BE3.png) 精致的盒子,来一张全家福,包括开发板,电源,两根USB线。 ![image-20210404160221417](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E9%87%8E%E7%81%ABIMX6ULL%E5%BC%80%E7%AE%B15.png) ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E9%87%8E%E7%81%ABIMX6ULL%E5%BC%80%E7%AE%B16.png) 本次使用的是野火的IMX6ULL的NAND版本,具有512MB的NAND-FLASH,主频为800MHZ。开发板的底板资源接口如下图所示。野火提供了丰富的资料,对照教程我们可以轻松的让开发板跑起来。 ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E9%87%8E%E7%81%ABIMX6ULL%E5%BA%95%E6%9D%BF%E8%B5%84%E6%BA%90.png) # 2. 环境搭建 ## 2.1 烧写镜像到SD卡 由于本次使用的开发板为512M Nand 版本,因此,**强烈建议大家准备一个2G以上的SD卡**,将Debian镜像放在SD卡中,将开发板设置为SD卡启动。否则,只能烧写Debian镜像的纯净版。 烧写镜像文件,使用的是Etcher工具,在官网(https://www.balena.io/etcher/)可以根据自己电脑系统,进行下载。 ![Etcher工具界面](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/Etcher%E5%B7%A5%E5%85%B7%E7%95%8C%E9%9D%A2.png) 野火的镜像分为四个版本,在百度网盘可以下载到。(http://products.embedfire.com/zh_CN/latest/linux/ebf_i.mx6ull.html#debian) ![各个版本镜像](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%90%84%E4%B8%AA%E7%89%88%E6%9C%AC%E9%95%9C%E5%83%8F.png) imx6ull-debian-buster-console-armhf-2020-04-09.img.xz:Debian 的纯净版固件,没有带桌面环境和野火的QT App。(解压后约340M) imx6ull-debian-buster-desktop-armhf-2020-04-09.img.xz:带有桌面环境的Debian 固件,系统启动后会进入桌面环境。(解压后约1.1G) imx6ull-debian-buster-full-qt-app-armhf-2020-04-09.img.xz::具有完整QT App 功能的Debian 固件, 系统启动后会进入QT App 的界面。 但是该固件体积超过了Nandflash 512M 的容量,因此不能烧录到Nandflash 中。只可烧录于eMMC。(解压后约900M) imx6ull-debian-buster-part-qt-app-armhf-2020-04-09.img.xz:该固件移除了音视频播放功能的QT App,系统启动后会进入QT App 的界面。 该固件体积小于Nandflash 512M 的容量,可以分别烧录到Nandflash 和eMMC 中。(解压后约420M) 点击以下两个按钮,选择合适的镜像,烧录即可。 ![烧录界面](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E7%83%A7%E5%BD%95%E7%95%8C%E9%9D%A2.png) 烧录完成后,将开发板上的拨码开关的2-5-8位拨到on,其他位拨到0,即可启动。 ## 2.2 挂载NFS网络文件系统 ### 2.2.1 本机和虚拟机互ping 本教程中,使用的是Ubuntu18.03,在野火的资料包中可以找到Ubuntu18.03版本,在虚拟机中安装好即可。 ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E9%87%8E%E7%81%ABIMX6ULL%20ubuntu18.03%E8%B5%84%E6%96%99%E6%88%AA%E5%9B%BE.png) 尝试将开发板,本机,虚拟机连接在同一网段,在本机使用`ipconfig`命令,查看本机ip地址。记下这个地址,202.193.61.216。 ![查看本机ip地址](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%9C%AC%E6%9C%BAip%E5%9C%B0%E5%9D%80.png) 在ubuntu18.04中,使用`ifconfig`命令查看ip地址,但是报错了。 ![使用ifconfig命令查看ip地址](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E8%99%9A%E6%8B%9F%E6%9C%BAifconfig%E6%9F%A5%E7%9C%8Bip%E6%8A%A5%E9%94%99.png) 根据提示,使用 `sudo apt install net-tools` 命令,安装网络工具。 ![成功安装,但仍有错误](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%88%90%E5%8A%9F%E5%AE%89%E8%A3%85%E4%BD%86%E6%98%AF%E6%8A%A5%E9%94%99.png) 以上说明apt被某个进程锁住了,找到进程,kill 就完了,如下: ![删除占用进程](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%8A%A5%E9%94%99%E5%88%A0%E9%99%A4%E8%BF%9B%E7%A8%8B.png) 强制重新配置软件包,升级下apt,但是又报错。 ![升级apt报错](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%8D%87%E7%BA%A7apt%E6%8A%A5%E9%94%99.png) ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/dpkg%E6%8A%A5%E9%94%99.png) 使用指令`sudo rm /var/lib/dpkg/lock-frontend`,`sudo rm /var/lib/dpkg/lock`删除占用进程 ![删除占用](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%88%A0%E9%99%A4%E5%8D%A0%E7%94%A8%E8%BF%9B%E7%A8%8B2.png) ![移除锁定文件](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E7%A7%BB%E9%99%A4%E9%94%81%E5%AE%9A%E6%96%87%E4%BB%B6.png) 使用指令`sudo apt update`再次尝试更新apt,成功! ![成功更新apt](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%88%90%E5%8A%9F%E6%9B%B4%E6%96%B0apt.png) 使用指令`sudo apt install net-tools`安装网络工具。 ![成功安装网络工具](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%88%90%E5%8A%9F%E5%AE%89%E8%A3%85%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7.png) 使用`ifconfig`,查看ip ![查看虚拟机ip地址](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%9F%A5%E7%9C%8B%E8%99%9A%E6%8B%9F%E6%9C%BAip.png) > 注意:虚拟机的网络链接要设置成桥接模式,桥接到有线网卡。 尝试使用ping命令,本机和虚拟机互ping,成功ping通。 ![本机和虚拟机互ping](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%9C%AC%E6%9C%BA%E5%92%8C%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%BA%92ping.png) ### 2.2.2 虚拟机和开发板互ping 将开发板通过路由器和本机相连,启动开发板,使用MobaXterm 配置一个串口与用户交互,串口配置如下所示: ![MobaXterm配置](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/MobaXterm%E9%85%8D%E7%BD%AE.png) 启动开发板,通过串口就可以看到输出的启动信息。开发板出厂的默认账号为debian,密码为temppwd。 ![成功启动](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%90%AF%E5%8A%A8%E6%9D%BF%E5%AD%90%E9%BB%98%E8%AE%A4%E8%B4%A6%E5%8F%B7%E5%AF%86%E7%A0%81.png) 使用`ifconfig`查看开发板的ip地址,开发板地址和虚拟机地址已经处于同一网段,不需要额外配置。尝试使用开发板ping虚拟机成功ping通。 ![开发板ping虚拟机](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%BC%80%E5%8F%91%E6%9D%BFping%E8%99%9A%E6%8B%9F%E6%9C%BA.png) 开发板ping主机也可以ping通。 ![开发板ping主机](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%BC%80%E5%8F%91%E6%9D%BFping%E4%B8%BB%E6%9C%BA.png) ### 2.2.3 配置虚拟机NFS服务 为了方便测试驱动程序。通过NFS 给开发板共享开发主机编写的应用程序。开发板通过NFS与开发主机连接共享文件。开发主机生成的目标板应用程序放在NFS 的共享文件夹内,开发板访问该文件夹执行应用程序进行测试。在另一方面,开发主机与开发板通过串口连接,使用串口终端控制开发板。 #### 安装NFS ubuntu中默认没有安装NFS服务,所以,需要使用`sudo apt install nfs-kernel-server`命令安装NFS。 使用`sudo vim /etc/exports`修改配置文件,配置文件内容如下所示。 ```bash /home/zhongyi/workdir 202.193.61.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check) ``` - /home/embedfire/workdir:要共享的开发主机目录,注意使用空格与后面的配置隔开。 - 202.193.61.0/24: 配置谁可以访问。/24表示 202.193.61.网段的所有机器都可以访问。 - rw: 表示客户机的权限,rw 表示可读写 - sync:资料同步写入到内存与硬盘中。 - anonuid=1000:将客户机上的用户映射成指定的本地用户ID的用户,此处1000是开发主机zhongyi用户的uid。 - anongid=1000:将客户机上的用户映射成属于指定的本地用户组ID,此处1000是开发主机zhongyi用户组gid。 - no_subtree_check:不检查子目录权限,默认配置。 使用id命令可以查看uid和gid。 ![id命令查看uid](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/id%E5%91%BD%E4%BB%A4%E6%9F%A5%E7%9C%8B.png) 本配置中的anonuid 和anongid 把**客户机的用户映射成本地uid/gid 为1000的用户**,即开发主机的embedfire,那么,当在开发板上使用与开发主机不同的用户访问NFS 共享目录时,都会具有zhongyi 的权限,方便互相访问。 修改完/etc/exports 文件并保存后,可使用`sudo exportfs -arv` 命令更新配置。 ![更新exporfts配置文件](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%9B%B4%E6%96%B0exportfs%E9%85%8D%E7%BD%AE.png) #### 安装NFS客户端 开发主机开启NFS 服务后,我们还需要在ubuntu安装NFS 客户端。执行`sudo apt install nfs-common -y`安装NFS 客户端。 ![安装NFS客户端](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%AE%89%E8%A3%85NFS%E5%AE%A2%E6%88%B7%E7%AB%AF.png) #### 查看NFS 服务器共享目录 在开发板上执行`showmount -e 202.193.61.234`查看NFS共享目录。 ![查看NFS 服务器共享目录](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%9F%A5%E7%9C%8BNFS%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%B1%E4%BA%AB%E7%9B%AE%E5%BD%95.png) ### 2.2.4 临时挂载NFS文件系统 在开发板上,执行`sudo apt install nfs-common -y`安装NFS客户端。 > 注意,如果你的板子是512M Nand 版本的,并且使用的是野火带qt的镜像。需要重新使用usb烧写纯净版系统镜像。否则会报错,提示磁盘空间不足! > > ![磁盘空间不足](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%9D%BF%E5%AD%90%E6%8A%A5%E9%94%99%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3.jpg) > > USB烧写镜像教程:https://doc.embedfire.com/linux/imx6/quick_start/zh/latest/quick_start/install_debian/install_debian.html#usb 使用mount 命令挂载NFS 服务器的共享目录到开发板/mnt 目录下: ``` sudo mount -t nfs 202.193.61.234:/home/zhongyi/workdir /mnt ``` ![成功挂载](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E6%8C%82%E8%BD%BD%E5%90%8E%E6%97%A0%E9%94%99%E8%AF%AF%E8%BE%93%E5%87%BA.png) 在NFS主机中,使用`touch zhongyi.txt`命令创建一个文件,测试下。 ![在主机上touch一个文件](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/NFS%E4%B8%BB%E6%9C%BAtouch%E6%96%87%E4%BB%B6.png) 在从机中,也显示出了我们创建的文件。 ![](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E4%BB%8E%E6%9C%BA%E6%8C%82%E8%BD%BD%E6%88%90%E5%8A%9F.png) ## 2.3 搭建交叉编译环境 在编译和装载驱动前,需要安装一些工具。工具的名称具体如下。 - gcc-arm-linux-gnueabihf 交叉编译器 - bison 语法分析器 - flex 词法分析器 - libssl-dev OpenSSL 通用库 - lzop LZO 压缩库的压缩软件 执行`sudo apt install make gcc-arm-linux-gnueabihf gcc bison flex libssl-dev dpkg-dev lzop`安装即可。 ### 2.3.1 获取内核源码 首先,使用以下命令安装git。 ``` sudo apt-get install git ``` 配置名字和邮箱。 ``` git config --global user.name "xxx" git config --global user.email xxx@xxx ``` 使用git命令获取gitee上的源码。 ```bash git clone https://gitee.com/Embedfire/ebf-buster-linux.git ``` ### 2.3.2 编译源码 野火已经配置好了脚本make_deb.sh,执行脚本就可以编译内核。编译好的内核存放在build_image/build。 ```bash ./make_deb.sh ``` make_deb.sh脚本内容如下。 ```bash deb_distro=bionic DISTRO=stable build_opts="-j 6" build_opts="${build_opts} O=build_image/build" # 指定编译好的内核放置位置 build_opts="${build_opts} ARCH=arm" # 编译出来的目标是针对ARM 体系结构的内核 build_opts="${build_opts} KBUILD_DEBARCH=${DEBARCH}" # 对于deb-pkg 目标,允许覆盖deb-pkg 部署的常规启发式 build_opts="${build_opts} LOCALVERSION=-imx-r1" # 使用内核配置选项“LOCALVERSION”为常规内核版本附加一个唯一的后缀。 build_opts="${build_opts} KDEB_CHANGELOG_DIST=${deb_distro}" build_opts="${build_opts} KDEB_PKGVERSION=1${DISTRO}" build_opts="${build_opts} CROSS_COMPILE=arm-linux-gnueabihf-" # 指定交叉编译器 build_opts="${build_opts} KDEB_SOURCENAME=linux-upstream" make ${build_opts} npi_v7_defconfig # 生成配置文件 make ${build_opts} make ${build_opts} bindeb-pkg # 编译文件进行打包 ``` ### 2.3.3 加载驱动程序 使用git克隆下例程,尝试将驱动加载到开发板。 ``` git clone https://gitee.com/Embedfire/embed_linux_tutorial ``` 将拷贝下的源码,放入内核源码的同一级目录中。 ![同一级目录](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%90%8C%E4%B8%80%E7%BA%A7%E7%9B%AE%E5%BD%95.png) 在hellomoudle中执行`make`,命令,就可以编译模块。 ![编译hello模块](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E7%BC%96%E8%AF%91hello%E6%A8%A1%E5%9D%97.png) 下面,看下hellomodule的makefile是如何编写的,具体如下所示。 ```bash KERNEL_DIR=../../ebf-buster-linux/build_image/build # 指定编译内核存放位置 ARCH=arm # 针对ARM 体系结构 CROSS_COMPILE=arm-linux-gnueabihf- # 指定交叉编译工具链 export ARCH CROSS_COMPILE # 导入环境变量 obj-m := hellomodule.o # 表示以模块编译 all: # all 只是个标号,可以自己定义,是make 的默认执行目标。 $(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) modules .PHONE:clean copy clean: # clean 就是删除后面这些由make 生成的文件。 $(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) clean copy: sudo cp *.ko /home/embedfire/workdir ``` 在开发板中,使用以下命令,挂载NFS网络文件系统。 ```bash sudo mount -t nfs 202.193.61.234:/home/zhongyi/workdir /mnt ``` 进入hellomoudle中,加载模块即可。 ```bash cd /mnt/module/hellomodule sudo insmod hellomodule.ko sudo rmmod hellomodule.ko ``` ![加载和卸载测试模块](https://gitee.com/dongxingbo/Picture/raw/master//Wechat/Article/2021/%E5%9B%9B%E6%9C%88/%E5%8A%A0%E8%BD%BD%E5%92%8C%E5%8D%B8%E8%BD%BD%E6%B5%8B%E8%AF%95%E6%A8%A1%E5%9D%97.png) # 3. 总结 至此,一个基本的驱动开发环境就搭载好了。下一节将开始介绍设备树的加载和编译方法。 我想吐槽下野火的文档,有些地方是错误的,写的不够清楚。所以,大家在看的时候,注意下。我已经将不合适的地方,反馈给他们,希望后面可以修改。 > 本文参考:野火Linux开发实战指南 ![](https://gitee.com/dongxingbo/Picture/raw/master/Wechat/%E5%8A%A8%E6%80%81%E5%BC%95%E5%AF%BC%E5%85%B3%E6%B3%A8%E5%85%AC%E4%BC%97%E5%8F%B7%E5%8F%B7.gif)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
嵌入式与Linux那些事
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交