命令说明

对一个没有内核和根文件系统的板子是不可以运转的,当通过一种方式下载了RedBoot引导程序以后,我们可以通过下面的方式下载内核和根文件系统。

在本系统中,我们对内核和根文件系统的下载是通过tftp服务完成的。

整个Flash空间是16M ,它的地址范围:0x50000000 – 0x50fe0000 ,共有128块,每一块的大小是128K 。0x50000000 – 0x50080000范围放的是RedBoot引导程序和各种配置,0x50080000 – 0x50200000范围放的是Linux内核zImage,0x50200000 – 0x50380000范围放的是根文件系统ramdisk,0x50380000 – 0x50f60000范围放的是jffs2文件格式。剩余0x50f60000---0x50fe0000范围的512K空间放日志系统.

以下过程为启动redboot后,向目标机烧写一个linux内核的全过程

先对flash进行初始化

RedBoot> fis init

About to initialize [format] FLASH image system - continue (y/n)? y

*** Initialize FLASH Image System

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

对剩余的FLASH空间解除锁定

RedBoot> fis unlock -f 0x50080000 -l 0xf60000

... Unlock from 0x50080000-0x50fe0000: .........................................

................................................................................

..然后擦除

RedBoot> fis erase -f 0x50080000 -l 0xf60000

... Erase from 0x50080000-0x50fe0000: ..........................................

................................................................................

.显示FLASH分区信息

RedBoot> fis list

Name FLASH addr Mem addr Length Entry point

RedBoot 0x50000000 0x50000000 0x00060000 0x00000000

FIS directory 0x50060000 0x50060000 0x0001F000 0x00000000

RedBoot config 0x5007F000 0x5007F000 0x00001000 0x00000000

下面两步把内核zImage.H5500传送到目标板上,然后将其烧到flash的0x50080000地址中

RedBoot> load zImage.H5500 -b 0x2000000 -r -m tftp -h 192.168.9.190

Raw file loaded 0x02000000-0x0211e52b, assumed entry at 0x02000000

将其烧到flash的0x50080000地址中, zImage分配的空间为0x180000K

RedBoot> load zImage.H5500 -b 0x2000000 -r -m tftp -h 192.168.9.190

Raw file loaded 0x02000000-0x0211e52b, assumed entry at 0x02000000

RedBoot> fis create -b 0x2000000 -l 0x180000 -f 0x50080000 zImage

... Erase from 0x50080000-0x50200000: ............

... Program from 0x02000000-0x02180000 at 0x50080000: ............

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000:

将ramdisk.gz.H5500传送到目标板上,然后将其烧到flash的0x50020000地址中

RedBoot> load ramdisk.gz.H5500 -b 0x800000 -r -m tftp -h 192.168.9.190

Raw file loaded 0x00800000-0x0098a8df, assumed entry at 0x00800000

RedBoot> fis create -b 0x800000 -l 0x180000 -f 0x50200000 ramdisk

... Erase from 0x50200000-0x50380000: ............

... Program from 0x00800000-0x00980000 at 0x50200000: ............

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

将jffs2.rescue.img传送到目标板上,然后将其烧到flash的0x50380000地址中

RedBoot> load jffs2.rescue.img -b 0x800000 -r -m tftp -h 192.168.9.190

Raw file loaded 0x00800000-0x00898c6b, assumed entry at 0x00800000

RedBoot> fis create -b 0x800000 -l 0xbe0000 -f 0x50380000 jffs2

... Erase from 0x50380000-0x50f60000: ..........................................

.....................................................

... Program from 0x00800000-0x013e0000 at 0x50380000: ..........................

.....................................................................

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

RedBoot> fis list

Name FLASH addr Mem addr Length Entry point

RedBoot 0x50000000 0x50000000 0x00060000 0x00000000

FIS directory 0x50060000 0x50060000 0x0001F000 0x00000000

RedBoot config 0x5007F000 0x5007F000 0x00001000 0x00000000

zImage 0x50080000 0x50080000 0x00180000 0x02000000

ramdisk 0x50200000 0x50200000 0x00200000 0x00800000

