Melis4.0[D1s]:4.测试笔记 - 内嵌的显示命令

文章目录

  • 1.配置将显示测试源码包含进工程(默认是包含了)
  • 2.不要启动melis桌面系统
  • 3.开始测试
    • 3.1 disp 命令
      • 3.1.1 disp不带参数时,打印显示信息:
      • 3.1.2 disp -c 0 8 测试4种颜色
    • 3.2 disp_layer_cfg 命令
    • 3.3 disp_mem 对显示内存写入内容
      • 3.3.1 disp_mem 测试源码有错误,更正

melis内嵌了很多测试示例,今天测试了一下显示部分的命令,开发板是mango-MQ-r-F133。

1.配置将显示测试源码包含进工程(默认是包含了)

在这里插入图片描述

2.不要启动melis桌面系统

修改《startup.sh》(位于目录 D1s-Melis/projects/d1s-mq/data/UDISK/startup.sh):
在这里插入图片描述
经过上面的修改,再编译,烧录,运行,就只能通过串口命令行和Melis的uart0进行交互。
在控制台输入 help,出现可用的全部命令:

msh />help
RT-Thread shell commands:
drvavs           - rtthread avs test code
test_dms_uart    - test dms uart
power_info       - power_info
sdmmctest        - SdmmcTestCommand
aplay            - Play music
arecord          - Record voice
aduplex          - Playback and Record
amixer           - amixer utils
soundcard        - soundcard info
disp             - disp cmd
hal_gpio         - gpio hal APIs tests
hal_twi          - twi hal APIs tests
hal_spi          - spi hal APIs tests
hal_gpadc        - gpadc hal APIs tests
hal_rtc          - rtc hal APIs tests
hal_udc          - udc hal APIs tests
hal_udc_dl_adjust - udc hal driverlevel adjust
hal_udc_ed_test  - udc hal ed tests
hal_hci_rm       - hci hal APIs tests
hal_hci          - hci hal APIs tests
hci_dl_adjust    - hci driver level adjust
hci_ed_test      - hci hal ed tests
disp_mem         - disp mem
disp_layer_cfg   - disp set layer
disp_layer_alpha_test - disp_layer_alpha_test
disp_layer_scal_test - disp_layer_scal_test
disp_layer_format_test - disp_layer_format_test
disp_lbc_test    - disp lbc test
ths_gt           - thermal get temp
cmd_hal_twi      - hal twi test code
cmd_drv_twi      - rtthread twi test code
willow_close     - willow_close
willow_test      - willow_test
cedar_close      - cedar_close
cedar_test       - cedar_test
audio_close_test - audio_close_test
audio_test       - audio_play_test
record_close     - record_close_test
wav_rec_test     - wav_rec_test
mp3_rec_test     - mp3_rec_test
wintest          - wintest
save_layer_fb    - mod_save_layer_fb
display_switch   - display_switch
mod_display_testcmd - mod_display_testcmd
lcdbl_num        - lcdbl_num
lcdbl_off        - lcdbl_off
lcdbl_on         - lcdbl_on
layer_open       - mod_layer_open
layer_close      - mod_layer_close
install_mod_display - install_mod_display
layer_request    - mod_layer_request
layer_release    - mod_layer_release
get_lcd_size     - get_lcd_size
lcdget_backcolor - lcdget_backcolor
lcdset_backcolor - lcdset_backcolor
mod_display_scaler_test - mod_display_scaler_test
mod_display_alpha_test - mod_display_alpha_test
lbc_show_test    - lbc_show_test
yuv_show_test    - yuv_show_test
argb_show_test2  - argb_show_test2
argb_show_test   - argb_show_test
list_device      - list device in system
list_timer       - list timer in system
list_memheap     - list memory heap in system
list_msgqueue    - list message queue in system
list_mailbox     - list mail box in system
list_mutex       - list mutex in system
list_event       - list event in system
list_sem         - list semaphore in system
query_thread     - query thread
list_thread      - list thread
version          - show RT-Thread version information
helloworld       - say hello to RT-Thread
free             - Show the memory usage in the system.
ps               - List threads in the system.
help             - RT-Thread shell help.
hello            - say hello shell
echo             - echo string to file
df               - disk free
mkfs             - format disk with file system
mkdir            - Create the DIRECTORY.
pwd              - Print the name of the current working directory.
cd               - Change the shell working directory.
cat              - Concatenate FILE(s)
mv               - Rename SOURCE to DEST.
cp               - Copy SOURCE to DEST.
adbd             - adbd service
fork             - create a thread to run a command
chip_name        - chip name information.
uname            - cat system.
slabinfo         - slab information.
listirq          - list irq handler.
m                - modify memory or register value
p                - print memory or register value
$                - enter panic mode
reboot           - reboot or jump to efex
top              - top task
mmlk             - memory leak check command
backtrace        - backtrace command
getprop          - getprop service
date             - See now date
exit             - Exit current console
send_key         - send a to keyboar of input system
uninsmod         - uninstall a mod
insmod           - install a mod
update           - update system
mtop             - test bus width
ths_set_s        - thermal set strategy
tail             - read file from tail
touch            - create empty file
grep             - search string from file
hd               - the same as 'hexdump -C'
hexdump          - dump binary data in decimal
ll               - the same as 'ls -kl'
ls               - list file or directory
rm               - Remove(unlink) the FILE(s).
rwcheck          - do read / write check
umount           - umount filesystem
mount            - mount filesystem
list_fd          - list file descriptor
mount_table      - show mount table

