uboot移植之 3

U-BOOT源码分析及移植 本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk 阅读详情

---------------------------------------------------------------------------------------------------
-----------------------------------board/myboard/common/flash.c-----------------------------------
----------------------------------------------------------------------------------------------------
找到这个函数:write_buff

里面有这句话,一共有6处吧?全改了:#ifdef CONFIG_B2

把CONFIG_B2改成上面TT.H文件里面起的名,我的叫CONFIG_TT

关于FLASH的一点疑问:
一直怀疑29LV160和39LV160在U BOOT下是否兼容的问题
看了这段程序后似乎U BOOT是可以自动检测的

----------------------------------------------------------------------------------------------------
-----------------------------------board/T2T/TT/memsetup.S-----------------------------------
-----------------------------------也叫board/T2T/TT/lowlevel_init.S-----------------------------------
----------------------------------------------------------------------------------------------------
按照如下改

* Bank 0 parameter */
.equ     B0_Tacs,       0x3 /* 0clk */
.equ     B0_Tcos,       0x3 /* 0clk */
.equ     B0_Tacc,       0x7 /* 14clk */
.equ     B0_Tcoh,       0x3 /* 0clk */
.equ     B0_Tah,        0x3 /* 0clk */
.equ     B0_Tacp,       0x1 /* 0clk */
.equ     B0_PMC,        0x0 /* normal(1data) */
/* Bank 1 parameter */
.equ     B1_Tacs,       0x0 /* 4clk */
.equ     B1_Tcos,       0x1 /* 4clk */
.equ     B1_Tacc,       0x2 /* 14clkv */
.equ     B1_Tcoh,       0x1 /* 4clk */
.equ     B1_Tah,        0x0 /* 4clk */
.equ     B1_Tacp,       0x0 /* 6clk */
.equ     B1_PMC,        0x0 /* normal(1data) */

/* Bank 2 parameter -   */
.equ     B2_Tacs,       0x0 /* 4clk */
.equ     B2_Tcos,       0x2 /* 4clk */
.equ     B2_Tacc,       0x4 /* 14clk */
.equ     B2_Tcoh,       0x2 /* 4clk */
.equ     B2_Tah,        0x3 /* 4clk */
.equ     B2_Tacp,       0x3 /* 6clk */
.equ     B2_PMC,        0x0 /* normal(1data) */

/* Bank 3 parameter */
.equ     B3_Tacs,       0x3 /* 4clk */
.equ     B3_Tcos,       0x3 /* 4clk */
.equ     B3_Tacc,       0x7 /* 14clk */
.equ     B3_Tcoh,       0x3 /* 4clk */
.equ     B3_Tah,        0x3 /* 4clk */
.equ     B3_Tacp,       0x3 /* 6clk */
.equ     B3_PMC,        0x0 /* normal(1data) */

/* Bank 4 parameter */
.equ     B4_Tacs,       0x3 /* 4clk */
.equ     B4_Tcos,       0x3 /* 4clk */
.equ     B4_Tacc,       0x7 /* 14clk */
.equ     B4_Tcoh,       0x3 /* 4clk */
.equ     B4_Tah,        0x3 /* 4clk */
.equ     B4_Tacp,       0x3 /* 6clk */
.equ     B4_PMC,        0x0 /* normal(1data) */

/* Bank 5 parameter */
.equ     B5_Tacs,       0x0 /* 4clk */
.equ     B5_Tcos,       0x1 /* 4clk */
.equ     B5_Tacc,       0x4 /* 14clk */
.equ     B5_Tcoh,       0x1 /* 4clk */
.equ     B5_Tah,        0x0 /* 4clk */
.equ     B5_Tacp,       0x0 /* 6clk */
.equ     B5_PMC,        0x0 /* normal(1data) */

/* Bank 6(if SROM) parameter */
.equ     B6_Tacs,       0x3 /* 4clk */
.equ     B6_Tcos,       0x3 /* 4clk */
.equ     B6_Tacc,       0x7 /* 14clk */
.equ     B6_Tcoh,       0x3 /* 4clk */
.equ     B6_Tah,        0x3 /* 4clk */
.equ     B6_Tacp,       0x3 /* 6clk */
.equ     B6_PMC,        0x0 /* normal(1data) */

