在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序
(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。
在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序 [1] 。
bootloader - 知乎bootloader概念:Bootloader 是应用程序运行前执行的一段固化在微控制器中的代码程序。Bootloader 是底层硬件与上层应用软件之间的一个中间接口软件。BootLoader 独立于用户应用程序,可以被编译、连接并下载到 EC…https://zhuanlan.zhihu.com/p/271663577
第二十八课:基于Linux的嵌入式平台_哔哩哔哩_bilibili内部资料【课程简介】 大连理工大学国家精品课。嵌入式软件设计是计算机、软件工程等学科的专业方向课,是一门实践性、技术性很强的重要课程。本课程的主要任务是全面介绍基于ARM/嵌入式Linux操作系统的GNU C语言程序设计思想、方法,以及基于STM32处理器和Proteus的嵌入式仿真技术。通过本课程的学习,使学生掌握嵌入式软件设计的基本流程和方法。, 视频播放量 320、弹幕量 0、点赞数 8、投硬币枚数 2、收藏人数 14、转发人数 1, 视频作者 EP自留地, 作者简介 每天进步一点点......,相关视频:第一课:嵌入式系统概述,第二十九课:BootLoader,第十八课:Linux的网络命令,第十七课:Linux的基本操作,第六课:NumPy库入门-NumPy的数组对象: ndarray,通信模组基础知识(一),认识蜂窝通信,第三课:Anaconda IDE的基本使用方法,第十六课:Linux的shell,第十五课:Linux简介,第六十八课:STM32简介https://www.bilibili.com/video/BV1eN4y1M7f9/?spm_id_from=333.788&vd_source=413c648c94462f7d61e4b4cf0840ec77BootLoader简介-汽车工程师是怎么更新ecu软件的? - 知乎bootloader是一段固化在放在FLASH中的 程序加载代码 ,连接底层硬件与应用程序。 主要功能是完成微处理器与周边电路正常运行的初始化工作,建立内存空间的映射,判断系统能否运行,将系统的软硬件环境带到一个合适…https://zhuanlan.zhihu.com/p/583069005
引导程序的主要功能是做一部分系统初始化的工作,从flash中把操作系统内核复制到RAM中,然后把系统控制权交给操作系统内核。
操作系统主要功能:为我们管理硬件,并给用户提供编程接口,和操作接口。
系统启动之后Boot Loader会立刻运行,进行系统的初始化工作,把操作系统内核从flash复制到RAM中,接下来把控制权交给存在于RAM中的系统内核,此后系统的运行和Boot Loader就没有关系了。后面完全由系统内核来控制。
文件系统里包含了常用的命令和用户的应用程序等。
在电脑中bios的目的是启动Windows操作系统,BIOS从硬盘上面读入内核,
Bootloader的最终目的是启动内核,Bootloader实质上就是一个单片机程序,只不过是一个比较复杂的单片机程序而已,bootloader是从flash上面读入内核,读出来之后放到SDRAM当中,然后启动内核,因此首先uboot至少要具有三个功能分别是
1:读FLASH
2:初始化SDRAM并且写SDRAM
3:要想启动内核。
功能复杂的用汇编是完不成的,要用C函数才能完成,那么显然要调用C函数,要调用C函数就要设置栈用来保存一些返回地址和参数,因此uboot还要设置栈,所谓设置栈就是让SP指针指向某块内存,设置好栈之后就可以调用C函数,
除此以外还要有两个基本的功能:
1:初始化时钟,刚上电的时候,时钟频率是12mhz,最大的运行时钟频率是400MHZ,
2:关闭看门狗
另外为了开发方便我们还有加入一些功能
1:我们想通过串口控制开发板,因此uboot还要初始化串口
2:我们在开发的时候有的时候需要下载裸机程序或者下载内核下载根文件系统,因此,我们的uboot还要具有写flash以及支持USB、支持网络的功能,这样我们才能下载,
Uboot有两种模式
- 下载模式:可以用来下载uboot,内核以及根文件系统
- 引导模式:可以用来引导内核启动
Uboot也是需要用make编译的,
Uboot可以用jlink进行烧写,不过jlink只能烧写norflash,也就是说jlink只能把uboot烧写到norflash里面。
要想烧写uboot到nandflash,那么就要先利用jlink把uboot烧写到norflash里面,然后在串口里面利用uboot把uboot烧写到nandflash里面。
具体就是先在串口输入命令,然后利用dnw进行下载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)