问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

uboot是什么?

发布网友 发布时间:2022-04-23 13:23

我来回答

5个回答

热心网友 时间:2023-10-15 11:54

  u-boot是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序,通过它,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的软硬件环境,为最终调用操作系统内核做好准备。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。
  u-boot目录结构:
  1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现;
  2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件;
  3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录;
  4、Doc是文档目录,有u-boot非常完善的文档;
  5、Drivers中是u-boot支持的各种设备的驱动程序;
  6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统;
  7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件;
  8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现;
  9、Tooles是生成U-boot的工具。
  其中比较重要的目录就是/board、/cpu、/drivers和 /include目录,如果想实现u-boot在一个平台上的移植,就要对这些目录进行深入的分析。
  u-boot的启动过程:
  系统启动的入口点。既然我们现在要分析u-boot的启动过程,就必须先找到u-boot最先实现的是哪些代码,最先完成的是哪些任务。另一方面一个可执行的image必须有一个入口点,并且只能有一个全局入口点,所以要通知编译器这个入口在哪里。由此我们可以找到程序的入口点是在/board /lpc2210/u-boot.lds中指定的,其中ENTRY(_start)说明程序从_start开始运行,而他指向的是cpu /arm7tdmi/start.o文件。因为我们用的是ARM7TDMI的cpu架构,在复位后从地址0x00000000取它的第一条指令,所以我们将Flash映射到这个地址上,这样在系统加电后,cpu将首先执行u-boot程序。
  u-boot的启动过程是多阶段实现的,分了两个阶段:
  第一阶段是用汇编写的,主要任务是:
  1、CPU 自身初始化:包括MMU,Cache,时钟系统,SDRAM 控制器等的初始化;
  2、重定位:把自己从非易失性存储器搬移到 RAM 中;
  3、分配堆栈空间,设置堆栈指针;
  4、清零 BSS 数据段;
  5、跳转到第二阶段入口函数 start_armboot();
  第二阶段是用C写的,主要任务是:
  1、为 U-boot 内部私有数据分配存储空间,并清零;
  2、依次调用函数指针数组 init_sequence 中定义的函数进行一系列的初始化;
  3、如果系统支持 NOR Flash,调用flash_init ()和display_flash_config ()初始化并显示检测到的器件信息;
  4、如果系统支持 LCD 或VFD,调用lcd_setmem()或vfd_setmem()计算帧缓(Framebuffer)大小,然后在BSS 数据段之后为Framebuffer 分配空间,初始化gd->fb_base 为Framebuffer 的起始地址;
  5、调用 mem_malloc_init()进行存储分配系统(类似于C 语言中的堆)的初始化和空间分配;
  6、如果系统支持 NAND Flash,调用nand_init ()进行初始化;
  7、如果系统支持 DataFlash,调用AT91F_DataflashInit()和dataflash_print_info()进行初始化并显示检测到的器件信息;
  8、调用 env_relocate ()进行环境变量的重定位,即从Flash 中搬移到RAM 中;
  9、如果系统支持 VFD,调用drv_vfd_init()进行VFD 设备初始化;
  10、从 环 境 变 量 中 读 取 IP 地址和MAC 地址, 初始化gd->bd-> bi_ip_addr 和gd->bd->bi_enetaddr;
  11、调用 jumptable_init ()进行跳转表初始化,跳转表在global_data 中,具体用途尚不清楚;
  12、调用 console_init_r()进行控制台初始化;
  13、如果需要,调用 misc_init_r ()进行杂项初始化;
  14、调用 enable_interrupts ()打开中断;
  15、如果需要,调用board_late_init()进行单板后期初始化,对于AT91SAM9260EK,主要是以太网初始化;
  16、进入主循环:根据用户的选择启动 linux,或者进入命令循环执行用户输入的命令;
  这部分是一些相对变化不大的部分,我们针对不同的板子改变它调用的一些初始化函数,并且通过设置一些宏定义来改变初始化的流程,所以这些代码在移植的过程中并不需要修改,也是错误相对较少出现的文件。在文件的开始先是定义了一个函数指针数组,通过这个数组,程序通过一个循环来按顺序进行常规的初始化,并在其后通过一些宏定义来初始化一些特定的设备。在最后程序进入一个循环,main_loop。这个循环接收用户输入的命令,以设置参数或者进行启动引导。

热心网友 时间:2023-10-15 11:55

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

拓展资料:

