LM3S之boot loader学习笔记-1
LM3S之boot loader学习笔记-1
彭会锋
(首先声明,此系列文章编写参考了很多资料,其中一些内容是原版内容的引用和整理,并加入了一些自己的见解,我已经尽量标明引用部分,如有未全部标注部分,还望见谅!)
最近项目需要能够对光伏系统监控器和dsp代码进行在线升级,为此特意学习了下lm3s的bootloader编写,程序已经编写调试完毕,特写一下相关的知识点总结,也供各位进行相关参考!
参考网址:
http://wapapp.baidu.com/wh2152/item/2e9ee419bb416a3bb93180ec LM4F232的bootloader过程
http://blog.sina.com.cn/s/blog_5f18cbd10100da5t.html 揭开BOOT LOAD升级过程的神秘面纱
http://wenku.baidu.com/view/e610a30fba1aa8114431d9cc.html BootLoader应用说明
后面这两组是为了加深对存储器映射的理解的文章:
http://blog.sina.com.cn/s/blog_5f18cbd10100da6f.html 如何让静态局部和全局变量或数组存在指定地址的Flash
http://blog.sina.com.cn/s/blog_5f18cbd10100d4xr.html Keil平台中如何让程序在RAM中跑起来
bootloader作用
"BootLoader是位于Flash起始地址处的一小段代码,占据空间大小依据Boot所实现的功能而不同。如果没有BootLoader,硬件启动成功后,将直接运行用户应用程序(Application)。反之,BootLoader的启动代码(Start-up Code)将先被执行,进行一系列的初始化操作后,根据预先设定的条件,选择执行用户应用程序(Application)或升级控制程序(Updater)。
系统在实际应用过程中,如果需要更新软件功能,那么为了避免重新拆装设备,可以借助“在线升级”方式。目前,在线升级是很多系统都必需的一个功能,对于LM3S系列微控制器来说,利用Flash控制器接口即可实现系统在线升级。Boot程序接收新的代码编译文件,然后调用Flash操作函数将新的代码编程到Flash 扇区中,即可实现系统的在线升级。依照我查找的资料来看,嵌入式中很大部分编写bootloader是为了升级程序之用的。"(参考“LM3S 系列单片机远程升级应用笔记”)
首先介绍bootloader程序的编写,lm3s系列bootloader编写可以采用两种方法:
1 rom中自带bootloader
lm3s系列芯片中在ROM中固化了很多的程序,其中就包括bootloader,可以通过rom中的bootloader通过串口(UART)\SSI\I2C\ETHERNET控制程序传输,然后使用flash读写函数将程序写入flash中,从而实现程序烧写升级
2 flash烧写自己编写的bootloader
bootloader也可以用户自行编写,其实bootloader也是一段程序而已,用户完全可以自己编写,这样的灵活性更大,可以针对自己的设计进行有针对性的更改,我这次的设计也是自行编写,其实写完了回头再看就是基于我以前程序的缩减版!
为了能够对bootloader能够首先从整体上有一个认识,我先给出bootloader、应用程序以及其他一些东西在芯片flash中的一些分布,以期能够从整体上对bootloader有个完整的认知:

由上图可知,从flash空间占用来说,bootloader位于flash的起始位置,然后才是应用程序flash占用,所以程序上电也是先运行bootloader程序,然后在bootloader跳转程序控制下决定是运行bootloader引导程序还是用户应用程序!
为了实现bootloader升级程序的功能,我们就需要自己编写bootloader控制逻辑,下面是我的bootloader的控制逻辑流程图(其实看完流程图,你大概就知道bootloader的功能和具体实现有了初步了解):

