Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题

关于linux移植LCD十分钟关屏的处理方法.rar linux系统移植,开机十分钟左右,LCD屏幕自动关的处理方法 立即下载

来自:http://blog.youkuaiyun.com/dongliqiang2006/archive/2009/06/12/4262950.aspx

【节选】:

Linux启动之后,只要一段时间不动键盘(开发板上用IO扩展出来的键盘),LCD就会自动关闭(黑屏、显示慢慢消失之类),只要按下键盘就能恢复。
 
这个问题让我花了一天多的时间。其实如果是手持设备,这样也没有什么。但是我们公司的产品是要一直显示东西的,必须解决这个问题。我看了很多论坛,有不少人也遇到了这个问题,但是我刚才是搜索的时候,关键词不对,总找不到正确的答案。如果你遇到了同样的问题,而且不想看我的三脚猫分析,那么就在百度上搜索“blankinterval”、“setterm -blank 0”之类的,马上你就能找到简单的解决方案。
 
这个问题很容易让人想到屏幕保护和电源管理。的确,这是一种电源管理。但是,你却无法从Linux内核选项的电源管理中解决这个问题。我们一步步来。
 
首先,我测量到LCD的PCLK时钟消失了,这意味着内核把LCD控制器关掉了。于是,从LCD驱动程序着手。我用的是S3C2440,这是 2410的升级版,但是LCD控制器是一样的,在我拿到的开发板厂商给我做好驱动的内核里,驱动的位置在/drivers/video /s3c2410fb.c。为什么后面有个fb呢?这是Framebuffer的缩写,百度下你能找到很多关于它的解释。Framebuffer是所有 Linux下GUI程序对硬件操作的设备接口,位于/dev中,一般为fb0。在s3c2410fb.c中可以找到一个类似 s3c2410_disable_controller()这样名称的函数,我的驱动里叫pxafb_disable_controller(),可以看出这个驱动是从pxa处理器改的,当然厂家不一样名字也叫得不一样。里面有一句类似这样写的 __raw_writel(fbi->reg.lcdcon1 & ~S3C2410_LCDCON1_ENVID, S3C2410_LCDCON1);,把这句话删掉LCD就不会关掉了。这是第一个层次,我也看到有人是这样做的。但是,这有问题,按键盘恢复后,原本显示在屏幕上的东西如果你不重画会消失,就算你重画了,也会看到屏幕的某些部分先黑了下,然后恢复了。当然如果你可以接受,那么就这样吧。
 
然后,可以很自然的想到是谁调用了这个函数,从源头把这个问题消除掉。但是情况却不是这样的。我搜索这个函数名,找到了一个 set_ctrlr_state()的函数调用了pxafb_disable_controller(),搜索set_ctrlr_state(),发现有个pxafb_task()调用了set_ctrlr_state(),但是到了pxafb_task()就没有办法再往上找了,因为这是提供给内核的一个任务,以指针传递函数入口。我对内核了解太不够了,花了很多时间看了很多论坛上的文章,机缘巧合之下,我找到了/drivers/char/vt.c 这个文件。vt.c我感觉应该是2.4内核的console.c和vt.c的结合体,应为它集成了console基本上所有功能函数,就ioctl在 vt_ioctl.c这个文件里。这个文件的主要作用是负责管理控制台,如控制台的模式(图形、字符)、向控制台输出等等。其中能找到一些如 do_blank_screen(),blank_screen_t()这样的函数,就是这些函数关闭了LCD控制器,修改任意一个都可以起作用。网上的一个解决方案是把blank_screen_t()变成空函数,但是我没有这样试过,我觉得已经来到了问题的根源附近,应该能从根本上解决。
 
我们先看下屏幕关闭问题的真正起因,看这个控制台初始化函数
static int __init con_init(void)
{
 const char *display_desc = NULL;
 struct vc_data *vc;
 unsigned int currcons = 0;
 acquire_console_sem();
 if (conswitchp)
  display_desc = conswitchp->con_startup();
 if (!display_desc) {
  fg_console = 0;
  release_console_sem();
  return 0;
 }
 init_timer(&console_timer);
 console_timer.function = blank_screen_t;

 if (blankinterval) {
  blank_state = blank_normal_wait;
  mod_timer(&console_timer, jiffies + blankinterval);
 }
// 这是对控制台定时器的初始化,定时器事件函数被连接到了blank_screen_t()
 /*
  * kmalloc is not running yet - we use the bootmem allocator.
  */
 for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) {
  vc_cons[currcons].d = vc = alloc_bootmem(sizeof(struct vc_data));
  visual_init(vc, currcons, 1);
  vc->vc_screenbuf = (unsigned short *)alloc_bootmem(vc->vc_screenbuf_size);
  vc->vc_kmalloced = 0;
  vc_init(vc, vc->vc_rows, vc->vc_cols,
   currcons || !vc->vc_sw->con_save_screen);
 }
 currcons = fg_console = 0;
 master_display_fg = vc = vc_cons[currcons].d;
 set_origin(vc);
 save_screen(vc);
 gotoxy(vc, vc->vc_x, vc->vc_y);
 csi_J(vc, 0);
 update_screen(vc);
 printk("Console: %s %s %dx%d",
  vc->vc_can_do_color ? "colour" : "mono",
  display_desc, vc->vc_cols, vc->vc_rows);
 printable = 1;
 printk("/n");
 release_console_sem();
