企业网站建设模拟实验自己做的手工放在哪个网站卖

张小明 2025/12/31 4:45:43
企业网站建设模拟实验,自己做的手工放在哪个网站卖,seo外包收费,如何制作网络平台RK3588 U-Boot 启动 Logo 显示流程详解 目录 概述 显示子系统架构 Logo显示流程 关键数据结构 BMP图像处理 VOP2显示控制器 设备树配置 时序图 源码路径参考 概述 RK3588 的 U-Boot 启动 Logo 显示功能基于 DRM (Direct Rendering Manager) 子系统实现,支持多种显示接口(HD…RK3588 U-Boot 启动 Logo 显示流程详解目录概述显示子系统架构Logo显示流程关键数据结构BMP图像处理VOP2显示控制器设备树配置时序图源码路径参考概述RK3588 的 U-Boot 启动 Logo 显示功能基于 DRM (Direct Rendering Manager) 子系统实现,支持多种显示接口(HDMI、eDP、MIPI、LVDS等)和多种格式的 BMP Logo 图片。主要特性特性描述显示接口HDMI0/1, eDP0/1, MIPI0/1, LVDS0/1, RGB, BT1120/656VOPVOP2 (Video Output Processor 2) - 支持4个Video PortBMP格式8bpp(RLE8压缩), 24bpp, 32bpp显示模式全屏(Fullscreen), 居中(Center)Logo来源Resource分区, Distro分区, 内置编译显示子系统架构┌─────────────────────────────────────────────────────────────────────┐ │ RK3588 显示子系统架构 │ └─────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────┐ │ 应用层 (U-Boot 命令) │ │ rockchip_show_logo | rockchip_show_bmp | bmp info │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ DRM Display Framework │ │ rockchip_display.c (显示子系统管理) │ │ ├─ display_init() 初始化显示设备 │ │ ├─ display_logo() 显示Logo │ │ ├─ load_bmp_logo() 加载BMP图片 │ │ └─ display_set_plane() 设置显示平面 │ └─────────────────────────────────────────────────────────────────┘ │ ┌──────────────────────────┼──────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ VOP2 │ │ Panel │ │ Bridge │ │ (CRTC) │◄────────────►│ (Connector)◄─────────┤ (HDMI/ │ │ │ │ │ │ MIPI/ │ │ Overlay │ │ ┌─────┐│ │ eDP) │ │ Cluster │ │ │ LCD ││ └─────────┘ │ Smart │ │ └─────┘│ │ Layer │ │ ┌─────┐│ │ │ │ │ HDMI││ │ │ │ └─────┘│ └─────────┘ └─────────┘ │ │ └──────────┬───────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 显示输出 │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ HDMI│ │ eDP │ │ MIPI│ │ LVDS│ │ RGB │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ └─────────────────────────────────────────────────────────────────┘Logo显示流程1. 整体流程┌────────────────────────────────────────────────────────────────────┐ │ Logo 显示完整流程 │ └────────────────────────────────────────────────────────────────────┘ U-Boot 启动 │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 1. rockchip_display_probe() │ │ drivers/video/drm/rockchip_display.c:1871 │ │ ├─ 解析设备树 display-subsystem │ │ ├─ 解析 route 节点获取显示路径 │ │ ├─ 为每个显示路径创建 display_state │ │ ├─ 关联 CRTC (VOP2) 和 Connector (Panel/Bridge) │ │ ├─ 读取 Logo 配置 (logo,uboot / logo,kernel) │ │ └─ 初始化显示缓冲区 │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 2. rockchip_show_logo() │ │ drivers/video/drm/rockchip_display.c:1412 │ │ 遍历所有 display_state,为每个显示设备加载并显示 Logo │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 3. load_bmp_logo() │ │ drivers/video/drm/rockchip_display.c:1251 │ │ ├─ 检查 logo cache,已加载则直接返回 │ │ ├─ 读取 BMP 头部 (512 bytes) │ │ ├─ 确定图片来源: │ │ │ ├─ FROM_RESOURCE: resource 分区 │ │ │ ├─ FROM_DISTRO: distro 分区 │ │ │ └─ FROM_INTERNEL: 编译内置 │ │ ├─ 读取完整 BMP 数据到显示缓冲区 │ │ ├─ 解码 BMP (如果不是 16/32 bpp) │ │ └─ 填充 logo_info 结构体 │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 4. display_logo() │ │ drivers/video/drm/ockchip_display.c:997 │ │ ├─ display_init() │ │ │ ├─ 初始化 Connector (Panel/Bridge) │ │ │ ├─ 获取显示时序 (display_get_timing) │ │ │ ├─ 验证时序 (display_mode_valid) │ │ │ ├─ 初始化 CRTC (VOP2) │ │ │ └─ 设置显示模式 │ │ ├─ 根据 logo bpp 设置 crtc format │ │ ├─ 计算 src_rect (Logo尺寸) 和 crtc_rect (显示位置) │ │ ├─ display_check() 检查配置 │ │ ├─ display_set_plane() 设置显示平面 │ │ └─ display_enable() 启用显示输出 │ └──────────────────────────────────────────────────────────────────┘ │ ▼ Logo 显示完成2. 显示子系统初始化文件位置: drivers/video/drm/rockchip_display.c:1871staticintrockchip_display_probe(structudevice*dev){structvideo_priv*uc_priv=dev_get_uclass_priv(dev);structvideo_uc_platdata*plat=dev_get_uclass_platdata(dev);// 1. 初始化显示缓冲区init_display_buffer(plat-base);// 2. 解析 display-subsystem/route 节点route_node=dev_read_subnode(dev,"route");ofnode_for_each_subnode(node,route_node){if(!ofnode_is_available(node))continue;// 3. 获取连接器 endpointphandle=ofnode_read_u32_default(node,"connect",-1);ep_node=of_find_node_by_phandle(phandle);// 4. 通过 endpoint 找到对应的 CRTC (VOP)vop_node=of_get_parent(port_parent_node);uclass_get_device_by_ofnode(UCLASS_VIDEO_CRTC,np_to_ofnode(vop_node),crtc_dev);crtc=(structrockchip_crtc*)dev_get_driver_data(crtc_dev);// 5. 获取 Connector (Panel/Bridge)conn=rockchip_of_get_connector(np_to_ofnode(ep_node));// 6. 读取 Logo 配置if(!ret!ofnode_read_string_index(node,"logo,uboot",0,name))memcpy(s-ulogo_name,name,strlen(name));if(!ret!ofnode_read_string_index(node,"logo,kernel",0,name))memcpy(s-klogo_name,name,strlen(name));// 7. 读取显示模式ofnode_read_string_index(node,"logo,mode",0,name);if(!strcmp(name,"fullscreen"))s-logo_mode=ROCKCHIP_DISPLAY_FULLSCREEN;elses-logo_mode=ROCKCHIP_DISPLAY_CENTER;// 8. 创建 display_state 并加入链表s=malloc(sizeof(*s));s-conn_state.connector=conn;s-crtc_state.crtc=crtc;list_add_tail(s-head,rockchip_display_list);}// 9. 预初始化显示设备display_pre_init();return0;}3. Logo加载流程文件位置: drivers/video/drm/rockchip_display.c:1251staticintload_bmp_logo(structlogo_info*logo,constchar*bmp_name){structrockchip_logo_cache*logo_cache;structbmp_header*header;void*dst=NULL,*pdst;intsize;// 1. 查找或创建 logo cachelogo_cache=find_or_alloc_logo_cache(bmp_name);if(logo_cache-logo.mem){memcpy(logo,logo_cache-logo,sizeof(*logo));return0;// 已缓存,直接返回}// 2. 读取 BMP 头部header=malloc(RK_BLK_SIZE);// 512 bytes#ifdefCONFIG_ROCKCHIP_RESOURCE_IMAGElen=rockchip_read_resource_file(header,bmp_name,0,RK_BLK_SIZE);if(len==RK_BLK_SIZE)logo_source=FROM_RESOURCE;#endifif(rockchip_read_distro_logo(header,bmp_name,RK_BLK_SIZE)==0)logo_source=FROM_DISTRO;else{header=(structbmp_header*)logo_bmp;logo_source=FROM_INTERNEL;}// 3. 获取 BMP 信息logo-bpp=get_unaligned_le16(header-bit_count);logo-width=get_unaligned_le32(header-width);logo-height=get_unaligned_le32(header-height);size=get_unaligned_le32(header-file_size);// 4. 分配显示缓冲区pdst=get_display_buffer(size);// 5. 读取完整 BMP 数据if(logo_source==FROM_RESOURCE)rockchip_read_resource_file(pdst,bmp_name,0,size);elseif(logo_source==FROM_DISTRO)rockchip_read_distro_logo(pdst,bmp_name,size);elsepdst=(void*)logo_bmp;// 内置// 6. 解码 BMP (如果不是 16/32 bpp)if(!can_direct_logo(logo-bpp)){// 需要解码,使用 bmpdecoderlogo-bpp=(logo-bpp=16)?16:logo-bpp;dst_size=logo-width*logo-height*logo-bpp3;dst=get_display_buffer(dst_size);bmpdecoder(pdst,dst,logo-bpp);// 解码为 RGB565/RGB888logo-offset=0;logo-ymirror=0;}else{// 16/32 bpp 可以直接使用logo-offset=get_unaligned_le32(header-data_offset);if(reserved==BMP_PROCESSED_FLAG)logo-ymirror=0;elselogo-ymirror=1;}logo-mem=dst;// 7. 缓存 logo 信息memcpy(logo_cache-logo,logo,sizeof(*logo));// 8. 刷新缓存flush_dcache_range((ulong)dst,ALIGN((ulong)dst+dst_size,CONFIG_SYS_CACHELINE_SIZE));returnret;}4. Logo显示流程文件位置: drivers/video/drm/rockchip_display.c:997staticintdisplay_logo(structdisplay_state*state){structcrtc_state*crtc_state=state-crtc_state;structconnector_state*conn_state=state-conn_state;structlogo_info*logo=state-logo;inthdisplay,vdisplay,ret;// 1. 初始化显示设备ret=display_init(state);if(!state-is_init||ret)return-ENODEV;// 2. 根据 logo bpp 设置格式switch(logo-bpp){case16:crtc_state-format=ROCKCHIP_FMT_RGB565;break;case24:crtc_state-format=ROCKCHIP_FMT_RGB888;break;case32:crtc_state-format=ROCKCHIP_FMT_ARGB8888;break;default:printf("can't support bmp bits[%d]\n",logo-bpp);return-EINVAL;}// 3. 设置源矩形 (Logo尺寸)hdisplay=conn_state-mode.crtc_hdisplay;vdisplay=conn_state-mode.vdisplay;crtc_state-src_rect.w=logo-width;crtc_state-src_rect.h=logo-height;crtc_state-src_rect.x=0;crtc_state-src_rect.y=0;crtc_state-ymirror=logo-ymirror;crtc_state-rb_swap=0
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

如何做p2p网站公司网站如何做

第一章:智谱AutoGLM开源项目概述 智谱AI推出的AutoGLM是一个面向自然语言处理任务的自动化大模型应用框架,旨在降低大语言模型在实际场景中的使用门槛。该框架融合了提示工程自动化、任务推理优化与模型调度能力,支持用户以低代码方式构建智能…

张小明 2025/12/29 10:10:54 网站建设

淄博网站建设服务网业认证wifi入口

在开发财务管理系统的过程中,我们遇到了一些技术难点,本文将围绕这些难点展开讨论,并提供相应的解决方案和示例代码。 一、复杂表单与多级联动处理 技术难点 财务系统中常常涉及到复杂的表单处理,尤其是在预算制定和科目管理方面。我们需要处理以下几个方面的挑战: 多级…

张小明 2025/12/29 10:10:20 网站建设

php创建站点都兰县公司网站建设

Harmony之路:跨设备协作——分布式数据对象同步从设备发现到数据同步,构建真正的无缝跨设备体验在上一篇中,我们学习了如何通过分布式软总线发现和认证周边设备。现在,当设备建立连接后,一个更重要的需求出现了&#x…

张小明 2025/12/29 10:09:44 网站建设

做婚庆网站有哪些内容珠海高端网站建设

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个基于EVE-NG的AI辅助配置工具,能够根据用户输入的网络需求(如设备类型、拓扑结构、协议要求等),自动生成完整的EVE-NG实验环境…

张小明 2025/12/29 10:08:32 网站建设

网站备案信息更改审核要多久wordpress乱码

n8n v2.0 版本来了!官方说 12 月 15 号发正式版,已经偷跑了,docker v2.0 的标签已经去掉了 rc 标识。 官方这次没怎么在界面交互上进行大刀阔斧的改造,反而是把刀动在了底层安全和数据库驱动上。我仔细对比了更新日志和社区反馈&a…

张小明 2025/12/29 10:07:56 网站建设