jffs2 0x50380000 0x50380000 0x00be0000 0x00200000

fconfig,此命令是配置脚本命令

RedBoot> fconfig

Run script at boot: true

Boot script:

Enter script, terminate with empty line

>> fis unlock -f 0x50380000 -l 0xbe0000

>> fis load -b 0x2000000 zImage

>> fis load -b 0x800000 ramdisk

>> exec 0x2000000

>>

Boot script timeout (1000ms resolution): 3

Use BOOTP for network configuration: true

Default server IP address: 192.168.0.43

Console baud rate: 115200

GDB connection port: 9000

Force console for special debug messages: false

Network debug at boot time: false

Default network device: npe_eth0

Network hardware address [MAC] for npe_eth0: 0x00:0x0F:0x0E:0x01:0x02:0x03

Update RedBoot non-volatile configuration - continue (y/n)? (出现此提示时,请输入y)

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

显示FLASH被擦除但位被使用的空间

RedBoot> fis free

0x50F60000 .. 0x50FDFFFF

到这里整个烧写过程结束。

RedBoot可以在多种不同配置下运行,但一般都是从目标平台的闪存引导区或引导ROM启动。RedBoot设计为系统上电启动,能提供完整的处理器初始化和设备设置,使设计人员能够迅速开始与系统通信。

出现 RedBoot>

后,就表明redboot已经准备好,用户可以开始输入命令。

RedBoot命令的基本格式是:

命令 [-选项1] [-选项2 参数值] 操作符

命令格式中的选项1和选项2代表可以加到某些命令中的可选参数,用于指示一些特定动作或附加信息,在选项2中还包括一个数值。操作符定义了某些特殊命令所需的附加信息。命令也可以缩写成最短的无歧义字符串,如dump、dum、du和d都是dump命令的有效写法。

RedBoot用load命令下载应用软件映像,映像可以用TFTP协议、X/Y调制解调器协议或直接从目标硬件下载。

RedBoot常用的几条命令:

首先是闪存映像系统(fis)命令,当硬件平台上配有闪存时,RedBoot提供fis命令作为基本文件系统,这些命令主要用来管理文件系统映像。

另一个有用的命令是基于闪存的配置和控制命令fconfig。用fconfig命令查询的输出信息,配置命令可以设置RedBoot启动顺序。启动配置包括是否在初始化期间运行引导脚本、是否用BOOTP协议获取IP地址等等。

RedBoot支持引导脚本,因此允许用户在上电过程完成后执行所需命令。在产品测试阶段采用RedBoot装载应用软件映像时引导脚本很有好处,用户还可以设置超时参数,在引导脚本执行前按下Ctrl+C中断执行。引导脚本可用fconfig命令进行设置。

RedBoot命令介绍:

引用一个别名,如为joe的别名为This is Joe

RedBoot> alias joe "This is Joe"

设置IP,如改变SERVER IP为192.168.1.104

RedBoot> ip_address -h 192.168.1.104

IP: 192.168.1.31, Default server: 192.168.1.104, DNS server IP: 192.168.1.101

Load命令:从宿主机下载程序到目标机详细用法在flash烧写过程中举例

Version : 显示RedBoot的版本,使用平台,内存和FLASH空间大小等等信息。

RedBoot > version

RedBoot(tm) bootstrap and debug environment [ROM]

Red Hat certified release, version 2.02 - built 21:47:00, Jun 19 2006

Platform: IXDP425 Development Platform (IXP42X 400MHz) BE

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

RAM: 0x00000000-0x08000000, [0x00029808-0x07fc1000] available

FLASH: 0x50000000 - 0x50fe0000, 127 blocks of 0x00020000 bytes each.

mfill : 用指定的方式向向存储器中写数据。

Mfill {-b location} {-l length} {-p value} [-1 | -2| -4]

-b : 存储器中,被写入数据的起始地址。

-l :被写入数据的长度。

-p :被写入数据的内容。

RedBoot> x -b 00400000 -l 0x40

00061A80: FF FF FF FF FF FC FF FF BF FF EF FF EF FF DF FF |................|

