ARM Linux DIY(三)板载串口和 LCD 调试

这篇具有很好参考价值的文章主要介绍了ARM Linux DIY(三)板载串口和 LCD 调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

今天焊接两大关键输入输出设备:串口和屏幕。

串口

串口部分使用 CP2102N 芯片(USB 转 TTL),这样用一根数据线连接板子和 PC 就可以直接调试了。

焊接 CP2102 和 Type C
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

上电调试,串口可以正常输入输出。
看来,虽然是 QFN 封装,只要尺寸大一点,还是很容易焊接成功的。

屏幕

重头戏在屏幕,倒不是说屏幕焊接有多难,而是软件调试折腾了两个晚上。
屏幕焊接
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

ST7789V 驱动调试

step1:使能内核驱动编译选项
屏幕的驱动芯片为 ST7789V,就在内核的 menuconfig 中搜索 ST7789V
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发
搜到了这两项,遂将这两项都置为了 [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",确定驱动入口,追下驱动代码,发现匹配到了两份驱动
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发
添加打印,发现上电后匹配的是 panel-sitronix-st7789v 这份驱动,那就禁用此启动,换下面的试试,结果还真可以,上电后屏幕直接就显示启动 log 了
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

不过,发现屏幕好像反显了,应该黑底白字才对,查看驱动,也没发现反显的设置。
不管了,修改驱动,让它再反一次
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);
...

看起来正常了
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

显示图像

借助之前的工具《LCD 显示图像——操作显存(framebuffer)》,显示一副图片看看
st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

播放视频

原料:播放器、视频
先制作播放器
下载源码 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 Team

Playing 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: mp42
 minor_version: 0
 compatible_brands: mp42mp41
 creation_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)
# 

st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

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

st7789 fbtft,# ARM,嵌入式,# Driver,arm开发

至此,串口和屏幕调试完毕文章来源地址https://www.toymoban.com/news/detail-802137.html

到了这里,关于ARM Linux DIY(三)板载串口和 LCD 调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

    目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 屏幕引脚配置 2.3 项目生成  3、KEIL端程序整合 3.1 LCD驱动添加 3.2 函数修改 3.2.1 lcd.h修改 3.2.2 lcd_innit.h 修改  3.2.3 lcd.c修改  3.2.4 lcd_inut.c修改  3.3 主函数代码 3.3.1 添加头文件 3.3.2 LCD进行初始化

    2024年02月16日
    浏览(42)
  • 【rust/esp32】初识slint ui框架并在st7789 lcd上显示

    esp32版本:s3 运行环境:no-std 开发环境:wsl2 LCD模块:ST7789V2 240*280 LCD Slint版本:master分支 github地址:这里 官网 为啥不用 lvgl ? 只能说rust的生态还是不太行,lvgl的rust binding似乎还在开发中,已经有仓库了,但是还在开发中。 slint 目前比较完善,但是相关资料也少。 反正已

    2024年02月05日
    浏览(49)
  • ARM Linux DIY(六)音频调试

    今天,调试一下音频 硬件部分核心是 LM4871 音频功放芯片 对于 SOC 来讲很简单,就一个引脚 HPOUTL(单声道);对于扬声器来讲也很简单,就两个引脚,插上就可以了。 另外一个关键点是电容和电阻要焊到位,有没有噪音,音质好坏,全屏电容电阻打下手。 arch/arm/boot/dts/sun

    2024年02月03日
    浏览(35)
  • ARM Linux DIY(八)USB 调试

    V3s 带有一个 USB 接口,将其设置为 HOST 或 OTG 模式,这样可以用来接入键盘、鼠标等 USB 外设。 USB 有两种设备:HOST 和 USB 功能设备。 在 USB2.0 中又引入了一个新的概念 OTG,即设备角色可以动态切换。 切换方式一:硬件 使用 USB_ID 引脚,默认上拉,处于 device 状态。 如果需要

    2024年02月20日
    浏览(29)
  • ARM Linux DIY(四)WiFi 调试

    换个粗点的风枪嘴,让热风覆盖 RTL8823BS 整体模块,最终实现自动归位 焊接 SDIO 接口的上拉电阻以及复位引脚上拉电阻 硬件部分就这么多比较简单,接下来是软件部分 搜索 RTL8723BS RTL8723BS 默认关闭,不过要使能该驱动之前,需要先使能 WLAN 和 CFG80211 搜索 WLAN 使能 WLAN 搜索

    2024年02月07日
    浏览(34)
  • ARM Linux DIY(五)摄像头调试

    今天,就着摄像头的调试,从嵌入式工程师的角度,介绍如何从无到有,一步一步地调出一款设备。 摄像头型号:OV2640 分为 2 个阶段 5 个步骤 阶段一: 设备树、驱动、硬件 阶段二: 应用程序、测试 a) 摄像头用到了 I2C 和 CSI 接口,所以要在 pinctrl 节点中添加这两种接口的

    2024年03月16日
    浏览(34)
  • STM32-基本知识梳理10-FSMC控制ST7789V-LCD液晶显示屏

    一、ST7789V-LCD液晶显示 1,一种计算机的I/O设备,即输入输出设备; 2,数据传递结构,光线的传递通过偏光片进行调整,最终传递到滤光片上,进而不同RGB数据点,即像素点; 3, LCD显示器的关键参数 ①像素:显示器的像素指它成像最小的点 ②分辨率:像素点的个数的乘积

    2024年02月12日
    浏览(44)
  • 给linux移植fbtft驱动st7735s小屏幕(f1c100s)

    内核版本5.4 在使用spi总线接上了一个小网卡,实现了我们开发板对网络的访问之后,我还想接一个小的spi屏幕 1.44寸款,来画一只小企鹅,顺便显示一些系统的调试信息。但是由于我这个开发板向外暴露出来的spi接口就两个,而且有一个已经因为串口的设置而不能使用。所以

    2024年02月10日
    浏览(42)
  • ARM DIY 硬件调试

    之前打样的几块 ARM 板,一直放着没去焊接。今天再次看到,决定把它焊起来。 为了提高焊接效率,先使用加热台焊接。不过板子为双面贴片,使用加热台只能焊接一面,那就优先焊主芯片那面,并把 Type C、SD 卡座还有一些关键电阻电容一并焊接。 (不过后来发现这个决定

    2024年02月12日
    浏览(36)
  • ARM DIY(六)音频调试

    今天,调试一下音频 硬件部分核心是 LM4871 音频功放芯片 对于 SOC 来讲很简单,就一个引脚 HPOUTL(单声道);对于扬声器来讲也很简单,就两个引脚,插上就可以了。 另外一个关键点是电容和电阻要焊到位,有没有噪音,音质好坏,全屏电容电阻打下手。 arch/arm/boot/dts/sun

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包