电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电子发烧友网>嵌入式技术>嵌入式操作系统>Linux启动过程中硬件模块的加载

Linux启动过程中硬件模块的加载

收藏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论

查看更多

相关推荐

以s3c2440为例的arm芯片的启动过程

本文将以s3c2440为例详细讲述 arm 芯片的启动过程。s3c2440支持两种启动模式:NAND FLASH 启动和非 NAND FLASH 启动(一般是NOR FLASH 启动,并且可以配置数据宽度),通过 OM1、OM0 两个管脚来控制。
2020-12-02 14:13:443154

STM32H7的启动过程分析

本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。
2022-10-17 14:42:521494

ARM Cortex-M0 DesignStart系列--4启动过程分析

书接上文《ARM_Cortex-M0 DesignStart系列--3rtl仿真过程的详细分析》,本文基于hello这个case,对Cortex M0的启动过程做一个详细的分析,其实整个ARM Cortex M系列的启动过程都是很相似的,这对我们理解SoC的启动过程会很有帮助。
2022-11-10 09:05:252121

详解STM32启动过程

本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。
2022-11-14 11:24:111580

linux系统是怎么启动的?

每次打开 Linux PC 时,它都会经历一系列阶段,然后最终显示提示输入用户名或密码的登录屏幕。每个 Linux 发行版在典型的启动过程中都会经历 4 个不同的阶段。
2022-12-12 11:50:00674

linux驱动程序的主要流程和功能

介绍Linux驱动程序的主要流程和功能。 一、驱动程序的加载和初始化 Linux系统在启动过程中,会自动加载已安装的设备驱动程序。加载驱动程序的过程一般分为三个阶段,即启动阶段、模块加载阶段和设备注册阶段。 启动阶段:操作系统在启
2023-12-08 14:56:02668

专家揭秘:STM32启动过程全解

电子发烧友网核心提示: 本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍、启动代码的陈列以及深入解析。 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的
2012-09-10 08:50:1752640

Linux启动过程详解

1、Linux 基础安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命
2021-11-02 07:01:06

Linux内核启动过程和Bootloader(总述)

在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最根本的功能就是为了启动 Linux 内核。2.1 Bootloader的概念和作用 Bootloader是嵌入式系统的引导加载程序,它是
2012-08-18 17:35:24

Linux和Windows系统启动过程的简单分析

AT PPC.....bootloader特性:以命令为基础。一旦引导启动系统后,bootloader就不存在。Linux和Windows启动过程中,基本的原理都差不多,都先加载一个bootloader来初始化硬件设备,为系统运行做好准备;对于硬盘的识别,Windows是以盘来识别,而Linux是采用根文件系统 。最后才是启动一个应用程序。
2017-08-28 11:27:47

Linux启动过程分析说明

Linux 启动过程分析
2020-06-15 11:49:29

DM8127启动过程中M3核死机

hi,你好:DM8127是多核包括A8,两个M3和一个DSP,四个核心。我有几块开发板,其中一块开发板总是在加载M3核的时候程序会死机。问题:1.板子在启动过程中,连续加载两个M3核的时候会出现死机
2020-04-15 09:12:35

PCIe启动过程中C6678程序加载

在DSP上运行的代码量很大,过程繁琐。 请问有没有方法将DSP程序直接在DSP上自启动,不需要通过Host  PC发送。我想是否能实现板卡能通过PCIe模式启动时,自动加载flash的DSP程序?? 当然只要有方法能满足 将DSP的数据通过PCIE传输至Host  PC即可! 多谢大家!
2018-06-19 05:08:19

STM32启动过程

一、STM32 启动过程通过Boot引脚设定,寻找初始地址初始化栈指针 __initial_sp指向复位程序 Reset_Hander设置异常中断 HardFault_Handler设置系统时钟
2021-08-11 06:02:55

STM32F429启动过程详解

第13章 STM32F429启动过程详解本章教程主要跟大家讲STM32F429的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分
2021-08-03 06:15:08

STM32H7启动过程详解

第13章 STM32H7启动过程详解本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。启动过程相对来说还是比较重要的,理解...
2021-08-03 06:41:52

STM32WBA Nucleo-64设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY,为什么?