00061A90: FF EF FF FF FF BF FF FD FE FF F7 FF FF FF 5F FF |.............._.|

00061AA0: FF 5F FF DF FF FF FF 6F FC FF BB FF BF FF D7 FF |._.....o........|

00061AB0: FF FF FF FB FF F7 FF FF AF FF BE FF 7F FF FE FF |................|

RedBoot> mfill -b 0x00400000 -l 0x40 -p 0x98765423

RedBoot> x -b 0x00400000 -l 0x40

00400000: 98 76 54 23 98 76 54 23 98 76 54 23 98 76 54 23 |.vT#.vT#.vT#.vT#|

00400010: 98 76 54 23 98 76 54 23 98 76 54 23 98 76 54 23 |.vT#.vT#.vT#.vT#|

00400020: 98 76 54 23 98 76 54 23 98 76 54 23 98 76 54 23 |.vT#.vT#.vT#.vT#|

00400030: 98 76 54 23 98 76 54 23 98 76 54 23 98 76 54 23 |.vT#.vT#.vT#.vT#|

Flash Image System(FIS)

如果在一个板子上有Flash存储器,RedBoot能够把image引导到Flash中。运行的对象,包括一些数据还有一些简单的文件也能够存放到Flash中。fis 这个命令能够被使用运行Flash中的内容。

fis init [-f] :初始化(FIS),当RedBoot第一次在器件上安装的时候这个命令被运行。

-f :Flash的所有的块全部被檫除。

RedBoot> fis init –f

About to initialize [format] flash image system - are you sure (y/n)?n

fis [-c] [-d] list :列出FIS 中一般的文件,一些能够以RedBoot的名字运行,另外一些能够被使用者执行。

-c :image的ckecksum代替Mem Addr。

-d :image的datalenggth代替length。

RedBoot> fis list

Name flash addr Mem addr Length Entry point

RedBoot 0x50000000 0x50000000 0x00060000 0x00000000

FIS directory 0x50060000 0x50060000 0x0001F000 0x00000000

RedBoot config 0x5007F000 0x5007F000 0x00001000 0x00000000

RedBoot> fis list -c

Name flash addr Checksum Length Entry point

RedBoot 0x50000000 0x00000000 0x00060000 0x00000000

FIS directory 0x50060000 0x00000000 0x0001F000 0x00000000

RedBoot config 0x5007F000 0x00000000 0x00001000 0x00000000

fis free : 显示Flash中还有那些地址空间没有被使用,使用这个命令可以知道另外一些image下载的位置。

RedBoot> fis free

0x50080000 .. 0x50FDFFFF

fis create –b -l[-f] [-e] [-r] [-s] [-n] : 在FIS 目录中创造一个image,image中的数据在拷贝之前必须存在在RAM存储器中。(首先,使用load命令把image下载到RAM中,然后运用fis create命令把他写入Flash中。)

name :文件的名字,显示在FIS 目录中。

-b :在RAM中的一个位置,为了得到image,这是一个必须的参数。

-l :image的长度。如果image已经存在,那么它的长度被推断根据先前image被创造的时间。特殊的情况下,它可能和原来的初始化的数据是一样的。

-f :image在Flash中的位置。一般情况下,位置被确定根据现在的image所在的位置,如果在Flash还没有image的存在,那么剩余的块是足够的被使用。

-e :执行登陆的地址。如果image的开始地址不知道或者是不需要被考虑,-e被使用。

-r :当image通过fis load命令下载在RAM 中的位置。但是在这里要求这个image是给定的。

-s :被写入Flash数据的真实的长度,如果不能出现,那么image的长度是假定的,-s比-l给出的数据要短一些,

-n :仅仅更新FIS的目录,没有数据被拷贝从RAM到Flash中,这个特点能够被使用登陆FIS,如果它已经坏掉。

RedBoot > fis create RedBoot -f 0x50000000 -b 0x07000000 -l 0x60000

An image named 'RedBoot' exists - continue (y/n)? n

RedBoot> fis unlock -f 0x50080000 -l 0x20000