#ifdef CONFIG_VT_CONSOLE
 register_console(&vt_console_driver);
#endif
 return 0;
}

其中引用了一个叫blankinterval的全局变量和一个console_time,我不知道内核的定时器是具体是怎么工作,但是这样的代码已经很明显了。这个定时器和电源管理宏PM_CONFIG没有任何关系,它是控制台的一部分。再看下blank_screen_t():
 
static void blank_screen_t(unsigned long dummy)
{
 blank_timer_expired = 1;
 schedule_work(&console_work);
}
 
可以发现vt.c开头的宏,static DECLARE_WORK(console_work, console_callback, NULL);,找到了console_callback()这个函数:
 
static void console_callback(void *ignored)
{
 acquire_console_sem();
 if (want_console >= 0) {
  if (want_console != fg_console &&
      vc_cons_allocated(want_console)) {
   hide_cursor(vc_cons[fg_console].d);
   change_console(vc_cons[want_console].d);
   /* we only changed when the console had already
      been allocated - a new console is not created
      in an interrupt routine */
  }
  want_console = -1;
 }
 if (do_poke_blanked_console) { /* do not unblank for a LED change */
  do_poke_blanked_console = 0;
  poke_blanked_console();
 }
 if (scrollback_delta) {
  struct vc_data *vc = vc_cons[fg_console].d;
  clear_selection();
  if (vc->vc_mode == KD_TEXT)
   vc->vc_sw->con_scrolldelta(vc, scrollback_delta);
  scrollback_delta = 0;
 }
 if (blank_timer_expired) {
  do_blank_screen(0);
  blank_timer_expired = 0;
 }
 release_console_sem();
}
 
再看do_blank_screen(),随着struct vc_data中的与fops类似指针跟踪下去,就可以找到驱动里面的相应代码了。写出来太麻烦,让我偷懒把。
 
小总结下,其实在控制台内部就有一个定时器,它负责在一定时间之后将显示关闭,而无视是否打开了电源管理功能。那这和Framebuffer有什么关系呢?我从一个很弱智的角度解释,内核刚启动的时候有这样一句输出:
Console: colour dummy device 80x30
在初始化LCD控制器(Framebuffer)之后,有这样一句输出:
Console: switching to colour frame buffer device 80x30
我就理解:这时候,内核把控制台(也不知道是console还是tty)切换到了Framebuffer上,大虾们赶快跳出来批判我吧,呵呵。
 
回到正题,从代码可以发现,根本的解决之道是让blankinterval = 0,blank_state就不会是blank_off之外的值,也就不会关闭屏幕了。
但是问题到这里还是没有完全解决,如果用户程序希望改变blankinterval来实现屏保(当然在我的系统上用不着);另外,一些程序改变了blankinterval,程序退出之后,屏幕在一段时间之后还是会关闭的。怎么才能在用户程序那头解决这个问题呢,这又耗费了我很多时间。
 