其中和显示相关的有几个命令:
在这里插入图片描述

3.开始测试

3.1 disp 命令

disp命令的相关源码位于 《D1s-Melis/ekernel/drivers/hal/source/disp2/disp/disp_debug.c》 文件里面:
在这里插入图片描述

命令 参数含义
disp 不带参数打印显示信息
disp -ccolorbar 颜色测试
disp -r打印显示相关的寄存器数内容
disp -sswitch display ,切换显示接口
disp -ddump de data
disp -eenhance,设置 enhance相关参数
disp -bbacklight,背光设置

3.1.1 disp不带参数时,打印显示信息:

msh />disp
screen 0:
de_rate 300000000 hz, ref_fps:      59
mgr0: 800x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false]
dmabuf: cache[0] cache max[0] umap skip[0] overflow[0]
        lcd output      backlight(192)  fps:58.4         800x 480
        err:0   skip:4  irq:54192       vsync:0 vsync_skip:0
   BUF    enable ch[0] lyr[0] z[0] prem[N] a[pixel 255] fmt[  0] fb[ 640, 480; 640, 480; 640, 480] crop[   0,   0, 640, 480] frame[  80,   0, 640, 480] addr[0x40f5f000,0x00000000,0x00000000] flags[0x       0] trd[0,0]

3.1.2 disp -c 0 8 测试4种颜色

# disp -c 表示颜色测试,下面的 0表示screen0,8 表示显示内嵌的4种颜色
disp -c 0 8 

测试效果:
在这里插入图片描述
源码中对最后面一个参数的注释:

	/*val:*/
	/*0:DE-->tcon-->other interface*/
	/*1-7:tcon or edp or other device's builtin patten*/
	/*for tcon:*/
	/*1:color bar*/
	/*2:grayscale check*/
	/*3:black and white check*/
	/*4:all 0*/
	/*5:all 1*/
	/*6:reserve*/
	/*7:Gridding*/
	/*for edp:*/
	/*1:colorbar*/
	/*2:mosaic*/

测试下面的命令:

disp -c 0 1 

效果:
在这里插入图片描述
继续测试:

disp -c 0 2 

效果,有些灰阶:
在这里插入图片描述
继续测试:

disp -c 0 3 

效果和 disp -c 0 2 接近,纯灰,没有阶梯感。
disp -c 0 4 是全部黑色, disp -c 0 5 是全部白色。
disp -c 0 6 disp -c 0 8 一样。
继续测试:

disp -c 0 7 

网格效果:
在这里插入图片描述

3.2 disp_layer_cfg 命令

这个命令的源文件是 《D1s-Melis/ekernel/drivers/hal/test/disp2/disp_layer_cfg.c》
在这里插入图片描述
本命令用于对下面结构体赋值:

struct test_layer_cfg
{
	int screen_id;
	int layer_id;
	int mem_id;
	struct disp_layer_config layer_cfg;
	int addr_map;
	int width,height;//screen size
	rt_device_t dispfh;//device node handle
	FILE *fh;//picture resource file handle
	void* mem;
	int clear;//is clear layer
	int fullscreen;//is full screen
	char filename[32];
};
struct disp_layer_config {
	struct disp_layer_info info;
	bool enable;
	unsigned int channel;
	unsigned int layer_id;
};
struct disp_layer_info {
	enum disp_layer_mode mode;
	unsigned char zorder;
	/* 0: pixel alpha;  1: global alpha;  2: global pixel alpha */
	unsigned char alpha_mode;
	unsigned char alpha_value;	/* global alpha value */
	struct disp_rect screen_win;	/* display window on the screen */
	bool b_trd_out;		/* 3d display */
	enum disp_3d_out_mode out_trd_mode;	/* 3d display mode */
	union {
		unsigned int color;	/* valid when LAYER_MODE_COLOR */
		struct disp_fb_info fb;	/* valid when LAYER_MODE_BUFFER */
	};

