一种BootLoader的分析说明

SoC上电后,不同架构的处理器,代码执行的初始位置不同。

下边,根据最近的一个项目来做出说明,整体的逻辑规划是这样的:

*上电判断启动方式,即用户选择是否选择更新程序;

       若是,则判断是通过SD卡还是通过串口进行更新;

*若用户不曾选择进行程序更新,则在跳转到flash,执行既有代码;

以上就是bootloader实现的主要功能。

 

此处上电执行的地址是0x00000000。(此处放置中断向量表)

1----- 此处第一句Reset/NMI中断 (跳转到SOC运行环境初始化函数(CPU初始化、堆栈初始化、内存初始化、跳转到main)(前三步骤涉及到更底层的硬件暂且不作说明)),

           其后放置的是其他的中断向量表的内容;

2----- 在main函数:

              2.1  初始化硬件设备驱动(UART 、 FLASH 、I2C、GPIO、SD card等等,根据设计不同,需要初始化的硬件驱动不同)

              2.2   判断启动设置( SD卡 或者 USB_Serial   或者   执行flash中原有的程序(位置0x80000000))

                      通过板级的跳线或者按键的选择,来判断此次启动的方式: 

                                a、首先,判断是否有SD卡、并进一步判断SD卡中是否有可用的更新程序,如果有则将新的程序复写到0x80000000的位置;

                                b 、若a未能进行,则判断是否通过USB_Serial进行程序更新,即通过PC上位机将新的程序复写到0x80000000的位置;

                                c、 经过判断,若没有选择a、b两种方式,则跳转到flash的0x80000000位置开始执行,但是 当0x80000000位置存放的代码有误的时候(由于某种原遭到破坏),则自动执行b过程,等待上位机对SOC进行 代码更新;

 

3------ 当程序更新完毕或者未进行更新直接跳转到0x80000000位置执行,均意味着BootLoader的一次使命完整结束了。

           需要说明的是,更新成功后,可以选择进入原处循环等待也可以选择稍后跳转到0x80000000执行新的程序

-----------------------------------

在BootLoader中,SOC也可以响应其他中断,具体能够响应哪些根据向量表中的不同的设置实现。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值