/* Bank 7(if SROM) parameter */
.equ     B7_Tacs,       0x3 /* 4clk */
.equ     B7_Tcos,       0x3 /* 4clk */
.equ     B7_Tacc,       0x7 /* 14clk */
.equ     B7_Tcoh,       0x3 /* 4clk */
.equ     B7_Tah,        0x3 /* 4clk */
.equ     B7_Tacp,       0x3 /* 6clk */
.equ     B7_PMC,        0x0 /* normal(1data) */

/* Bank 6 parameter */
.equ     B6_MT,         0x3 /* SDRAM */
.equ     B6_Trcd,       0x1 /* 2clk */
.equ     B6_SCAN,       0x0 /* 8bit */

.equ     B7_MT,         0x3 /* SDRAM */
.equ     B7_Trcd,       0x1 /* 2clk */
.equ     B7_SCAN,       0x0 /* 8bit */


/* REFRESH parameter */
.equ     REFEN,         0x1 /* Refresh enable */
.equ     TREFMD,        0x0 /* CBR(CAS before RAS)/Auto *** */
.equ     Trp,         0x0 /* 2clk */
.equ     Trc,         0x3 /* 0x1=5clk 0x3=11clk*/
.equ     Tchr,        0x0 /* 0x2=3clk 0x0=0clks   */
.equ     REFCNT,        1550

MEMORY_CONFIG:
   .long    0x01000102 /* Bank0 = OM[1:0] , Bank1-2 4-7 16bit, ,BANK3 8BIT,Bank2=Nowait,UB/LB*/
   .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) /*GCS0*/
   .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) /*GCS1*/
   .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) /*GCS2*/
   .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) /*GCS3*/
   .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) /*GCS4*/
   .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) /*GCS5*/
   .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))   /*GCS6*/
   .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))   /*GCS7*/
   .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)   /*REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019*/
   .word 0x10       /*SCLK power down mode, BANKSIZE 16M/16M*/
   .word 0x20       /*MRSR6 CL=2clk*/
   .word 0x20       /*MRSR7*/
主要是设置MEMORY_CONFIG里的内容 值得注意的是.long    0x01000102 /* Bank0 = OM[1:0] , Bank1-2 4-7 16bit, ,BANK3 8BIT,Bank2=Nowait,UB/LB*/中设置了各个BANK的位宽,要注意。因为8019有8位的,有16位的,配置错了网络不通
其实就是一些字
有人从地址读出来后是下面这样也可以
“
MEMORY_CONFIG:
.long 0x11010102
.long 0x600
.long 0x7ffc
.long 0x7ffc
.long 0x7ffc
.long 0x7ffc
.long 0x2610
.long 0x18000
.long 0x18000
.long 0x960459
.long 0x10
.long 0x20
.long 0x20
由于对armsys硬件不是太了解,没有办法,只得看armsys bootloader程序,但每个版本又有差别.因此是用AXD调试看bootlaoder启动后0x1c80000中的值定的.
”
注意:这个注意是后补上的,因为自己和朋友在做的时候发现网上对这部分分析的人特别少,可能因为理论比较简单,操作起来又比较麻烦吧。
听听菜鸟的方法吧。

首先U BOOT1.1.1和1.1.4版本有个小差别,就是文件名的差别1.1.1叫memsetup.S,1.1.4叫lowlevel_init.S如果把别人用1.1.1编译的直接拿过来也可以,但一定记得在改文件名的同时还一定要在文件里改函数名!就是这个文件最后那部分汇编上面的函数名。不然后来会提示START.S里找不到lowlevel_init。切记

另外,比较重要的这部分究竟代表什么,怎么改。
这个文件实际分3部分,这3个部分实际又是把44B0初始化那几个汇编文件重新组合了,就是ADS在RAM里调试文档里说的,把44B0当单片机用时C语言前面的那写汇编文件,一般说来包括44binit.s MEMCFG.S 44BLIB_A.S Option.s。其中44binit.s MEMCFG.S就包含了内存初始化的参数,按照这两个文件改吧。

再说这3部分
开始是内存设置,在数据手册(英文)4-14页,各个意思就不多说了。说说怎么改,当然得根据你的内存具体改(一句废话)但是有简单的方法,前面提到了,看MEMCFG.S这个文件。

然后是一些移位只类的操作,把各个BANK设置好,其实就是设置一些预定义的字,然后在其他的地方利用这些字设置寄存器。就把这些理解为宏或者就当是个结构体吧(不准确,就帮助理解)。为什么这么设置看看数据手册(英文)4-13页
这部分在怎么改的快?找,哪找?44binit.s里面有,一模一样,不罗嗦了。