使用ST官方的STM32WBA Nucleo-64板子, 当设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY; 设置主频为16MHz的时候,可以正常完成初始化。 使用的是CodeMx生成的工程 这是啥原因呢?看手册也没找到原因
2024-03-14 08:28:11

STM32整个启动过程是怎样的

STM32整个启动过程是怎样的?整个启动过程涉及的代码有哪些呢?
2021-11-29 06:59:04

STM32的启动过程是怎样的?

STM32的启动过程是怎样的?
2021-11-30 06:08:48

U-Boot启动过程--详细版的完全分析

Boot Record,主引导记录)的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。然而在嵌入式系统通常没有像BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成。它主要的功能是加载与引导内核映像 ,具体U-Boot启动过程见附件资料。
2015-12-12 22:50:12

android--系统启动--init进程启动过程如何

android--系统启动--init进程启动过程
2020-05-29 10:35:36

namenode的启动过程

源码HDFS之NameNode:启动过程
2019-06-13 14:12:58

nand板子启动过程中报错如何解决

手里有块nand的板子,最近注意到系统启动过程中报错:[ 2.046495] rtc-rx8010 0-0032: Unable to read registers #32..#32
2022-01-10 06:38:39

uCLinux内核启动过程是怎样实现的?

什么是uCLinux操作系统?uCLinux内核启动过程是怎样实现的?
2021-04-23 06:09:30

uboot启动过程中延时修改

uboot启动过程中延时修改uboot启动过程中如何延时修改,许多人都会有这样的问题,下面来学习一下如何解决这个问题,以下是我的步骤,大家可以借鉴,希望对你们有所帮助哦!平台:sail-imx6系统
2019-11-01 16:29:48

【Intel Edison试用体验】[硬件] 底层硬件探索 and 启动过程分析(小k - NO.02)

是对MCU进行下载程序和调试都得经过Atom处理器。Atom运行的 yocto Linux 是基于RAM运行的,Quark的RTOS是基于ROM运行的。两者有什么区别呢?基于RAM的就是在系统启动过程中
2016-07-25 16:34:27

【OK210试用体验】+ 《uboot启动过程分析》

(DDR);BL2加载内核,把OS在SDRAM运行起来,最终OS是运行在SDRAM(内存)的。在这个过程中,u-boot需要初始化的硬件是CPU和DDR,所以,这两个硬件必须在u-boot阶段就做
2015-08-26 21:12:14

【OK210试用体验】+ 《uboot启动过程分析》

的。在这个过程中,u-boot需要初始化的硬件是CPU和DDR,所以,这两个硬件必须在u-boot阶段就做好初始化的工作。操作系统的内核映像一般是存储在 Flash 上的,当 Bootloader 将内核
2015-08-25 12:36:20

【Rico Board试用体验】通过终端输出分析启动程序

Linux系统开发一般包括以下几个步骤:启动代码uboot,内核 uImage,文件系统,应用程序。这几个部分在系统启动过程中都会在串口终端打印出来。在启动过程中,我分别截了几张图,下面会贴出来
2016-11-20 17:55:09

一次性搞定stm32启动模式与启动过程

一次性搞定stm32启动模式与启动过程一、stm32启动模式二、从flash启动过程2.1 数据在堆栈存储方式2.2 stm32的正常启动过程三、总结一、stm32启动模式这三种模式请看下列图示
2022-02-15 06:53:44

主板的硬启动过程是怎样的

主板的硬启动过程是怎样的?主板不过电怎么办?
2021-10-25 08:54:26

单片机启动过程是怎样的?

单片机启动过程是怎样的?
2021-11-30 07:44:19

单片机的启动过程是怎样的

启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-29 06:47:25

双向可控硅电机启动过程中无法关断 ,帮我看看啥原因

这是电机启动过程的电流波形,我们让导通角先增大,后减小,尝试了很多方法,还是会有大电流。是不是因为电机启动过程中,电流滞后电压角度增大导致的?电机空载启动的时候,电流滞后电压会不会达到上图中的程度?
2017-01-05 15:29:12

Linux启动过程中, 想将PC13 pin配置为输出/拉起,如何修改设备树?

Linux 启动过程中, 我想将 PC13 pin 配置为输出/ 拉起 。 我该如何修改设备树 。
2023-11-13 06:21:04

硬件设计过程中该怎么选择合适的电源模块来为芯片供电?