... Unlock from 0x50080000-0x500a0000: .

RedBoot> fis erase -f 0x50080000 -l 0x20000

... Erase from 0x50080000-0x500a0000: .

RedBoot> fis create fuck -b 0x05000000 -l 0x20000

... Erase from 0x50080000-0x500a0000: .

... Program from 0x05000000-0x05020000 at 0x50080000: .

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

RedBoot> fis list

Name FLASH addr Mem addr Length Entry point

RedBoot 0x50000000 0x50000000 0x00060000 0x00000000

FIS directory 0x50060000 0x50060000 0x0001F000 0x00000000

RedBoot config 0x5007F000 0x5007F000 0x00001000 0x00000000

fuck 0x50080000 0x05000000 0x00020000 0xFFFFFFFF

fis load [-b ] [-c] [-d] name : 拷贝一个image从Flash到RAM。一旦被下载,它可能运用go命令执行。如果加上-b参数,image被拷贝从Flash到RAM 的指定的位置,如果不加上-b参数,image被拷贝从Flash到image被创造的地址。

-name :一个显示在FIS 目录中的文件名。

-b :存储器中,被写入数据的开始地址。

-c :下载到存储器之后计算并打印image数据的校验和。

-d :当拷贝image从Flash到RAM 时减压缩它。

RedBoot> fis load RedBoot

RedBoot> go

执行linux kernel

RedBoot> exec

fis delete name : 移出一个image从FIS 中,Flash一部分空间将要被檫除,而且移出映像的名字从Flash的目录中。

RedBoot> fis delete fuck

Delete image 'fuck' - continue (y/n)? y

... Erase from 0x50080000-0x500a0000: .

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

fis lock –f -l : 写保护一部分Flash扇区,预防意外的重写image。为了对Flash进行一些更改,一个匹配的开启命令必须是有的,

RedBoot> fis lock -f 0x50090000 -l 0x20000

... Lock from 0x50080000-0x500b0000: ..

fis unlock –f -l : 开启一部分Flash扇区,允许这部分扇区被更新,这部分区域一定是被写保护过的。

RedBoot> fis unlock -f 0x50090000 -l 0x20000

... Unlock from 0x50090000-0x500b0000: ..

fis erase –f -l : 檫除一部分Flash扇区,没有被檫除的那部分Flash扇区是不能被下载image的。

RedBoot> fis erase –f 0x50090000 –l 0x20000

…Erase from 0x50090000 – 0x500b0000:..

fis write –b -l -f : 向Flash中写数据从RAM指定的位置。

使Flash的配置和控制处于持久稳定的状态

RedBoot规定Flash的操作支持在Flash存储器中的存储,存储多次的操作的内容和一些非易失性的信息,比如IP地址和一些网络的配置信息。

RedBoot第一次被引导到目标板,在平台上RedBoot支持的配置信息将被报告出现下面的信息:

Flash configuration checksum error or invalid key

如果没有Flash配置信息,这样的错误能够被忽视。或者能够通过运行fconfig命令来改正错误,还可以通过fis init命令来改变这个情况。

在不同Flash中,他们的控制和配置信息也是不一样的,然而配置和控制的命令是一样的,运行fconfig –l 命令,Flash中的信息能够被运行和改变。

-i :配置的数据库将要被从新设置。这需要第一次把RedBoot安装在目标板上,或者是更新一个新RedBoot运用不同的配置键。

-l :配置信息被简单的列举。每一个配置参数将被显示并且有一个机会去改变它。所有的数据能够被打印,将返回一些被改变的数据。布尔数学体系的值可能被输入用第一个字母代替。

如果一些配置被改变,从使用者那里得到确认以后,更新的数据将要被写回Flash。

-n :呢称是较短的比全名

-f : 全称被显示。

进入一个平台,假若呢称是一个较快的方式,那么使用的方法是:

RedBoot> fconfig nickname value

如果没有数据被支持,命令仅显示进入,如果一个数据被支持,输入将要被设计为哪个数据。如果一些数据改变,将被提示是否向Flash写一些新的信息。

