1. bootloader在mcu的哪片存储区怎么看
Bootloader放在哪里要看软件工程师的习惯,Boot区理论上可以自定义放置的,通常工程师会把它放在程序区末尾。如果MCU的代码保护了,你是看不到的。
2. 嵌入式linux的bootloader的启动流程是怎样的
嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader), Linux 内核,文件系统,应用程序。
当系统首次引导时,或系统被重置时,处理器会执行一个位于Flash/ROM中的已知位置处的代码,Bootloader就是这第一段代码。它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统作为根文件系统(Root Filesystem),然后加载必要的内核模块,启动应用程序。这就是嵌入式Linux系统启动过程 Linux 引导的整个过程。
Bootloader 的启动方式:
网络启动方式。这种方式的开发板不需要较大的存储介质,跟无盘工作站有点类似,但是使用这种启动方式之前,需要把Bootloader安装到板上的EPROM或者Flash中。Bootloader通过以太网接口远程下载Linux内核映像或者文件系统。Bootloader下载文件一般都使用TFTP网络协议,还可以通过DHCP的方式动态配置IP地址。
硬盘启动方式
传统的Linux系统运行在台式机或者服务器上,这些计算机一般都使用BIOS引导,并使用磁盘作为存储介质。Linux传统上是LILO (Linux Loader) 引导,后来又出现了GUN的软件 (Grand Unified Bootloader) 。 这两种Bootloader广泛应用在X86的Linux系统上。Flash启动方式。大多数嵌入式系统上都使用Flash存储介质。Flash有很多类型,包括NOR Flash、NAND Flash和其它半导体盘。它们之间的不同在于: NOR Flash 支持芯片内执行(XIP, eXecute In Place),这样代码可以在Flash上直接执行而不必拷贝到RAM中去执行。而NAND Flash并不支持XIP,所以要想执行 NAND Flash 上的代码,必须先将其拷贝到 RAM中去,然后跳到 RAM 中去执行。NOR Flash 使用最为普遍。Bootloader一般放在Flash的底端或者顶端,这需要根据处理器的复位向量来进行设置。可以配置成MTD设备来访问Flash分区。
3. 单片机串口下载的过程
STC系列单片机有一个特殊的标记,并有一段特殊的程序。当加上电源瞬间,判断到有串口有规定的通讯命令,就将随后的数据,作为程序代码写到程序存储区(EEPROM),这个过程无需用户干预,用户所做的仅仅是:1。连接好PC机和单片机的串口,2。运行下载程序,3。将编译好的机器码读到下载软件中,4。点击下载钮,5。打开单片机电源,6。观察下载进度条,待下载完成
4. AVR单片机MEGA328上的BOOTLOAD是用来干什么的有什么作用
可以理解为mega328内有两个存储区,一个是bootloader区,一个是你正常运行的程序区。 bootloader是用来监控或是下载用的,比如Arino UNO中的mega328就烧录了相应的bootloader,之后,可直接用相应的arino IDE 一体化的编译下载,很方便
5. stm32的bootloader程序是出厂自带的还是后来烧录的
一般STM32的bootloader本来就已经通过编译环境做好了,若你想自己了解活着写一下试试的话,其实编写bootloader主要事项有以下:
1、为你的bootloader程序选择存储器地址,因为STM32的存储器FLASH存储程序代码空间为512K,需要进行划分。
2、如果需要使用JTAG在线调试,则需要配置区域:
3、为您的用户程序选择合适的存储空间:
同时配置在线调试区域:
4、bootloader程序编写基本流程如下:
1)检测有无需要更新的标志,用户可自定义。比如说读取flash某位置存储的字节作为标志位。
2)如需更新,则调用STM32的FLASH程序擦鞋用户代码部分。
3)将新的bin文件(即2进制文件直接烧写进去,需要将keil生成的hex文件转换为bin文件,然后存储到外扩展的flash中)写入到STM32自带的FLASH中去,记住需要与上述设置的用户代码存储区一致。
4)更新成功后再跳转至用户程序。
5、用户程序需要注意一点,需要在程序运行前重新设置中断向量表,即:NVIC_SetVectorTable()。
6、用STM32自带的烧录软件进行烧录时,需要修改项目如下:
1)打开安装后目标文件中的map文件夹,我们所用的STM32为512Kflash,所以选取STM32_High-density_512K.STmap,将其分解为两个STmap文件(此文件可用记事本 打开)
STmap文件中,扇区是以每2K为一page来显示的,所以boot区我们只需要到page7,用户区我们需要page8到最后。
修改完成后再次打开此软件会发现多出了两个flash选项,可以根据此处来选择需要存储的代码区
6. BootLoader是什么怎么解锁
启动程序(英语:boot loader,也称启动加载器,引导程序)位于电脑或其他计算机应用上,是指引导操作系统启动的程序。引导程序启动方式及程序视应用机型种类而不同。BIOS开机完成后,bootloader就接手初始化硬件设备、创建存储器空间的映射,以便为操作系统内核准备好正确的软硬件环境。BootLoader是依赖于硬件而实现的,特别是在嵌入式领域,为嵌入式系统建立一个通用的BootLoader是很困难的。
7. 什么是bootloader
Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。[1]
对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。
反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。
在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:
1、 引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。
2、Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。
3、 文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。
4、 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。
通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对bootloader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。
8. bootloader初识
作为一个嵌入式工程师,如果不能写bootloader程序,那就不能成为一个真正的嵌入式工程师。最近在做arm项目,也会用到uboot,但是对于bootloader,我还是处于一知半解的状态。。
要了解arm的bootloader,得先了解arm体系结构。arm主要由arm内核单元,vector interface,coprocessor,两种cache(指令和数据cache),两种TCM(指令和数据TCM),MMU(内存管理),power management(电量管理)。
cache是为了平衡数据之间的速度而使用的,TCM则是为了存储一些频繁使用的数据,如中断向量等。TCM和cache是有区别的,虽然都是为了加快速度,但是TCM必须给它指定地址。TCM和cache的用途也不一样,TCM保存常用到的数据如中断向量和realtime数据,而cache只是为了加快处理器和外设之间的数据处理。
MMU主要处理虚拟地址到物理地址的转换,起到对数据的保护作用,用在操作系统的体系中。
很显然,bootloader程序就是要对后来的程序提供一个良好的运行环境,这里对arm architecture的几个组成单元进行必要的配置。
对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。 Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。
反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体 系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。
9. 为什么bootloader要去Flash上读入Linux内核
你这个问题应该分为几个部分
1 bootloader主要是负责系统初始化和系统加载的 嵌入式系统一般会把bootloader和系统内核分开存放,这样的话 系统内核损坏了的话 还可以通过bootloader进行恢复
2 linux内核一般比bootloader大很多。一个嵌入式系统,在系统刚通电的时候,根据cpu的不同,他们是从一个固定的内存地址开始运行的。一般情况下,这个固定地址会是一个ROM,其存储空间一般较小,一般用来存放bootloader。而根据板子设计的不同,系统内核是保持在flash或者其他存储介质上的。
3 bootloader在完成硬件初始化后,从存储介质上把系统内核读入到指定的内存区域,然后用一个跳转指令跳转到系统内核处开始执行 。注意,这个存储介质不一定是flash
10. 安卓手机bootrom是什么意思
BOOTROM BOOTROM插座也就是常说的无盘启动ROM接口,其是用来通过远程启动服务构造无盘工作站的。远程启动服务(Remoteboot,通常也叫 BOOTROM插槽
RPL)使通过使用服务器硬盘上的软件来代替工作站硬盘引导一台网络上的工作站成为可能。网卡上必须装有一个RPL(Remote Program Load远程初始程序加载)ROM芯片才能实现无盘启动,每一种RPL ROM芯片都是为一类特定的网络接口卡而制作的,它们之间不能互换。带有RPL的网络接口卡发出引导记录请求的广播(broadcasts),服务器自动的建立一个连接来响应它,并加载MS-DOS启动文件到工作站的内存中。 此外,在BOOTROM插槽中心一般还有一颗93C46、93LC46或93c56的EEPROM芯片(93C56是128*16bit的EEPROM,而93C46是64*16bit的EEPROM),它相当于网卡的BIOS,里面记录了网卡芯片的供应商ID、子系 带有BOOTROM插槽的网卡
统供应商ID、网卡的MAC地址、网卡的一些配置,如总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等内容。主板板载网卡的EEPROM信息一般集成在主板BIOS中。 在VxWorks嵌入式开发中,也会有BootRom,这里的BootRom是VxWorks操作系统集成的启动代码,在Tomado集成开发环境的Build菜单中可以直接编译BootRom,它的功能和U-boot类似,都是Bootloader程序。只是BootRom是由VxWorks提供的一个bootloader程序,通过它可以和Tomado集成的一些工具进行VxWorks内核的下载和调试工作。 通常,BootRom软件有以下功能: (1)通过串口下载操作系统映像; (2)通过串口升级自身映像; (3)通过串口下载系统配置文件、系统信息文件; (4)加载操作系统映像,使其正常启动; (5)其他的辅助功能,如地址内容查看功能、地址内容修改功能和bootrom菜单显示信息控制功能。 在VxWorks嵌入式开发中. Bootrom和Boot image的区别,Boot image和VxWorks image的联系和区别bootrom 是指on-chip bootrom,在CPU芯片内部,内嵌有小的boot程序(bootloader),类似于PC机主板上的BIOS的存储区域。和boot image不是一回事。VxWorks文档中的bootrom区是指boot image存放的位置。
扩展阅读:
1
BootLoader
2
U-boot
开放分类:
计算机,网卡