最后那部分是这个文件唯一执行的部分
基本不需要改吧(除了有的时候函数名:))
看见0X01C80000还不明白吗?看数据手册(英文)4-3页去吧,有汇编的例子,至于这个32位寄存器为什么这么设置。

别看我这装的明白,就是会对付,别跟我较真,我还也在研究中:)

注意:顺便在这里说说个小问题,有朋友问“为什么原理图上地址线从A1开始,而不是A0”看数据手册(英文)4-4页,因为是16位地~~~
注意:我的8019是连在BANK3上的 而且是8BIT的 所以MEMORY_CONFIG下面第一项里要做设置 要不不好使

----------------------------------------------------------------------------------------------------
-----------------------------------board/T2T/TT/config.mk-----------------------------------
----------------------------------------------------------------------------------------------------
修改最后的TEXT_BASE为把UBOOT加载到RAM的地址,这里添0XC700000,当然添0XC300000也可以 但是如果添0XC300000之前的似乎在下载LINUX的时候会死机,因为地址空间不够

在树莓派3上移植uboot 在树莓派3上移植uboot 树莓派上一般都使用官方的Raspbian,但最近在研究OPTEE,于是突发奇想要在树莓派3b上移植一个u-boot,参考了教程 https://elinux.org/RPi_U-Boot,步骤记录如下。 1.下载最新的u-boot源码 我使用的是官方分支:ftp://ftp.denx.de/pub/u-boot/u-boot-2018.07.tar.bz2 网速... 阅读详情

相关推荐

uboot阶段flash分区_S3C2440移植uboot之支持NORFLASH

上节S3C2440移植uboot之支持NAND启动修改了代码支持了NAND启动。这节我们分析uboo使其支持NORFLASH的操作。 [TOC] 1.分析启动错误 上一节启动uboot出现如下所示,我们搜索下错误代码Flash: 上面的Flash: *** failed *** 是属于uboot第二阶段函数board_init_r()里的代码, 代码如下所示(位于arch/arm/li...

weixin_29061821的博客 451

UBOOT 移植操作(3)

 ---------------------------------------------------------------------------------------------------------------------------------------board/myboard/common/flash.c------------------------------------

HP Studio 1101

全志V3S嵌入式驱动开发(uboot移植)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 安装了ubuntu操作系统,有了开发板,下面就可以进行我们的开发工作了。第一步,我们要面临的问题就是uboot移植。一般来说,嵌入式的基础环境就是uboot、linux和rootfs。uboot完成一些基本硬件的初始化,比如cpu频率设置、ddr初始化、加载linux等等。早前,uboot的烧入比较麻烦,需要jtag工具才能完成。现在来说,很多soc支持系统直接从sd卡启动,这对开发

嵌入式-老费,一个分享专业嵌入式知识的blog 2821

uboot:uboot中挂载U盘命令

主要说明在uboot下实现对USB设备的识别、挂载和使用的命令操作。 实验环境 Atmel公司的SAM5D3X_plained,原装系统uboot版本为U-Boot 2015.01-linux4sam_4.7; U盘需要是fat32文件系统。 uboot下U盘操作命令 uboot挂载U盘、查看USB设备的命令:(使用help usb可以查看uboot支持的usb命令) 1.将U盘插入...

maze的专栏 8508

全志H3系统移植 | 移植主线最新uboot 2023.04和kernel 6.1.11到Nanopi NEO开发板

NULL

Mculover666的博客(嵌入式) 2402

Copula函数

Copula是处理统计中随机变量相关性问题的一种方法。本文是对Copula函数的各种定义,Copula函数的思想,Copula函数的性质,Copula函数的类型等理论资料总结

Explore 5万+

uboot初次移植

原帖地址:http://blog.youkuaiyun.com/liukun321/article/details/5618361。写的很详尽,感谢原作者。 几经艰辛,终于基本完成了 u-boot 在 s3c44b0 的移植工作,在些记录一下在移植过程中所碰到的困难和解决方法(一些心得),作为日后参考之用,也希望能够帮到其它有需要的人 ^_^ 。  1. 来由:  在我搞完 ucos 后

Iot小能手 932

华为iTrustee实战:5分钟搞定TrustZone环境搭建(附BoostKit配置技巧)

本文提供了一份华为iTrustee与ARM TrustZone环境的5分钟快速搭建实战指南。详细介绍了在TaiShan服务器上利用鲲鹏BoostKit套件部署可信执行环境(TEE)的完整流程,包括环境检查、驱动安装、首个可信应用(TA)的编译与运行,并分享了关键的BoostKit配置技巧与深度排错方法,助力开发者快速为业务注入硬件级安全能力。

yoga7的博客 968

uboot 移植

转载:http://blog.sina.com.cn/s/blog_9340c4f901010n48.html 1.来由:    在我搞完ucos后(本来我是想学uclinux的,不过在对系统一无所知的情况下,还是先学一下ucos比较实际^_^,从中也可以对系统有个清晰的概念),我意识到要搞系统的话一个功能强大的bootloader是必不可少的,而我的板上自带的是armboot(其实我

digent的专栏 1308

LangChain + PlayWright实战:5分钟搞定网页自动化测试(附完整代码)

本文详细介绍了如何利用LangChain与PlayWright构建智能网页自动化测试系统。通过环境配置、核心架构设计、实战Agent构建及性能优化等步骤,开发者可以快速实现高效的Web操作自动化,提升测试效率。文章还提供了完整代码示例和典型问题解决方案。

weixin_27791839的博客 239

在 Ubuntu 上安装和配置 PostgreSQL 实录

本文介绍了在Ubuntu系统上安装和配置PostgreSQL数据库的完整步骤。主要内容包括:1)通过官方源或PPA源安装最新版本;2)修改配置文件(postgresql.conf和pg_hba.conf)以允许远程访问;3)设置postgres用户密码;4)创建新用户并配置权限;5)防火墙设置和重启服务;6)验证安装和远程连接方法。文章提供了详细的命令行操作指导,帮助用户完成从安装到远程访问的全部配置过程。

