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 写数据

在这里插入图片描述

至此,串口和屏幕调试完毕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/54713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Python写入数据到Excel:实战指南

在数据科学领域&#xff0c;Excel是一种广泛使用的电子表格工具&#xff0c;可以方便地进行数据管理和分析。然而&#xff0c;当数据规模较大或需要自动化处理时&#xff0c;手动操作Excel可能会变得繁琐。此时&#xff0c;使用Python编写程序将数据写入Excel文件是一个高效且便…

【办公类-16-01-02】2023年度上学期“机动班下午代班的排班表——跳过周三、节日和周末”(python 排班表系列)

背景需求&#xff1a; 2023年第一学期&#xff08;2023年9-2024年1月&#xff09;&#xff0c;我又被安排为“机动班”&#xff0c;根据新学期的校历&#xff0c;手动推算本学期的机动班的带班表 排版原则 1、班级数量&#xff1a;共有6个班级&#xff0c;循环滚动 2、每周次…

安装启动yolo5教程

目录 一、下载yolo5项目 二、安装miniconda&#xff08;建议不要安装在C盘&#xff09; 三、安装CUDA 四、安装pytorch 五、修改配置参数 六、修改电脑参数 七、启动项目 博主硬件&#xff1a; Windows 10 家庭中文版 一、下载yolo5项目 GitHub - ultralytics/yolov5:…

使用EF Core更新与修改生产数据库

使用EF Core的Code First&#xff0c;在设计阶段&#xff0c;直接使用Database.EnsureCreated()和EnsureDeleted()可以快速删除、更新最新的数据结构。由于没有什么数据&#xff0c;删除的风险非常低。但是对于已经投入生产的数据库&#xff0c;这个方法就绝对不可行了。 考虑…

【C进阶】指针(一)

大家好&#xff0c;我是深鱼~ 【前言】&#xff1a; 指针的主题&#xff0c;在初阶指针章节已经接触过了&#xff0c;我们知道了指针的概念&#xff1a; 1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址的唯一标识一块内存空间&#xff08;指针变量&#xff09;&a…

集丰照明|汽车美容店设计,装修色彩灯光搭配方法

正确处理好店面的空间设计。 店铺各个功能区设计要合理&#xff0c;衔接合理&#xff0c;这样既能提高员工的工作效率也能提高顾客的满意度。合理安排店铺的空间分配&#xff0c; 要给顾客一种舒适度&#xff0c;既不能让顾客感觉到过于拥挤&#xff0c;又不能浪费店铺的有限空…

.NET Core 实现日志打印输出在控制台应用程序中

在本文中&#xff0c;我们将探讨如何在 .NET Core 应用程序中将日志消息输出到控制台&#xff0c;从而更好地了解应用程序的运行状况。 .NET Core 实现日志打印输出在控制台应用程序中 在 .NET Core 中&#xff0c;日志输出打印是使用 Microsoft.Extensions.Logging 命名空间…

【LeetCode-面试经典150题-day14】