RedBoot> fconfig -l -n

boot_script: true

boot_script_data:

.. fis unlock -f 0x50400000 -l 0xa00000

.. fis load -b 0x2000000 zImage

.. fis load -b 0x800000 ramdisk

.. exec 0x2000000

boot_script_timeout: 3

bootp: true

bootp_server_ip: 192.168.0.43

console_baud_rate: 115200

gdb_port: 9000

info_console_force: false

net_debug: false

net_device: npe_eth0

npe_eth0_esa: 0x00:0x0F:0x0E:0x01:0x02:0x03

RedBoot> fconfig bootp_server_ip 192.168.9.190

bootp_server_ip: Setting to 192.168.9.190

Update RedBoot non-volatile configuration - continue (y/n)?y

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

依靠被连接的终端的程序和它的实际能力,当使用默认的fconfig nickname 或者无格式的fconfig,你可能发现不能使用行编辑命令删除一些过去的值。

RedBoot> fco bootp

bootp: false

Update RedBoot non-volatile configuration - continue (y/n)? y

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

RedBoot> fco bootp

bootp: true

Update RedBoot non-volatile configuration - continue (y/n)? y

... Unlock from 0x50060000-0x50080000: .

... Erase from 0x50060000-0x50080000: .

... Program from 0x07fe0000-0x08000000 at 0x50060000: .

... Lock from 0x50060000-0x50080000: .

在配置的数值中有一项总是出现,在导入的时间这一项能够执行脚本。当系统开始的时间,RedBoot的命令能够按次序输入被执行。通过控制平台使用者用普通的命令运行脚本。

在控制台输入的字符被明显的显示。一旦脚本被执行,控制台将显示命令执行返回的内容。

在一些目标板上,RedBoot被配置成在ROM或RAM上运行。所有的RedBoot配置将要执行boot脚本,一些特殊情况,RedBoot配置限定执行一定的脚本命令是我们想要的。运用预先考虑好的命令能够被完成上述的功能,为了启动哪个指定类型,借助RedBoot配置运行这些命令。

通过RedBoot执行程序

运用load或fis load命令把一个映像下载到内存中,对于映像执行可以是改变。

go :执行一个程序。

go [-w time] [-c] [-n] [location] : 在指定的位置开始执行。另外,登陆表明最后的映像将要被执行。

-w:开始执行前使用者等待的时间。当按下ctrl+c执行被终止。

-c:开启高速缓冲存储器,通常,执行go命令前高速缓冲存储器是关闭的。

-n:RedBoot支持安装一个网络设备驱动程序。在执行命令前,网络界面是不显示的。

exec :执行一个Linux内核映像。这个命令不是所有的平台都可以使用。这个命令被使用执行一个没有操作系统的应用程序,尤其像Linux内核。命令的执行要依靠一定的环境,比如MMU关闭,等等。

[-w timeout]

[-b [-l ]]

[-r ]

[-s ]

[-c “kernel command line”] []

Linux内核必须被下载到特定的内存位置,在RedBoot中心使用这些内存。不可能直接把内核下栽到哪个位置。

-b:内核被下载到内存中的位置,当运行exec命令开始前,映像将要被从新部署适当的位置。

-r,-s:内核传递的信息,一个静态的根文件系统被下载的位置。

-c:内核传递的原文命令行信息。

阅读(1059) | 评论(0) | 转发(0) |