qq_58168857的博客 1207

全志linux内核移植,全志H3启动分析,移植主线UBOOT

全志H3启动分析,移植主线UBOOT参考资源启动流程因为使用的是外扩SD卡,因此主要参考了这部分内容;Bootable SD cardSD卡Layout如下:startsectorsizeusage0KB08KB未使用,主要用于存放分区表8KB1632KBInit SPL40KB80-U-BootSD卡的起始地址处放的是分区表MBR(占用512B)或者GPT(更多),为了保证SD卡还能用于其他目的...

weixin_35210775的博客 2514

3、基于视觉的智能分拣机:原理、算法与应用

本文介绍了一种基于视觉的智能分拣系统,利用树莓派、相机模块和多种检测算法实现低成本、高精度的物体分拣。系统支持颜色、形状和尺寸三种检测方式,准确率达99%,广泛适用于制造业、农业和物流等领域。文章详细阐述了各检测算法原理、测试结果及系统优化方向,并探讨了其实际应用案例与未来发展前景。

mqtt6iot的博客 237

S3C2440之uboot移植

S3C2440之uboot移植  裸奔S3C2440断断续续快搞完了,该linx还是wince呢?犹豫了几天,打算wince吧,可是电脑装vs2005+wince6.0成功后投标时灰的了,呵呵!还是选择linux。但linux和windows差别很大,还是一步步来,一个星期学习了基本的指令,并学习了韦东山的书后了解了Makefile,哈哈,刚开始还不知Makefile是一个文件还是

whw05567013856152985的专栏 910

Arcgis模型构建器01——写一个简单的模型

在使用模型构建器解决这个需求之前,我们要想清楚如果我们手动解决的话,应该如何去处理,因为构建模型的过程正是基于我们手动处理的过程来构建的。我有一个全国的dem影像数据和一个陕西省边界范围矢量,现在我想获取陕西省的dem影像的坡度数据。填写完之后点击确定,我们发现,两个输入数据和工具连接起来了,并且通过裁剪工具得到一个中间结果,即。我们发现工具框和中间数据框都存在阴影,说明已经运行过了这个模型,不报错就说明模型运行成功!现在我们就把数据和工具都串联起来了,成功构建好了模型。

爱吃雪糕的小布丁的博客 918

Freeswitch 如何检测链路是否有回铃音