选择U-Boot的理由:

① 开放源码;

② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;

③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS;

④ 较高的可靠性和稳定性;

⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;

⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;

⑦ 较为丰富的开发调试文档与强大的网络技术支持。

热心网友 时间:2023-10-15 11:55

universal boot loader, 开机后执行的第一段程序,是开源的,一般用来启动嵌入式设备。
官网: http://www.denx.de/wiki/U-Boot/WebHome

热心网友 时间:2023-10-15 11:56

U-Boot,全称Universal BootLoader,是遵循GPL条款的开放源码项目。

热心网友 时间:2023-10-15 11:57

linux或者其他一些embeded OS开机启动就跑的一段代码~

热心网友 时间:2023-10-15 11:54

  u-boot是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序,通过它,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的软硬件环境,为最终调用操作系统内核做好准备。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。
  u-boot目录结构:
  1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现;
  2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件;
  3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录;
  4、Doc是文档目录,有u-boot非常完善的文档;
  5、Drivers中是u-boot支持的各种设备的驱动程序;
  6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统;
  7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件;
  8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现;
  9、Tooles是生成U-boot的工具。
  其中比较重要的目录就是/board、/cpu、/drivers和 /include目录,如果想实现u-boot在一个平台上的移植,就要对这些目录进行深入的分析。
  u-boot的启动过程:
  系统启动的入口点。既然我们现在要分析u-boot的启动过程,就必须先找到u-boot最先实现的是哪些代码,最先完成的是哪些任务。另一方面一个可执行的image必须有一个入口点,并且只能有一个全局入口点,所以要通知编译器这个入口在哪里。由此我们可以找到程序的入口点是在/board /lpc2210/u-boot.lds中指定的,其中ENTRY(_start)说明程序从_start开始运行,而他指向的是cpu /arm7tdmi/start.o文件。因为我们用的是ARM7TDMI的cpu架构,在复位后从地址0x00000000取它的第一条指令,所以我们将Flash映射到这个地址上,这样在系统加电后,cpu将首先执行u-boot程序。
  u-boot的启动过程是多阶段实现的,分了两个阶段:
  第一阶段是用汇编写的,主要任务是:
  1、CPU 自身初始化:包括MMU,Cache,时钟系统,SDRAM 控制器等的初始化;
  2、重定位:把自己从非易失性存储器搬移到 RAM 中;
  3、分配堆栈空间,设置堆栈指针;
  4、清零 BSS 数据段;
  5、跳转到第二阶段入口函数 start_armboot();
  第二阶段是用C写的,主要任务是:
  1、为 U-boot 内部私有数据分配存储空间,并清零;
  2、依次调用函数指针数组 init_sequence 中定义的函数进行一系列的初始化;
  3、如果系统支持 NOR Flash,调用flash_init ()和display_flash_config ()初始化并显示检测到的器件信息;
  4、如果系统支持 LCD 或VFD,调用lcd_setmem()或vfd_setmem()计算帧缓(Framebuffer)大小,然后在BSS 数据段之后为Framebuffer 分配空间,初始化gd->fb_base 为Framebuffer 的起始地址;
  5、调用 mem_malloc_init()进行存储分配系统(类似于C 语言中的堆)的初始化和空间分配;
  6、如果系统支持 NAND Flash,调用nand_init ()进行初始化;
  7、如果系统支持 DataFlash,调用AT91F_DataflashInit()和dataflash_print_info()进行初始化并显示检测到的器件信息;
  8、调用 env_relocate ()进行环境变量的重定位,即从Flash 中搬移到RAM 中;
  9、如果系统支持 VFD,调用drv_vfd_init()进行VFD 设备初始化;
  10、从 环 境 变 量 中 读 取 IP 地址和MAC 地址, 初始化gd->bd-> bi_ip_addr 和gd->bd->bi_enetaddr;
  11、调用 jumptable_init ()进行跳转表初始化,跳转表在global_data 中,具体用途尚不清楚;
  12、调用 console_init_r()进行控制台初始化;
  13、如果需要,调用 misc_init_r ()进行杂项初始化;
  14、调用 enable_interrupts ()打开中断;
  15、如果需要,调用board_late_init()进行单板后期初始化,对于AT91SAM9260EK,主要是以太网初始化;
  16、进入主循环:根据用户的选择启动 linux,或者进入命令循环执行用户输入的命令;
  这部分是一些相对变化不大的部分,我们针对不同的板子改变它调用的一些初始化函数,并且通过设置一些宏定义来改变初始化的流程,所以这些代码在移植的过程中并不需要修改,也是错误相对较少出现的文件。在文件的开始先是定义了一个函数指针数组,通过这个数组,程序通过一个循环来按顺序进行常规的初始化,并在其后通过一些宏定义来初始化一些特定的设备。在最后程序进入一个循环,main_loop。这个循环接收用户输入的命令,以设置参数或者进行启动引导。