烧写linux内核的步骤,启动redboot后,向目标机烧写一个linux内核的全过程相关推荐

  1. linux中使用命令启动tomcat后显示tomcat started,实际却没启动的问题

    linux中启动tomcat,显示tomcat started.实际却没启动的问题 问题背景: 在linux复制tomcat,将tomcat中webapps目录下自己原来发布过的项目直接删除后启动to ...

  2. win10格式化linux分区,直接删除linux分区再重装linux可以恢復启动么,我是直接在win10里把linux mint...

    你还记得住以前的分区设置么?需要精确的容量,硬盘分区要精确到块(好像是 4k 左右吧?. 如果记得住,可以这样: 使用 diskgenuis (其实别的也行,但有的分区软件不能精确分区,这软件也不是能 ...

  3. linux的静态编译elf无法调试,[翻译]自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB...

    自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB 在上一节中,你已经听说了DWARF调试格式,它是程序的调试信息,是一种可以更好理解源码的方式 ...

  4. linux命令 复制文件夹命令行,(转)每天一个linux命令(8):cp 命令,复制文件和文件夹...

    场景:自动部署脚本中为了部署方便,将配置文件放在服务器端,每次部署都使用服务端的配置文件覆盖上传上去的配置文件. cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. 一般情况下,she ...

  5. vm linux终端访问桌面,启动虚拟机后进入linux操作系统,只有命令行没桌面,怎么在命令行启动桌面...

    答:修改在/etc/inittab文件下initdefualt:3 把3改为5 就可以了 或者每次在命令行输入startx 或者init 5 答:在[root@localhost~]#后民直接输入in ...

  6. linux中用at命令5分钟后执行,我使用过的Linux命令之at - 在指定时间执行一次任务...

    我使用过的Linux命令之at - 在指定时间执行一次任务 用途说明 at命令用于在指定时间执行一次任务.如果任务需要重复执行,需用crontab. atq用于打印队列中的任务,atrm用于删除任务. ...

  7. linux c代码更改时间间隔,在特定的时间间隔后发送控制c到一个linux命令?

    我正在做一些测试,在我的路由器上,我正在使用mdk3和reaver实用程序. 这里有两个命令: [cmd1] echo y|reaver -i wlan2mon -b 00:FF:EE:CC:DS:B ...

  8. Liunx树莓派(ARM)开发篇—第十四章、树莓派Linux内核编译步骤(超详细、图文结合)

    对树莓派内核源码进行配置后,下一步要进行树莓派Linux内核编译 以下步骤均在PC端虚拟机上完成 准备材料:PC端虚拟机.树莓派交叉编译工具.树莓派内核(交叉编译工具.内核下载步骤见树莓派内核源码) ...

  9. Linux下制作Windows启动U盘的工具

    Linux下制作Windows启动U盘的工具 很多人说Linux下制作Windwos启动盘要用GRUB4DOS建立引导,其实不用,有专门的工具的,就像Windows下有Rufus制作Linux启动U盘 ...

最新文章

  1. ES6 常用的特性整理
  2. 2021 线性代数 第三章 习题课
  3. php中rbac三张表的关系,thinkphp中RBAC数据表分析
  4. 产品功能上线前,如何高效的埋点?
  5. 【人物专访】朱玲——我在网易云当女程序媛
  6. 纯jsp实现评论功能_自己实现的java手写tomcat
  7. cntk-notes
  8. c++全局监听ctrl s_号称史上最全!134个CAD快捷键强烈来袭,难道你只知道Ctrl+C?...
  9. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
  10. MATLAB学习笔记(八)
  11. 京东国际宣布国际超模刘雯担任品牌代言人
  12. 二叉树创建,遍历,叶子,深度
  13. 椒盐噪声加噪的实现原理
  14. gerrit 数据迁移_gerrit importer 使用方法
  15. Visual Studio 2019 c#的winform开发,基本操作
  16. 大数据平台解决方案(PPT)
  17. 4种方法解决js跨域的实现方式
  18. 保持简单:纪念丹尼斯•里奇
  19. HbuilderX配置微信开发者工具
  20. 微信小程序新版本提示更新

热门文章

  1. ArcGIS Engine开发之旅08--和查询相关的对象和接口
  2. JAVA对象JSON数据互相转换的四种常见情况
  3. iOS block 用法
  4. [Documentation]porting
  5. 用Delphi制作网络游戏外挂
  6. android studio 引入httpclient,HttpClient不会导入Android Studio
  7. 卸载虚拟机出现用户已存在的错误_BATJ面试必会|Jvm 虚拟机篇
  8. c++ 确定百分比_【文献笔记】JIMF中国货币政策的不确定性
  9. 噢,老天爷! 属于Java的协程终于来了!
  10. 我们要在离职时,优雅地说再见!