Freeswitch回铃音检测解决方案 问题描述:呼叫手机时,虽然信令正常(183/180),但部分手机无回铃音,导致坐席无法判断是否接通,用户体验差。 解决方案: 先播放本地音频作为回铃音 实时检测用户侧是否有声音输入 检测到声音后自动切换为用户侧音频 技术实现: 使用Freeswitch APP实现功能 创建结构体保存实例数据(包括铃声文件、会话句柄、VAD检测器等) 通过media bug机制实现音频流的替换 利用VAD(语音活动检测)技术监控用户侧声音 当检测到用户说话时自动终止本地铃声播放 该方案

2301_81507069的博客 51

Linux内核3-Uboot移植

因为无论使用那种方法都存在内存不够的情况,必须将uboot,完整的从nandflash中拷贝到sram中,sram足够大。1.由于程序不能存放RAM中,只能提前存放在ROM中,对于Mini2440来说,就只能是nor-flash或者是nand-flash中了。5.copy drivers/char/first driver.ko ~/nfs/rootfs//在内核中找到这个.ko文件。insmod first_driver.ko//执行。1.创建一个ctags //ctags -R ./

2301_79207059的博客 435

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

算法如诗的博客 1299

uboot环境下mmc操作_S3C2440移植uboot之裁剪和修改默认参数

上一节S3C2440移植uboot之支持DM9000移植uboot支持了网卡驱动,这节裁剪和修改uboot默认参数 [TOC]uboot的环境参数 首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示: 修...

weixin_39611937的博客 335

IEM模型,地表粗糙度模拟

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

S3C2440移植uboot之编译烧写uboot

移植环境 主 机:VMWare–ubuntu16.04 开发板:S3C24402440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2 获取uboot 进入https://www.denx.de/wiki/U-Boot下载uboot 一直往下拉选择如下 将下载好的压缩包解压到任意文件夹,并创建source insig...

嵌入式与Linux那些事的博客 6271

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ARM uboot 的移植3 -从 uboot 官方标准uboot开始移植

一、选择合适的官方原版 uboot 1、官方原版 uboot 的版本 (1) 版本号。刚开始是 1.3.4 样式,后来变成 2009.08 样式。 (2) 新版和旧版的差别。uboot 的架构很早就定下来了,然后里面普遍公用的东西(common 目录下、drivers 目录下、fs 目录下等···)在各个版本之间几乎是完全一样的。 差别最大的是 board 和 cpu 目录,这两个目录正是单板(开发板)相关的。越新的 uboot 版本支持越多的开发板(CPU),所以越新的 uboot 越庞大。 (3) 并不

weixin_42109053的博客 2448

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

移植uboot2012.04.01到s3c2440笔记

移植uboot2012.04.01到s3c2440笔记 最近学习了一下如何移植新版的uboot,做了些许记录,分享给大家。由于帖子发在论坛上格式会乱掉,我就直接上文档了。。。 部分内容如下: 移植uboot2012-4-1到s3c2440的笔记.pdf.rar (97.65 K, 下载次数:305) 来自:ht

好行者 1448

X210v3S的BSP构建之uboot移植(一)

本篇博客记录将uboot,kernel,rootfs及QT4.8+openCV移植到x210v3s开发板全过程,持续更新中....... 博主信息 中文名:疯仔 英文名:Swann Kang 坐标:天津(Tianjing) 时间:2017/12/03(大三) Email:1159943540@qq.com 交流QQ:1159943540 淘宝店铺:疯仔嵌入式物联网科技 开

1426

基于S3C44B0的UBOOT移植

基于S3C44B0的UBOOT移植 转载于:https://www.cnblogs.com/arci/archive/2011/04/29/2033201.html

weixin_30408165的博客 174

修改参数_S3C2440移植uboot之裁剪和修改默认参数

上一节S3C2440移植uboot之支持DM9000移植uboot支持了网卡驱动,这节裁剪和修改uboot默认参数 [TOC] uboot的环境参数 首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示: 修...

weixin_29736061的博客 135

Imx283 Uboot2017+Linux3/4/5系统内核移植

Imx283 Uboot2017+Linux3/4/5系统内核移植 前言 用的周立功的EasyArm283,实习的时候买的,一直没咋弄,前几天突然看到了想玩一下,感觉2.34的内核有点老所以就移植了4.13 参考链接:https://www.lijingquan.net/3213/ 这里的linux下载链接: uboot下载链接: 其实都是官方的 开始 工具链: ...

weixin_43873379的博客 2379
上一篇: uboot移植 之 2
下一篇: UBOOT 移植之 4
一醉不醒
博客等级 码龄18年 15粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值