目录 19.删除链表的倒数第N个结点 82.删除排序链表中的重复元素Ⅱ 61. 旋转链表 86.分隔链表 146.LRU缓存 19.删除链表的倒数第N个结点 题意&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 【输入样例】head [1,2,3,4,5…

element-ui里el-table表格操作列多横线怎么解决

错误展示 错误原因 在vue中封装了element-ui表格&#xff0c;然后使用插槽&#xff0c;fixed定位等&#xff0c;导致样式出现了错乱 解决方案 1、线没有对齐 /* Element-UI 的table 组件出现表格线条不对齐的问题 */ body .el-table th.gutter {display: table-cell !impor…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 5 Signal/States标签页介绍

这一篇我们说下signals和State这两个怎么搞做映射,那首先我们要知道什么是Signal和state,我们看下模型, 在原来的模型里我增加了标红的圆圈处delay模块,这个delay模块就是一个state模块,表示离散的一个状态,这个是个模型的基本概念,后续我有个专栏交接simulink建模,那…

专题:平面、空间直线参数方程下的切线斜率问题

本文研究平面、空间直线在参数方程形式下&#xff0c;切线斜率&#xff08;即导数&#xff09;如何表示的问题。 如上图所示。 设 y f ( x ) &#xff0c; x φ ( t ) &#xff0c; y ψ ( t ) 当 t t 0 时&#xff0c; x x 0 &#xff0c; y y 0 &#xff0c;即点 A 坐…

为Claude的分析内容做准备:提取PDF页面内容的简易应用程序

由于Claude虽然可以分析整个文件&#xff0c;但是对文件的大小以及字数是有限制的&#xff0c;为了将pdf文件分批传入Claude人工智能分析和总结文章内容&#xff0c;才有了这篇博客&#xff1a; 在本篇博客中&#xff0c;我们将介绍一个基于 wxPython 和 PyMuPDF 库编写的简易的…

【电路设计】单节锂电池使用

前言 最近在研究如何利用单节锂电池给3.3V单片机供电。 找到两个比较好的教程 单节锂电池如何转3.3V&#xff1f;升压还是降压&#xff1f; 锂电池接了保护板&#xff0c;就可以用五伏电压直接充电了吗&#xff1f; 其中上面提到的LDO&#xff0c;这里有一个型号&#xff1…

【校招VIP】测试专业课之TCP/IP模型

考点介绍&#xff1a; 大厂测试校招面试里经常会出现TCP/IP模型的考察&#xff0c;TCP/IP协议是网络基础知识&#xff0c;但是在校招面试中很多同学在基础回答中不到位&#xff0c;或者倒在引申问题里&#xff0c;就丢分了。 『测试专业课之TCP/IP模型』相关题目及解析内容可点…

Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

项目场景&#xff1a; 最近因为公司业务需要在搭一个新架构&#xff0c;用的springboot3和jdk17,在整合mybatis多数据源的时候报错 &#xff08;引用的mybatisplus 和 mybatisplusjion的是最新的包-2023-08-26&#xff09; Error creating bean with name ‘XXXServiceImpl’:…

有限与无限游戏 | 真北荐书

2023佛山敏捷之旅暨DevOps Meetup志愿者为进行大会的组织与准备&#xff0c;每周三晚有一个例会。 例会前等人的时间&#xff0c;涌现出一个小的分享环节。今天分享这本书&#xff1a;《有限与无限游戏》。 大家选择成为志愿者&#xff0c;是一个无限游戏。而组织活动和完成各种…

Qt XML文件解析 QDomDocument

QtXml模块提供了一个读写XML文件的流&#xff0c;解析方法包含DOM和SAX,两者的区别是什么呢&#xff1f; DOM&#xff08;Document Object Model&#xff09;&#xff1a;将XML文件保存为树的形式&#xff0c;操作简单&#xff0c;便于访问。 SAX&#xff08;Simple API for …

视频监控/视频集中存储/云存储平台AI智能分析网关V3——功能简介

安防监控/视频集中存储/云存储平台AI智能分析网关V3内置了20多种AI算法&#xff0c;可针对安全生产、通用园区、智慧食安、石油化工等场景&#xff0c;提供基于视频智能检测技术的个性化行业解决方案。今天来具体介绍下v3版本的智能分析网关有哪些算法功能配置。 一、硬件 安防…

DDR与PCIe:高性能SoC的双引擎

SoC芯片无处不在&#xff0c;小到家电控制的MCU&#xff0c;大到手机芯片&#xff0c;我们都会接触到。如今大部分芯片设计公司都在开发SoC芯片&#xff0c;一颗SoC芯片可以集成越来越多的功能&#xff0c;俨然它已成为IC设计业界的焦点。 高性能、高速、高带宽的互联和存储的…

深入分析负载均衡情景

本文出现的内核代码来自Linux5.4.28&#xff0c;为了减少篇幅&#xff0c;我们尽量不引用代码&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、有几种负载均衡的方式&#xff1f; 整个Linux的负载均衡器有下面的几个类型&#xff1a; 实际上内核的负载均衡…