ARM DIY(三)板载串口和 LCD 调试
前言
今天焊接两大关键输入输出设备:串口和屏幕。
串口
串口部分使用 CP2102N 芯片(USB 转 TTL),这样用一根数据线连接板子和 PC 就可以直接调试了。
焊接 CP2102 和 Type C

上电调试,串口可以正常输入输出。
看来,虽然是 QFN 封装,只要尺寸大一点,还是很容易焊接成功的。
屏幕
重头戏在屏幕,倒不是说屏幕焊接有多难,而是软件调试折腾了两个晚上。
屏幕焊接

ST7789V 驱动调试
step1:使能内核驱动编译选项
屏幕的驱动芯片为 ST7789V,就在内核的 menuconfig 中搜索 ST7789V

搜到了这两项,遂将这两项都置为了 [y],这里也为自己埋下了个坑,这两个驱动需要二选一。
step2:配置设备树
arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dts 新增如下节点
&spi0{status = "okay";st7789v: st7789v@0{compatible = "sitronix,st7789v";reg = <0>;status = "okay";spi-max-frequency = <96000000>;spi-cpol;spi-cpha;rotate = <270>;fps = <60>;buswidth = <8>;dc-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */reset-gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>; /* PB5 *///led-gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */debug = <0x0>;};
};
step3:调试
上电后屏幕没输出,并且没有生成 /dev/fb0 设备文件,
搜索 "sitronix,st7789v",确定驱动入口,追下驱动代码,发现匹配到了两份驱动

添加打印,发现上电后匹配的是 panel-sitronix-st7789v 这份驱动,那就禁用此启动,换下面的试试,结果还真可以,上电后屏幕直接就显示启动 log 了

不过,发现屏幕好像反显了,应该黑底白字才对,查看驱动,也没发现反显的设置。
不管了,修改驱动,让它再反一次
drivers/staging/fbtft/fb_st7789v.c
static int init_display(struct fbtft_par *par)
{/* turn off sleep mode */write_reg(par, MIPI_DCS_EXIT_SLEEP_MODE);mdelay(120);// 反显write_reg(par, MIPI_DCS_ENTER_INVERT_MODE);/* set pixel format to RGB-565 */write_reg(par, MIPI_DCS_SET_PIXEL_FORMAT, MIPI_DCS_PIXEL_FMT_16BIT);write_reg(par, PORCTRL, 0x08, 0x08, 0x00, 0x22, 0x22);
...
看起来正常了

显示图像
借助之前的工具《LCD 显示图像——操作显存(framebuffer)》,显示一副图片看看

播放视频
原料:播放器、视频
先制作播放器
下载源码 http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.5.tar.xz
交叉编译
$ ./configure --target=arm-linux --cc=arm-linux-gnueabihf-gcc --prefix=/home/liyongjun/project/board/buildroot/override/DIY_V3S/MPlayer-1.5/_install --disable-freetype --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --disable-x11 --enable-cross-compile --disable-dvdnav --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static
$ make
将编译生成的播放器软件 mplayer 拷贝到板子 root 目录
然后将视频文件 bad_apple_30.mp4 也拷贝到板子 root 目录
播放
# ./mplayer bad_apple_30.mp4
MPlayer 1.5-6.3.1 (C) 2000-2022 MPlayer TeamPlaying bad_apple_30.mp4.
libavformat version 59.17.102 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xccced8]Protocol name not provided, cannot determine if input is local or a network protocol, buffers and access patterns cannot be configured optimally without knowing the protocol
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO: [H264] 240x240 24bpp 60.000 fps 492.0 kbps (60.1 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 59.21.100 (internal)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Clip info:major_brand: mp42minor_version: 0compatible_brands: mp42mp41creation_time: 2021-01-11T00:31:54.000000Z
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, floatle, 125.6 kbit/4.45% (ratio: 15698->352800)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
DVB card number must be between 1 and 4
AO: [null] 44100Hz 2ch floatle (4 bytes per sample)
Starting playback...
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is undefined - no prescaling applied.
[swscaler @ 0xf27860]bicubic scaler, from yuv420p to rgb565le using C
[swscaler @ 0xf27860]No accelerated colorspace conversion found from yuv420p to rgb565le.
[swscaler @ 0xf27860]using unscaled yuv420p -> rgb565le special converter
VO: [fbdev] 240x240 => 240x240 BGR 16-bit
framebuffer too small for double-buffering, disabling
A: 25.7 V: 25.2 A-V: 0.488 ct: 0.000 0/ 0 37% 54% 4.1% 553 0 **************************************************** Your system is too SLOW to play this! ****************************************************Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver- Try -ao sdl or use the OSS emulation of ALSA.- Experiment with different values for -autosync, 30 is a good start.
- Slow video output- Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU- Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file- Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)- Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?- Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.A: 219.1 V: 219.1 A-V: 0.020 ct: 0.583 0/ 0 40% 54% 3.9% 11729 0 Exiting... (End of file)
#

mplayer 播放原理也很简单,就是向 /dev/fb0 写数据

至此,串口和屏幕调试完毕
相关文章:
ARM DIY(三)板载串口和 LCD 调试
前言 今天焊接两大关键输入输出设备:串口和屏幕。 串口 串口部分使用 CP2102N 芯片(USB 转 TTL),这样用一根数据线连接板子和 PC 就可以直接调试了。 焊接 CP2102 和 Type C 上电调试,串口可以正常输入输出。 看来…...
计算机网络-笔记-第一章-计算机网络概述
目录 一、第一章——计算机网络概述 1、因特网概述 (1)网络、互联网、因特网 (2)因特网发展的三个阶段 (3)因特网服务的提供者(ISP) (4)因特网标准化工…...
Oracle-day4:分组查询(带条件)、DDL建表、约束、主从表
一、内容回顾 /*------------------内容回顾------------------------上周内容回顾--1、单表的基础查询--A、select * from emp;--B、列的运算 --数字类型运算 - * /--函数运算 mod ceil floor round upper lower--C、取别名--列、表达书取别名--*表示所有的列和列同时存在时…...
(详解)数据结构-----------栈与队列 c语言实现
本章将会详细讲解以下知识点: 目录 一:栈 1:栈的定义,栈的特点 2:用什么结构来实现栈与原因的分析? 3: (超详解)栈的常用接口并且附上测试用例 二:队列 1:队列的定义,队列的特点 2:用什么结…...
前端文件、图片直传OOS、分片上传、el-upload上传(vue+elementUI)
前言:基于天翼云的面相对象存储(Object-Oriented Storage,OOS),实现小文件的直接上传,大文件的分片上传。 开发文档地址:网址 上传之前的相关操作:注册账户,创建 AccessKeyId 和 AccessSecretKey之后&…...
java自动登录 selenium 自动登录并获取cookie
选择操作网页 我用的edge,谷歌我的版本太高没有对应的驱动… 下载Edge的驱动程序,直接解压就好里面只有一个.exe文件 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 复制即用,看注释 import com.alibaba.fastjs…...
vue中 computed()方法详解
在Vue中,computed是一种计算属性,它用于定义一个属性,该属性的值是根据其他属性的值计算而来的。computed属性的值会被缓存,只有当依赖的属性发生变化时,才会重新计算。 computed属性可以在Vue实例的computed选项中定…...
在服务器上搭建Jenkins
目录 1.服务器要求 2.官方文档 3.在服务器上下载Jenkins 3.1 下载war包 3.2 将war包上传到服务器的一个目录下 3.3 启动jenkins 3.3.1 jdk版本升级 1)下载jdk17 2)解压到当前文件夹 3)配置路径 4.jenkins配置 4.1 填写初始密码&a…...
全面解析MES系统中的报工操作
一、报工操作的定义: 报工操作是指在生产过程中,操作员通过MES系统记录和提交生产工序的相关信息,如工时、产量、质量等。报工操作将生产过程中的实际情况反馈给MES系统,实现生产数据的实时采集和记录。 二、报工操作的流程&…...
Harbor 私有仓库迁移
文章目录 一.私有仓库迁移的介绍1.为何要对Harbor 私有仓库的迁移2.Harbor 私有仓库的迁移特点3. Harbor 私有仓库的迁移注意要点 二.私有仓库迁移配置1.源Harbor配置(192.168.198.11)(1)接着以下操作查看容器状况及是否可以登录 …...
制造业物联网革命:智慧工厂数据采集与远程监控管理
智慧工厂是指运用现代信息技术和物联网技术,实现制造业生产过程的智能数字化。智慧工厂的工业设备不仅能够自动化运行,还可以通过网络技术帮助企业实现数据采集、远程监控与管理。4G工业网关便成为了智慧工厂通讯的重要组成部分,起到了连接工…...
软考A计划-网络工程师-复习背熟-网络管理和计算机基础知识
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...
springBoot打印精美logo
文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:🎀文本logo 🐒个人主页 🏅JavaEE系列专栏 📖前言: 本篇博客主要以提供springBoot打印精美logo 🎀文本logo ??…...
kali开启SSH服务(简单无比)
我会一直陪着你 1.切换到管理员用户:2.启动SSH服务3.要在Kali Linux上启用SSH服务并修改配置文件,你可以按照以下步骤进行操作:4.查看SSH服务状态是否正常运行,命令为:注意:配置文件有些地方不同࿰…...
Ubuntu20.04如何更换国内源-阿里云源
1.备份源文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.打开源文件,注释默认的源 vim /etc/apt/sources.list ## 注释原本内容 # deb http://mirrors.ivolces.com/ubuntu/ focal main restricted universe multiverse # deb-src http://mirrors.ivolc…...
goland设置
1、go file设置 file->setting->Editor->File and Code Templates->Go File package ${GO_PACKAGE_NAME} /** * description: * author:${USER} * date:${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE} * Versio…...
2023年Java核心技术第十篇(篇篇万字精讲)
目录 十九 . 一个线程两次调用start()方法会出现什么情况?线程的生命周期和状态转移。 19.1 典型回答 19.1.1 线程生命周期: 19.1.2 计时等待详细解释: 19.2 深入扩展考察 19.2.1 线程是什么? 19.2.2 Green…...
分享一篇关于如何使用BootstrapVue的入门指南
你想轻松地创建令人惊叹且响应式的在线应用程序吗?使用BootstrapVue,您可以快速创建美观且用户友好的界面。这个开源工具包是基于Vue.js和Bootstrap构建的,非常适合开发现代Web应用程序。本文将介绍其基础知识,让您可以开始使用这…...
【1day】复现Cellular Router命令执行漏洞
目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 移动路由器(Cellular Router)是一种利用移动网络提供无线互联网连接的设备。它们类似于传统路由器,但不同于使用有线连接(如以太网或DSL)...
【Torch API】pytorch 中repeat_interleave函数详解
torch.repeat_interleave(input, repeats, dimNone) → Tensor Repeat elements of a tensor. Parameters input (Tensor) – the input tensor. repeats (Tensor or int) – The number of repetitions for each element. repeats is broadcasted to fit the shape of the …...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
