uboot启动第一阶段
前言:
本帖是学习韦东山老师uboot教程,粗略总结的课堂笔记及自己感悟。如想深入了解uboot 启动过程,请绕路。
相关帖子:
UBOOT初体验:编译、下载
初识uboot Makefile
概述
uboot启动第一阶段主要进行单板硬件初始化:看门狗、中断、堆栈等
uboot第一阶段
初识uboot Makefile 中我们知道,uboot的第一个文件为cpu/arm920t/start.S,uboot第一阶段所做的工作即为该文件内容。内容见后文。
.globl _start
_start: b reset
设置CPU模式
reset:/** set the cpu to SVC32 mode*/mrs r0,cpsrbic r0,r0,#0x1forr r0,r0,#0xd3msr cpsr,r0
关看门狗
/* turn off the watchdog */
#if defined(CONFIG_S3C2400)
# define pWTCON 0x15300000
# define INTMSK 0x14400008 /* Interupt-Controller base addresses */
# define CLKDIVN 0x14800014 /* clock divisor register */
#elif defined(CONFIG_S3C2410)
# define pWTCON 0x53000000
# define INTMOD 0X4A000004
# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
# define INTSUBMSK 0x4A00001C
# define CLKDIVN 0x4C000014 /* clock divisor register */
#endif
屏蔽中断
ldr r0, =pWTCONmov r1, #0x0str r1, [r0]/** mask all IRQs by setting all bits in the INTMR - default*/mov r1, #0xffffffffldr r0, =INTMSKstr r1, [r0]
# if defined(CONFIG_S3C2410)ldr r1, =0x3ffldr r0, =INTSUBMSKstr r1, [r0]
# endif
设置时钟
/* 设置时钟, 使用汇编 */
#define S3C2440_MPLL_400MHZ ((0x5c<<12)|(0x01<<4)|(0x01))
#define S3C2440_UPLL_48MHZ ((0x38<<12)|(0x02<<4)|(0x02))
#define S3C2440_CLKDIV (0x05) // | (1<<3)) /* FCLK:HCLK:PCLK = 1:4:8, UCLK = UPLL/2 */ldr r1, =CLKDIVNmov r2, #S3C2440_CLKDIVstr r2, [r1]mrc p15, 0, r1, c1, c0, 0 // read ctrl register orr r1, r1, #0xc0000000 // Asynchronous mcr p15, 0, r1, c1, c0, 0 // write ctrl registerldr r0,=LOCKTIMEldr r1,=0xffffffstr r1,[r0]// delaymov r0, #0x200
1: subs r0, r0, #1bne 1b// Configure MPLLldr r0,=MPLLCON ldr r1,=S3C2440_MPLL_400MHZstr r1,[r0]// delaymov r0, #0x200
1: subs r0, r0, #1bne 1b//Configure UPLLldr r0, =UPLLCON ldr r1, =S3C2440_UPLL_48MHZstr r1, [r0]// delaymov r0, #0x200
1: subs r0, r0, #1bne 1b
初始化SDRAM
这里的cpu_init_crit为C接口
adr r0, _start /* r0 <- current position of code */ldr r1, _TEXT_BASE /* test if we run from flash or RAM */cmp r0, r1 /* don't reloc during debug */blne cpu_init_crit
设置栈
设置完堆栈,SDRAM的堆栈如下:
/* Set up the stack */
stack_setup:ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */sub r0, r0, #CFG_MALLOC_LEN /* malloc area */sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */#ifdef CONFIG_USE_IRQsub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
#endifsub sp, r0, #12 /* leave 3 words for abort-stack */
将代码从NAND/NOR flash拷贝到SDRAM上
CopyCode2Ram为C接口编写
bl CopyCode2Ram
清除bss段
clear_bss:ldr r0, _bss_start /* find start of bss segment */ldr r1, _bss_end /* stop here */mov r2, #0x00000000 /* clear
运行uboot第二阶段
ldr pc, _start_armboot_start_armboot: .word start_armboot
cpu\arm920t\start.S 内容
/** armboot - Startup Code for ARM920 CPU-core** Copyright (c) 2001 Marius Gr鰃er <mag@sysgo.de>* Copyright (c) 2002 Alex Z黳ke <azu@sysgo.de>* Copyright (c) 2002 Gary Jennejohn <gj@denx.de>** See file CREDITS for list of people who contributed to this* project.** This program is free software; you can redistribute it and/or* modify it under the terms of the GNU General Public License as* published by the Free Software Foundation; either version 2 of* the License, or (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston,* MA 02111-1307 USA*/#include <config.h>
#include <version.h>/**************************************************************************** Jump vector table as in table 3.1 in [1]***************************************************************************/
#define GSTATUS2 (0x560000B4)
#define GSTATUS3 (0x560000B8)
#define GSTATUS4 (0x560000BC)#define REFRESH (0x48000024)
#define MISCCR (0x56000080)#define LOCKTIME 0x4C000000 /* R/W, PLL lock time count register */
#define MPLLCON 0x4C000004 /* R/W, MPLL configuration register */
#define UPLLCON 0x4C000008 /* R/W, UPLL configuration register */
#define CLKCON 0x4C00000C /* R/W, Clock generator control reg. */
#define CLKSLOW 0x4C000010 /* R/W, Slow clock control register */
#define CLKDIVN 0x4C000014 /* R/W, Clock divider control */.globl _start
_start: b resetldr pc, _undefined_instructionldr pc, _software_interruptldr pc, _prefetch_abortldr pc, _data_abortldr pc, _not_usedldr pc, _irqldr pc, _fiq_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq.balignl 16,0xdeadbeef/**************************************************************************** Startup Code (reset vector)** do important init only if we don't start from memory!* relocate armboot to ram* setup stack* jump to second stage***************************************************************************/_TEXT_BASE:.word TEXT_BASE.globl _armboot_start
_armboot_start:.word _start/** These are defined in the board-specific linker script.*/
.globl _bss_start
_bss_start:.word __bss_start.globl _bss_end
_bss_end:.word _end.globl FREE_RAM_END
FREE_RAM_END:.word 0x0badc0de.globl FREE_RAM_SIZE
FREE_RAM_SIZE:.word 0x0badc0de.globl PreLoadedONRAM
PreLoadedONRAM:.word 0#ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START
IRQ_STACK_START:.word 0x0badc0de/* IRQ stack memory (calculated at run-time) */
.globl FIQ_STACK_START
FIQ_STACK_START:.word 0x0badc0de
#endif/** the actual reset code*/reset:/** set the cpu to SVC32 mode*/mrs r0,cpsrbic r0,r0,#0x1forr r0,r0,#0xd3msr cpsr,r0/* turn off the watchdog */
#if defined(CONFIG_S3C2400)
# define pWTCON 0x15300000
# define INTMSK 0x14400008 /* Interupt-Controller base addresses */
# define CLKDIVN 0x14800014 /* clock divisor register */
#elif defined(CONFIG_S3C2410)
# define pWTCON 0x53000000
# define INTMOD 0X4A000004
# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
# define INTSUBMSK 0x4A00001C
# define CLKDIVN 0x4C000014 /* clock divisor register */
#endif#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)ldr r0, =pWTCONmov r1, #0x0str r1, [r0]/** mask all IRQs by setting all bits in the INTMR - default*/mov r1, #0xffffffffldr r0, =INTMSKstr r1, [r0]
# if defined(CONFIG_S3C2410)ldr r1, =0x3ffldr r0, =INTSUBMSKstr r1, [r0]
# endif#if 0/* FCLK:HCLK:PCLK = 1:2:4 *//* default FCLK is 120 MHz ! */ldr r0, =CLKDIVNmov r1, #3str r1, [r0]
#endif
#endif /* CONFIG_S3C2400 || CONFIG_S3C2410 */#ifndef CONFIG_SKIP_LOWLEVEL_INIT
#if 0/* 这些代码会使用SP,在NAND启动时会破坏片内内存的部分代码* 导致NAND启动时无法使用休眠-唤醒功能*//* 设置SP指向片内内存 */ldr sp, =4092ldr r0, =0x12345678str r0, [sp]ldr r1, [sp]cmp r0, r1ldrne sp, =0x40000000+4096bl clock_init
#else/* 设置时钟, 使用汇编 */
#define S3C2440_MPLL_400MHZ ((0x5c<<12)|(0x01<<4)|(0x01))
#define S3C2440_UPLL_48MHZ ((0x38<<12)|(0x02<<4)|(0x02))
#define S3C2440_CLKDIV (0x05) // | (1<<3)) /* FCLK:HCLK:PCLK = 1:4:8, UCLK = UPLL/2 */ldr r1, =CLKDIVNmov r2, #S3C2440_CLKDIVstr r2, [r1]mrc p15, 0, r1, c1, c0, 0 // read ctrl register orr r1, r1, #0xc0000000 // Asynchronous mcr p15, 0, r1, c1, c0, 0 // write ctrl registerldr r0,=LOCKTIMEldr r1,=0xffffffstr r1,[r0]// delaymov r0, #0x200
1: subs r0, r0, #1bne 1b// Configure MPLLldr r0,=MPLLCON ldr r1,=S3C2440_MPLL_400MHZstr r1,[r0]// delaymov r0, #0x200
1: subs r0, r0, #1bne 1b//Configure UPLLldr r0, =UPLLCON ldr r1, =S3C2440_UPLL_48MHZstr r1, [r0]// delaymov r0, #0x200
1: subs r0, r0, #1bne 1b#endif
#endif /* 2. 根据 GSTATUS2[1]判断是复位还是唤醒 */ ldr r0, =GSTATUS2ldr r1, [r0]tst r1, #(1<<1) /* r1 & (1<<1) */bne wake_up /** we do sys-critical inits only at reboot,* not when booting from ram!*/
#ifndef CONFIG_SKIP_LOWLEVEL_INITadr r0, _start /* r0 <- current position of code */ldr r1, _TEXT_BASE /* test if we run from flash or RAM */cmp r0, r1 /* don't reloc during debug */blne cpu_init_crit
#endif/* Set up the stack */
stack_setup:ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */sub r0, r0, #CFG_MALLOC_LEN /* malloc area */sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */#ifdef CONFIG_USE_IRQsub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
#endifsub sp, r0, #12 /* leave 3 words for abort-stack */#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate: /* relocate U-Boot to RAM */adr r0, _start /* r0 <- current position of code */ldr r1, _TEXT_BASE /* test if we run from flash or RAM */cmp r0, r1 /* don't reloc during debug */beq clear_bssldr r2, _armboot_startldr r3, _bss_startsub r2, r3, r2 /* r2 <- size of armboot */
#if 1bl CopyCode2Ram /* r0: source, r1: dest, r2: size */
#elseadd r2, r0, r2 /* r2 <- source end address */copy_loop:ldmia r0!, {r3-r10} /* copy from source address [r0] */stmia r1!, {r3-r10} /* copy to target address [r1] */cmp r0, r2 /* until source end addreee [r2] */ble copy_loop
#endif
#endif /* CONFIG_SKIP_RELOCATE_UBOOT */clear_bss:ldr r0, _bss_start /* find start of bss segment */ldr r1, _bss_end /* stop here */mov r2, #0x00000000 /* clear */clbss_l:str r2, [r0] /* clear loop... */add r0, r0, #4cmp r0, r1ble clbss_lSetLoadFlag:/* Set a global flag, PreLoadedONRAM */adr r0, _start /* r0 <- current position of code */ldr r1, _TEXT_BASE /* test if we run from flash or RAM */cmp r0, r1 /* don't reloc during debug */ldr r2, =PreLoadedONRAMmov r3, #1streq r3, [r2]#if 0/* try doing this stuff after the relocation */ldr r0, =pWTCONmov r1, #0x0str r1, [r0]/** mask all IRQs by setting all bits in the INTMR - default*/mov r1, #0xffffffffldr r0, =INTMRstr r1, [r0]/* FCLK:HCLK:PCLK = 1:2:4 *//* default FCLK is 120 MHz ! */ldr r0, =CLKDIVNmov r1, #3str r1, [r0]/* END stuff after relocation */
#endifldr pc, _start_armboot_start_armboot: .word start_armboot/* 1. 按下按键 */
wake_up:str r1, [r0] /* clear GSTATUS2 *//* 3. 设置 MISCCR[19:17]=000b, 以释放SDRAM信号 */ldr r0, =MISCCRldr r1, [r0]bic r1, r1, #(7<<17)str r1, [r0]/* 4. 配置s3c2440的memory controller */bl cpu_init_crit/* 5. 等待SDRAM退出self-refresh mode */mov r0, #1000
1: subs r0, r0, #1cmp r0, #0bne 1b/* 6. 根据GSTATUS[3:4]的值来运行休眠前的函数 */ldr r0, =GSTATUS3ldr r1, [r0]mov pc, r1/**************************************************************************** CPU_init_critical registers** setup important registers* setup memory timing***************************************************************************/#ifndef CONFIG_SKIP_LOWLEVEL_INIT
cpu_init_crit:/** flush v4 I/D caches*/mov r0, #0mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB *//** disable MMU stuff and caches*/mrc p15, 0, r0, c1, c0, 0bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS)bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)orr r0, r0, #0x00000002 @ set bit 2 (A) Alignorr r0, r0, #0x00001000 @ set bit 12 (I) I-Cachemcr p15, 0, r0, c1, c0, 0/** before relocating, we have to setup RAM timing* because memory timing is board-dependend, you will* find a lowlevel_init.S in your board directory.*/mov ip, lrbl lowlevel_initmov lr, ipmov pc, lr
#endif /* CONFIG_SKIP_LOWLEVEL_INIT *//**************************************************************************** Interrupt handling***************************************************************************/@
@ IRQ stack frame.
@
#define S_FRAME_SIZE 72#define S_OLD_R0 68
#define S_PSR 64
#define S_PC 60
#define S_LR 56
#define S_SP 52#define S_IP 48
#define S_FP 44
#define S_R10 40
#define S_R9 36
#define S_R8 32
#define S_R7 28
#define S_R6 24
#define S_R5 20
#define S_R4 16
#define S_R3 12
#define S_R2 8
#define S_R1 4
#define S_R0 0#define MODE_SVC 0x13
#define I_BIT 0x80/** use bad_save_user_regs for abort/prefetch/undef/swi ...* use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling*/.macro bad_save_user_regssub sp, sp, #S_FRAME_SIZEstmia sp, {r0 - r12} @ Calling r0-r12ldr r2, _armboot_startsub r2, r2, #(CONFIG_STACKSIZE+CFG_MALLOC_LEN)sub r2, r2, #(CFG_GBL_DATA_SIZE+8) @ set base 2 words into abort stackldmia r2, {r2 - r3} @ get pc, cpsradd r0, sp, #S_FRAME_SIZE @ restore sp_SVCadd r5, sp, #S_SPmov r1, lrstmia r5, {r0 - r3} @ save sp_SVC, lr_SVC, pc, cpsrmov r0, sp.endm.macro irq_save_user_regssub sp, sp, #S_FRAME_SIZEstmia sp, {r0 - r12} @ Calling r0-r12add r8, sp, #S_PCstmdb r8, {sp, lr}^ @ Calling SP, LRstr lr, [r8, #0] @ Save calling PCmrs r6, spsrstr r6, [r8, #4] @ Save CPSRstr r0, [r8, #8] @ Save OLD_R0mov r0, sp.endm.macro irq_restore_user_regsldmia sp, {r0 - lr}^ @ Calling r0 - lrmov r0, r0ldr lr, [sp, #S_PC] @ Get PCadd sp, sp, #S_FRAME_SIZEsubs pc, lr, #4 @ return & move spsr_svc into cpsr.endm.macro get_bad_stackldr r13, _armboot_start @ setup our mode stacksub r13, r13, #(CONFIG_STACKSIZE+CFG_MALLOC_LEN)sub r13, r13, #(CFG_GBL_DATA_SIZE+8) @ reserved a couple spots in abort stackstr lr, [r13] @ save caller lr / spsrmrs lr, spsrstr lr, [r13, #4]mov r13, #MODE_SVC @ prepare SVC-Mode@ msr spsr_c, r13msr spsr, r13mov lr, pcmovs pc, lr.endm.macro get_irq_stack @ setup IRQ stackldr sp, IRQ_STACK_START.endm.macro get_fiq_stack @ setup FIQ stackldr sp, FIQ_STACK_START.endm/** exception handlers*/.align 5
undefined_instruction:get_bad_stackbad_save_user_regsbl do_undefined_instruction.align 5
software_interrupt:get_bad_stackbad_save_user_regsbl do_software_interrupt.align 5
prefetch_abort:get_bad_stackbad_save_user_regsbl do_prefetch_abort.align 5
data_abort:get_bad_stackbad_save_user_regsbl do_data_abort.align 5
not_used:get_bad_stackbad_save_user_regsbl do_not_used@ thisway.diy, 2006.06.24
.globl Launch.align 4
Launch: mov r7, r0@ diable interrupt@ disable watch dog timermov r1, #0x53000000mov r2, #0x0str r2, [r1]ldr r1,=INTMSKldr r2,=0xffffffff @ all interrupt disablestr r2,[r1]ldr r1,=INTSUBMSKldr r2,=0x7ff @ all sub interrupt disablestr r2,[r1]ldr r1, = INTMODmov r2, #0x0 @ set all interrupt as IRQ (not FIQ)str r2, [r1]@ mov ip, #0mcr p15, 0, ip, c13, c0, 0 @ /* zero PID */mcr p15, 0, ip, c7, c7, 0 @ /* invalidate I,D caches */mcr p15, 0, ip, c7, c10, 4 @ /* drain write buffer */mcr p15, 0, ip, c8, c7, 0 @ /* invalidate I,D TLBs */mrc p15, 0, ip, c1, c0, 0 @ /* get control register */bic ip, ip, #0x0001 @ /* disable MMU */mcr p15, 0, ip, c1, c0, 0 @ /* write control register */@ MMU_EnableICache@mrc p15,0,r1,c1,c0,0@orr r1,r1,#(1<<12)@mcr p15,0,r1,c1,c0,0@ clear SDRAM: the end of free mem(has wince on it now) to the end of SDRAMldr r3, FREE_RAM_ENDldr r4, =PHYS_SDRAM_1+PHYS_SDRAM_1_SIZE @ must clear all the memory unused to zeromov r5, #0ldr r1, _armboot_startldr r2, =On_Steppingstonesub r2, r2, r1mov pc, r2
On_Steppingstone:
2: stmia r3!, {r5}cmp r3, r4bne 2b@ set sp = 0 on sys modemov sp, #0@ add by thisway.diy 2006.06.26, switch to SVC modemsr cpsr_c, #0xdf @ set the I-bit = 1, diable the IRQ interruptmsr cpsr_c, #0xd3 @ set the I-bit = 1, diable the IRQ interruptldr sp, =0x31ff5800 nopnopnopnopmov pc, r7 @ Jump to PhysicalAddressnopmov pc, lr#ifdef CONFIG_USE_IRQ.align 5
irq:
/* add by www.100ask.net to use IRQ for USB and DMA */sub lr, lr, #4 @ the return addressldr sp, IRQ_STACK_START @ the stack for irqstmdb sp!, { r0-r12,lr } @ save registersldr lr, =int_return @ set the return addrldr pc, =IRQ_Handle @ call the isr
int_return:ldmia sp!, { r0-r12,pc }^ @ return from interrupt.align 5
fiq:get_fiq_stack/* someone ought to write a more effiction fiq_save_user_regs */irq_save_user_regsbl do_fiqirq_restore_user_regs#else.align 5
irq:get_bad_stackbad_save_user_regsbl do_irq.align 5
fiq:get_bad_stackbad_save_user_regsbl do_fiq#endif
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Spring Cloud 学习笔记(1 / 3)
Spring Cloud 学习笔记(2 / 3) Spring Cloud 学习笔记(3 / 3) ---01_前言闲聊和课程说明02_零基础微服务架构理论入门03_第二季Boot和Cloud版本选型04_Cloud组件停更说明05_父工程Project空间新建06_父工程pom文件07_复习Depend…...
2024/4/14 9:37:38 - Python 数据处理与分析(一) 设计一个高回报的投资组合(投资回报和风险分析)算法分析和预测系列课程讲解
目录 1. 项目介绍 2. 技能提升 3. 学习目标 3. 环境搭建 4、项目导学 1. 项目介绍 在投资过程中,需要关注的两个基本点是回报(或收益)和风险。这个项目将教你如何使用 Python 分析投资收益率、投资的风险,并设计合理的投资组…...
2024/4/30 18:01:55 - Java数组Array
介绍数组: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。 1.定义数组的格式 格式一: 数组存储的数据类型[] 数组名字 new 数组存储的数据类型[长度];//定义可以存储3个整数的数组容器,代码如下: int[] arr…...
2024/4/7 15:38:02 - 【字节青训营】Day1 HTML+CSS笔记
一、HTML HTML传达内容,而不传达样式! 1.定义 HTML 指的是超文本标记语言 (Hyper Text Markup Language),是一种用于创建网页的标准标记语言。 语义化:HTML中的元素、属性及属性值都拥有默认含义。这便于开发者阅读,维…...
2024/4/14 9:37:48 - LDU反素数
反素数 Description 对于任何正整数x,其约数的个数记作g(x)。例如g(1)1、g(6)4。如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。现在给定一个数…...
2024/4/30 16:58:34 - React学习笔记(四)--- 组件通讯
一、组件通讯概念 在React中,组件是独立且封闭的单元,在默认情况下,组件state中的数据是私有数据,组件只能使用自身的数据。但是在实际项目开发过程中,我们的页面是由多个组件共同组成的,而这些组件之间…...
2024/4/7 15:37:59 - Java语言中的容器、容器结构
程序中的容器用来容纳和管理信息。比如:新闻网站的新闻列表、教育网站的课程列表、视频课程信息都是用容器来管理。 事实上,我们以前学过的数组就是一种容器,可以在其中放置对象或者基本类型数据。 数组优势:数组是一种简单的线…...
2024/4/18 13:31:03 - html网页鼠标样式、css精灵、iconfont、过渡动画笔记
总结: 插入图片:margin padding float postion width height 背景图片 background控制 background-size 大小 background-position 位置 鼠标样式 <!DOCTYPE html><html lang"en"><head><meta charset"U…...
2024/4/30 18:12:50 - Spring注入Bean
主要总结Autowired和Resource 1.项目结构: 编辑 添加图片注释,不超过 140 字(可选) 2.pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4…...
2024/4/14 9:37:43 - SLAM GMapping(7)粒子和轨迹
SLAM GMapping(7)粒子和轨迹1. 粒子2. 轨迹3. 更新轨迹权重3.1. 粒子权重归一化3.2. 重置轨迹树3.3. 更新轨迹树权重1. 粒子 在 《SLAM GMapping(4)SLAM处理器》 中粒子滤波更新的每个粒子都独立的记录了一条可能的机器人轨迹和环…...
2024/4/14 9:37:28 - 设计模式之装饰模式(结构型)
1、简介 1.1 定义 装饰器模式(Decorator Pattern)增加一个装饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为装饰类的构造函数的参数,可以实现对现有对象功能的拓展,使类功能更加灵活。装饰模式属于结构型模…...
2024/4/19 15:35:38 - 科大星云诗社动态20201201
【每日一诗】 2020.12.01 忆江南 其一 秋日美 南七宛如虹 银杏枝头秋意闹,柳条曼妙和秋风 惬意动秋容 其二 秋日暖 最暖在湖中 也西静坐闻鸟语,斜晖信步遇狸奴 散漫又从容 其三 秋日好 时光太匆匆 昼出暖阳衣单衣,夜回孤月寒意浓 …...
2024/4/14 9:38:44 - Linux实操:用户管理
一、基本介绍 用户管理中有三种概念用户、组、家目录 1、每个用户都至少属于一个组,也可以一个用户属于多个组,一个组也可以有多个用户 2、每个用户都会有一个家目录 useradd xm 此命令会创建一个组名为xm的组、xm用户和文件夹名为xm的家目录 二、用户…...
2024/4/18 16:22:30 - 2021年煤矿采煤机(掘进机)操作试题及解析及煤矿采煤机(掘进机)操作考试试题
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:煤矿采煤机(掘进机)操作试题及解析考前必练!安全生产模拟考试一点通每个月更新煤矿采煤机(掘进机)操作考试试题题目及答…...
2024/4/7 15:37:51 - 对比学习视角重新审视推荐系统
目录 1 什么是对比学习 1.1 对比学习的渊源和谱系 1.2 什么是对比学习系统...
2024/4/14 9:38:39 - 【个人笔记】OpenCV4 C++ 快速入门 09课
个人资料,仅供学习使用 修改时间——2022年1月21日 22:54:13 学习课程:OpenCV4 C 快速入门视频30讲 视频老师:贾志刚 09 Opencv自带颜色表操作 opencv知识点: opencv4的颜色表applyColorMap - 应用图像映射 本科所解决的问题&a…...
2024/4/14 9:38:14 - 你真的会画时序图吗?
文章目录一、WaveDrom功能二、WaveDrom的使用三、绘制时序图四、时序图教程五、逻辑电路图教程六、Github主页七、VScode中使用Waveform摘要:WaveDrom是一个免费开源的在线数字时序图渲染引擎。它可以使用JavaScript, HTML5和SVG来将时序图的WaveJSON描述转成SVG矢量…...
2024/4/24 18:07:27 - 【第二届青训营-寒假前端场】- 「前端动画实现」笔记
动画的基本原理动画是什么动画发展史计算机动画前端动画分类css动画animation-nameanimation-durationanimation-timing-functionanimation-delayanimation-iteration-countanimation-directionanimation-fill-modeanimation-play-state**transform** APIkeyframe实现动画svg实…...
2024/4/18 3:04:02 - 2021年广西省安全员B证考试题及广西省安全员B证模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:2021年广西省安全员B证考试题为正在备考广西省安全员B证操作证的学员准备的理论考试专题,每个月更新的广西省安全员B证模拟考试祝您顺利通过广西省安全员B证考试。 1、…...
2024/4/14 9:38:19 - Java中ElasticSearch的各种查询(普通,模糊,前缀,高亮,聚合,范围)
1、term&terms查询 1.1 term查询(分页) term的查询是代表完全匹配,搜索之前不会对你搜索的关键字进行分词,对你的关键字去文档分词库中去匹配内容。 ElasticSearch查询语法: # term查询 POST /sms-logs-index/sms-logs-type/_search {"from&q…...
2024/4/5 4:38:04
最新文章
- 访学/博后/联培博士关注|不同国家的英语口音辨识度训练
在访问学者、博士后及联合培养的申请过程中,接收方多数都要求英文面试。如果导师的母语为非英语国家,将会带有口音,这样更增加了英语面试难度。如何提升不同国家的英语口音辨识度,使自己的英语表达更加流利,知识人网小…...
2024/4/30 20:54:16 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - golang的引用和非引用总结
目录 概述 一、基本概念 指针类型(Pointer type) 非引用类型(值类型) 引用类型(Reference Types) 解引用(dereference) 二、引用类型和非引用类型的区别 三、golang数据类型…...
2024/4/30 7:48:08 - WPS二次开发专题:如何获取应用签名SHA256值
作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在申请WPS SDK授权版时候需要开发者提供应用包名和签…...
2024/4/30 4:38:48 - R语言做两次分类,再做两两T检验,最终输出均值和pvalue
1.输入文件: 2.代码: setwd("E:/R/Rscripts/rG4相关绘图")# 加载所需的库 library(tidyverse)# 读取CSV文件 data <- read.csv("box-cds-ABD-不同类型rg4-2.csv", stringsAsFactors FALSE)# 组合Type1和Type2:通过…...
2024/4/30 2:26:11 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57