LM3S之boot loader学习笔记-2
LM3S之boot loader学习笔记-2
彭会锋
()
上一篇中介绍了bootloader的基础知识,对于bootloader的作用和如何编写bootloader也有了大概的了解了,这一篇主要讲解bootloader启动引导的三大基础知识:LM3S的存储分布、cotex-m3的启动机制、flash编程,这三者是编写bootloader之前必须要了解的相关知识!
LM3S flash存储分布
要做bootloader,根据上节中的分析,首先需要知道bootloader代码和用户应用程序代码应该放在哪里,lm3s芯片内部已经规定好了如何划分存储空间,必须根据它的要求进行划分,话说这是不能乱放东西的,哈哈!
lm3s为cotex-m3内核,32bit总线结构,所以可以内部寻址4G存储空间,同时Cortex-M3 内核具有固定的存储器映射,“通过把片上外设的寄存器映射到外设区,就可以简单地以访问内存的方式来访问这些外设的寄存器,从而控制外设的工作,所以片上外设可以使用C 语言来操作。”(参考“bootloader分析”)下面是lm3s9d92的存储器分布映射图,这里我给出了完整的4G存储器映射和低地址区域0x0000.0000 - 0x3FFF.FFFF的存储器映射。

这里我们重点关注的是0x0000.0000 - 0x0007.FFFF 片上flash存储区域,因为该区域是我们存放bootloader和应用程序代码的区域,原则上该区域是可以随意划分的,不存在某些文章中所说的某些区域必须分配多少大小什么的误解;0x0100.0000 - 0x1FFF.FFFF区域为保留rom区域,内部存放了如下所示内容:

所以其实我们可以使用系统自带的bootloader的,这里我们不做过多描述!
向量表地址设置
由于SRAM 是易失性存储器,故系统上电时,SRAM 中并没有内容,系统必须从Flash开始启动。向量表是异常产生时获取异常处理函数入口的一块连续内存,每一个异常都在向量表固定的偏移地址处(偏移地址以字对齐),通过该偏移地址可以获取异常处理函数的入口指针。
这里重点要说的是向量表,Flash 空间起始地址处必须存放向量表,可以看出向量表的重要性;Cortex-M3微处理器的向量表包含4个必须项:初始堆栈指针、复位处理程序地址、NMI处理程序地址、硬故障处理程序地址;
对向量表的地址设置也是需要搞明白的一点,在程序代码开始运行后,向量表的基地址也可以改变。通过软件设置NVIC 中的向量表偏移寄存器(NVIC_VTABLE,0xE000ED08),可以在任意32 字对齐处建立向量表。
LM3S之boot loader学习笔记-2的更多相关文章
- LM3S之boot loader学习笔记-1
LM3S之boot loader学习笔记-1 彭会锋 (首先声明,此系列文章编写参考了很多资料,其中一些内容是原版内容的引用和整理,并加入了一些自己的见解,我已经尽量标明引用部分,如有未全部标注部分, ...
- 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 ...
随机推荐
- 通俗了解IaaS,PaaS,SaaS,看这里就对了(转)
[IT168 评论]云服务已经被大众所熟知,但对于刚接触云计算的朋友来说,仍然是云里雾里的绕着,今天小编就为你解读一下云计算的几种服务模式,IaaS,PaaS,SaaS到底是什么…区别有哪些? 字正腔 ...
- ModelForm组件
ModelForm组件 Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用: ...
- PKU 3169 Layout(差分约束系统+Bellman Ford)
题目大意:原题链接 当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些.FJ有N(2<=N<=1000)头奶牛,编号从1到N,沿一条直线站着等候喂食.奶牛排在队伍中的顺序和它们的编号是相同的 ...
- XDU 1022 (数论筛法+前缀和)
解法一:数论筛法+前缀和 //其实题目中f[n]的值可理解为存在多少个整数对使a*b<=n #include<cstdio> #define N 1007 #define maxn ...
- 论文笔记:空间变换网络(Spatial Transformer Networks)
2015, NIPS Max Jaderberg, Karen Simonyan, Andrew Zisserman, Koray Kavukcuoglu Google DeepMind 为什么提出( ...
- Object-c 开发之property
@property 关键字:atomic,nonatomic,readonly,readwrite,assign,retain,copy,getter,setter,strong 默认行为(atomi ...
- 微服务—ELK分布式日志框架
在微服务架构下,微服务被拆分成多个微小的服务,每个微小的服务都部署在不同的服务器实例上,当我们定位问题,检索日志的时候需要依次登录每台服务器进行检索. 这样是不是感觉很繁琐和效率低下.所以我们还需要一 ...
- java.lang.NoSuchMethodError: net.sf.cglib.core.Signature
今天二次开发Dubbo-admin的管理平台,开启tomcat直接报错,错误关键字为“ java.lang.NoSuchMethodError: net.sf.cglib.core.Signature ...
- nsis源码 nsisdialogdesigner
; 安装程序初始定义常量!define PRODUCT_NAME "nsisdialogdesigner"!define PRODUCT_VERSION "1.1.3&q ...
- Hibernate抽取BaseDao
package com.cky.dao; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate. ...