硬件设计过程中该怎么选择合适的电源模块来为芯片供电?
2021-09-28 08:55:07

在imx8qxp处理器启动过程中,CPU1、2、3 无法上线怎么解决?

我在 imx8qxp 处理器启动过程中遇到问题,CPU1、2、3 无法上线。我使用的是 imx-yocto-L5.4.24_2.1.0 版本。问题与scfw的配置有关吗?
2023-03-17 07:55:29

嵌入式Linux系统的构成和启动过程

文章目录一、嵌入式Linux系统构成二、嵌入式Linux系统启动过程在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式
2021-12-16 06:20:24

嵌入式linux开发过程中硬件问题都有哪些你想不到的呢

嵌入式linux开发过程中逗比的硬件问题
2021-12-21 06:47:52

我如何在启动过程中跳过BAF部分呢?

BAF配置DCF寄存器的BAF_BYPASS字段是否被用户修改。如果是,我可以在哪个模块下找到它?我无法在 Lauterbach 调试器中找到它。如果不是,我如何在启动过程中跳过 BAF 部分?- 我的设备有预编程的 BAF 区域。谢谢!
2022-12-08 06:50:10

求大佬分享关于N32926启动过程

大家好,最近在使用n32926做网络摄像头功能,查阅了一下新塘的SDK发现没有**介绍n32926的详细启动过程。之前用6410都是由uboot来引导linux 内核,现在先想自己实现一个uboot类似功能的bootloader但是由于不了解n32926的启动流程无从下手,请大神们援助。
2023-06-25 06:29:59

玩转Zynq连载1——Zynq的linux启动过程