热心网友 时间:2023-10-15 11:55

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

拓展资料:

选择U-Boot的理由:

① 开放源码;

② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;

③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS;

④ 较高的可靠性和稳定性;

⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;

⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;

⑦ 较为丰富的开发调试文档与强大的网络技术支持。

热心网友 时间:2023-10-15 11:55

universal boot loader, 开机后执行的第一段程序,是开源的,一般用来启动嵌入式设备。
官网: http://www.denx.de/wiki/U-Boot/WebHome

热心网友 时间:2023-10-15 11:56

U-Boot,全称Universal BootLoader,是遵循GPL条款的开放源码项目。

热心网友 时间:2023-10-15 11:57

linux或者其他一些embeded OS开机启动就跑的一段代码~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑wifi已禁用怎么打开电脑无线网络禁用了怎么恢复 ...禁用网络在哪重开win7笔记本无线网络被禁用了怎么办 win7网络禁用怎么恢复 windows7网络被禁用怎么恢复 Win7系统本地连接禁用了怎么恢复Win7系统启动本地连接的两种方法图文... 梦见家人去世什么预兆 ...经缝针现在基本痊愈,一个月过去了现在就是小腿还不能贴大腿,最近感... 小腿缝针拆线三个月了表皮长好了里面的肉怎么有点带黑红色还有点白色... 小腿迎面骨掉快深宽都1厘米左右的肉。当时没缝针。已经20天了。天天... 运费和快递费各走 什么科目? 快递费用放什么科目 监控摄像头的电源断开后再连接还会再录像吗? 监控摄像头电源该如何选择? 监控摄像头直接接到220伏电源上行吗? 监控摄像机电源是什么? 监控摄像头在电源拔掉的时候为什么监控摄像头还在亮?没电还能录像吗... 监控摄像头的电源一般是几伏几安的? 视频安防监控中摄像机的电源一般在什么地方 柔顺剂的正确使用方法是什么? 西门子柔顺剂放在洗衣机哪个格子里 TCL 滚筒洗衣机 这三个槽分别是怎么使用哪个槽是倒洗衣粉 哪个槽是倒洗衣粉。哪个槽是倒柔顺剂的 什么笔记本能玩魔兽世界? 玩魔兽用什么笔记本电脑好点 笔记本电脑玩魔兽世界配置 请向我推荐几款能顺畅的玩魔兽世界的笔记本电脑 可以玩魔兽世界的笔记本电脑,要性价比高的 能玩魔兽世界的笔记本电脑(最低配置) 玩魔兽世界笔记本电脑要求什么配置 那几款的笔记本电脑,可以较好的玩魔兽世界 什么笔记本电脑玩魔兽好 推荐几款适合玩魔兽世界的笔记本电脑,真正懂的进 电脑开机蓝屏显示unmountable boot volume,而且进入安全模式也是这个样子 电脑一开机就显示bootboot界面,我有u 盘启动器可可是不知道那么设置启动呀 boot进入U盘启动但是没有打开U盘里的PE,进入了硬盘里面的系统怎么回事 mac装win7时显示booting from boot camp assistant created usb drive...failded to load BOOTMGR uboot怎么设置参数,引导进入recovery hisense的手机开机出现Uboot-toou 开不了机是怎莫回事 索尼NEX5好不好? sony nex5比专业单反相机差在哪里呢?求高手解释 索尼NEX5的概述: Sony NEX3和NEX5有什么区别?值得购买么? 索尼微单相机NEX-5怎么样 最高ISO12800 索尼NEX5低照度表现说明 索尼NEX-5值得购买吗? 索尼nex5有wifi功能吗? 索尼NEX5的操作使用 索尼NEX5的介绍 索尼nex5系列哪个好呢? 用于旅游拍照,想要画质好点的。 索尼nex5港版和国行版具体有什么区别? 索尼nex5怎么恢复出厂设置 OPPO手机如何让王者荣耀和钉钉同时开启?