我在追查代码的过程中走了个弯路,认为修改控制台的模式可以不让黑屏现象出现,但是后来发现,这样可能会使控制台没有办法画图,不知道对不对。
忽略弯路,直接正解。vt.c中不是有很多操作控制台的函数么?看看是谁修改了blankinterval。于是搜索 blankinterval,发现setterm_command()修改了它,然后搜索setterm_command,找到了 do_con_trol()函数,搜索do_con_trol,找到了do_con_write()函数,搜索do_con_write,终于最终 BOSS现身了:con_write()函数。为什么说它是最终BOSS呢?看看这段:
static struct tty_operations con_ops = {
 .open = con_open,
 .close = con_close,
 .write = con_write,
 .write_room = con_write_room,
 .put_char = con_put_char,
 .flush_chars = con_flush_chars,
 .chars_in_buffer = con_chars_in_buffer,
 .ioctl = vt_ioctl,
 .stop = con_stop,
 .start = con_start,
 .throttle = con_throttle,
 .unthrottle = con_unthrottle,
};
熟悉fops的话你就能看出来了,这是对tty设备的文件操作函数的表。也就是说,在用户程序里,通过open函数打开/dev/tty,然后再用write函数就可以修改blankinterval了。原理是找到了,实践上有很大困难,那么多重函数调用,再看看do_con_trol()里面的switch语句,正常人都要发晕。好在伟大的百度为我们提供了很多信息:在命令行下,可以使用setterm -blank 0指令来设置blankinterval。哈哈,救星来了,赶快看看setterm的源代码。setterm属于util-linux包,搜索一下很容易找到。其中的perform_sequence()函数里有这样一段:
 
 /* -blank [0-60]. */
 if (opt_blank && vcterm)
  printf("/033[9;%d]", opt_bl_min);
 
真得很神奇啊,用个printf就可以在用户程序里解决这个问题,本来我是打算只说用printf解决的,看到原理我想会更舒服一些;况且,在我的系统上用printf是不行的。
但是!问题还没有完,往往在我们的系统中,LCD的虚拟控制台和控制台TTY不是同一个设备,也就是说,如果在程序里单纯的printf是不行的!这样只能修改你正在使用的TTY的blankinterval,而你用的却是文本方式的设备,不存在黑屏问题。
于是,就需要仔细比较/dev/console、/dev/tty、/dev/ttyn的设备号,在我的系统里,用户程序里/dev /console和/dev/tty都是5,说明他们是一个东西,/dev/ttyn是4,这才是FB上的虚拟控制台。但是/dev/ttyn不是正在使用的TTY,那么怎么printf呢?只好用write函数来解决了。
 
写这样一段代码:
#include <fcntl.h>
#include <stdio.h>
#include <sys/ioctl.h>
 
void some_function()
{
 int f;
 f = open("/dev/tty0", O_RDWR);
 write(f, "/033[9;0]", 8);
 close(f);
}
问题终于解决了。
 
总结下,第二个问题有很多种解决方法:
1.修改LCD驱动,把关闭LCD控制器的函数变为空(不推荐)
2.修改vt.c中的blank_screen_t()函数,让其为空(在系统不需要使用关闭显示功能时推荐)
3.修改vt.c中的blankinterval,让其为0(系统可能需要使用关闭显示功能,而且希望系统上电后正常状态下不会关闭显示时推荐)
4.修改用户程序,加入设置blankinterval的代码(推荐)
 
今天就写到这里,继续干活了。
怎么定位K8s容器中运行的JAVA程序OOM异常(一) 一.前置环境 1. 运行在k8s集群上的Pod服务(Java程序) 2. MAT分析工具 二.利用Jmap工具导出Heap Dump 1.执行命令进入pod容器 kubectl exec -itn {namespace} {pod}} sh 2.利用jmap生成java程序的Dump文件 jps | grep {jar} ./jmap -dump:live,format=b,file=haep.hprof 8 3.利用k8s命令导出Dump文件到本地 kubectl cp -n 阅读详情

相关推荐

半导体设备上位机开发:我的经验与新人指导

半导体设备上位机开发是一项复杂而富有挑战性的工作,需要扎实的技术基础和丰富的经验。如果你对半导体设备上位机开发感兴趣,欢迎随时与我交流,我会尽力帮助你!

qq_43518667的博客 2728

转帖 Linux LCD 10分钟黑屏 LCD自动关闭

来自:http://blog.youkuaiyun.com/dongliqiang2006/archive/2009/06/12/4262950.aspx 【节选】: Linux启动之后,只要一段时间不动键盘(开发板上用IO扩展出来的键盘),LCD就会自动关闭(黑屏、显示慢慢消失之类),只要按下键盘就能恢复。 这个问题让我花了一天多的时间。其实如果是手持设备,这样也没有什...

weixin_33724570的博客 213

常用的串口通信工具MobaXterm、Bus Hound、SScom等

本文介绍了四种PC端串口通信工具的功能和使用方法:MobaXterm支持SSH、FTP、串口等多种协议;Bus Hound用于监控CAN和串口数据;SScom专为串口和网口通信设计;ScriptCommunicator可进行串口通信并绘制波形图。每种工具都有详细的操作步骤图示,包括参数设置、数据监控等关键功能,并提供了官方和个人下载地址。这些工具各有特点,适用于不同的串口通信和数据分析场景。

sanqima的专栏 2491

Linux LCD 10分钟自动关闭问题

