在图像显示在显示器之前,i.MX RT1170 可以通过 2D矢量图形、PXP 或者 LCDIF 等图形加速器来生成、合成和混合图形的内容,本文将介绍其中 PXP 图形加速器。
PXP (Pixel Processing Pipeline) 是 NXP 设计的一种高性能的 2D 图形处理微构架,用于在 LCD 显示之前对图像数据进行数据处理,处理操作例如图像缩放、旋转、色彩空间转换等,为无 SDRAM 和基于 SRAM 的系统,提供占用内存最小的图像数据优化和性能,PXP 将几个独立的处理阶段集成到一个内聚策略中,以创建灵活的像素管道。
1.1 PXP 功能描述
PXP 由多个管线式模块组成,执行视频源帧缩放、颜色空间转换、阿尔法混合/颜色键算法、次级 CSC、像素校正等,本文将介绍其中的旋转功能。
1.2 PXP 特性
位块传输
灵活的图像合成的
Porter-Duff 颜色渲染操作
图像旋转 (90°、180°、270°)
图像调整大小
颜色空间转换
多像素格式支持(RGB, YUV444, YUV422, YUV420, YUV400)
标准 2D-RAM 操作
二、PXP的旋转功能
PXP 中集成了一个单独的旋转资源,该资源在PXP数据路径中的位置是可编程的,旋转在输出阶段合成 AS 和 PS 缓冲区后。 作为替代配置,PS 缓冲区可以旋转,然后与未旋转的 AS 面合成,有一个配置位提供在 PXP 中执行旋转的位置配置。 要旋转图形,硬件必须在帧缓冲区的同一个方向上读取像素,并在另一个方向上写入像素,对于 90 度和 270 度的情况,这意味着在帧缓冲区中读取或写入像素行必须垂直,如下图所示。
为了更有效地旋转,就必须旋转多个列,以使引擎能够获取和存储像素,从而提高内存性能。最简单的方法是对像素进行块操作,要旋转图像,就必须按所需的每个像素块进行旋转,如下图所示。
为了管理旋转过程,可以将源图像分解为具有下图所示坐标的子块网格,除了旋转块外,每个块都必须转换到新的坐标位置,对于每种旋转角度(0、90、180、270),可以定义用于计算新转换的网格地址的简单算法,然后硬件必须简单地从加载和存储操作的基本网格地址来计算内存地址。
为了平衡对内存控制器的合理突发大小要求,并将硬件存储要求保持在最低水平,混合/旋转引擎将在 8x8 或 16x16 像素块上运行处理,将旋转引擎与输入提取引擎一起使用时,所以需要对输入提取引擎进行编程,使其在 8x8 块模式下工作。
三、PXP 旋转功能 DEMO
3.1 介绍
本文采用 NXP i.MX RT1170 开发板套件,套件所配套的屏幕为 720x1280 的 LCD 竖向屏幕如下图所示,遇到需要横向显示的情景时,就可用到 PXP 加速图像引擎旋转图像了。
3.2 导入 SDK 例程
使用 MCUXpressoIDE 导入NXP i.MX RT1170 SDK PXP rorate 例程如下图所示。
3.3 旋转程序
3.3.1 初始化输入图像缓冲区
绘制 1280x720 大小的缓冲区数组,分别用蓝、红、白、绿色,标记四块大小相同的区域,如下图所示。
static void APP_InitInputBuffer(void){ uint32_t i, j; for (i = 0; i < (360); i++) { for (j = 0; j < 640; j++) { s_psBufferPxp[i][j] = APP_BLUE; } for (; j < 1280; j++) { s_psBufferPxp[i][j] = APP_RED; } } for (; i < 720; i++) { for (j = 0; j < 640; j++) { s_psBufferPxp[i][j] = APP_GREEN; } for (; j < 1280; j++) { s_psBufferPxp[i][j] = APP_WHITE; } } memset(s_BufferLcd, 0x0U, sizeof(s_BufferLcd));}
3.3.2 PXP 初始化
pxp_rotate.c -> int main(void) -> APP_InitPxp(); 中初始化 PS 面以及设置输出图像的配置,将 PXP 配置为处理 16x16 的像素块。
// 初始化 PXPAPP_InitPxp();
PXP 使用 REG_CTRL[BLOCK_SIZE] 控制位,处理像素块可以配置为 8x8 像素块或 16x16 像素块,当优化系统的内存带宽和图像处理时间时,可以选择 16x16 像素的块大小时,获取 AS 和 PS 面以及写入最后帧缓冲区的访问效率更高,因为每个内存请求和处理的数据是原来的两倍。
// PXP 配置 为处理 16x16 的像素块PXP_SetProcessBlockSize(PXP, kPXP_BlockSize16);
3.3.3 旋转函数
pxp_rotate.c -> int main(void) -> APP_Rotate() -> PXP_SetRotateConfig() API 设置 PXP 旋转处理角度。
static const pxp_rotate_degree_t degrees[] = { kPXP_Rotate0, kPXP_Rotate90, kPXP_Rotate180, kPXP_Rotate270,}; /* Prepare next buffer for LCD. */PXP_SetRotateConfig(APP_PXP, kPXP_RotateProcessSurface, degrees[i], kPXP_FlipDisable);
3.4 例程演示效果
例程效果为每秒进行顺时针 90° 的旋转。
四、参考资料【i.MX RT1170 异构图形管线】https://www.nxpic.org.cn/module/forum/thread-621465-1-1.html
【AN13075: i.MX RT1170 Heterogeneous Graphics Pipeline – Application Note】
https://www.nxp.com.cn/docs/en/application-note/AN13075.pdf
【i.MX RT1170 Processor Reference Manual】i.MX RT1170 Processor Reference Manual (nxp.com.cn) ★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~评论评论关于作者0追随者博文信息发布日期:2021年12月25日所属集团 : 世平集团产线 : NXP浏览次数 : 907上一篇中科蓝讯 BT892xA2 FCC 测试配置下一篇QCC51xx系列开发之如何配置中断分享收藏服务信箱:dadatong.support@wpgholdings.com大联大控股 Copyright © 2019 WPG Holdings All rights reserved.沪ICP备18017932号-1沪公网安备 31011402005395号为提供您更多优质的内容,本网站使用 cookies 分析技术。若继续阅览本网站内容,即表示您同意我们使用 cookies,若不同意请关闭浏览器的 cookie 功能,关于更多资讯请阅读 Cookie 政策平台服务条款我
Hardware Emulation Platform (硬件仿真平台) 在IC验证中的运用情况如何? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册芯片(集成电路)EDA数字IC设计电子工程(EE)Hardware Emulation Platform (硬件仿真平台) 在IC验证中的运用情况如何?三个EDA公司都有自己的hardware emulation verification platform: Cadence Palladium, Sy…显示全部 关注者272被浏览154,726关注问题写回答邀请回答好问题 231 条评论分享20 个回答默认排序Evan172EDA again 关注先回答你的问题:这些工具在IC验证工作中的使用情况如何?可视为Simulator的补充(不是替代),软件仿真的硬件化,极大提高了仿真效率。越来越多的公司开始采购使用emulator,除了像华为、展讯这样的大公司,很多研究所、中小公司及初创公司也在纷纷购买,emulator成为平台化中心的特点越来越明显,也影响了其它EDA工具的采购,买emulator送simulator和其它tool license啦。(想想花了这么多钱买了台emulator,然后厂商说,亲,搭配我们家的simulator、Power分析工具、DFT工具更好用噢,一起买有优惠噢。你买不买?)与传统的仿真(simulation)相比,emulation platform将对IC的验证方法学产生怎样的影响?没啥影响,比如UVM、assert、coverage等功能simulator都支持,emulator在硬件部分并不支持,但是可以通过与server相连接,在server端跑C代码或者simulator跑SV的方式运行,也可称之为co-simulation或者仿真加速了。可以说,simulator功能最全,emulator不那么全(比如不支持带时序后仿),但可以跑得更快。自己补充个问题:emulation与FPGA prototype有何异同?最大的不同是:emulation可以验证极大规模的芯片设计,如2billion gate以上设计,这涉及到多达128块板卡,每张板卡上按16个验证芯片单元算,也就是使用超过了2000块验证芯片单元,里面用到的芯片间切割、布线、时序分析都是极复杂,速度仍可以跑到几百KHz这个范围;而FPGA prototype一般用于小规模芯片验证,四颗以上切割、布线就很困难,且速度就下降得很厉害,速度就到了几MHz这个级别。(emulator贵不是白给的)从tool的角度讲,emulator一般使用厂商独家定制的全flow tool,由之前的综合、切割、布线、时序分析、运行、trigger、上下载、生成波形及查看等都专门为此设计和优化,并且为专门的team来处理用户使用过程的各种问题,经过很长时间的积累后,就变得很稳定与强大;而FPGA prototype综合、切割、布线、FPGA芯片、平台设计与制造、外插板卡等都可能是不同的供应商,所使用FPGA芯片也是通用芯片,没有针对大规模验证需求专门优化,也导致了在大规模设计验证上的重重困难。emulator可认为是软件simulator的硬件化,是虚拟世界;FPGA prototype是物理芯片流片前的原型化,是真实世界。emulator和simulator一样都有设计频率和运行频率的差别,比如设计里使用几GHZ的时钟,运行的时候只有几百KHZ,要与外界硬件连接必须使用各种专门的转接卡,如speed adapter,来解决emulator与真实世界里硬件的速度不匹配的问题;而FPGA里跑的时钟频率就是真实频率,可能为了将就FPGA的速度可运行频率进行降频,比如ASIC芯片能运行在1GHZ以上的,在FPGA原型时只跑100MHZ。就算如此,FPGA prototype的运行速度也惊人,所以可能在上面接各种真实的器件,如DDR内存条、FLASH模块、通过PCIE和USB接口与测试电脑连接跑真实case等,可认为就是块真实的电路芯片。----------------------------------------------------------通常认为emulator理解为介于simulator和FPGA prototyping间的产物,同时拥有二者的优点,如方便debug波形、可使用force/release命令、检查覆盖率、打印display信息、同时运行速度比较快(约2Mhz)等,最大的缺点估计是太贵吧。成为Veloce AE一段时间后,发现Emulator的功能和特点不止这些。C/M/S三家的产品各有自己的特点吧,比如Palladium使用定制化处理器、Veloce使用定制化ASIC芯片、Zebu使用Xilinx FPGA等,在使用上也各有自己的一套流程。Emulator基本上可分为三种模式,独立运行(stand-alone)模式、ICE模式、co-simulation或co-modeling模式。stand-alone模式,所有DUT和TB都在emulator中,TB为可综合的testbench或载入memory的test pattern等。比如一个完整的ARM CPU core综合进去,要跑的C程序代码通过编译后变成一个hex文件加载到emulator里对应的memory路径即可。ICE模式,部分DUT在emulator中,需要连接些外设到emulator上,一般都要经过speed bridge设备来解决速度差问题,因为真实设备跑得太快,而emulator跑得太慢,如PCIE、SATA、USB等设备。一般这样的外设也是专门配套的,且有相应的完整解决方案。co-simulation或co-modeling模式,部分DUT在emulator中(硬件侧),还有部分程序或SV等通过simulator运行在连接的server上(软件侧),硬件侧和软件侧之间需要频繁的沟通。这时硬件侧比软件侧跑得快很多,所以大量时间都花在软件侧和软硬侧沟通上面,真实跑在硬件侧的时间比重占多少就成为emulator加速多少倍的重要指标。通常而言,跑在硬件侧的时间比重越大,加速效果越好。这也看具体的case,有些case比如软件侧只作monitor接收当前打印数据,对速度的影响就很小;有些case如DFT pattern测试,超过90%的时间都在软件侧和两侧导数据上。尽管如此,利用emulator去跑DFT case加速效果相当地好,使用simulator跑一个大pattern动辄需要一周甚至一月以上的,用emulator 10分钟、1小时以内就可以搞定……co-simulation或co-modeling模式的强项在于以相对较少的改动量将simulator上运行的case移植到emulator上,可以综合化的部分放硬件侧,不方便的部分放软件侧,这样限制在simulator运行的很多任务都可以放在emulator上进行了,如function verfication、不带时序网表仿真、DFT、UPF、Power分析等。从运行速度上,stand-alone >= ICE > co-simulation/modeling;从应用范围上,co-simulatation/modeling有更广泛与灵活的使用场景,emulator也不断开拓领域,每一两年就有新的使用场景,如汽车电子验证等。另外,Emulator资源可更方便的多人共享使用,基本可认为和服务器相似。一家公司有多个site,在美国、欧洲、印度、中国等,都可远程访问,实现资源利用率最大化。编译是不需在固定的服务器完成的,使用Emulator时,只需简单的命令就自动将image文件下载到Emulator、配置、运行,按需要dump波形并上传,方便事后查看,而将Emulator让出来给其他人使用,并且像simulator那样可随意运行任意时间停止下来、下一步命令后继续运行。相比较FPGA原型平台,基本上是放在实验室,一段时间一个人单独使用,不容易远程,且每次搭环境花时间不容易,debug抓波形比较麻烦,且定位时需要反复去运行去抓取issue,与硬件周边相关的设置占用时间很长。Emulator需要使用大量经过验证的专有library和model,比如各种DDR RAM、transactor库、VIP等,比FPGA支持更物理层的信息。先想到这么多,回头慢慢修改润色。编辑于 2021-10-04 16:40赞同 18646 条评论分享收藏喜欢收起匿名用户工作长期使用Zebu,用过PXP。正如有些答案说的,对于验证方法学来说影响不大。但是如果具体到每个公司,每个项目的verification environment来说,大规模使用emulator来做verification,很多现有的infra和verification的环境都需要改变。毕竟如果开发的时候只考虑simulation的情况,无论是用system verilog或者C++来搭testbench,很多时候code是synthesize unfriendly的,比如根本没法synthesize,或者DPI call太频繁拖累整体的仿真时间,诸如此类的问题。大规模使用emulator来做verification的一大好处就是快。从我的工作经历来看,emulator的速度大概是VCS的1000-10000倍左右。那么同样的时间内,使用emulator就可以跑更多的tests,或者,跑更长的tests。前者带来的改变就是,以前可能一周能跑几万个seeds,现在一周就是几百万个,大大提高了在固定时间内发现bug的可能性。而后者则可以用来发现更corner的情况,或者在芯片 tape out之前就开始post-silicon tests,软件,firmware,bios的开发和调试。而无论是哪一个方向,都能极大的缩短整个芯片开发的周期。除了传统的functional verification,现在我们也在emulator来做performance correlation,power estimation的工作。在这就不多展开了。但是使用emulator也有一些问题。第一个就是贵,一个Zube3 sever的价格就很感人,如果要大规模使用,成本更要上天,不是每个公司都玩的起。其次就是我在一开始所说的,现有的enviroment很有可能无法很好适应,为了更好的利用emulator,大量的代码需要更新甚至重写,有的公司受限于project周期和对历代project继承下来的代码的依赖,很难为了emulator大改自己的enviroment。先写这么多,有啥想到的我再补充发布于 2019-01-19 05:32赞同 1611 条评论分享收藏喜欢
PXP®系统-产品中心-博雅感知
EN
整体解决方案
临床级生物样本库
手术室即时应用系统
肿瘤免疫大规模生产系统
干细胞分离与存储系统
产品中心
临床案例
关于我们
新闻中心
最新消息
视频中心
联系我们
联系电话:
400-928-6808
整体解决方案
临床级生物样本库
手术室即时应用系统
肿瘤免疫大规模生产系统
干细胞分离与存储系统
临床级生物样本库
帮助客户打造高标准生物样本库,同时提供帮助客户获取AABB、CAP、NRL等高标准国际认证的服务,旗下诸多设备获得美国510(k)。
了解详情
手术室即时应用系统
为手术室环境细胞治疗提供丰富选择,专利自动化设备能在20-30分钟内完成骨髓单核细胞、干细胞、祖细胞等的高效提取与回收。
了解详情
肿瘤免疫大规模生产系统
针对免疫治疗更高效、更低成本的需求,提供自动化、全封闭的解决方案,保障细胞产品安全性,同时大幅节约成本,实现细胞治疗产品规模化生产。
了解详情
干细胞分离与存储系统
帮助干细胞自动化处理,高通量制备临床级的干细胞。客户覆盖全球40多个国家,惠及超过100万个家庭。
了解详情
产品中心
临床案例
关于我们
新闻中心
最新消息
视频中心
最新消息
快速了解博雅旗下最新新闻进展
了解详情
视频中心
了解详情
联系我们
EN
首页
/ 产品中心 / PXP®系统
骨髓细胞手术室即时分离系统
PXP®系统
功能介绍
自动化快速分离骨髓细胞,手术室环境高效细胞制备。
咨询购买
×
咨询购买
咨询设备:PXP®系统
公司 Company*
头衔 Title*
姓名 Name*
联系电话 PhoneNumber*
邮箱 E-mail*
咨询需求 Requirement*
备注 Note*
验证码 Verification*
提交
详情介绍
规格参数
产品优势
PXP®是一套自动化封闭式系统,能从骨髓细胞中收获定量体积的细胞。骨髓细胞有很多优点,然而这些细胞样本的质量难以评估,也缺乏控制。而且关于细胞样本的组成成分所带来的不良影响和未去除红细胞(RBC)的潜在威胁依旧存在争议。目前市面上的常用设备尽可能地提高细胞回收率,但是分离后获得的骨髓样本中却含有大量红细胞从而造成污染。PXP®系统在实现干细胞及祖细胞的高回收率的同时,达成了98%以上红细胞去除率这一优异表现。工作原理· 稳定优异的MNC和CD34+回收率· 20分钟内快速处理骨髓样本· 98%以上的红细胞去除率· 自动化封闭式无菌系统· 快速准确的数据追踪和文档记录样本处理数据可以通过DataTrak软件上传到计算机,提供符合GMP要求的生产监控和报告信息。
产品概述PXP® 系统由下面的部件组成:零件料号一次性使用PXP Disposable Cartridge80061可充电式PXP Control Module with associated firmware80068交流电供电PXP Docking Station with associated firmware80070DataTrak 软件150040ThermoGenesis提供下列配套PXP系统使用的部件:产品名称料号X系列平衡圈80074X系列配平块LOW80073
博雅感知医疗是博雅生命旗下的自动化细胞处理设备及技术企业,为全球细胞治疗市场提供自动化技术整体解决方案。博雅感知医疗是美国TG医疗在中国的销售伙伴及代理,代理销售着一系列TG医疗的细胞分离、处理及存储自动化产品系列。
网站地图
整体解决方案产品中心临床案例关于我们新闻中心联系我们
400-928-6808无锡市梁溪区解放东路800号
关注我们
服务热线
400-928-6808
版权©2020 博雅干细胞科技有限公司苏ICP备2022014291号苏公网安备 32021302000775号
集团官网
微信扫一扫
一对一客户服务
微信一对一客户服务
I.MX RT1170 PXP 图形加速器_pxp 旋转-CSDN博客
I.MX RT1170 PXP 图形加速器
最新推荐文章于 2024-02-29 22:27:16 发布
JINCIEY
最新推荐文章于 2024-02-29 22:27:16 发布
阅读量1.4k
收藏
7
点赞数
1
文章标签:
单片机
mcu
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44279579/article/details/124147755
版权
一、PXP介绍
在图像显示在显示器之前,i.MX RT1170 可以通过 2D矢量图形、PXP 或者 LCDIF 等图形加速器来生成、合成和混合图形的内容,本文将介绍其中 PXP 图形加速器。
PXP (Pixel Processing Pipeline) 是 NXP 设计的一种高性能的 2D 图形处理微构架,用于在 LCD 显示之前对图像数据进行数据处理,处理操作例如图像缩放、旋转、色彩空间转换等,为无 SDRAM 和基于 SRAM 的系统,提供占用内存最小的图像数据优化和性能,PXP 将几个独立的处理阶段集成到一个内聚策略中,以创建灵活的像素管道。
1.1 PXP 功能描述
PXP由多个管线式模块组成,执行视频源帧缩放、颜色空间转换、阿尔法混合/颜色键算法、次级CSC、像素校正等,本文将介绍其中的旋转功能。
1.2 PXP 特性
位块传输灵活的图像合成的Porter-Duff 颜色渲染操作图像旋转 (90°、180°、270°)图像调整大小颜色空间转换多像素格式支持(RGB, YUV444, YUV422, YUV420, YUV400)标准 2D-RAM 操作
二、PXP的旋转功能
PXP中集成了一个单独的旋转资源,该资源在PXP数据路径中的位置是可编程的,旋转在输出阶段合成 AS 和 PS 缓冲区后。
作为替代配置,PS 缓冲区可以旋转,然后与未旋转的 AS 面合成,有一个配置位提供在 PXP 中执行旋转的位置配置。
要旋转图形,硬件必须在帧缓冲区的同一个方向上读取像素,并在另一个方向上写入像素,对于90度和270度的情况,这意味着在帧缓冲区中读取或写入像素行必须垂直,如下图所示。
为了更有效地旋转,就必须旋转多个列,以使引擎能够获取和存储像素,从而提高内存性能。最简单的方法是对像素进行块操作,要旋转图像,就必须按所需的每个像素块进行旋转,如下图所示。
为了管理旋转过程,可以将源图像分解为具有下图所示坐标的子块网格,除了旋转块外,每个块都必须转换到新的坐标位置,对于每种旋转角度(0、90、180、270),可以定义用于计算新转换的网格地址的简单算法,然后,硬件必须简单地从加载和存储操作的基本网格地址来计算内存地址。
为了平衡对内存控制器的合理突发大小要求,并将硬件存储要求保持在最低水平,混合/旋转引擎将在 8x8 或 16x16 像素块上运行处理,将旋转引擎与输入提取引擎一起使用时,所以需要对输入提取引擎进行编程,使其在8x8块模式下工作。
优惠劵
JINCIEY
关注
关注
1
点赞
踩
7
收藏
觉得还不错?
一键收藏
知道了
0
评论
I.MX RT1170 PXP 图形加速器
I.MX RT1170 PXP
复制链接
扫一扫
RT1052野火基于 RT-Thread 移植的littlevgl图形库
03-06
RT1052野火基于 RT-Thread 移植的littlevgl图形库
发环境主要是RT1050 fire的板子(lcd为800*480, 输入设备为GT911), 和qemu环境(800*480, 输入设备为鼠标).
2. 输入接口已经完成适配,目前在野火1050板子上测试通过, 效果稳定[update].
3. 目前只测试过16bit模式.
4. 关于更多的lvgl的配置导出到menuconfig欢迎在issues里面提出.
i.MX RT1176 - 简介
qq_29897125的博客
10-31
1476
rt1176简介
参与评论
您还未登录,请先
登录
后发表或查看评论
MX283Linux:新内核,新引导,新文件系统,纯粹爱好,不定期维护。适应EasyARM-i.MX283A
03-11
EasyARM i.MX283A V1.02新软件计划
我觉得周立功板子性价比不错,最大的问题就是资料老旧,所以现在我要移植Linux 4.13.2内核和U-Boot 2017.9 ,后期有可能可行做接线Pi和对应的文件系统吧。这是兴趣而已,也有可能突然就停掉项目。
重要的内核文件位置:
zImage @ 0x400000
dtb @ 0x800000
怎么编译
针对u-boot和内核,都可以把二进制目录中的配置-default复制成.config,然后加上交叉编译器,使即可。针对imx-bootlet,把u-boot这个文件复制到他的目录下,然后执行build脚本即可。
交叉编译工具需要通过apt-get下载,针对的引导程序要使用fsl官方工具,否则编译不能执行。
暂不支持功能
OTP编写,非驱动工具:
HSADC 2Mbps DMA [LRADC够用,暂时不开发。]
PXP加
I.MX RT1170:如何在SRAM/SDRAM运行程序
主要分享硬件、嵌入式软件部分知识
05-29
1030
如果程序链接到SDRAM中,我们还需要在镜像头中填充DCD字段,这样BootROM会通过DCD来初始化SDRAM,然后将程序从Flash拷贝到SDRAM中执行。BootROM是上电后一定会运行的BootLoader,而在这期间可能会使能一些中断、外设,然后在跳出的时候恢复最早的没有初始化的状态。对于DAP来说,需要修改这两个地方,一个是指定连接的时候运行我们的初始化SDRAM的脚本,一个是增加。到现在,对于方案②来说,如果你的程序链接在系统的SRAM中,就可以直接点调试开始运行程序了。
I.MX RT1170 LCDIFV2 显示控制器
weixin_44279579的博客
04-13
780
i.mx RT1170
emwin 使用外部字库_NXP I.MX GUI 显示和 PXP 使用
weixin_34653945的博客
12-24
1282
其中I.MXRT里面支持增强型液晶控制器 eLCDIF 以及PXP。像素处理2D加速引擎PXP特性如下:下面描述PXP结合GUI使用的过程中问题解答1. 问题描述: 将I.MXRT1060EVK与SDK项目工程“littlevgl_demo_widgets”结合使用。实现添加一个简单的背景图像。希望看到的是图像能居中显示,但是实际没有居中(它“环绕”在LCD的边缘显示),当触摸...
keil5编译stm32程序例程显示目标未创建_I.MXRT上使用LittlevGL GUI显示
weixin_42121412的博客
11-21
1795
LittlevGL是一个开源的GUI软件,它是Gábor Kiss-Vámosi开发和维护的。LittlevGL 系统概述LittlevGL 系统包括应用程序,LVGL图形库以及Driver特定驱动程序,其中应用程序创建GUI,并处理特定任务的应用程序。应用程序可以与图形库进行通信并创建GUI,它包含HAL硬件抽象层接口,用于注册显示和输入设备驱动程序。Driver 除了应用中...
I.MX RT1170启动详解:Boot配置、Bootable image头的组成
主要分享硬件、嵌入式软件部分知识
05-28
1923
每次上电的时候都将执行里面的代码,它完成了对于特定引脚上的FlexSPI、SEMC和SDHC接口的初始化,并从这些接口连接到的Flash和RAM中引导程序启动。是NXP提供的一个软件,可以用来生成Bootable image,当然还有一些其它的功能,比如生成可以与Flashloader能识别的指定协议的镜像文件,可以实现修改eFuse、烧录Flash、AES固件加密等功能。其中镜像的绝对起始地址为0x30000000,程序镜像的大小为0x1000000(实际保存的是Flash的大小)。
图形学书籍 Real-Time Rendering 3.2 GPU Pipeline Overview GPU管线概述(根据谷歌翻译修改)
weixin_42167420的博客
01-08
110
3.2
I.MX6ULL_Linux_基础篇(6) soc资源介绍
weixin_41252596的博客
11-27
1653
SOC资源,基础功能,属性了解
i.MX.RT库开发实战指南(野火)
03-24
火哥最新出品的i.MX.RT库开发实战指南,分享给小伙伴们~
i.MX+RT库开发实战指南
04-22
[野火®]《i.MX RT库开发实战指南》_2019_04_01 更新到 第27章 eFlexPWM—灵活的增强型PWM
NXP i.MX RT1052实现PXP—图形处理器
12-01
NXP i.MX RT1052驱动程序。资源代码可直接编译、运行。
防丢器 规格书 PXP_SPEC
04-02
防丢器 规格书 PXP_SPEC Proximity Reportor profile
第一版(1).pxp
11-14
第一版(1).pxp
STM32 学习(四)中断系统
欢迎一起交流问题!
02-28
1010
众所周知,轮询是 CPU 通过不断地查询某个外部设备的状态,如果外部设备准备好,就可以向其发送数据或者读取数据,这种方式由于CPU不断查询总线,导致指令执行受到影响,效率非常低。而与之相对应的就是中断,正常情况 CPU 会处理其他的事情,如果设备有需要 CPU 处理的事情就产生一个中断,CPU 就会停下正在做的事情来处理中断。中断的执行流程如下:STM32 中断包含很多中断源(中断通道),并且使用 NVIC 统一管理中断,由左边的地址组成的表称为,表中的内容为中断入口的地址:为。
学习阶段单片机买esp32还是stm32?
单片机一哥的博客
02-28
2661
3、stm32一般除了使用库文件之外,自己可以从零开始学习构建整个嵌入式系统,个人感觉这个对于一个刚入门的人来说很重要, 我也是都会从最小系统开始搭建自己想要的功能。esp-idf整个构建系统非常复杂,组件非常多,需要对嵌入式构建、编译系统有一定的功底,不然只会应用一下esp32不够深入。esp32用的是xtensa核,用的gcc编译器,gcc一般用Makefile,虽然也可以在Windows下编译,但是用的是命令行编译。stm32属于单片机,esp32属于Wi-Fi类mcu,定位还是有很大的差别。
单片机对比:选择最适合你的单片机
weixin_44378594的博客
02-28
1260
在嵌入式系统开发中,选择合适的单片机是非常重要的一步。然而,市面上存在许多种类的单片机,如Arduino、Raspberry Pi、STM32和ESP32等。本文将从生态系统与技术支持、成本与价格、性能和功能等方面进行对比,帮助读者选择最适合自己的单片机。
单片机精进之路-9ds18b20温度传感器
最新发布
m0_70556273的博客
02-29
488
ds18b20复位时序图,先将b20的数据引脚拉低至少480us,然后再将数据引脚拉高15-60us,再去将测传感器的数据引脚是不是变低电平并保持60-240us,如果是,则说明检测到温度传感器,并正常工作。需要在240us后才能检测温度值。
pxp docker
10-18
好的,你的问题是 "pxp docker",我理解为你想了解关于 Docker 和 PXP 的相关信息。Docker 是一种容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,以便在任何地方运行。而 PXP 是一种基于 Docker 的开源平台,用于构建、部署和管理容器化应用程序。PXP 提供了一个易于使用的 Web 界面,可以帮助用户轻松地管理他们的容器化应用程序。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
JINCIEY
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
4
原创
116万+
周排名
75万+
总排名
1万+
访问
等级
57
积分
6
粉丝
14
获赞
1
评论
82
收藏
私信
关注
热门文章
无钥匙启动系统 IMMO 功能介绍
10398
PEPS 无钥匙进入系统低频芯片 PCF7991 介绍
5005
I.MX RT1170 PXP 图形加速器
1446
I.MX RT1170 LCDIFV2 显示控制器
776
最新评论
无钥匙启动系统 IMMO 功能介绍
HirainSZ:
请问下博主NJJ29C2支持最多几根天线同时使用?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
I.MX RT1170 LCDIFV2 显示控制器
无钥匙启动系统 IMMO 功能介绍
PEPS 无钥匙进入系统低频芯片 PCF7991 介绍
2022年3篇
2021年1篇
目录
目录
最新文章
I.MX RT1170 LCDIFV2 显示控制器
无钥匙启动系统 IMMO 功能介绍
PEPS 无钥匙进入系统低频芯片 PCF7991 介绍
2022年3篇
2021年1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
什么是PXP,OpenCV和MCU的优化编译方案 - 控制/MCU - 电子发烧友网
扫一扫,分享给好友
复制链接分享
电子发烧友App
硬声App
首页
技术
可编程逻辑
MEMS/传感技术
嵌入式技术
模拟技术
控制/MCU
处理器/DSP
存储技术
EMC/EMI设计
电源/新能源
测量仪表
制造/封装
RF/无线
接口/总线/驱动
EDA/IC设计
光电显示
连接器
PCB设计
LEDs
汽车电子
医疗电子
人工智能
可穿戴设备
军用/航空电子
工业控制
触控感测
智能电网
音视频及家电
通信网络
机器人
vr|ar|虚拟现实
安全设备/系统
移动通信
便携设备
物联网
区块链
HarmonyOS
RISC-V MCU
光伏
ChatGPT
IGBT
充电桩
氮化镓
BLDC
逆变器
5G
电机控制
资源
技术文库
新品速递
电路图
元器件知识
电子百科
最新技术文章
下载
在线工具
常用软件
电子书
datasheet
专栏
电子说
专栏
社区
论坛
问答
小组
技术专栏
社区之星
试用中心
HarmonyOS技术社区
2023电子工程师大会
研究院
活动
设计大赛
硬创大赛
社区活动
线下会议
在线研讨会
小测验
学院
直播
课程
视频
企业号
华秋智造
华秋PCB
高可靠多层板制造商
华秋SMT
高可靠一站式PCBA智造商
华秋商城
自营现货电子元器件商城
PCB Layout
高多层、高密度产品设计
钢网制造
专注高品质钢网制造
BOM配单
专业的一站式采购解决方案
华秋DFM
一键分析设计隐患
华秋认证
认证检测无可置疑
工具
PCB在线检查
datasheet查询
选型替代查询
免费样品申请
免费评测试用
工程师专区
技术子站
搜索
搜索历史
清空
搜索热词
0
聊天消息
系统消息
评论与回复
查看更多
查看更多
查看更多
登录
0
关注
0
粉丝
0
动态
个人中心
内容管理
积分兑换
当前积分:
修改资料
退出登录
登录后你可以
下载海量资料
学习在线课程
观看技术视频
写文章/发帖/加入社区
登录
创作中心
发布
发文章
发资料
发帖
提问
发视频
创作活动
推荐
分类
资料
软件
工具
排行榜
DataSheet
搜索
完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
3天内不再提示
电子发烧友网>控制/MCU>什么是PXP,OpenCV和MCU的优化编译方案
什么是PXP,OpenCV和MCU的优化编译方案
来源:恩智浦MCU加油站•作者:恩智浦MCU加油站•
2022-12-08 10:09
•
次阅读
•
个评论
通过前几期的文章,相信大家对OpenCV以及其移植和部署方法都有了一定的了解,一句话概括一下:OpenCV是一个包含了上百个经典计算机数字图像处理算法的开源代码库。 请注意这里的开源!是的,这么一个宝库是不收费的哟。同时,为了更好的提升代码执行效率,OpenCV本身也集成了多种硬件加速器资源,例如:SSE,NEON,OpenCL,CUDA,OpenCV4Tegra等。
但是,唯独缺少了MCU平台的硬件资源加速,特别是对于那些本身就有硬件加速器的MCU,可以说有一种力有余而心不足的感觉。例如前几期的主角,集成了PXP以及2D-GPU的RT1170系列MCU。 既然没有,那我们就自己造。 本期小编将带着大家一起补齐这最后一块儿短板,为OpenCV代码添加基于PXP的硬件加速支持。 也许大家对PXP还不是很熟悉,就先介绍一下什么是PXP。
PXP全程叫做像素处理管道,用来对送入显示设备的图像数据进行处理、或是视频图像数据的混合。可以最小化显示流水线所需的内存占用空间,并为无 SDRAM 和基于 SRAM 的系统提供优化的内存空间和性能。 PXP本身集成了多个彼此独立又可以协同工作的处理阶段,以实现灵活的像素处理管道。 完整的PXP模块如下:
通过集成多个模块,消除了对外部存储器的中间缓冲操作,从而降低了外部存储器带宽、功耗和软件控制复杂性。 PXP 将以下内容组合成一个处理引擎:
放缩
颜色空间转换
旋转
PXP的主要特点包括:
BitBlit
支持多种输入/输出格式,YUV/RGB/Grayscale
支持RGB/YUV格式数据的放缩
Aplha blending+overlay
多种角度旋转:0,90,180,270;并且可以和水平/垂直翻转同时进行
颜色空间转换
图像resize
标准的2D-DMA操作
了解了PXP模块,下面就开始应用PXP对我们的OpenCV代码开始改造。下面先拿Resize和Rotate这两个函数作为目标,看看如何进行优化改造:
通过前几期,我们知道OpenCV基于模块化进行代码的组织,那么谁负责管理这些模块,并且通知编译器哪些模块需要被编译进最终的镜像文件呢?这个答案就是CMake。
这是一款开源的,跨平台的工具,用于实现代码的构建、测试以及打包。
那么它是怎么工作的呢?就让我们先创建一个新的文件夹叫做build来存储构建文档。进入build并打开CMake-gui,顾名思义这个小工具就是一个带GUI显示的CMake工具:
新的变量会以红色字体显示,每一个模块都有一个与其相关的符号,在CMake文件CMakeLists.txt中定义,这些就是CMake的各个入口。
定义好这些符号之后,他们就变成了控制相关模块的开关。
如下图所示,有很多模块相关的符号,但是,只有那些被选中的模块才有机会被编译到最终的镜像中。
本例中,只有JPEG、PNG以及opencv_core才可以。
因此,为了添加PXP。我们也要添加这么一个类似的符号。首先,添加定义到CMakeLists.txt:
尽管说,放置位置比较随意。最好还是,将其添加到Option 3rd这一组中。现在就定义了一个叫做WITH_PXP的新符号,重新打开CMake-gui.exe,看看我们的改动是否已经生效:
改动生效,只不过万里长征才走过一小步。变量目前仅仅是对CMake可见的,编译系统还看不到。这就意味着,这些变量并不能作为宏来进行预处理。因此,我们还需要加一些:
if(WITH_PXP)
add_definitions(-DHAVE_PXP)
endif()
这样一来,借助CMake提供的内建函数add_definitions,就可以传递一个新的符号HAVE_PXP到编译器作为一个预定义宏。代码中就可以使用这个新定义的宏符号了,使用方法如下:
#if HAVE_PXP
…
#else
…
#endif
当我们通过CMake-gui勾选了WITH_PXP符号之后,HAVE_PXP就会被同步定义,以控制代码块编译。
至此,我们就完成了CMake部分的OpenCV源码配置工作。添加了一个新的符号WITH_PXP负责管理PXP模块的添加,并且为了使得符号能够让程序本身可见,借用CMake的内建函数定义了一个编译器可见的宏:HAVE_PXP,随后就可以在代码中使用#if语法来实际控制代码中参与编译的内容了。
编辑:黄飞
阅读全文
mcu(342258)
mcu(342258)
SDRAM(54552)
SDRAM(54552)
OpenCV(40654)
OpenCV(40654)
点赞
收藏
扫一扫,分享给好友
复制链接分享
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论
发布
发布
查看更多
相关推荐
OpenCV+CUDA编译实现YOLOv5能加速对比一下,加速效果真得是杠杠滴!所以值得编译OpenCV+CUDA支持,因为它不光加速深度学习模型推理,对传统图像处理均有加速!2022-07-18 10:27:421837【GCC编译优化系列】前后编译的两版本固件bin大小不一样?【GCC编译优化系列】前后编译的两个版本固件bin大小不一样,怎么办?2022-09-09 09:01:402641Ubuntu系统下编译OpenCV4.8源码记录Jetson开发板上编译OpenCV源码与编译运行OpenCV C++应用程序。我现在还有一块Alxboard开发板是英特尔家族的,安装的是操作系统是Ubuntu20的系统,本身没有自带OpenCV C++2023-10-27 16:07:185048051 MCU反编译开发环境与步骤分别是什么呢8051 MCU反编译开发方法记录1、项目背景2、开发环境3、开发步骤3.1 反编译3.2 找出EEPROM的写入地址3.3 找出EEPROM读写操作的代码段3.4 找出EEPROM读写操作代码段2022-01-24 07:06:20OpenCV C++程序编译与演示1、在JetsonNano上编译OpenCV源码与OpenCV C++ YOLOv5程序演示 编译OpenCV最新4.5.x版本 Jetson Nano自带的OpenCV版本比较2022-11-10 16:42:49OpenCV学习之路--5--OpenCV3.4.10的ARM版本移植到开发板 精选资料分享开发板:迅为IMX6Q移植QTE5.7编译好的ARM版本OpenCV3.4.10文件:OpenCV3.4.10 ARM版编译好的OpenCV依赖库文件:1.将/usr/local/arm2021-07-16 06:55:44OpenCV库编译相关资料下载OpenCV库编译./configure --host=arm-linux --without-gtk --without-carbon--without-qu2022-03-02 06:22:36PXP7082CAP SEAL FOR PXP7011 AND PXP70122023-03-23 02:57:58opencv库直接在RK3588开发板上进行编译在RK3588 c++的开发中用到了opencv库,但是官方的SDK例程中的opencv库不完整,如没有读视频的cv::VideoCapture函数,所以重新编译opencv库opencv库可以直接2022-09-15 17:56:24AN13725如何在没有互斥错误的情况下编译opencv?我尝试根据 AN13725 appnote 文档编译 opencv,但出现以下错误
/home/kowshik/Desktop/opencv_porting/opencv/modules/core2023-05-24 12:32:05ARM-Linux环境下安装OpenCV ia32-libs (安装好交叉编译器的进入下一步)2、安装Cmake-gui (这个是帮助我们配置OpenCV、并生成Makefile的)sudo apt-get install cmake-gui3、下载2017-06-29 12:28:29IAR编译优化等级设置介绍IAR拥有灵活的优化等级设置,包括不同等级和不同层级的编译优化设置。本文将介绍IAR的编译优化等级设置,不同的编译优化等级设置涉及的编译器优化行为不同。不同优化等级适应不同的应用需求,MCU资源空间2019-11-21 17:36:35S32DS C编译器/标准S32DS C++编译器-优化,,(-O3) 和 (-Os) 的MCU功能和性能是否完全相同?对于S32DS C编译器/标准S32DS C++编译器-优化,当我们将设置从最优化(-O3)更改为优化大小(-Os)时,使用相同的源代码,MCU功能和性能是否保持完全相同?如果不是,会有什么区别?2023-04-06 07:48:27Tina下运行在Ubuntu中交叉编译的Opencv 4.5.1前言看到很多人在小哪吒上编译Opencv,自己也尝试过编译了几次,各位开发者在编译的时候都可能会遇到不同的问题,现将其整理出来方便后面新来的开发者查阅。环境需求理论上任何版本的Ubuntu都可以,在2022-03-14 09:46:48Vivado HLS实现OpenCV图像处理的设计流程与分析应用的极好方法,很好解决了在单一处理器上实现视频处理性能低功耗高的限制,Zynq高性能可编程逻辑和嵌入式ARM内核,是一款功耗优化的集成式解决方案。1、OpenCV中图像IplImage, CvMat2021-07-08 08:30:00Yuzuki Lizard 全志V851S开发板 –编译 OPENCV 4.5.4,设定)
到此编译成功
6、编译出来的文件
动态库文件 /usr/local/lib/
文件库 /usr/local/include/opencv4/
注意下面步骤中成功编译出来的固件,是不含动态库2023-05-08 09:22:30mx6ul-c开发板提供的交叉编译器编译哪个版本的OpenCV可以正常使用啊mx6ul-c开发板提供的交叉编译器编译哪个版本的OpenCV可以正常使用啊,3.4.9版本的不行啊2022-01-07 07:39:59mx6ul-c开发板提供的交叉编译器编译哪个版本的OpenCV可以正常使用啊mx6ul-c开发板提供的交叉编译器编译哪个版本的OpenCV可以正常使用啊,3.4.9版本的不行啊2022-01-13 09:11:33ok5718怎么调用arm环境下的opencv2来进行交叉编译cpp呢?您好,我现在想用opencv做图像处理,我自己在虚拟机装了opencv2的库,用终端编译出的C++程序在X86下也可以成功运行,但是如果想把程序移植到板子里,应该需要交叉编译,生成可执行文件,那么有2022-11-21 13:41:58ubuntu16.04交叉编译opencv2.4.3第一步:配置arm-linux-gcc环境编译器(arm-linux-gcc-4.3.2)第二步:安装cmake-guiapt-get install cmake-gui下载opencv2.4.3并2016-12-09 18:40:55【DragonBoard 410c试用体验】使用cmake编译opencv工程(OpenCV_Example)//这是建立一个工程项目(类似于我们VS中建立C++项目一样),括号里面时工程名,工程名我们可以任意给,最后程序编译出来的可执行文件就是这个名字2016-10-02 23:12:24【DragonBoard 410c试用体验】安装Debian系统 + 编译opencv码拨到0100,开机选择install就行了。开机后,首先更新系统sudo apt-get updatesudo apt-get upgrade接下来安装opencv:OpenCV的全称是:Open2016-09-19 13:19:17【Milk-V Duo 开发板免费体验】OpenCV的交叉编译/community/download?id=4112956065753141248)提供了优化的定制版OpenCV,据说这个版本可以最大限度地发挥芯片的性能,让人很是期待。
1. 下载和编译OpenCV
交叉2023-07-28 20:06:46【NanoPi NEO Plus2开发板试用体验】图像识别算法之opencv交叉编译板子回来打算做图像识别的算法的,所以必定会使用到opencv库,所以这篇具体介绍下opencv的交叉编译。首先在现有的机器上安装虚拟机以及ubuntu,这部分很简单,略过。这边先罗列一下各个库的版本2017-08-31 16:43:47【OK210试用体验】之(七)—— 交叉编译和移植OpenCV 2.4.9 (2) 本帖最后由 郎中令2000年 于 2015-12-6 21:45 编辑
上一贴的主要内容是交叉编译出OpenCV2.4.9库。本帖的主要内容是在Ubuntu中,设置好交叉编译OpenCV2015-12-06 21:11:07【OK210试用体验】之(六)—— 交叉编译和移植OpenCV 2.4.9 (1)://bbs.elecfans.com/jishu_503398_1_1.html),接下来的工作就是交叉编译OpenCV,将编译得到的.so库文件拷贝到OK210中,实现嵌入式的图像采集。本帖开始正式尝试移植工作2015-11-25 17:24:45【Raspberry Pi 3试用体验】+编译opencv 本帖最后由 擦肩的阳光 于 2016-5-5 18:28 编辑
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行2016-05-05 18:13:33【Rayeager PX2分享】编译源代码安装OpenCV libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev【获取源代码】新建opencv目录sudo mkdir opencvcd2015-04-10 16:38:58【Toybrick RK3399Pro AI开发板试用体验】编译安装OpenCV 3.4.7, 留意不要漏掉 '..'等待完成后,make -j3吃个饭洗个澡睡个觉 就差不多编译完成了然后make install安装完成,试试/usr/local/bin, 目录下有 opencv_version, 运行即可获得版本正确显示版本 说明opencv正确安装了2019-08-11 17:14:17【WRTnode2R试用体验】+WRTnode添加OpenCV支持opencv libs库文件ipk编译opencv ipk源码利用openwrtpackage的编译机制仅仅需要一个Makefile即可编译opencv。为何会如此简单神奇,下面就对Makefile2015-11-04 00:03:08【WRTnode2R试用体验】OpenCV交叉编译,开发OpenCV C++程序如果还没有配置好SDK,请先看【WRTnode2R试用体验】WRTnode 2R SDK的搭建,固件的编译以及固件的刷写。首先当然是下载OpenCV的源码,我这里的OpenCV版本是2.4.112015-10-26 20:25:20【盈鹏飞EVB-T335开发板试用体验】NO.5 opencv的编译与安装/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip/download来下载opencv-2.4.10版本的后来在编译2017-10-15 22:50:59【米尔-TIAM62开发板-接替335x-试用评测】OPENCV和NCNN交叉编译目录
1. 前言
2. OPENCV交叉编译
3. NCNN交叉编译
4. OPENCV和NCNN移植
1. 前言
介绍了OpenCV和NCNN库的交叉编译过程,并在TIAM62开发板上部2023-12-16 23:16:30【芯灵思A83T试用体验】3、交叉编译OpenCV2.4.9 本帖最后由 左岸cpx 于 2017-5-22 07:34 编辑
本节,我想分享一下交叉编译OpenCV的方法,由于OpenCV并没有发行ARM版本的OpenCV,所以我们需要下载2017-05-21 22:17:46使用gcc编译优化与不优化问题 同样的程序,使用gcc编译优化与不优化的结果不一代码如下:1. #include 2.3. int main()4. {5.int i = 1;6.7.i 2013-09-27 10:33:33分享一下编译opencv与temgine后端的教程1、编译opencv+tengine后端与usb相机不识别的解决方法下载opencv连接开发板,需要一个扫描ip的工具,和远程的工具开机前扫一下,开机后扫一下,多出来的就是板子的IP地址,配合远程工具,解决没有屏幕的烦恼原作者:徐国晟2022-06-15 18:16:57在Ubuntu下交叉编译opencv以生成ARM版本的opencv时遇到一些问题我用贵公司提供的交叉编译工具链,在Ubuntu下交叉编译opencv以生成ARM版本的opencv时遇到问题工具链选择如图2021-12-30 06:20:03基于RV1109/RV1126开发板的Opencv交叉编译环境安装 ~/.bashrc总结:安装RV1109-1126对应交叉编译器(实质类似gcc/g++),编译arm可执行程序三. Opencv 安装若需要使用opencv相关读图/视频等相关功能,需安装ffmpegffmpeg2022-09-02 16:49:30如何优化AR解决方案?如何用单颗芯片实现出色的处理性能、能效和安全性?如何优化AR解决方案?2021-06-02 06:56:16如何编译Opencv并添加GStreamer API支持Opencv 编译和安装不少客户遇到OpenCV的问题多集中在如何获取mipi摄像头的数据。因为OpenCV使用的V4l2协议和Rockchip编写的mipi摄像头驱动协议不同,所以不能直接2022-04-27 18:49:17如何交叉编译QT并将其作为gui供opencv使用呢是什原因导致opencv无法使用gui的?如何交叉编译QT并将其作为gui供opencv使用呢?2022-02-17 08:05:39如何利用RK3399 opencv4.5.0编译Gstreamer访问摄像头?如何利用RK3399 opencv4.5.0编译Gstreamer访问摄像头?2022-03-07 06:59:15如何将Opencv移植到ARM上最近接触到一个项目扫描二维码,所以接触到opencv库与zbar,需要编译安装opencv库,所以写这篇博客,当做是一个学习的过程与记录。如果将来还需要用到也可以继续翻一翻。 这里用到的opencv版本是3.2.0,下载网站在这里: 交叉编译工具:arm-linux-gcc-4.4...2021-07-16 06:47:57怎么在linux上编译利用opencv的库在arm开发板上运行呢怎么在linux上编译利用opencv的库在arm开发板上运行呢?求大神解答2022-08-11 16:16:36怎样去解决移植opencv3.4.13遇到的imshow问题呢?问题描述及复现步骤:移植 OPENCV 系统 ubuntu20 官方固件 opencv:3.4.13 编译中遇到2个问题: 1。编译器的问题,SDK编译器为gcc-10.3 ,目标系统为2023-02-07 15:53:37怎样在RK1808设备上去编译opencv4.1.0命令呢怎样在RK1808设备上去编译opencv4.1.0命令呢?2022-02-16 06:14:27移植OpenCV-4.3.0的过程OpenCV-4.3.0是较新的OpenCV版本,最新的版本是OpenCV-4.4.0,由于GitHub太慢总是下载失败,不得已就移植OpenCV-4.3.0这个版本用着先。在OpenCV中,新技术2021-11-04 08:51:43请问TI提供的有可在宿主机中完整部署的OpenCV和QT交叉编译开发环境没? 本帖最后由 一只耳朵怪 于 2018-6-21 15:07 编辑
首先,TI提供的AM5728的SDK中没有找到OpenCV和Qt交叉编译库文件;然后是,在AM5728的文件系统中找到2018-06-21 07:54:00请问各位大神如何使用ARM编译器6去构建一种OpenCV项目呢?我试图在ARM Development Studio IDE中使用ARM编译器6构建C ++ OpenCV项目。我已经从OpenCV的GitHub存储库下载了3.2.0版,并使用Windows中2022-08-11 16:09:08迅为-i.MX6ULL 开发板-移植OpenCv3.4.1-搭建编译环境“opencv-3.4.1.zip”4.QT 测试例程86.1 安装交叉编译工具移植的 QT 系统需要的交叉编译器就是我们编译 qt 的编译器,因为我们是 Yocto 系统,所以我们用编译 Yocto2021-08-09 10:54:30迅为i.MX6ULL开发板-移植OpenCv2.4.9-QT程序编译编译完成后在当前目录生成可执行文件 opencv_pic,如图 85.3.4 所示。4.我们需要把 opencv_pic 和 1.bmp 图片拷贝到开发板的/home/root/目录下。然后把 home2021-05-06 14:19:12迅为i.MX6ULL开发板-移植OpenCv2.4.9-搭建OpenCv编译环境 源码“opencv-2.4.9.zip”4. QT 测试例程85.1 安装交叉编译工具移植的 QT 系统需要的交叉编译器就是我们编译 qt 的编译器,因为我们是 Yocto 系统,所以我们用编译2021-04-29 14:48:16SIMD计算机的优化编译器设计利用处理器的相关资源,提高编译器优化性能和增强代码可适应性是SIMD处理器优化编译的关键。该文基于M语言和LS SIMD体系结构,结合现代编译器的编译技术,提出针对SIMD协处理器2009-04-03 08:47:1630MCS-51程序空间扩展原理及编译器优化讨论了MCS-51系列单片机程序空间扩展的原理,包括硬件与编译器两个方面,并提出一种编译器优化方案.该方案在Keil仿真器上检验并通过关健词:C51编译软件;MCS-51; B ankS witching2010-10-23 08:55:25100编译器_keil的优化选项问题keil编译器的优化选项针对ARM,对STM32编译的一些优化的问题2016-02-25 14:18:553XScale体系结构及编译优化问题以及这些特点给编译优化带来的挑战并介绍了提高 XScale应用程序性能的优化函数库 、编译优化和程序并行化等技术及其功效。2016-04-18 10:28:460opencv备忘单opencv备忘单,opencv_cheatsheet,opencv_tutorials,opencv_user,opencv2refman22016-08-25 15:52:390C编译器及其优化本章将帮助读者在ARM处理器上编写高效的C代码。本章涉及的一些技术不仅适用于ARM处理器,也适用于其他RISC处理器。本章首先从ARM编译器及其优化入手,讲解C编译器在优化代码时所碰到的一些问题2017-10-17 17:22:262opencv编译安装笔记(Linux、Ubuntu )本文介绍了两种opencv编译安装笔记:Linux下编译安装OpenCV和Ubuntu 下安装 OpenCV。有需要的小伙伴可以看看。2017-12-03 10:33:364868IAR编译器优化对程序的影响IAR编译优化选项2018-07-05 00:25:004308如何使用英特尔编译器优化Fortran、C和C ++了解如何使用适用于Fortran *,C和C ++的英特尔®编译器优化一些困难的循环。
示例选自经典的netlib.org矢量基准测试,这些测试不是由当前的英特尔编译器自动优化的,但表现良好2018-11-08 06:02:002811概述在Linux下编译安装OpenCV的步骤OpenCV是一个跨平台的计算机视觉库,可以运行在Windows、Linux、MacOS等操作系统上。OpenCV提供了众多语言的接口,其中就包含了Python,Python是一门上手容易、使用起来十分让人愉悦的语言,利用Python学习OpenCV,相信能更快的获得效果。2019-04-12 15:30:011440OpenCV3.1教程之编译的详细资料说明本文档的主要内容详细介绍的是OpenCV3.1教程之编译的详细资料说明包括了:OpenCV3.1.0编译,扩展模块添加与编译2020-01-06 08:00:001关于volatile关键字对编译器优化的影响volatile关键字对编译器优化的影响2020-02-28 17:15:062531编译器优化对函数的影响编译器如gcc,可以指定不同的优化参数,在某些条件下,有些函数可能会被优化掉。2020-06-22 14:58:592472基于C++编译器的节点融合优化方法LLVM是以C十十编写的架构编译器的框架系统,支持多后端和交叉编译,用于优化程序的编译时间、链接时间、运行时间和空闲时间。节点融合是一种简单有效的优化方法,其基本思想为将多个节点优化为一个高效的融合2021-06-15 14:29:3019一文读懂OpenCV源码及扩展模块的编译与环境配置版本:VS2017、CMake3.12.3、OpenCV3.4.7 安装OpenCV时的环境配置以及扩展模块的编译对于多数新手来说都是令人头疼的问题,希望通过这篇文章可以帮助新手们一次搞定2021-06-25 11:47:052217MCU编译与运行浅谈学电子的人都知道:使用C语言编写代码后,我们必须将其处理成机器码,才能使之在MCU中执行,这其中的步骤基本概括为“编译->汇编->链接->加载->启动”。 编译和汇编很容易理解,不是我想讲解的重点2021-10-28 13:51:09138051 MCU反编译开发方法记录[8051 MCU反编译开发方法记录1、项目背景2、开发环境3、开发步骤3.1 反编译3.2 找出EEPROM的写入地址3.3 找出EEPROM读写操作的代码段3.4 找出EEPROM读写操作代码2021-11-29 17:51:0411海思AI芯片(Hi3519A/3559A)方案学习(十二)移植opencv343到hi3519A将opencv移植到某个平台,无非就是用该平台对应的编译器将opencv源代码编译成so库。 这里的target平台是hi3519A,所以得用交叉编译器arm-...2022-01-26 19:00:214【GCC编译优化系列】实战分析C代码遇到的编译问题及解决思路【GCC编译优化系列】实战分析C工程代码可能遇到的编译问题及其解决思路2022-07-10 23:15:27855【GCC编译优化系列】multiple-definition【GCC编译优化系列】这种让人看不懂的multiple-definition真的有点让人头疼2022-07-11 09:26:404062基于QT搭建OpenCV开发环境因为我安装了VS2015,所以一直是默认VS来编译,但是发现当从VS编译切换到mingw时候,OpenCV的windows版本就无法正确的使用了。2022-10-08 09:39:441030MCU如何部署OpenCV本文是一个小系列的第一篇,MCU部署OpenCV的“先跑篇”,稍后会陆续有“配置篇”、“实战篇”、“进阶篇”、“优化篇”,带您牵手OpenCV,进入OpenCV的广阔世界。2022-11-03 09:12:141589MCU部署OpenCV的“配置篇因为OpenCV包罗万象,拥有众多模块。而不是所有的模块都适合运行在MCU平台上,例如那些需要依赖于OS支持即多进程的模块,因此需要进行小心的适配。2022-11-10 09:42:281074在JetsonNano上编译OpenCV源码与OpenCV C++ YOLOv5程序演示Jetson Nano自带的OpenCV版本比较低,Jetpack4.6对应的OpenCV版本为4.1的,有图为证。2022-11-10 11:28:512176基于OpenCV和MCU的优化算法如果使能了WITH_PXP功能,那么HAVE_PXP的宏就会被定义,这样一来就会调用外部resize_pxp函数进行图像的resize操作。2022-12-08 20:13:53315编译器如何对代码进行优化(上)在学习 Andorid 逆向的过程中,发现无论是哪种编译器,生成哪个平台的代码,其优化思路在本质上如出一辙,在 Windwos 平台所使用的技巧,在安卓平台仍然适用,不外乎乘法除法计算的优化2023-02-01 16:25:25538编译器如何对代码进行优化(下)在学习 Andorid 逆向的过程中,发现无论是哪种编译器,生成哪个平台的代码,其优化思路在本质上如出一辙,在 Windwos 平台所使用的技巧,在安卓平台仍然适用,不外乎乘法除法计算的优化2023-02-01 16:25:2754720 V、P 沟道沟槽 MOSFET-PXP010-20QX20 V、P 沟道沟槽 MOSFET-PXP010-20QX2023-02-07 20:28:02030V,P 沟道沟槽 MOSFET-PXP015-30QL30 V、P 沟道沟槽 MOSFET-PXP015-30QL2023-02-14 18:53:17030V,P 沟道沟槽 MOSFET-PXP012-30QL30 V、P 沟道沟槽 MOSFET-PXP012-30QL2023-02-14 18:53:290100 V,P 沟道沟槽 MOSFET-PXP1500-100QS100 V,P 沟道沟槽 MOSFET-PXP1500-100QS2023-02-15 18:51:49030V,P 沟道沟槽 MOSFET-PXP6R1-30QL30 V、P 沟道沟槽 MOSFET-PXP6R1-30QL2023-02-15 19:41:52012V,P 沟道沟槽 MOSFET-PXP3R7-12QU12 V、P 沟道沟槽 MOSFET-PXP3R7-12QU2023-02-15 19:42:080100 V,P 沟道沟槽 MOSFET-PXP400-100QS100 V,P 沟道沟槽 MOSFET-PXP400-100QS2023-02-20 18:48:420深入浅出编译优化选项(上)在前文 《 如何为嵌入式软件开发选择编译器》 中讲到编译器对于嵌入式软件开发的重要性,以及如何选择一款优秀的编译器。 文中也比较了现有主流编译器的编译优化性能,IAR Embedded Workbench编译器不论在输出代码体积还是性能均处于业界领先地位。2023-04-14 09:11:381208深入浅出编译优化选项(下)在《深入浅出编译优化选项(上)》中,我们介绍了如何在IAR Embedded Workbench编译器中进行编译优化等级配置、多文件编译配置、灵活配置编译优化选项作用域、链接阶段优化选项配置等。2023-04-21 10:19:11649OpenCV基础知识入门OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用。该库是一个跨平台的开源库,是免费使用的。OpenCV库是一个高度优化的库,主要关注实时应用程序。2023-10-29 11:29:31265RK3568上OpenCV 的编译移植算法丰富多样,在ARM嵌入式平台上也适用于做算法的移植。本系统选择将OpenCV3.2.0编译移植到开发板上,开发环境是虚拟机上安装的Ubuntu16.04。由于OpenCV开源,直接在官网上下载源码包op2021-12-20 10:08:5263编译器的优化选项一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到2023-11-24 15:37:18238OpenCV4.8+CUDA+扩展模块支持编译指南OpenCV4.8+CUDA+扩展模块支持编译指南2023-11-30 16:45:00240Android编译优化之混淆配置为了使用java8及后续java新版本的特性,Google增加了一步编译过程—脱糖(desugaring),但这一步会导致更长的编译时间,这也是为什么Google会推出D8和R8编译器来优化编译速度。2023-12-21 09:21:59197
已全部加载完成
精选推荐
更多
文章 资料 帖子
鸿蒙二进制数组创建
王程
27分钟前
42 阅读
跨Android、iOS、鸿蒙多平台框架ArkUI-X
王程
59分钟前
57 阅读
理想双工器和实际双工器的区别
要长高
4小时前
198 阅读
双工器的原理及调试方法
星星科技指导员
4小时前
189 阅读
为什么取名图腾柱?推挽电路和图腾柱电路的区别
冬至子
1天前
527 阅读
NiosII系统开发流程
123
20
免费
30下载
51单片机新手实例学习
yezi888
462 KB
免费
2406下载
Sandboxed API自动为 C/C++库生成沙箱
李艳
9.07 MB
免费
0下载
HeartbeatOne MySQL主服务器复制延迟时间检查工具
周必镜
0.00 MB
免费
1下载
ISLA是一个DIY友好型自主机器人
手托初梦
0.42 MB
免费
1下载
【演示教程】盘古EU_22K开发板PMOD音频输入输出模块操作演示
yonglong11{$vo.author}
15小时前
38 阅读
VisionFive 2 生态进展双周报(1.1-1.31)
jf_85903230{$vo.author}
15小时前
33 阅读
【RISC-V开放架构设计之道|阅读体验】+ 个人心得并祝福
rx_ted{$vo.author}
5天前
613 阅读
设计一个FPGA控制16路DAC,集成输出可以使用什么接口?
bulabul{$vo.author}
3天前
397 阅读
RK3588 拉流异常挂死问题咨询
jf_02881941{$vo.author}
1天前
329 阅读
推荐专栏
更多
华秋(原“华强聚丰”):
电子发烧友
华秋开发
华秋电路(原"华强PCB")
华秋商城(原"华强芯城")
华秋智造
My ElecFans
APP
网站地图
设计技术
可编程逻辑
电源/新能源
MEMS/传感技术
测量仪表
嵌入式技术
制造/封装
模拟技术
RF/无线
接口/总线/驱动
处理器/DSP
EDA/IC设计
存储技术
光电显示
EMC/EMI设计
连接器
行业应用
LEDs
汽车电子
音视频及家电
通信网络
医疗电子
人工智能
虚拟现实
可穿戴设备
机器人
安全设备/系统
军用/航空电子
移动通信
工业控制
便携设备
触控感测
物联网
智能电网
区块链
新科技
特色内容
专栏推荐
学院
设计资源
设计技术
电子百科
电子视频
元器件知识
工具箱
VIP会员
最新技术文章
社区
小组
论坛
问答
评测试用
企业服务
产品
资料
文章
方案
企业
供应链服务
硬件开发
华秋电路
华秋商城
华秋智造
nextPCB
BOM配单
媒体服务
网站广告
在线研讨会
活动策划
新闻发布
新品发布
小测验
设计大赛
华秋
关于我们
投资关系
新闻动态
加入我们
联系我们
举报投诉
社交网络
微博
移动端
发烧友APP
硬声APP
WAP
联系我们
广告合作
王婉珠:wangwanzhu@elecfans.com
内容合作
黄晶晶:huangjingjing@elecfans.com
内容合作(海外)
张迎辉:mikezhang@elecfans.com
供应链服务 PCB/IC/PCBA
江良华:lanhu@huaqiu.com
投资合作
曾海银:zenghaiyin@huaqiu.com
社区合作
刘勇:liuyong@huaqiu.com
关注我们的微信
下载发烧友APP
电子发烧友观察
电子工程师社区
1-32层PCB打样·中小批量
元器件现货·全球代购·SmartBOM
SMT贴片·PCBA加工
PCB&PCBA Manufacturing
华秋简介
企业动态
联系我们
企业文化
企业宣传片
加入我们
版权所有 © 深圳华秋电子有限公司
电子发烧友
(电路图)
粤公网安备 44030402000349 号
电信与信息服务业务经营许可证:合字B2-20210191
工商网监
湘ICP备 2023018690 号
NXP — LVGL_Chinese_Documents 文档
latest
介绍(Introduction)
特性(Key features)
软硬件需求(Requirements)
许可(License)
仓库结构(Repository layout)
Release policy
Release cycle
Branches
Changelog
Version support
FAQ
Where can I ask questions?
Is my MCU/hardware supported?
Is my display supported?
Nothing happens, my display driver is not called. What have I missed?
Why is the display driver called only once? Only the upper part of the display is refreshed.
Why do I see only garbage on the screen?
Why do I see nonsense colors on the screen?
How to speed up my UI?
How to reduce flash/ROM usage?
How to reduce the RAM usage
How to work with an operating system?
快速开始(Get started)
快速概览 Quick overview
Get started in a simulator
Add LVGL into your project
Learn the basics
Widgets
Events
Parts
States
Styles
Themes
Examples
Micropython
Simulator on PC
Select an IDE
Set-up Eclipse CDT
Install Eclipse CDT
Install SDL 2
Pre-configured project
Add the pre-configured project to Eclipse CDT
Compile and Run
STM32
NXP
Creating new project with LVGL
Adding HW acceleration for NXP iMX RT platforms using PXP (PiXel Pipeline) engine for existing projects
Features supported:
Basic configuration:
Basic initialization:
Project setup:
Advanced configuration:
Espressif (ESP32)
Get the LVGL demo project for ESP32
Use LVGL in your ESP32 project
Prerequisites
Get LVGL
Use lvgl_esp32_drivers in your project
Support for ESP32-S2
Arduino
Get the LVGL Arduino library
Set up drivers
Configure LVGL
Initialize LVGL and run an example
Debugging and logging
Micropython
What is Micropython?
Highlights of Micropython
Why Micropython + LVGL?
Here are some advantages of using LVGL in Micropython:
Micropython + LVGL could be used for:
So what does it look like?
A simple example
How can I use it?
Online Simulator
PC Simulator
Embedded platform
Where can I find more information?
Tasmota and berry
What is Tasmota?
What is Berry?
Highlights of Berry
Why LVGL + Tasmota + Berry?
Tasmota + Berry + LVGL could be used for:
So what does it look like?
A simple example
How can I use it?
Where can I find more information?
Tasmota Documentation
Berry Documentation
Tasmota LVGL Berry documentation
NuttX RTOS
What is NuttX?
Highlights of NuttX
Why NuttX + LVGL?
Here are some advantages of using LVGL in NuttX
NuttX + LVGL could be used for
How to get started with NuttX and LVGL?
First you need to install the pre-requisites on your system
Now let’s create a workspace to save our files
Clone the NuttX and Apps repositories:
Configure NuttX to use the stm32f429i-disco board and the LVGL Demo
Flashing the firmware in the board using OpenOCD:
Where can I find more information?
RT-Thread RTOS
What is RT-Thread?
How to run LVGL on RT-Thread?
CMake
Espressif (ESP32)
MicroPython
Zephyr
Prerequisites
Make
Ninja
Building LVGL with CMake
Additional CMake options
Building LVGL examples with CMake
Building LVGL drivers and demos with CMake
移植(Porting)
Set up a project
Get the library
Configuration file
Initialization
Display interface
Draw buffer
Buffering modes
One buffer
Two buffers
Full refresh
Direct mode
Display driver
Mandatory fields
Optional fields
Examples
Rotation
Further reading
API
Input device interface
Types of input devices
Touchpad, mouse or any pointer
Keypad or keyboard
Encoder
Button
Other features
Parameters
Feedback
Associating with a display
Buffered reading
Further reading
API
Tick interface
API
Task Handler
Sleep management
Operating system and interrupts
Tasks and threads
Interrupts
Logging
Log level
Printing logs
Logging with printf
Custom log function
Add logs
概览(Overview)
对象(Objects)
属性(Attributes)
基本属性(Basic attributes)
具体属性(Specific attributes)
工作机制(Working mechanisms)
父子结构(Parent-child structure)
同时移动(Moving together)
子对象的可见性(Visibility only on the parent)
创建/删除对象(Create and delete objects)
屏幕(Screens)
创建屏幕(Create screens)
设置活动屏幕(Get the active screen)
加载屏幕(Load screens)
层(Layers)
多显示器处理(Handling multiple display)
部件块(Parts)
状态(States)
截屏(Snapshot)
位置、大小与布局(Positions, sizes, and layouts)
概览(Overview)
单位(Units)
盒子模型(Boxing model)
重要提示(Important notes)
坐标(Position)
简易方式(Simple way)
对齐(Align)
尺寸(Size)
简易方式(Simple way)
使用样式(Using styles)
位置变换(Translation)
变形(Transformation)
最大最小值(Min and Max size)
布局(Layout)
概览
内置布局(Built-in layout)
标志(Flags)
添加新布局(Adding new layouts)
Examples
样式(Styles)
状态(States)
层叠样式(Cascading styles)
继承(Inheritance)
部件块(Parts)
初始化样式和设置/读取属性(Initialize styles and set/get properties)
向部件添加和删除样式(Add and remove styles to a widget)
添加样式(Add styles)
删除样式(Remove styles)
报告样式变更(Report style changes)
获取某个对象的属性值(Get a property’s value on an object)
局部样式(Local styles)
属性(Properties)
典型背景属性(Typical background properties)
变换(Transitions)
Color filter
主题(Themes)
扩展主题(Extending themes)
例子(Examples)
API
样式属性(Style properties)
大小与位置(Size and position)
宽度(width)
最小宽度(min_width)
最大宽度(max_width)
高度(height)
最小高度(min_height)
最大高度(max_height)
x
y
对齐方式(align)
变换宽度(transform_width)
变换高度(transform_height)
变换x坐标(translate_x)
变换y坐标(translate_y)
缩放(transform_zoom)
变换角度(transform_angle)
填充(Padding)
顶部填充(pad_top)
底部填充(pad_bottom)
左部填充(pad_left)
右部填充(pad_right)
行填充(pad_row)
列填充(pad_column)
背景(Background)
背景颜色(bg_color)
bg_opa
渐变色(bg_grad_color)
渐变方向(bg_grad_dir)
背景色起点(bg_main_stop)
背景渐变色起点(bg_grad_stop)
背景图片(bg_img_src)
背景图片透明度(bg_img_opa)
背景图片重新着色(bg_img_recolor)
背景图片重新着色强度(bg_img_recolor_opa)
背景图片平铺(bg_img_tiled)
边框(Border)
边框颜色(border_color)
边框不透明度(border_opa)
边框宽度(border_width)
边界尺寸(border_side)
border_post
轮廓(Outline)
轮廓宽度(outline_width)
outline_color
outline_opa
outline_pad
Shadow
shadow_width
shadow_ofs_x
shadow_ofs_y
shadow_spread
shadow_color
shadow_opa
Image
img_opa
img_recolor
img_recolor_opa
Line
line_width
line_dash_width
line_dash_gap
line_rounded
line_color
line_opa
Arc
arc_width
arc_rounded
arc_color
arc_opa
arc_img_src
Text
text_color
text_opa
text_font
text_letter_space
text_line_space
text_decor
text_align
Miscellaneous
radius
clip_corner
opa
color_filter_dsc
color_filter_opa
anim_time
anim_speed
transition
blend_mode
layout
base_dir
滚动(Scroll)
概览(Overview)
滚动条(Scrollbar)
时间(Events)
Basic example
滚动的特点(Features of scrolling)
可滚动性(Scrollable)
滚动链(Scroll chain)
滚动动量(Scroll momentum)
弹性滚动(Elastic scroll)
捕捉(Snapping)
单次滚动(Scroll one)
Scroll on focus
Scroll manually
Self size
Examples
层(Layers)
创建顺序(Order of creation)
将对象置于上层(Bring to the foreground)
顶层与系统层(Top and sys layers)
事件(Events)
给对象添加事件(Add events to the object)
从对象中删除事件(Remove event(s) from an object)
事件代码(Event codes)
Input device events
绘图事件(Drawing events)
其他事件(Other events)
特殊事件(Special events)
自定义事件(Custom events)
手动发送事件(Sending events)
刷新事件(Refresh event)
Fields of lv_event_t
Event bubbling
Examples
输入设备(Input devices)
Pointers
Cursor
Gestures
Keypad and encoder
Groups
Styling
API
Input device
Groups
显示器(Displays)
Multiple display support
Using only one display
Mirror display
Split image
Screens
Transparent screens
Features of displays
Inactivity
Background
API
色彩(Colors)
Creating colors
RGB
HSV
Palette
Modify and mix colors
Built-in colors
Opacity
Color types
Convert color
API
字体(Fonts)
Unicode编码支持(Unicode support)
内嵌字体(Built-in fonts)
普通字体(Normal fonts)
特殊字体(Special fonts)
特性(Special features)
双向书写支持(Bidirectional support)
阿拉伯语和波斯语支持(Arabic and Persian support)
亚像素渲染(Subpixel rendering)
压缩字体(Compressed fonts)
增加新字体(Add a new font)
添加新符号(Add new symbols)
在运行时加载字体(Load a font at run-time)
添加新的字体引擎(Add a new font engine)
字体退回(Use font fallback)
图像(Images)
储存图像(Store images)
变量(Variables)
文件(Files)
颜色格式(Color formats)
添加与使用图像(Add and use images)
在线转换(Online converter)
手动创建(Manually create an image)
使用图像(Use images)
图像解码器(Image decoder)
自定义图像格式(Custom image formats)
注册图像解码器(Register an image decoder)
手动使用解码器(Manually use an image decoder)
图像缓存(Image caching)
Cache size
Value of images
Memory usage
Clean the cache
API
Image buffer
文件系统(File system)
Ready to use drivers
Adding a driver
Registering a driver
Implementing the callbacks
Other callbacks
Usage example
Use drives for images
API
动画(Animations)
Create an animation
Animation path
Speed vs time
Delete animations
Timeline
Examples
API
定时器(Timers)
Create a timer
Ready and Reset
Set parameters
Repeat count
Measure idle time
Asynchronous calls
API
Drawing
Mechanism of screen refreshing
Masking
Using masks
Hook drawing
Main drawing
Post drawing
Part drawing
Others
New widget
部件(Widgets)
Base object (lv_obj)
Overview
Coordinates
Parents and children
Display and Screens
Events
Styles
Flags
Groups
Extended click area
Events
Keys
Example
API
Core widgets
Arc (lv_arc)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Bar (lv_bar)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Button (lv_btn)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Button matrix (lv_btnmatrix)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Canvas (lv_canvas)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Checkbox (lv_checkbox)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Drop-down list (lv_dropdown)
Overview
Parts and Styles
Usage
Overview
Events
Keys
Example
API
图像部件 Image (lv_img)
概览 Overview
部件块与样式(Parts and Styles)
用法(Usage)
Transformations
Events
Keys
Example
API
Label (lv_label)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Line (lv_line)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Roller (lv_roller)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Slider (lv_slider)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Switch (lv_switch)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Table (lv_table)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Text area (lv_textarea)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Extra widgets
Animation Image (lv_animimg)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Calendar (lv_calendar)
Overview
Parts and Styles
Usage
Events
Keys
Headers
Example
API
Chart (lv_chart)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Color wheel (lv_colorwheel)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Image button (lv_imgbtn)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Keyboard (lv_keyboard)
Overview
Parts and Styles
Usage
Events
Keys
Examples
API
LED (lv_led)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
List (lv_list)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Menu (lv_menu)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Meter (lv_meter)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Message box (lv_msgbox)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Span (lv_span)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Spinbox (lv_spinbox)
Overview
Parts and Styles
Events
Keys
Example
API
Example
Spinner (lv_spinner)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Tabview (lv_tabview)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Tile view (lv_tileview)
Overview
Parts and Styles
Usage
Events
Keys
Example
API
Window (lv_win)
Overview
Parts and Styles
Usage
Get the parts
Events
Keys
Example
API
布局(Layouts)
Flex
Overview
Terms
Simple interface
Flex flow
Flex align
Flex grow
Style interface
Internal padding
Other features
RTL
New track
Example
API
Grid
Overview
Terms
Simple interface
Grid descriptors
Grid items
Grid align
Style interface
Internal padding
Other features
RTL
Example
API
第三方库(3rd party libraries)
File System Interfaces
Usage
BMP decoder
Limitations
Example
API
JPG decoder
Overview
Usage
Converter
Converting JPG to C array
Converting JPG to SJPG
Example
API
PNG decoder
Example
API
GIF decoder
Convert GIF files to C array
Use GIF images from file
Memory requirements
Example
API
FreeType support
Install FreeType
Add FreeType to your project
Usage
Example
Learn more
API
QR code
Get started
Notes
Example
API
Lottie player
Build Rlottie
Usage
Use Rlottie from file
Use Rlottie from raw string data
Getting animations
Controlling animations
Example
API
FFmpeg support
Install FFmpeg
Add FFmpeg to your project
Usage
Example
API
其他(Others)
Snapshot
Usage
Free the Image
Use Existing Buffer
Example
API
Monkey
Usage
Example
API
贡献(Contributing)
Introduction
Pull request
From GitHub
From command line
Commit message format
Developer Certification of Origin (DCO)
Overview
Accepted licenses and copyright notices
Your own work
Use code from online source
Use MIT licensed code
Use GPL licensed code
Ways to contribute
Give LVGL a Star
Tell what you have achieved
Write examples
Improve the docs
Report bugs
Send fixes
Join the conversations in the Forum
Add features
Become a maintainer
Move your project repository under LVGL organization
更新日志(Changelog)
v8.1.0 10 November 2021
Overview
Breaking Changes
Architectural
New Features
Performance
Fixes
Examples
Docs
CI and tests
Others
v8.0.2 (16.07.2021)
v8.0.1 (14.06.2021)
v8.0.0 (01.06.2021)
Directory structure
Widget changes
New scrolling
New layouts
Styles
Events
Driver changes
Other changes
New release policy
Migrating from v7 to v8
v7.11.0 (16.03.2021)
New features
Bugfixes
v7.10.1 (16.02.2021)
Bugfixes
v7.10.0 (02.02.2021)
New features
Bugfixes
v7.9.1 (19.01.2021)
Bugfixes
v7.9.0 (05.01.2021)
New features
Bugfixes
v7.8.1 (15.12.2020)
Bugfixes
v7.8.0 (01.12.2020)
New features
Bugfixes
v7.7.2 (17.11.2020)
Bugfixes
v7.7.1 (03.11.2020)
Bugfixes
v7.7.0 (20.10.2020)
New features
Bugfixes
v7.6.1 (06.10.2020)
Bugfixes
v7.6.0 (22.09.2020)
New features
Bugfixes
v7.5.0 (15.09.2020)
New features
Bugfixes
v7.4.0 (01.09.2020)
New features
Bugfixes
v7.3.1 (18.08.2020)
Bugfixes
v7.3.0 (04.08.2020)
New features
Bugfixes
v7.2.0 (21.07.2020)
New features
Bugfixes
v7.1.0 (07.07.2020)
New features
Bugfixes
v7.0.2 (16.06.2020)
Bugfixes
v7.0.1 (01.06.2020)
Bugfixes
v7.0.0 (18.05.2020)
Documentation
Legal changes
New drawing system
New style system
GPU integration
Renames
Reworked and improved object
New object types
Others
Demos
New release policy
Migrating from v6 to v7
后续目标(Roadmap)
v8.2
Ideas
LVGL_Chinese_Documents
»
快速开始(Get started) »
NXP
在 GitHub 上修改
NXP¶
NXP has integrated LVGL into the MCUXpresso SDK packages for several of their general
purpose and crossover microcontrollers, allowing easy evaluation and migration into your
product design. Download an SDK for a supported board
today and get started with your next GUI application.
Creating new project with LVGL¶
Downloading the MCU SDK example project is recommended as a starting point. It comes fully
configured with LVGL (and with PXP support if module is present), no additional integration
work is required.
Adding HW acceleration for NXP iMX RT platforms using PXP (PiXel Pipeline) engine for existing projects¶
Several drawing features in LVGL can be offloaded to the PXP engine. The CPU is available for other operations while the PXP is running. An RTOS is required to block the LVGL drawing thread and switch to another task or suspend the CPU for power savings.
Features supported:¶
RGB565 color format
Area fill + optional transparency
BLIT (BLock Image Transfer) + optional transparency
Color keying + optional transparency
Recoloring (color tint) + optional transparency
RTOS integration layer
Default FreeRTOS and bare metal code provided
Basic configuration:¶
Select NXP PXP engine in lv_conf.h: Set LV_USE_GPU_NXP_PXP to 1
Enable default implementation for interrupt handling, PXP start function and automatic initialization: Set LV_USE_GPU_NXP_PXP_AUTO_INIT to 1
If FSL_RTOS_FREE_RTOS symbol is defined, FreeRTOS implementation will be used, otherwise bare metal code will be included
Basic initialization:¶
If LV_USE_GPU_NXP_PXP_AUTO_INIT is enabled, no user code is required; PXP is initialized automatically in lv_init()
For manual PXP initialization, default configuration structure for callbacks can be used. Initialize PXP before calling lv_init()
#if LV_USE_GPU_NXP_PXP
#include "lv_gpu/lv_gpu_nxp_pxp.h"
#include "lv_gpu/lv_gpu_nxp_pxp_osa.h"
#endif
. . .
#if LV_USE_GPU_NXP_PXP
if (lv_gpu_nxp_pxp_init(&pxp_default_cfg) != LV_RES_OK) {
PRINTF("PXP init error. STOP.\n");
for ( ; ; ) ;
}
#endif
Project setup:¶
Add PXP related files to project:
lv_gpu/lv_gpu_nxp.c, lv_gpu/lv_gpu_nxp.h: low level drawing calls for LVGL
lv_gpu/lv_gpu_nxp_osa.c, lv_gpu/lv_gpu_osa.h: default implementation of OS-specific functions (bare metal and FreeRTOS only)
optional, required only if LV_USE_GPU_NXP_PXP_AUTO_INIT is set to 1
PXP related code depends on two drivers provided by MCU SDK. These drivers need to be added to project:
fsl_pxp.c, fsl_pxp.h: PXP driver
fsl_cache.c, fsl_cache.h: CPU cache handling functions
Advanced configuration:¶
Implementation depends on multiple OS-specific functions. The struct lv_nxp_pxp_cfg_t with callback pointers is used
as a parameter for the lv_gpu_nxp_pxp_init() function. Default implementation for FreeRTOS and baremetal is provided in lv_gpu_nxp_osa.c
pxp_interrupt_init(): Initialize PXP interrupt (HW setup, OS setup)
pxp_interrupt_deinit(): Deinitialize PXP interrupt (HW setup, OS setup)
pxp_run(): Start PXP job. Use OS-specific mechanism to block drawing thread. PXP must finish drawing before leaving this function.
There are configurable area thresholds which are used to decide whether the area will be processed by CPU, or by PXP. Areas smaller than a
defined value will be processed by CPU and those bigger than the threshold will be processed by PXP. These thresholds may be defined as
preprocessor variables. Default values are defined lv_gpu/lv_gpu_nxp_pxp.h
GPU_NXP_PXP_BLIT_SIZE_LIMIT: size threshold for image BLIT, BLIT with color keying, and BLIT with recolor (OPA > LV_OPA_MAX)
GPU_NXP_PXP_BLIT_OPA_SIZE_LIMIT: size threshold for image BLIT and BLIT with color keying with transparency (OPA < LV_OPA_MAX)
GPU_NXP_PXP_FILL_SIZE_LIMIT: size threshold for fill operation (OPA > LV_OPA_MAX)
GPU_NXP_PXP_FILL_OPA_SIZE_LIMIT: size threshold for fill operation with transparency (OPA < LV_OPA_MAX)
下一页
上一页
© 版权所有 2021, LVGL Kft.
Revision e12ff00e.
最后更新于 2022 年 01 月 05 日.
利用 Sphinx 构建,使用了
主题
由 Read the Docs开发.
Read the Docs
v: latest
版本列表
latest
stable
下载链接
html
epub
托管于 Read the Docs
项目首页
构建
基于PXP的ASIC/SOC原型验证 - 网易云课堂
课程分类
AI·数字技能
编程语言
后端开发
前端开发
产品运营
职业·考证
英语·留学
职场·办公
办公软件
个人提升
家庭·育儿
设计·摄影
摄影影视
设计软件
考研·专升本
实战Python必备
Python游戏化编程
产品经理成长之路
人工智能
|
AI实战应用
|
算法模型开发
设计创作
|
视频制作
|
平面/电商
|
绘画/插画
|
3D/建模
编程开发
|
Python
|
Java
|
C/C++/C#
|
Golang
|
后端开发
|
前端开发
|
移动开发
|
游戏开发
|
硬件开发
|
测试/运维
|
网络安全
|
区块链
|
基础理论
新媒体/电商
|
短视频直播
|
新媒体运营
|
电商营销
|
产品运营
数据分析
|
分析与可视化
|
大数据开发应用
系列课程
Java学习指南系列
Web前端,JavaScript入门到全栈
用WordPress做网站系列课程
微互动:精品运营专题
微信运营营销全攻略(2017全面升级)
更多>>
健康管理
|
公共营养师
|
心理咨询师
建筑工程
|
二级建造师
|
一级建造师
|
注册安全工程师
财会金融
|
财会金融考试
|
财会金融实操
更多职业
|
IT/软考
|
公职/教职
系列课程
更多>>
实用英语
|
职场英语
|
生活英语
四六级
|
备考23年12月
|
备考24年6月
|
词汇语法
|
听力口语
|
真题下载
雅思
|
雅思
专四专八
|
专四备考
|
专八备考
系列课程
更多>>
“最强大脑” 带你拿offer
时间管理,每天多出2小时
Excel+PPT+Word小白变高手
办公效率
|
PPT
|
Excel
|
Word
|
WPS
|
效率工具
沟通管理
|
表达沟通
|
职场突破
|
职场管理
专业能力
|
数据分析
|
科研/医学
|
项目管理
|
经济管理
|
产品经理
|
产品运营
系列课程
“最强大脑”学长学姐,带你拿offer!
时间管理,每天多出2小时
Excel+PPT+Word小白变大神
从零开始通识阅读
学以致用的实践型学习
25节听得懂的金融思维课
更多>>
家庭教育
|
亲子教育
|
素质教育
家庭理财
|
理财入门
|
投资理财
家庭健康
|
营养健康
|
心理健康
生活百科
|
书法/绘画
|
音乐
|
生活百科
系列课程
更多>>
零基础系统学摄影
设计软件一课通关
精品设计课堂
视频制作
|
视频剪辑
|
视频特效
摄影修片
|
手机摄影
|
商拍/人像
|
后期/审美
平面设计
|
平面设计
|
电商视觉
绘画设计
|
AI绘画
|
iPad插画
|
PS插画
3D/建模
|
3D/建模
|
环艺设计
设计软件
|
Photoshop
|
Illustrator
|
Lightroom
|
Premiere
|
After Effects
|
C4D
|
CAD
|
3Dmax
|
Procreate
系列课程
设计必学--全套四部超级合辑
跟曾兰一起学摄影
跟洋哥系统学Pr剪辑与Ae包装
设计必学:2大利器
商业设计师成长计划
创意不卡壳
更多>>
考研全科
|
25考研全科
|
26考研全科
专升本
|
24专升本
|
25专升本
考研英语
|
25考研·全程领学
|
26考研·长线备考
考研数学
|
25考研·全程领学
|
26考研·长线备考
考研政治
|
25考研·全程领学
|
26考研·长线备考
考研专业课1v1
|
25考研1对1
|
26考研1对1
统考专业课
|
管综/经综
|
计算机
系列课程
更多>>
课程
课程
网校
搜索课程
搜索
清空
特色应用
下载APP
扫码下载官方App
登录/注册
我的学习
会员中心
首页
AI·数字技能
编程开发
硬件开发
课程详情
目录
连载
学习过该课程的人还学习过:
相关题库
咨询
其他联系方式
所属系列课程
评价
关于我们
联系我们
帮助中心
中国大学MOOC
卡搭编程
有道智云
有道社招
有道校招
廉正举报
©1997-2024 网易公司 版权所有粤B2-20090191-18
工业和信息化部备案管理系统网站
违法和不良信息举报电话(涉未成年人):0571-89853416 举报邮箱(涉未成年人):youdao_jubao@rd.netease.com 网上有害信息举报专区
监督举报邮箱:jb@rd.netease.com
关注我们:
基于PXP的ASIC/SOC原型验证,移知---半导体教育领航者,什么是Emulator?为什么ASIC及SOC验证需要Emulator?
什么是PXP?PXP能做些什么?
基于PXP的ASIC原型验证的flow以及可能遇到的问题 适用人群:IC工程师
基于RT1052 Aworks 测试PXP图像混合功能(十三) - 嵌入式实操 - 博客园
会员
周边
新闻
博问
AI培训
云市场
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式 ...
退出登录
注册
登录
良红
寻一生一重之人,行义无返顾之事。
博客园
首页
新随笔
联系
订阅
管理
基于RT1052 Aworks 测试PXP图像混合功能(十三)
本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发
做了这么长的开发以来,从来没有使用过GPU2D,GPU3G进行编程。这次评估RT1052 PXP的图像混合功能,记录了本次的开发日记。
1. 首先阅读芯片手册
说一下本人粗看该章节之后的感想,很少会极其详细查看芯片的手册,只要在遇到难以解决的问题时,才会详细看芯片手册,但是有一点就是模块的内部架构及相关参数还是要大体了解的,其实和编程接口是相关的,如果不了解这些信息的话,虽然会使用API进行编程,但是实际一旦遇到问题是缺少理论支撑,排查问题就会难一些。
2. 设备宏开关
在前面支持LCD的章节当中,其实PXP的设备宏开关就一起打开了。我们只要先把样例跑起来,就可以两个图像混合评估,即一秒内能做多少次两个满屏图像的混合。
3. 测试
在目录examples\peripheral\m105x\pxp\demo_pxp_blend.c 为默认支持RGB565的样例。把相关input/output参数改为支持RGB24的即可,需要注意的话,对于PXP模块所需要input数据源为RGBA,它需要的时32位的数据,这个是需要注意的地方,否则会产生异常。
4. 总结
PXP输入、输出的数据源格式是最重要的,否则花屏,闪屏的现象会出现。希望大家别踏坑。本人设置的输入数据源为RGBA,输出为RGB.如下为笔者的测试代码。
/*******************************************************************************
* AWorks
* ----------------------------
* innovating embedded platform
*
* Copyright (c) 2001-2017 Guangzhou ZHIYUAN Electronics Co., Ltd.
* All rights reserved.
*
* Contact information:
* web site: http://www.zlg.cn
* e-mail: support@zlg.cn
*******************************************************************************/
/**
* \file
* \brief PXP像素处理例程
*
* - 操作步骤:
* 1. 本例程需在aw_prj_params.h头文件里使能
* - 显示屏设备宏
* - 如果使用800 X 480显示屏,打开TEST_SCREEN_BIG,否则打开TEST_SCREEN_LITTER;
* 2. 连接串口设备
*
* - 实验现象:
* 1.蓝色矩形和黄色矩形在屏幕上移动,交汇界面为白色。
*/
#include
#include
#include "aworks.h"
#include "aw_delay.h"
#include "aw_vdebug.h"
#include "aw_fb.h"
#include "aw_demo_config.h"
#include "aw_cache.h"
#include "aw_mem.h"
#include "driver/pxp/awbl_imx1050_pxp.h"
typedef struct pixel_24bpp {
uint8_t b;
uint8_t g;
uint8_t r;
uint8_t a;
} pixel_24bpp_t;
//#define TEST_SCREEN_BIG /*800 X 480显示屏*/
#define TEST_SCREEN_LITTER /*480 X 1920显示屏*/
#ifdef TEST_SCREEN_BIG
#define __APP_IMG_HEIGHT 480
#define __APP_IMG_WIDTH 800
#else
#define __APP_IMG_HEIGHT 1920
#define __APP_IMG_WIDTH 480
#endif
/* 定义全局的 frame buffer 设备 */
static aw_fb_fix_info_t __fix_screen_info;
static aw_fb_var_info_t __var_info;
static uint8_t *__gp_ps_buf;
static uint8_t *__gp_as_buf;
/* PXP 输出 buffer 配置. */
static pxp_output_buffer_config_t __g_output_buffer_config;
/*像素深度*/
#define __APP_BPP 3
#define __APP_PS_WIDTH (__APP_IMG_WIDTH / 2)
#define __APP_PS_HEIGHT (__APP_IMG_HEIGHT / 2)
#define __APP_AS_WIDTH (__APP_IMG_WIDTH / 2)
#define __APP_AS_HEIGHT (__APP_IMG_HEIGHT / 2)
#define __APP_PS_ULC_X ((__APP_IMG_WIDTH / 2) - (__APP_PS_SIZE / 2))
#define __APP_PS_ULC_Y ((__APP_IMG_HEIGHT / 2) - (__APP_PS_SIZE / 2))
#define __APP_PS_LRC_X ((__APP_IMG_WIDTH / 2) + (__APP_PS_SIZE / 2) - 1)
static aw_err_t __fb_init (void)
{
void * p_fb = aw_fb_open(DE_FB, 0);
if (p_fb == NULL) {
aw_kprintf("open fb fail.\r\n");
return -AW_ERROR;
}
/* frame buffer 初始化 */
aw_fb_init(p_fb);
/*frame buffer 设备信息货物*/
aw_fb_ioctl(p_fb, AW_FB_CMD_GET_FINFO, &__fix_screen_info);
aw_fb_ioctl(p_fb, AW_FB_CMD_GET_VINFO, &__var_info);
/* 设置背光亮度 */
aw_fb_backlight(p_fb, 99);
aw_fb_start(p_fb);
/* 初始化屏幕背景色(白色) */
memset((void *)__fix_screen_info.vram_addr,
0xFF,
__var_info.buffer.buffer_size * __var_info.buffer.buffer_num);
return AW_OK;
}
static void __as_ps_buf_init (void)
{
uint32_t i, j;
pixel_24bpp_t *ps_buf = (pixel_24bpp_t *)__gp_ps_buf;
pixel_24bpp_t *as_buf = (pixel_24bpp_t *)__gp_as_buf;
/* The PS buffer is BLUE rectangle, the AS buffer is YELLOW rectangle. */
for (i = 0; i < __APP_PS_HEIGHT; i++) {
for (j = 0; j < __APP_PS_WIDTH; j++) {
ps_buf[i * __APP_PS_WIDTH + j].b = 0xFF;
ps_buf[i * __APP_PS_WIDTH + j].g = 0x00;
ps_buf[i * __APP_PS_WIDTH + j].r = 0x00;
}
}
for (i = 0; i < __APP_AS_HEIGHT; i++) {
for (j = 0; j < __APP_AS_WIDTH; j++) {
as_buf[i * __APP_AS_WIDTH + j].b = 0x00;
as_buf[i * __APP_AS_WIDTH + j].g = 0xFF;
as_buf[i * __APP_AS_WIDTH + j].r = 0xFF;
}
}
}
static void __app_pxp_config (void)
{
/* PS configure. */
const pxp_ps_buffer_config_t ps_buffer_config = {
.pixel_format = kPXP_PsPixelFormatRGB888,
.swap_byte = 0,
.buffer_addr = (uint32_t)__gp_ps_buf,
.buffer_addr_u = 0,
.buffer_addr_v = 0,
.pitch_bytes = __APP_PS_WIDTH * __APP_BPP,
};
/* 复位PXP */
pxp_hard_reset();
/* 设置PS背景颜色 */
pxp_set_process_surface_back_ground_color(0x00);
/* 配置PS buffer */
pxp_set_process_surface_buffer_config(&ps_buffer_config);
/* AS config. */
const pxp_as_buffer_config_t as_buffer_config = {
.pixel_format = kPXP_AsPixelFormatRGB888,
.buffer_addr = (uint32_t)__gp_as_buf,
.pitch_bytes = __APP_AS_WIDTH * __APP_BPP,
};
/*配置AS buffer*/
pxp_set_alpha_surface_buffer_config(&as_buffer_config);
/*AS blend config*/
const pxp_as_blend_config_t as_blend_config = {
.alpha = 0,
.invert_alpha = 0,
.alpha_mode = kPXP_AlphaRop,
.rop_mode = kPXP_RopMergeAs
};
/*设置AS blend*/
pxp_set_alpha_surface_blend_config(&as_blend_config);
/* Output config. */
__g_output_buffer_config.pixel_format = kPXP_OutputPixelFormatRGB888P;
__g_output_buffer_config.interlaced_mode = kPXP_OutputProgressive;
__g_output_buffer_config.buffer0_addr = (uint32_t)__fix_screen_info.vram_addr;
__g_output_buffer_config.buffer1_addr = 0;
__g_output_buffer_config.pitch_bytes = __APP_IMG_WIDTH * 3;
__g_output_buffer_config.width = __APP_IMG_WIDTH;
__g_output_buffer_config.height = __APP_IMG_HEIGHT;
/*配置输出pxp buffer*/
pxp_set_output_buffer_config(&__g_output_buffer_config);
/* 禁能 CSC1 */
pxp_enable_csc1(0);
}
static void __app_blend (void)
{
uint8_t buf_index = 0U;
/*a pointer to a array*/
uint8_t (*p_vddr)[__APP_IMG_WIDTH * __APP_IMG_HEIGHT * __APP_BPP] = NULL;
int8_t ps_inc_x = 1;
int8_t ps_inc_y = 1;
int8_t as_inc_x = -1;
int8_t as_inc_y = -1;
uint16_t ps_ulc_x = 0U;
uint16_t ps_ulc_y = 0U;
uint16_t as_ulc_x = __APP_IMG_WIDTH - __APP_AS_WIDTH;
uint16_t as_ulc_y = __APP_IMG_HEIGHT - __APP_AS_HEIGHT;
uint16_t ps_lrc_x, ps_lrc_y, as_lrc_x, as_lrc_y;
ps_lrc_x = ps_ulc_x + __APP_PS_WIDTH - 1U;
ps_lrc_y = ps_ulc_y + __APP_PS_HEIGHT - 1U;
as_lrc_x = as_ulc_x + __APP_AS_WIDTH - 1U;
as_lrc_y = as_ulc_y + __APP_AS_HEIGHT - 1U;
p_vddr = (void *)__fix_screen_info.vram_addr;
while (1) {
/*将buffer放入缓存中*/
aw_cache_flush((void *)__gp_ps_buf, __APP_PS_HEIGHT * __APP_PS_WIDTH * __APP_BPP);
aw_cache_flush((void *)__gp_as_buf, __APP_AS_HEIGHT * __APP_AS_WIDTH * __APP_BPP);
/*PS图形位置*/
pxp_set_process_surface_position(ps_ulc_x, ps_ulc_y, ps_lrc_x, ps_lrc_y);
/*AS图形位置*/
pxp_set_alpha_surface_position(as_ulc_x, as_ulc_y, as_lrc_x, as_lrc_y);
/*配置输出buffer的显存地址*/
__g_output_buffer_config.buffer0_addr = (uint32_t)p_vddr[buf_index];
pxp_set_output_buffer_config(&__g_output_buffer_config);
/* Start PXP. */
pxp_start();
/* 等待PXP图形处理完成 */
pxp_complete_status_sync();
/*清空缓存中的buffer*/
aw_cache_invalidate((void *)__gp_ps_buf, __APP_PS_HEIGHT * __APP_PS_WIDTH * __APP_BPP);
aw_cache_invalidate((void *)__gp_as_buf, __APP_AS_HEIGHT * __APP_AS_WIDTH * __APP_BPP);
aw_cache_flush(
(void*)p_vddr[buf_index],
__var_info.buffer.buffer_size * __var_info.buffer.buffer_num);
/*切换显存*/
buf_index++;
if (buf_index >= __var_info.buffer.buffer_num) {
buf_index = 0;
}
ps_lrc_x += ps_inc_x;
ps_lrc_y += ps_inc_y;
as_lrc_x += as_inc_x;
as_lrc_y += as_inc_y;
ps_ulc_x += ps_inc_x;
ps_ulc_y += ps_inc_y;
as_ulc_x += as_inc_x;
as_ulc_y += as_inc_y;
if (0 == as_ulc_x) {
as_inc_x = 1;
} else if (__APP_IMG_WIDTH - 1 == as_lrc_x) {
as_inc_x = -1;
}
if (0 == as_ulc_y) {
as_inc_y = 1;
} else if (__APP_IMG_HEIGHT - 1 == as_lrc_y) {
as_inc_y = -1;
}
if (0 == ps_ulc_x) {
ps_inc_x = 1;
} else if (__APP_IMG_WIDTH - 1 == ps_lrc_x) {
ps_inc_x = -1;
}
if (0 == ps_ulc_y) {
ps_inc_y = 1;
} else if (__APP_IMG_HEIGHT - 1 == ps_lrc_y) {
ps_inc_y = -1;
}
aw_mdelay(50);
}
}
void demo_pxp_blend (void)
{
/* 初始化fram buffer */
aw_err_t ret = __fb_init();
if(ret != AW_OK){
aw_kprintf("fb init fail.\r\n");
return;
}
extern void lt9211_init();
lt9211_init();
__gp_ps_buf = (uint8_t *) aw_mem_align(__APP_PS_WIDTH * __APP_PS_HEIGHT * __APP_BPP,
AW_CACHE_LINE_SIZE);
__gp_as_buf = (uint8_t *) aw_mem_align(__APP_AS_WIDTH * __APP_AS_HEIGHT * __APP_BPP,
AW_CACHE_LINE_SIZE);
if (NULL == __gp_ps_buf || __gp_as_buf == NULL) {
aw_kprintf("aw_mem_align error.\r\n");
return ;
}
/* 初始化buffer */
__as_ps_buf_init();
/* 配置pxp */
__app_pxp_config();
/* blend测试 */
__app_blend();
aw_mem_free(__gp_ps_buf);
aw_mem_free(__gp_as_buf);
}
/* end of file */
posted @
2021-08-21 14:30
嵌入式实操
阅读(426)
评论(0)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面返回顶部
公告
Copyright © 2024 嵌入式实操
Powered by .NET 8.0 on Kubernetes
emwin 使用外部字库_NXP I.MX GUI 显示和 PXP 使用-CSDN博客
emwin 使用外部字库_NXP I.MX GUI 显示和 PXP 使用
最新推荐文章于 2023-05-29 23:52:06 发布
Forever snow
最新推荐文章于 2023-05-29 23:52:06 发布
阅读量1.2k
收藏
2
点赞数
1
文章标签:
emwin 使用外部字库
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34653945/article/details/112228756
版权
其中I.MXRT里面支持增强型液晶控制器 eLCDIF 以及PXP。
像素处理2D加速引擎PXP特性如下:
下面描述PXP结合GUI使用的过程中问题解答
1. 问题描述:
将I.MXRT1060EVK与SDK项目工程“littlevgl_demo_widgets”结合使用。
实现添加一个简单的背景图像。希望看到的是图像能居中显示,但是实际没有居中(它“环绕”在LCD的边缘显示),当触摸显示屏时,显示会崩溃,并在移开手指时使图像处于不同的位置。如果修改source/lv_conf.h以禁用PXP,方法是将lv_USE_GPU_NXP_PXP设置为0,则它会正确渲染背景,并且在触摸显示器时不会异常。I.MX RT1060处理器参考手册中描述PXP由几个执行视频源帧缩放的流水线块组成,颜色空间转换,alpha混合/颜色键算法,辅助CSC,像素更正。
整个pipelined 流水线在PXP架构下运行,并执行对源缓冲器中的8x8或16x16像素块的操作。整个流水线在遍历输入块的网格,以在扫描线上生成旋转的输出网格块命令。为什么在禁用PXP时演示会工作?这是否意味着PXP颜色深度限制在16位?为什么当触摸屏幕时显示屏会崩溃呢?加载的测试代码如下:
#include
#include "demo.h"
#include "lvgl.h"
extern const lv_img_dsc_t background;
lv_obj_t* home_screen_create(void)
{
lv_obj_t* screen = lv_obj_create(NULL, NULL);
lv_obj_t* bg = lv_img_create(screen, NULL);
lv_img_set_src(bg, &background);
return screen;
}
void demo_init(void)
{
lv_obj_t* home_screen = home_screen_create();
lv_disp_load_scr(home_screen);
}
解答:
PXP可以支持24位像素数据,FlexSPI预取缓冲区设置为所有主外设共享单个缓冲区。当内核从flash执行的同时PXP从flash获取图像源时,这会导致外部内存接口被掐住。将缓冲区分成两部分,一半分配给内核,另一半分配给所有其他主外设(在本例中,PXP是最重要的一个)。
LCD控制器会有下溢,因此,设置NIC寄存器来增加LCDIF的总线优先级。在main的开头添加此代码(需要在调用BOARD_ConfigMPU()之前)
/*MH-将FlexSPI AHB缓冲区分成两部分,以便在内核和PXP之间共享*/
FLEXSPI->AHBCR=0x0;/*更改缓冲区设置时暂时禁用预取*/
FLEXSPI->AHBRXBUFCR0[0]=0x8000040;/*将预取缓冲区的一半分配给内核*/
FLEXSPI->AHBRXBUFCR0[3]=0x80030040;/*其他主机(包括PXP)的另一半缓冲区*/
FLEXSPI->AHBCR=0x78;/*将AHBCR设置回原始值*/
/*MH-设置LCDIF以具有更高的总线优先级,以防止下溢*/
*((uint32_t*)(0x41044100))=0x5;
2. 问题描述:
像素管道中PS比例因子寄存器(PXP_PS_Scale)的设置是否支持小数点缩放?IMX RM参考手册上说每个X/Y刻度都是“2位整数和12位小数表示”(总共14位),但显示的刻度占15位(加上一个保留位,组成一个16位的半字形式)。假设它们真的是每个14位(29-16,13-0)加上两个保留位,这个理解是否正确呢?接下来,手册上说“应将比例因子的倒数加载到该寄存器中”,但不清楚如何使用位字段“倒数”。手册中提供了以下扩展示例来解释比例因子:
00.0100_0000_0000按比例放大4
00.0010_0000_0000放大2
00.1010_0000_0000放大8/5
尤其是最后一个,需从哪里得到寄存器设置。为什么设置了最重要的半字节。
解答:
根据RM中说明“编程的最大值应为2,因为双线性滤波器不支持按大于2的因子缩小”,比特位30和14不可用。
要编程的值为1/所需的比例因数。每个寄存器的基数点在 位28-27和12-11之间。基数点左边的两位是“整数”(有效值是0到2),右边的位是小数部分。RM中给出的示例与将二进制小数转换为十进制的算法相匹配。
00.0100_0000_0000按4递增=>标度=(1/2^2)=1/(1/4)=4的倒数。
00.0010_0000_0000按2缩放=>此处的位字段不正确,应为00.1000_0000,其为1/2,倒数为2。
00.1010_0000_0000按8/5放大=>比例=(1/2+1/8)的倒数=1/(0.5+0.125)=8/5。
3. 问题描述
PXP接口和emWin配置的演示,基于SDK库中的例子程序
evkbimxrt1050_emwin_temperature_control,它将PXP与emwin库相结合。
简而言之,演示程序将使用PXP模块将RGB888图像转换为灰度图像,同时将大小从336x190减小到28x28,然后由emWin显示转换后的图像。但是,演示程序不能正常工作,发现PXP模块在完成转换显示工作后,会干扰emWin,导致emWin显示的图像发生偏移,如下图所示。怀疑这个现象与输出缓冲区中的进程显示表面位置的配置有关。
解答:
问题的根本原因是在初始的InitPxp(void)中,将输入缓冲区的格式kPXP pspixelformatrg888设置为需要32位来代表一个像素,在内存中为一个字(uuuuuuuuuurrrrrrrrrrgggggggggbbbbbbbbbbb)(U=unused),但是,图像像素的真正格式由3个字节组成,它们是不同的。需要修改initpxp的配置,如下红色部分所示。
static void InitPxp(void){PXP_Init(APP_PXP); PXP_SetProcessSurfaceBackGroundColor(APP_PXP, 0U);
// PS 配置
const pxp_ps_buffer_config_t psBufferConfig = { .pixelFormat = kPXP_PsPixelFormatRGB888, .swapByte = false, .bufferAddr = 0U, .bufferAddrU = 0U, .bufferAddrV = 0U, .pitchBytes = CAMERA_WIDTH * BYTE_PER_PIXEL
//摄像头宽度*每像素字节数
}; PXP_SetProcessSurfaceBufferConfig(APP_PXP, &psBufferConfig);
...
}
如下是NXP MCU支持的一系列GUI显示软件生态介绍以及下载链接地址。
欢迎关注:
优惠劵
Forever snow
关注
关注
1
点赞
踩
2
收藏
觉得还不错?
一键收藏
知道了
0
评论
emwin 使用外部字库_NXP I.MX GUI 显示和 PXP 使用
其中I.MXRT里面支持增强型液晶控制器 eLCDIF 以及PXP。像素处理2D加速引擎PXP特性如下:下面描述PXP结合GUI使用的过程中问题解答1. 问题描述: 将I.MXRT1060EVK与SDK项目工程“littlevgl_demo_widgets”结合使用。实现添加一个简单的背景图像。希望看到的是图像能居中显示,但是实际没有居中(它“环绕”在LCD的边缘显示),当触摸...
复制链接
扫一扫
UCOSIII+EMWIN实现交互界面,可以触摸操作
06-24
UCOSIII+EMWIN官方例程,实现交互界面,可以触摸操作,学习STemwin的很好源码,可以便于了解整个系统运行流程。搭建一个基础的交互系统
int main(void)
{
OS_ERR err;
CPU_IntDis();//BSP_IntDisAll(); /* Disable all interrupts.
/* 初始化"uC/OS-III"内核 */
OSInit(&err;);
/*创建任务*/
OSTaskCreate((OS_TCB *)&AppTaskStartTCB;, // 任务控制块指针
(CPU_CHAR *)"App Task Start", // 任务名称
(OS_TASK_PTR )AppTaskStart, // 任务代码指针
(void *)0, // 传递给任务的参数parg
(OS_PRIO )APP_TASK_START_PRIO, // 任务优先级
(CPU_STK *)&AppTaskStartStk;[0], // 任务堆栈基地址
(CPU_STK_SIZE)APP_TASK_START_STK_SIZE/10, // 堆栈剩余警戒线
(CPU_STK_SIZE)APP_TASK_START_STK_SIZE, // 堆栈大小
(OS_MSG_QTY )5u, // 可接收的最大消息队列数
(OS_TICK )0u, // 时间片轮转时间
(void *)0, // 任务控制块扩展信息
(OS_OPT )(OS_OPT_TASK_STK_CHK |
OS_OPT_TASK_STK_CLR), // 任务选项
(OS_ERR *)&err;); // 返回值
/* 启动多任务系统,控制权交给uC/OS-II */
OSStart(&err;);
}
比较火的开源GUI:littlevgl
07-16
当下比较火的一个开源、免费、类AndroidGUI;上面的文档是自己学习vgl的笔记,帮助新手入门没有任何问题了;后续再继续完善;
参与评论
您还未登录,请先
登录
后发表或查看评论
IMXRT1060CEC_RT106F_RT106A规格书.7z
09-04
IMXRT1060CEC_RT106F_RT106A规格书.RT1060规格书资料,仅用于学习分享RT1060规格书资料,仅用于学习分享
NXP-emWin538b-libraries_emwin_enwinlib_placem4l_
10-01
emWin 5.38b Libraries and Utilities for NXP Cortex M3/M4 MCUs
NXP_emWin522_libraries.exe_.zip
03-04
NXP 芯片用EMwin 资源库
I.MX RT1170 PXP 图形加速器
weixin_44279579的博客
04-13
1448
I.MX RT1170 PXP
I.MX RT1170加密启动详解(1):加密Boot镜像组成
主要分享硬件、嵌入式软件部分知识
05-29
880
包含FlexSPI控制器配置的参数,BootROM中将用低频的时钟和可靠的参数对Flash进行初始化,用户可以将适合自己Flash的FlexSPI配置(主要是LUT表格)按照指定格式放在此字段,BootROM会根据这个字段的配置重新初始化Flash。在这个镜像头中,有一部分的信息是用来给程序加密启动的。本文对加密镜像头中的加密部分做了一个简单的介绍,但没有深入进行介绍,不过没关系,我们只要知道在镜像头中有一些有关加密的字段,每个字段的具体含义在后续介绍了各个不同加密方式后再回来看就会恍然大悟。
LVGL (7) 显示对接
StephenZhou
05-05
5864
目录
LVGL 显示缓冲区
LVGL 显示驱动
小结
lv_disp_drv_register 分析
lv_disp_drv_init 分析
lv_disp_drv_register 分析
注意
LVGL 是 GUI 的图形绘制库,既然是图形绘制,那么就需要考虑 2 点:
开辟绘制的 buffer;
对接底层实际绘制到屏幕的驱动;
LVGL 显示缓冲区
在 LVGL v8 上,用于绘制的 buffer,使用 lv_disp_draw_buf_t 结构体进行描述:
/**
* St
I.MX6ULL_Linux_基础篇(6) soc资源介绍
weixin_41252596的博客
11-27
1653
SOC资源,基础功能,属性了解
【嵌入式UI框架:LVGL】使用NXP GUI Guider 拖拽式设计LVGL
徐腾腾的博客
12-06
5350
LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,显著的优势使得LVGL蔚然成风,成为广大开发者在选择GUI时的第一选择。
常用嵌入式GUI比较
11-28
MicroWindows QtE MiniGUI Gik+ opengui
emWin5_V5.42_cn.rar_5.42 中文用户手册_boundoem_emwin_emwin5_emwin5.
07-15
适用于EMWIN5.42版本的中文用户手册
关于在NXP LPC17xx单片机上移植emWin图形库流程的总结
03-13
压缩包包含移植流程的总结、移植成功的代码例程、如何显示Bmp图片的方法以及NXP官方的emWin库。
ucgui.zip_emwin5_um_sc.pdf_ucgui_ucgui builder
09-23
这是ucgui的资料,是在ucos系统上实现的,很适合初学者学习,练习,开发,个人感觉是不错的资料,帮助我很多。
emWin相关资料STemWin_Library文件MinGW_GUI及 emWIN5.12中文手册等文档资料.zip
06-06
emWin相关资料STemWin_Library文件MinGW_GUI及 emWIN5.12中文手册等文档资料,可供学习及设计参考。
emWIN5.12中文手册.pdf
emWin5.28.pdf
en.stemwin
SeggerEval_WIN32_MSVC_MinGW_GUI_V528
SetupFontCvtDemo_V528
UM03001_emWin5.pdfemWin相关资料
emWin_GUIDemo.zip_DEMO_STM32 GUI_emwin GUI_VERSION_n_stm32 emwin
07-14
emwin gui demo for stm32
每个Python开发者必须知道的事:顶级编程技巧和最佳实践大公开!.zip
03-06
python
知识领域: Python 编程
技术关键词: 核心知识点, 代码优化, 高级技巧, 性能提升, 最佳实践
内容关键词: 数据类型, 控制流, 函数, 类与对象, 模块, 异常处理, 文件操作, 并发编程, 异步编程, 代码格式化, 文档字符串, 类型注解, 单元测试, 版本控制
用途: 适用于初学者至中级开发者的技能提升,帮助程序员构建坚实的Python基础,提高编写高效、可维护代码的能力。
(基于Springboot的Java毕业设计)新闻稿件管理系统(源码+演示视频+说明文档).rar
03-06
(基于Springboot的Java毕业设计)新闻稿件管理系统(源码+演示视频+说明文档).rar
【项目技术】
开发语言:Java
框架:springboot
架构:B/S
数据库:mysql
【实现功能】
本新闻稿件管理系统管理员功能有个人中心,用户管理,记者管理,审批员管理,新闻分类管理,新闻信息管理,系统管理等。记者发布新闻信息,审批员进行审核,用户进行查看。
基于Hadoop和spark由java和python语言开发的电影推荐系统.zip
最新发布
03-06
基于spark的系统
[EMWIN]关于 GUI_GetPixelIndex 使用的问题
06-02
关于 GUI_GetPixelIndex 函数的使用,它的作用是获取指定坐标的像素索引值。它的函数原型如下:
```
unsigned int GUI_GetPixelIndex(int x, int y);
```
其中,x 和 y 分别是指定的坐标值,返回值是该坐标的像素索引值。
需要注意的是,像素索引值的范围是 0~(GUI_NUM_LAYERS * GUI_CONTEXT_MAX_NUM_LAYERS - 1),其中 GUI_NUM_LAYERS 是 GUI 库中定义的层数,GUI_CONTEXT_MAX_NUM_LAYERS 是 GUI 库中定义的每个窗口的最大层数。
在使用该函数时,需要保证指定的坐标值在屏幕范围内,并且需要先调用 GUI_SelectLayer 函数来选择要操作的层。如果没有选择层,则默认操作最上层的层。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
Forever snow
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
86
原创
-
周排名
155万+
总排名
9万+
访问
等级
44
积分
15
粉丝
14
获赞
0
评论
59
收藏
私信
关注
热门文章
Linux文件继承目录权限,linux 文件权限继承
3963
java有趣的技术分享ppt_【干货分享】盘点2020年流行的五大Java技术
3897
c语言完数并求出输出其因子,找出n之内的完全数, 并输出其因子
3265
c语言repeat语句的用法,关于Lua中的repeat...until循环语句的使用教程
3111
基于python的漏洞扫描器_基于Python的Web漏洞扫描器
2970
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
freebsd 做文件服务器,freebsd文件服务器
云端文件服务器,云端服务器的文件传输
2003服务器系统QQ安装不了,qq怎么安装不了(QQ怎么都安装不上重装也不行,是哪里出了问题?)...
2021年145篇
2020年25篇
目录
目录
最新文章
freebsd 做文件服务器,freebsd文件服务器
云端文件服务器,云端服务器的文件传输
2003服务器系统QQ安装不了,qq怎么安装不了(QQ怎么都安装不上重装也不行,是哪里出了问题?)...
2021年145篇
2020年25篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值