	unsigned int id; /* frame id, the id of frame display currently */
};
命令 参数设置变量
disp_layer_cfg -chtest_layer_cfg.screen_id
disp_layer_cfg -mem_idtest_layer_cfg. mem_id
disp_layer_cfg -channel_idtest_layer_cfg. layer_cfg.channel
disp_layer_cfg -in_fbtest_layer_cfg. layer_cfg.info.fb.format
disp_layer_cfg -layer_modetest_layer_cfg.layer_cfg.info.mode
disp_layer_cfg -alphatest_layer_cfg.layer_cfg.info.alpha_value
disp_layer_cfg -screen_wintest_layer_cfg. layer_cfg.info.screen_win
disp_layer_cfg -layer_idlayer_cfg.layer_id

这个命令用到下面的实例:

disp_layer_cfg  -in_fb 0 800 480 0 0 800 480 4

对应源码:

		if ( ! strcmp(argv[i], "-in_fb")) {
			if (argc > i+8) {
				i++;
				p->layer_cfg.info.fb.format = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.size[0].width = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.size[0].height = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.crop.x = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.crop.y = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.crop.width = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.crop.height = atoi(argv[i]);
				i++;
				p->layer_cfg.info.fb.align[0] = atoi(argv[i]);
			}	else {
				printf("-in_fb para err!\n\n");
				err ++;
			}
		}

3.3 disp_mem 对显示内存写入内容

命令 参数设置变量
disp_mem -mem_id显示内存索引
disp_mem -size显示范围的宽和高
disp_mem -file将文件中的数据写入显示内存,如果文件名以rbg三个字母中的一个开头,就全部显示单一颜色,r=红,g=绿,b=蓝

本命令要配合上一节的disp_layer_cfg 命令,依次输入:

#	1.对显示内存全部填充红色
disp_mem -mem_id 0 -size 800 480  -file  r
#	2.配置显示图层
disp_layer_cfg  -in_fb 0 800 480 0 0 800 480 4

显示效果:
在这里插入图片描述

3.3.1 disp_mem 测试源码有错误,更正

源码文件路径 《D1s-Melis/ekernel/drivers/hal/test/disp2/disp_mem.c》
在这里插入图片描述
修改为:

		while(count--) {
				*(tmp + 3) = 0xff;//A
				*(tmp + 2) = filename[0]=='r'?0xff:0;//R
				*(tmp + 1) = filename[0]=='g'?0xff:0;//G
				*(tmp + 0) = filename[0]=='b'?0xff:0;//B
				tmp+=4;
		}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全球自动驾驶竞争力最新排行榜,4家中国企业上榜

发展至今,自动驾驶技术不仅是汽车行业的一个主战场,更是全球科技领域中备受关注和充满竞争的一个重要领域。近年来,各大汽车制造商和科技公司都在投入大量财力物力人力进行自动驾驶技术的研发,并进一步争夺市场份额。 当然&#…

人工智能前沿——「小海带」超全视觉注意力机制资源分享(附下载链接)

📚📚 人工智能 | 计算机视觉 —— 致力于目标检测领域科研Tricks改进与推荐 | 主要包括主干网络改进、轻量化网络、注意力机制、检测头部改进、空间金字塔池化、损失函数及NMS改进、ICCV/CVPR/ECCV视觉顶会创新点改进、各类数据集资源分享以及算法训练相…

智云通CRM:如何给客户创造尽可能安全的成交环境?

销售人员要想和客户顺利成交,给对方创造尽可能安全的成交环境尤为重要。销售人员的每一句话和每一个观点,应当都是客户所想的。客户是非常聪明的,有任何风吹草动,他们都会提高警惕,这就是客户跟销售人员之间关系的现状…

笔记:关于使用vitepress 制作静态站点并托管到gitee

笔记:关于使用vitepress 制作静态站点并托管到giteegiteejcLee95:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/129419979…

spring5(五):AOP操作

spring5(五):AOP操作前言一、代理模式1、场景模拟2、代理模式2.1 概念2.2 静态代理2.3 动态代理二、AOP概述1、什么是 AOP?2、相关术语3、作用三、AOP底层原理1、AOP 底层使用动态代理2、AOP(JDK 动态代理)2.1 编写 J…

二分查找(二)

2.练习题 3) 力扣https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/这题需要分三种情况,第一种是区间有序,正常二分查找,第二种是区间 被旋转,左区间的值大于右区间,需要比较目标值和左区…