`玩转Zynq连载1——Zynq的linux启动过程更多资料共享 链接:https://share.weiyun.com/5s6bA0s1概述 简单的,以ug585的一张图来看,从大的方面说
2019-04-16 06:56:32

解析STM32的启动过程

stm32系列芯片的种类和型号都有哪些?STM32的启动过程是怎样的?
2021-10-29 06:39:51

解析STM32的启动过程(转载)

解析STM32的启动过程(转载)
2013-11-11 08:41:46

讲STM32H7的启动过程

第13章 STM32H7启动过程详解本章教程主要跟大家讲STM32H7的启动过程,这里的启动过程是指从CPU上电复位执行第1条指令开始(汇编文件)到进入C程序main()函数入口之间的部分。启动过程相对来说还是比较重要的,理解了这个过程,...
2021-08-03 06:15:04

请问stm32启动过程是怎样的?

请问stm32启动过程是怎样的?
2021-10-29 06:31:08

运行伺服时模组移动过程中声音很大的原因是什么?怎么解决?

运行伺服时模组移动过程中声音很大的原因是什么?怎么解决?
2021-10-08 08:45:39

一种基于ARM-Linux的FPGA程序加载方法

本文实现了一种基于ARM-Linux 的FPGA 程序加载方法,详细讨论了加载过程中各个阶段程序对配置管脚的操作,给出了硬件实现,编写了运行于ARM 处理器的嵌入式Linux上的驱动程序。
2009-12-19 16:26:2630

at91rm9200启动过程教程

at91rm9200启动过程教程 系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两
2010-03-08 15:57:1444

系统启动过程

系统启动过程系统启动过程主要由一下几步组成(以硬盘启动为例):1. 开机2. BIOS 加电自检 ( Power On Self Test -- POST ),内存地址为 0ffff:00003. 将硬盘第一个
2009-10-11 12:17:262102

电力系统黑启动过程中发电机失磁保护运行分析

电力系统黑启动过程中特殊的开关操作以及运行方式都会影响到继电保护装置的安全性和可靠性。本文简述了发电机低励、失磁保护的主要原理、并且利用MATLAB 中PSB 及Simulink 的部分元
2011-05-28 10:56:2927

嵌入式uCLinux内核启动过程分析

分析uCLinux的启动过程,可以加快系统启动速度、正确建立应用环境。本文要研究的就是uCLinux操作系统内核的启动过程
2011-08-15 16:51:42727

IC启动过程及Vcc电压波形的认知

IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知IC启动过程及Vcc电压波形的认知
2015-12-22 14:46:5510

Windows XP 启动过程详解

我们每天都在和 Windows 打交道,很多人可能每天都要面对多次 Windows 的启动过程,可是您知道在 Windows 的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启动分为几个步骤?在这些步骤中计算机中发生了什么事情?这些就是本文告诉您的。
2016-11-10 18:24:1511

国产300MW机组中压缸启动的特点及启动过程

机组采用合理启动方式对减小启动过程中的寿命损耗、缩短机组启动时间尤为重要。介绍了国产300 MW机组中压缸启动的特点及启动过程,并提出了中压缸启动存在的一些问题。
2017-10-14 10:40:3018

Linux基础命令之Linux启动过程详解

2.2 Linux启动过程详解 在了解了Linux的常见命令之后,下面详细讲解Linux启动过程Linux启动过程包含了Linux工作原理的精髓,而且在嵌入式开发过程中非常需要这方面的知识
2017-10-18 14:17:062

达芬奇数字媒体片上系统的架构和Linux启动过程

达芬奇数字媒体片上系统的架构和Linux启动过程
2017-10-21 09:53:186

嵌入式系统内核引导启动过程浅析

嵌入式系统内核引导启动过程浅析
2017-10-30 10:26:136

达芬奇DMSoC硬件部分及Linux OS的启动过程

达芬奇(DaVinci)数字媒体技术平台TMS320DM6446/3采用了ARM+DSP双核的架构,本文从芯片的硬件结构入手介绍达芬奇DMSoC硬件部分及Linux OS的启动过程。 达芬奇
2017-11-06 10:38:140

linux内核无法启动

 Linux启动过程中会出现一些故障,导致系统无法正常启动,本文列举了几个应用单用户模式、GRUB命令操作、Linux救援模式的典型故障修复案例帮助读者了解此类问题的解决。
2017-11-14 17:26:032601

pxe远程启动过程分析

PXE是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行
2017-11-20 16:25:577444

详解bootloader的执行流程与ARM Linux启动过程分析

RM Linux启动过程分析是本文要介绍的内容,嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux启动过程也有所不同。 本文
2017-12-21 09:24:5310115

openwrt启动过程详细分析

OpenWrt是一个开放的linux平台,主要用于带wifi的无线路由上。类似于Ubuntu、Red Hat、之类的linux发行版本,它也有一套自己的启动流程。本文主要介绍了openwrt启动过程及详细分析。
2017-12-27 09:17:3912397

Linux系统开机和启动过程

分别为iOS操作系统,Android操作系统。而今天小编就给大家着重讲讲Linux系统开机和启动过程。 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核
2018-07-09 11:53:151681

走进Linux之systemd启动过程

Linux系统的启动方式有点复杂,而且总是有需要优化的地方。传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足
2019-04-27 19:14:002917

Linux 系统启动过程分析

了基本的硬件驱动,在系统安装过程中会检测系统硬件信息,根据安装信息和系统硬件信息将一部分设备驱动写入 initrd 。这样在以后启动系统时,一部分设备驱动就放在initrd中来加载。这里有必要给大家再多
2019-04-02 14:32:33295

Linux开机引导和启动过程详解

启动阶段接管了剩余工作,直到操作系统进入可操作状态。总体来说,Linux 的开机引导和启动过程是相当容易理解,下文将分节对于不同步骤进行详细说明。BIOS 上电自检(POST)引导装载程序 (GRUB2
2019-04-02 14:46:45353

一文知道MCU上电复位启动过程

MCU上电(复位)时,从固定的地址启动,一般是地址0x00000000,如ARM7;个别特殊的如STM32默认启动地址为0x8000000(flash区启动)。启动过程主要完成两部分工作,一个是硬件执行环境,如中断向量表、寄存器、看门狗等,另一个是软件环境,如C库环境、ZI(未初始化的内存变量)等。
2019-10-08 10:37:1812073

电源模块在通电后可能难以启动的原因分析

首先是破坏性较小的情况。——电源模块启动过程中难以启动,甚至无法启动
2020-03-08 11:11:003016

分析STM32的三种上电启动过程

上一篇文章我写了STM32的RAM和Flash,文章最后我建议大家来深入研究一下STM32上电启动过程。同时有小伙伴留言说想让我讲一下IAP(在线升级程序)。其实如果搞懂STM32的上电启动过程,那么IAP就可以信手拈来了。下面我们一起来研究研究。
2020-05-03 18:03:007207

STM32的启动过程是怎么样的?

下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程。 STM32上电或者复位后,代码区始终从0x00000000开始,其实就是将存储空间的地址映射到0x00000000中。三种启动模式如下: 从主闪存存储器启动,将主Flash地
2020-11-27 16:36:443309

TMS320F2812的启动过程详细说明

芯片启动过程是芯片上电之后做的事情,几乎是瞬间完成的流程。涉及到了芯片自身硬件启动过程、固化在芯片中的启动程序的执行、以及进入操作系统之前的CPU的工作流程。2812的启动也可以使用上述的流程来分析,下面简要的介绍下2812的启动流程。
2021-03-25 15:10:0022

BootLoader与MCU启动过程

ARM之Cortex M3的启动过程目前,多数MCU厂商都提供一个启动文件。当然,编程者也可以自己编写启动文件,具体编写要求ARM的网站上都有相关文档进行说明。下面分析一下STM32启动文件
2021-10-25 16:36:0310

MCU和SOC启动过程对比

:电源->Bootloader(引导操作系统启动)->Linux内核->文件系统(根据功能划分,如div中是硬件,home是工作目录,带访问权限)x86Intel 如winsows OS启动过程:电源 ->BIOS-》windows内核-》C、D盘->程序启动(如Q
2021-10-25 19:21:067

嵌入式Linux操作系统引导加载程序BootLoarder

嵌入式Linux操作系统引导加载程序BootLoarderBootLoarder是什么Linux操作系统分层BootLoarderBootLoader操作模式BootLoader启动过程
2021-11-01 17:05:508

STM32上电后启动过程

STM32上电后启动过程
2021-11-15 18:21:0216

单片机的启动过程

启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-17 10:21:038

单片机的启动过程

启动过程简介单片机的启动过程是加电后,先运行芯片内部固有程序(这个程序是用户访问不到也改写不了的),即启动代码。启动代码程序建立完运行环境后,会去读串口状态,就是用户下载程序用到的各个端口,判断用户
2021-11-19 12:06:0754

stm32启动过程

一次性搞定stm32启动模式与启动过程一、stm32启动模式二、从flash启动过程2.1 数据在堆栈中存储方式2.2 stm32的正常启动过程三、总结一、stm32启动模式这三种模式请看下列图示
2021-12-16 16:57:058

STM32启动过程分析

之后,非常有助于我们理解 STM32 启动过程中还做了哪些隐藏的工作。关于详细的程序和数据存储分布信息,我们可以从Keil生成的 .map 文件中得到,要生成 .map 文件操作如下:1.1 STM32的程序在flash上的存储结构STM32 的程序在 Flash 上的存储结构如下图所示:栈顶指针 M
2021-12-23 19:55:4511

从库函数看STM32时钟启动过程

本文基于ST32F407ZGT6编写——————————————时钟系统是单片机的心脏,单片机初始化的第一步就是时钟系统的初始化。本文是基于STM32的库函数对时钟系统启动过程进行分析。启动过程需要
2022-01-14 15:52:020

SpringBoot如何实现启动过程中执行代码

目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。
2022-06-20 17:32:481096

linux内核启动过程会执行用户空间的init进程

linux内核启动过程的后期,在kernel_init()函数代表的init线程中,会尝试执行用户空间的init进程
2022-10-14 09:12:28711

ESP32学习笔记:存储分布和启动过程

今天我们来说说ESP32 for Arduino存储分布以及启动过程
2023-07-14 15:10:381407

RL78启动过程详解

RL78启动过程详解
2023-09-28 16:39:32744

ATF的启动过程介绍

ATF的启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。 在AArch32中是不会去加载bl31而是将EL3或者Monitor模式的运行代码保存在bl32
2023-11-07 15:48:31383

logd的启动过程和内容

logd作为native service,系统启动过程通过读取rc文件来启动,相关的属性定义在如下logd.rc文件中。 2.2.1 logd启动过程 logd启动后会存在三个用来服务日志系统
2023-11-23 16:54:44279

stm32启动过程详解

STM32启动过程详解 近年来,STM32微控制器在嵌入式系统中的应用越来越广泛。STM32微控制器具有高性能、低功耗、易扩展和丰富的外设接口等优势。而要让STM32微控制器正常工作,首先要
2023-12-08 15:47:03544

已全部加载完成