LM3S之boot loader学习笔记-1的更多相关文章
- LM3S之boot loader学习笔记-2
LM3S之boot loader学习笔记-2 彭会锋 () 上一篇中介绍了bootloader的基础知识,对于bootloader的作用和如何编写bootloader也有了大概的了解了,这一篇主要讲解 ...
- Spring BOOT的学习笔记
1,静态文件夹src/main/resources/static下的,图片必须放在images文件夹下才能访问,直接放在static下不能访问 2,配置热部署,否则修改下Html,图片都得重启 htt ...
- Spring boot + jdbc学习笔记
pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- Spring Boot + WebSocket 学习笔记
首先需要了解一下背景,什么是WebSocket以及为什么要用WebSocket. 在常见的Web应用中,客户端与服务器通信,都是通过HTTP协议进行通信,客户端一次请求,服务端一次响应.而WebSoc ...
- Spring boot ----RestTemplate学习笔记
****spring boot-----restTemplate 封装了HttpURLConnection,HttpClient,Netty等接口访问实现库 restTemplet包含以下部分 Htt ...
- MIT 6.828 JOS学习笔记7. Lab 1 Part 2.2: The Boot Loader
Lab 1 Part 2 The Boot Loader Loading the Kernel 我们现在可以进一步的讨论一下boot loader中的C语言的部分,即boot/main.c.但是在我们 ...
- MIT 6.828 JOS学习笔记4. Lab 1 Part 2.1: The Boot Loader
Part 2: The Boot Loader 对于PC来说,软盘,硬盘都可以被划分为一个个大小为512字节的区域,叫做扇区.一个扇区是一次磁盘操作的最小粒度.每一次读取或者写入操作都必须是一个或多个 ...
- MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
未经许可谢绝以任何形式对本文内容进行转载! 一.环境配置 关于MIT课程中使用的JOS的配置教程网上已经有很多了,在这里就不做介绍,个人使用的是Ubuntu 16.04 + qemu.另注,本文章中贴 ...
- 《xv6 Appendices: PC Hardware and Boot loader》学习笔记
MIT 6.828 Lecture 2的preparation要求阅读<xv6 book>的附录部分,附录包括"PC Hardware"和"The Boot ...
随机推荐
- POJ3176:Cow Bowling(数字三角形问题)
地址:http://poj.org/problem?id=3176 题目解析:没什么好说的,之前上课时老师讲过.从下往上找,每一个三角形的顶点可由两个角加上顶点的值 两种方式得到 ,用dp数组保存下最 ...
- 虚拟机——安装虚拟机时,提示intel VT-x处于禁用状态
1.联想Lenovo扬天T4900C-00安转虚拟机提示: 按F12进入bios模式,修改Intel VT-x为启用,BIOS中依次选择:Advanced(高级)——CPU Configuration ...
- Mac打开应用提示已损坏的解决办法
相信很多升级了最新Mac系统的用户在打开一些应用的时候都会出现“应用XX已损坏”的系统提示,安装这些应用的时候总是提示“已损坏,移至废纸篓”这类信息,根本无法打开应用. Mac打开应用提示已损坏的解决 ...
- 转:在0~N(不包括N)范围内随机生成一个长度为M(M <= N)且内容不重复的数组
1. 最朴素暴力的做法. void cal1() { , j = , num = ; int result[M]; result[] = rand() % N; //第一个肯定不重复, 直接加进去 ; ...
- Python(线程进程3)
四 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切 ...
- quick cocos2d-x 下载地址
https://github.com/chukong/quick-cocos2d-x/tree/master http://www.cocos2dx.net/post/280 配置说明 http:// ...
- for…else和while…else
当while语句配备else子句时,如果while子句内嵌的循环体在整个循环过程中没有执行break语句(循环体中没有break语句,或者循环体中有break语句但是始终未执行),那么循环过程结束后, ...
- vue指令与组件
参考http://blog.csdn.net/lioldamon/article/details/74058222?utm_source=itdadao&utm_medium=referral ...
- HDU - 4725 The Shortest Path in Nya Graph(拆点+Dijkstra)
题意:N个点,每个点有一个层号L,相邻的两层 Li 与 Li+1 之间的距离为C.另外给出M条无向边,求从点1到点N的最短路. 分析:同一层之间的两点距离并不是0,这是一个小坑.依次把相邻两层的所有点 ...
- EXTJS 下载
Extjs各版本的下载链接 Extjs的版本繁多,本文收集了Extjs各个版本的下载链接,包括官网和非官网的,以及各种汉化版api,欢迎大家下载分享. Extjs最新版下载链接:http://www. ...