机器视觉行业公司2023今年最大的特点-老员工真香现象出现,事出反常必有妖

老员工真香现象出现,事出反常必有妖。-老人涨薪,新人不招或降薪,工作2-3年最值得跳槽,培训后好找工作。 你可能看到以上现象很反感,但是现在机器视觉行业环境就是这个样子的。 今年机器视觉行业最大的特点就是项目技术…

Atlassian Server用户新选择 | 迁移到数据中心版前,您需要做这些准备(2)

2024年2月,也就是一年不到,Atlassian将终止对Server产品及插件的所有支持。 此公告发布后,许多用户需要了解怎样的前进方向才是最适合企业的。为此,Atlassian不仅提供云版,还提供了本地部署的数据中心(Data…

排序算法之希尔排序

📝个人主页:爱吃炫迈 💌系列专栏:数据结构与算法 🧑‍💻座右铭:快给我点赞赞💗 文章目录1. 希尔排序2. 算法思路3. 算法实现4. 算法性能分析💞总结💞1. 希尔排…

帆软FineReport学习篇(一)

帆软FineReport学习篇(一) 1 FineReport 11版下载 1.1 进入下载官网 fineReport 11版本下载链接 1.2 选择合适的版本,点击下载即可 2 解决问题的途径 2.1 社区搜索 2.1.1 进入社区官网 社区官网 2.1.2 输入搜索内容,点击搜索 1.1.3 选择你所需要的答案,建议优先点击官方…

易基因-单细胞甲基化测序单细胞转录组测序

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 易基因单细胞甲基化测序&单细胞转录组测序 高通量单细胞DNA甲基化测序简介 单细胞DNA甲基化组学研究很大程度上受制于建库技术,传统的文库构建方法或类似于基因组DNA的单…

【Python】1分钟就能制作精美的框架图?太棒啦

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、准备二、基本使用与例子1.初始化与导出2.节点类型3.集群块4.自定义线的颜色与属性总结前言 Diagrams 是一个基于Python绘制云系统架构的模块,它能…

使用Pytorch实现对比学习SimCLR 进行自监督预训练

SimCLR(Simple Framework for Contrastive Learning of Representations)是一种学习图像表示的自监督技术。 与传统的监督学习方法不同,SimCLR 不依赖标记数据来学习有用的表示。 它利用对比学习框架来学习一组有用的特征,这些特征…

linux 匿名管道 pipe

专栏内容:linux下并发编程个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.目录 前言 概述 原理介绍 接口说明 pipe 与 fifo的区别 代码演示 结尾 前言 本专栏主…

【K8S系列】深入解析无状态服务

目录 序言 1. 无服务介绍 1.1 优点 1.2 使用场景 1.3 资源类型 1.4 总结 2 使用介绍 2.1 Deployment 使用场景: 2.2 ReplicaSet 使用场景 2.3 pod Pod 资源定义示例 2.4 service 创建一个Deployment: 创建一个Service: 总结…

ChatGPT,让程序员从一片黑暗森林奔向另一片黑暗森林!

几年前看过一个电影,叫做《隐藏人物》,主要讲三位女性在NASA工作时反抗“种族歧视”和“性别歧视”的故事,其中有个情节让我印象极其深刻:NASA计算部门有一群女生,她们的工作是计算飞船轨道,纯手工计算。某…

【算法基础】(一)基础算法 --- 离散化

✨个人主页:bit me ✨当前专栏:算法基础 🔥专栏简介:该专栏主要更新一些基础算法题,有参加蓝桥杯等算法题竞赛或者正在刷题的铁汁们可以关注一下,互相监督打卡学习 🌹 🌹 &#x1f3…

软件测试,自学3个月出来就是高薪工作?你以为还是2019年以前?

朋友,作为一个曾经从机械转行到IT的行业的过来人,已在IT行业工作4年,分享一下我的经验,供你参考。 讲真,现在想通过培训班培训几个月就进入IT行业,越来越来难了;如果是在2018年以前,…

Spark 算子

目录 什么是Spark rdd算子 算子的分类 Transformation算子 Action算子 转换算子 Value类型 map mapPartitions mapPartitionsWithIndex glom groupBy filter sample distinct coalesce sortBy 双Value类型 intersection union subtract zip K-V类型 par…

【Java基础】-【SpringMVC】

目录什么是MVC?DAO层是做什么的?Spring MVC的执行流程Spring MVC常用注解Spring MVC的拦截器怎么去做请求拦截?其他cookie和session的区别cookie和session各自适合的场景session的工作原理get请求与post请求的区别get请求的参数能放到body里面…