SSD202 移植 新屏幕

1 uboot:

1.1 配置:

CONFIG_CMD_BOOTLOGO
CONFIG_SSTAR_DISP
CONFIG_SSTAR_PNL
CONFIG_SSTAR_JPD

1.2 编译

obj-$(CONFIG_CMD_BOOTLOGO) += cmd_bootlogo.o

ifdef CONFIG_SSTAR_DISP
CFLAGS_cmd_bootlogo.o += -I$(srctree)/drivers/mstar/common
CFLAGS_cmd_bootlogo.o += -I$(srctree)/drivers/mstar/disp/drv/midisp/pub
endif

ifdef CONFIG_SSTAR_PNL
CFLAGS_cmd_bootlogo.o += -I$(srctree)/drivers/mstar/common
CFLAGS_cmd_bootlogo.o += -I$(srctree)/drivers/mstar/panel/drv/mipnl/pub
endif

ifdef CONFIG_SSTAR_JPD
CHIP_NAME := $(subst ",,$(CONFIG_SYS_CONFIG_NAME))
CFLAGS_cmd_bootlogo.o += -I$(srctree)/drivers/mstar/jpd/$(CHIP_NAME)/inc
endif

1.3 cmd_bootlogo.c:

入口 do_display()
ret = find_dev_and_part(strENVName, &dev, &pnum, &part); // 获取LOGO分区序号
start = part->offset; // 数据分区起点
size = part->size; // 数据分区容量
sprintf(cmd_str, “nand read.e 0x%p %s”, pRawData, strENVName); //读取分区数据
//Parsing Header 后续代码分析数据头
1 数据以 “SSTAR” 开始
2 数据紧跟着为 SS_HEADER_Desc_t 内容
3 读取所有的 SS_SHEADER_DataInfo_t 名字为 “DISP” 显示参数数据
4 读取所有的 SS_SHEADER_DataInfo_t – pstPictureInfo 名字为 “LOGO” jpg图像数据
BootJpdYuvCtrl(pstPictureInfo->stDataInfo.u32DataTotalSize, (u32)((s8 *)pstPictureInfo + pstPictureInfo->stDataInfo.u32SubHeadSize),
pDispInfo->u32DispBufSize, pDispInfo->u32DispBufStart, &u16ImgWidth, &u16ImgHeight, (PIC_ROTATION_e)simple_strtoul(argv[5], NULL, 0));
图像解码到 pDispInfo
_BootDispCtrl(puDispPnl, pDispInfo, u32Shift, enAspectRatio, u32X, u32Y, u16ImgWidth, u16ImgHeight);
显示图像

由上面可以看出,它显示和数据都依据LOGO分区里的数据进行显示。
更换屏幕,不需要对uboot做屏幕相关的配置。

注意:买屏幕需要注意,有些屏幕需要上电通过SPI配置后才能正常解析RGBTTL信号。刚好踩中这种少数屏幕。PCB没有设计连线,重新下单。

2 BOOTLOGO 分区

2.1 生成工具和实例

工具源码位于:image/makefiletools/src/rawgenerator/

2.1.1 makefile:

TARGET_DISP := dispcfggen  	# 用来配置屏幕参数
TARGET_LOGO := logogen		# 用来追加显示的图片数据
gcc -m32 -Wall ss_raw_header.c logo_data_main.c -o ../../bin/$(TARGET_LOGO)
gcc -m32 -Wall -I./pnl ss_raw_header.c disp_data_main.c -o ../../bin/$(TARGET_DISP)

2.1.2 实例参考:

/opt/project/image/makefiletools/bin/dispcfggen -c -o /opt/project/image/output/images/logo -p 0x7c00000 -s 0x300000 -d CC0702I50R
----------------- SS_SHEADER_InsertDispTable s8UsedName = CC0702I50R
LOGO header size 56
First use: CC0702I50R
Insert disp name: RM68200
Disp header size (260) mhal pnl para size(148) spi cmd size(842)
Insert disp name: SAT070CP50
Disp header size (260) mhal pnl para size(148) spi cmd size(0)
Insert disp name: ADT07016BR50
Disp header size (260) mhal pnl para size(148) spi cmd size(0)
Insert disp name: CC0702I50R
Disp header size (260) mhal pnl para size(148) spi cmd size(0)
Insert disp name: SAT070BO30I21Y0
Disp header size (260) mhal pnl para size(148) spi cmd size(35)
Data count 5, total size 2180(0x884), first use addr 1692(0x69c)
dipslay_start=0x07c00000
dipslay_size=0x00300000
/opt/project/image/makefiletools/bin/logogen -a -i /opt/project/board/ini/misc/sigmastar1024_600.jpg -o /opt/project/image/output/images/logo
Ready to open logo file /opt/project/board/ini/misc/sigmastar1024_600.jpg
Get file size 25797 sub head size 44
/opt/project/image/makefiletools/bin/logogen -a -i /opt/project/board/ini/misc/upgrade.jpg -o /opt/project/image/output/images/logo
Ready to open logo file /opt/project/board/ini/misc/upgrade.jpg
Get file size 17833 sub head size 44

2.2 LOGO图片:

  • board/ini/misc/添加对应文件 hivisi_720_720.jpg
  • 同时更新 configs/nvr/i2m/8.2.1/spinand.ram-glibc-squashfs.011a.128
    BOOTLOGO_FILE = hivisi_720_720.jpg

2.3 屏参头文件:

  • 参考 pnl/CC0702I50R_1024x600.h编制适用的头文件YX40006A_720x720.h
    MhalPnlParamConfig_t 为MHAL框架
  • 同时把 对应参数添加到 disp_data_main.c 文件里。
#include "YX40006A_720x720.h"
SS_SHEADER_TableHandler_t stTable[] = {                                           
									   {"YX40006A", &stPanel_YX40006A_720x720, NULL}
									   };
  • YX40006A_720x720.h

6, //MS_U8 m_ucPanelHSyncWidth; HSYNC 宽度
25, //MS_U8 m_ucPanelHSyncBackPorch; HSYNC 后肩
7, //MS_U8 m_ucPanelVSyncWidth; VSYNC 宽度
17, //MS_U8 m_ucPanelVBackPorch; VSYNC 后肩
31, //MS_U16 m_wPanelHStart; (PANEL_HSYNC_WIDTH + PANEL_HSYNC_BACK_PORCH)
24, //MS_U16 m_wPanelVStart; (PANEL_VSYNC_WIDTH + PANEL_VSYNC_BACK_PORCH)
720, //MS_U16 m_wPanelWidth;
720, //MS_U16 m_wPanelHeight;
776, //MS_U16 m_wPanelHTotal; HSYNC 所有时间
759, //MS_U16 m_wPanelVTotal; VSYNC 所有时间

  • 同时修改显示配置configs/nvr/i2m/8.2.1/spinand.ram-glibc-squashfs.011a.128
    DISP_OUT_NAME = YX40006A

2.4 制作LOGO分区数据

/opt/project/image/makefiletools/bin/dispcfggen -c -o /opt/project/image/output/images/logo -p 0x7c00000 -s 0x300000 -d YX40006A
/opt/project/image/makefiletools/bin/logogen -a -i /opt/project/board/ini/misc/hivisi_720_720.jpg -o /opt/project/image/output/images/logo
/opt/project/image/makefiletools/bin/logogen -a -i /opt/project/board/ini/misc/upgrade.jpg -o /opt/project/image/output/images/logo

3 应用显示

3.1 fbdev.ini

cat board/i2m/SSC011A-S01A/config/fbdev.ini
# FBDEV 将会根据[FB_DEVICE]项目的定义生成fbdev设备节点
# 可以有多个[FB_DEVICE],并生成多个fbdev设备节点
[FB_DEVICE]
# 该fbdev使用的gop(graphic hardware) ID
FB_HWLAYER_ID = 1
# fbdev的framebuffer使用的gop graphic window ID
FB_HWWIN_ID = 0
# deprecated 舍弃了
FB_HWLAYER_DST = 3
# 该fbdev的framebuffer使用的颜色格式 
# RGB565 = 1
# ARGB4444 = 2
# ARGB8888 = 5
# ARGB1555 = 6
# YUV422 = 9
# I8 = 4
# I4 = 13
# I2 = 14
FB_HWWIN_FORMAT = 5
# 修改Output color,0为RGB,1为YUV
FB_HWLAYER_OUTPUTCOLOR = 1
# 该fbdev的framebuffer的初始化xres,yres 
FB_WIDTH = 720
FB_HEIGHT = 720
#在自动获取到当前的显示timing之前,使用的初始化gop输出timing 宽高
FB_TIMMING_WIDTH = 1920
FB_TIMMING_HEIGHT = 1080
# 如果系统的mmap “有” layout项目为E_MMAP_ID_FB
# 那么FBDEV的framebuffer 将使用此处的内存
FB_MMAP_NAME = E_MMAP_ID_FB
# 如果系统的mmap “没有” 为FBDEV layout一块内存
# 那么FBDEV的framebuffer将申请如下长度的内存作为framebuffer
FB_BUFFER_LEN = 4096
#unit:Kbyte,4096=4M, fbdev.ko alloc size = FB_BUFFER_LEN*1024

还可以支持鼠标配置,可参考https://wx.comake.online/doc/syg27dk2rkls-SSD20X/customer/development/software/UI/FBDEV.html

3.2 应用显示 disp_init

该APP在sdk目录verify\application\disp_init\src下。

同理参考其它屏幕新建 YX40006A_720x720.h
MI_PANEL_ParamConfig_t 为MI框架
修改 sstardisp.c
添加对应分辨率和头文件

3.3 应用显示 bootanimation

该APP在sdk目录verify\application\bootanimation\src下。
同理参考其它屏幕新建 YX40006A_720x720.h
MI_PANEL_ParamConfig_t 为MI框架
修改 bootanimation.c
添加对应分辨率和头文件
#include “YX40006A_720x720.h”
#define VDEC_OUTPUT_WIDTH 720
#define VDEC_OUTPUT_HEIGHT 720

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SSD202D是一款专业的烟雾传感器,可用于家庭、商业、工业等领域的火灾探测和烟雾报警。其PDF文件包含着详细的产品规格、特性及应用场景。在产品规格方面,SSD202D采用悬浮式设计,可检测出更小的烟雾颗粒;它还支持多电压输入,适配不同电源接口;蜂鸣器输出声音强度高达85分贝,能在危险情况下及时报警。在特性方面,SSD202D通过了UL认证和EN54-7标准,证明了其质量和可靠性达到了国际标准。它还具有高度灵敏度、快速响应和防误报等特性,在火灾发生时能够实现准确的探测和报警。在应用场景方面,SSD202D可广泛应用于室内烟雾检测和报警,如住宅、酒店、学校、办公场所、医院等场所。总之,SSD202D是一款高品质、高性能、高可靠性的烟雾传感器,能有效预防火灾事故的发生。 ### 回答2: SSD202D是一款广泛用于汽车电子系统的平行输入输出(PIO)芯片。该芯片具有16位输入和输出端口,可兼容多种不互斥的接口,比如8051、AVR、PIC、ARM等微控制器。SSD202D提供了高性能的时序,能够通过按键输入或输出多种信号并保持数据的一致性。同时,该芯片集成了上拉电阻和输出电流驱动器,节约了来自周围电路的成本和空间。SSD202D的工作电压为2.7V至5.5V,工作温度为-40℃到+125℃,非常适合在恶劣环境下使用。SSD202D的PDF文档提供了完整的器件特性和应用说明,可以帮助技术人员更好地了解和使用该芯片。作为一款经典的PIO芯片,SSD202D在汽车和其他较低复杂度的应用领域中表现优异。 ### 回答3: SSD202D是一款数字式细分步进电机驱动器,具有高性能和稳定性。它可以接受多种输入信号,如脉冲、方向、电平和串行通信等。该驱动器采用先进的DSP控制技术,具有卓越的低速运行性能、高精度定位和静音运行等特点。它可以广泛应用于印刷、电子、纺织、医疗器械和自动化设备等行业。 SSD202D的技术规格包括: 1. 电源电压:24-80伏特DC 2. 峰值电流:2-7安培 3. 工作温度:-10℃到50℃ 4. 最大速度:2000rpm 该产品的PDF文档提供了详细的技术参数和接线图,便于用户进行有效的应用。SSD202D可通过控制器、电位器、PLC或计算机进行控制。用户可以通过按规定的步骤进行简单的设置,以实现各种不同的应用需求。总之,SSD202D是一款优秀的数字式细分步进电机驱动器,具有可靠性、高效性和易于控制等特点,为用户提供了稳定、高精度的电机驱动解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值