Linux启动之后,只要一段时间不动键盘(开发板上用IO扩展出来的键盘),LCD就会自动关闭(黑屏、显示慢慢消失之类),只要按下键盘就能恢复。 这个问题让我花了一天多的时间。其实如果是手持设备,这样也没有什么。但是我们公司的产品是要一直显示东西的,必须解决这个问题。我看了很多论 坛,有不少人也遇到了这个问题,但是我刚才是搜索的时候,关键词不对,总找不到正确的答案。如果你遇到了同样的问题,而且不想看我的三脚猫分析,那么就在 百度上搜索“blankinterval”、“setterm -blank 0”之类的,

guolele2010的专栏 2084

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本文作者: nebulaf91 本文原始地址:最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很

nebulaf91的博客 33万+

手把手教你学Simulink实例--基于Simulink的电动汽车无线充电效率优化仿真

​市场规模:2025年全球无线充电市场规模将达$27亿(MarketsandMarkets数据)​技术标准Qi v1.3(最高150W)WiTricity(200W动态功率)ISO 17163(道路车辆无线充电)​节能效果:每kWh充电减少120W损耗(按每天8小时)​成本分析线圈成本:35vs58(传统方案)效率提升带来的续航增加:15km/100km。

xiaoheshang_123的博客 345

linux系统不定时黑屏设置,显示屏不定时黑屏,

这个是由于Linux安装时不能正确识别或者装上显卡驱动造成的,解决方法试试下面:1. 启动grub时按下e键,进入grub启动菜单的编辑模式,在kernel /boot/vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet 这一行最后加上linux single 关键字,即kernel /boot/vmlinuz-2.6.23.1-42.fc8 ro...

weixin_34392511的博客 631

【异常】Claude Code 第三方API 400报错(thinking type should be enabled or disabled)解决方案

摘要: Claude Code接入第三方API端点时出现400参数错误,主要因新版默认启用的Adaptive Thinking功能与旧版接口参数格式不兼容(需thinking: {type: "adaptive"},但第三方仅支持布尔值)。解决方案为修改本地settings.json配置文件,添加"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"环境变量并重启客户端,即可恢复思考模式功能。Adaptive Th

奶爸的编程之路,也就一周冷个三天 1万+

RV1109--LCD黑屏问题

RV1109–LCD黑屏问题 1、问题描述 平台:RV1109 需求:兼容一块10.1寸mipi的LCD屏(1218-A101NL66-28K),是rv1109的第10块屏幕,使用lcd_index=10(lcd_index涉及到我司兼容LCD方式)来标志这块屏。 问题:设备开机后,在uboot阶段显示正常,启动kernel后屏幕逐渐熄灭变黑。 2、问题根因 在uboot的时候,LCD屏的初始化序列正确,故能在uboot阶段正常显示。但是在kernel阶段由于错误地使用timimg参数,导致屏幕逐渐熄灭变黑

carlos博客 1180

WPF 上位机可视化天花板:HandyControl 搭建 SCADA 系统

HandyControl 凭借「丰富的工业级控件、灵活的主题定制、优异的性能」,成为 WPF 开发 SCADA 系统的首选 UI 库。本文搭建的 SCADA 系统涵盖实时监控、设备控制、报警管理、趋势分析四大核心功能,通过 HandyControl 实现了工业级可视化效果,开发效率提升 60% 以上。控件开箱即用:无需自定义仪表盘、趋势图、指示灯等 SCADA 核心控件;可视化效果专业:工业风主题、动态颜色切换、清晰的状态呈现,契合工业场景需求;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1126

cesium vue2/vue3教程目录导航

以下是本专栏目录导航,送完整项目源码(拒绝单页源码),可以直接运行,全部配置免费视频教程(B站)。

qq_29384639的博客 4317

十分钟黑屏问题

9月13日由一些小问题引起的东西又是好久没有更新了,同样记录下这段时间干的事情。 来到公司报道之后我就去了工厂,呆了一个多月,熟悉公司各种产品的生产过程。当然,就是和生产线上的小MM们聊聊天,哈哈,开玩笑了。这期间我的导师给我了个任务——一个UI的低成本实现。这个UI必须具有LCD显示、USB主机、网络等功能,要求就是低成本低成本再低成本;很自然选型选完之后就又变成搞A

dongliqiang2006的专栏 5813

【华为机试真题 Python实现】分苹果

《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!本文解法非最优解(即非性能最优)。A,B两个人把苹果分为两堆,A希望按照它的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算走位,12+5=9(1100+0101=9), B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多,输入苹果的数量和每个苹果重量,输出满足A的情况下获取的苹果总重量, 如果无法满足A的要

3413

Linux下LCD自动关闭解决方法,一般就自动十分钟黑屏的原因

Linux下LCD自动关闭解决方法主机环境:Gentoo Linux 11.2内核版本:Linux Kernel 3.2.1原创作品,转载请表明http://blog.youkuaiyun.com/yming0221/article/details/7339296正常情况下Linux会在一段时间后默认关闭屏幕,默认为10分钟。这里你可能会认为是Gnome或KDE等桌面环境设置的屏幕保护程序或电源管理功能,即使...

u013165704的博客 2373

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

十分钟黑屏的问题

转自:http://blog.youkuaiyun.com/lanmanck/article/details/5148917 又是好久没有更新了,同样记录下这段时间干的事情。  来到公司报道之后我就去了工厂,呆了一个多月,熟悉公司各种产品的生产过程。当然,就是和生产线上的小MM们聊聊天,哈哈,开玩笑了。这期间我 的导师给我了个任务——一个UI的低成本实现。这个UI必须具有LCD显示、USB主机、网络等

jianwushuang的专栏 860

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ubuntu 系统在播放视频时,一段时间后黑屏

在网上查阅了相关的资料,有下面几种方法: 1、setterm -blank 0        这种方法在这篇博客中偶详细的描述,但是在实际操作中并未生效。      Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题 2、安装 2.6.2程序防止系统进入黑屏       这个方法没有尝试,这个必须在gnome环境下才使用,但是借助这种思路找到第三种方法       安装

轻飘飞扬 4403

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

AI辅助嵌入式移植:用Grok Bot十分钟搞定Doom游戏移植

嵌入式系统开发中,将经典软件迁移到新硬件平台是常见挑战,核心在于理解硬件抽象层与平台相关代码的隔离设计。Doom源码将显示、输入、计时、文件读取等接口独立封装,替换这些适配层即可保留核心游戏逻辑。借助Grok Bot这类AI编程助手,可大幅压缩理解源码、生成适配层、修正编译错误的循环时间,让原本需要数天的移植工作在十分钟内跑通最小可玩版本。该流程不仅适用于游戏引擎移植,也可复用到FreeRTOS、LVGL等组件适配,适合嵌入式工程师建立高效的AI辅助开发工作流。以十分钟移植Doom为例,拆解适配层实现、构建

weixin_30319153的博客 692

Grok Bot 辅助移植 Doom 到新设备:十分钟跑通最小链路

在嵌入式开发与游戏移植领域,将经典开源项目适配到新硬件平台是一项常见且具有挑战性的任务。Doom 作为开源老牌游戏,常被用作验证新设备渲染、输入和系统能力的基准。传统手工移植需要处理交叉编译、像素格式转换、按键映射及内存管理等多个环节,流程繁琐且易出错。借助 AI 编程助手 Grok Bot,开发者可以通过描述目标平台的屏幕分辨率、CPU 架构和输入方式,快速生成适配代码、定位编译错误并梳理构建命令。本文从渲染、输入输出适配到性能调优,系统拆解了将 Doom 移植到嵌入式 Linux 或裸机环境的关键步骤,

weixin_33895695的博客 763

PSP屏幕像素修复与UMD游戏数据提取完整指南

LCD液晶屏通过控制每个像素点的液晶分子偏转来显示图像,而UMD光驱则利用激光读取光盘数据。理解这些硬件的工作原理对于设备维护至关重要,特别是在掌机收藏和维修领域。通过软件工具可以尝试修复屏幕的卡住像素,同时完整提取UMD光盘数据为ISO镜像文件,这不仅能够延长设备寿命,还能实现游戏数据的数字化备份。在实际应用中,掌握PSP屏幕修复和UMD数据提取技术,能够有效解决像素显示异常和游戏读取故障问题,为掌机爱好者提供实用的硬件维护方案。

weixin_33834910的博客 327

Linux下LCD自动关闭解决方法

主机环境:Gentoo Linux 11.2 内核版本:Linux Kernel 3.2.1 原创作品,转载请表明http://blog.youkuaiyun.com/yming0221/article/details/7339296 正常情况下Linux会在一段时间后默认关闭屏幕,默认为10分钟。这里你可能会认为是Gnome或KDE等桌面环境设置的屏幕保护程序或电源管理功能,即使不安装桌面环境屏幕照样会自动...

星.云计算 750
上一篇: 三个哲理故事教会我(我想所有人都有必要看)如何降低技术创业的风险
下一篇: android下面通过I2C TOOLS工具查看设备寄存器(S5PV210平台)
ADC0809608
博客等级 码龄17年 44粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值