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 ...
随机推荐
- 我与前端之间不得说的三天两夜之css基础
前端基础之CSS CSS 语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. ''' selector { property: value; property: value; ... ...
- mysql数据库从删库到跑路之mysql完整性约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...
- 『NiFi 学习之路』使用 —— 主要组件的使用
一.概述 大部分 NiFi 使用者都是通过 NiFi 的 Processor 来实现自己的业务的.因此,我也主要就 NiFi 官方提供的 Porcessor 进行介绍. 二.Processor 如果你 ...
- PCLK怎么获得?
1.PCLK是由MCLK进行分频而来...... 2.PCLK是个时钟,通过寄存器只能调节它的频率什么的,它是控制像素输出的一个时钟: 3.在曝光时间的算法中需要知道PCLK的值,是因为在sensor ...
- 【c++ primer, 5e】定义类相关的非成员函数
练习 7.6 & 7.7 #include <iostream> #include <string> using namespace std; // Sales_dat ...
- linux lanmp一件安装包
转载地址:http://lamp.phpstudy.net/ phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 ...
- GRUB2 分析 (二)
接上一篇 实际上在512字节的MBR中,真正可用的空间并不多.除了一开始的跳转指令外,起始部分是一个被称为BPB的区域,即BIOS参数块(BISO Parameter Block).主要是FAT和NT ...
- JS的checkbox状态切换dom无变化
今天调试checkbox,手动加上checked="checked"和去掉,都对实际页面没有产生影响 搜索一番 1.对radio .checkbox 来说说,checked属性可以 ...
- BeanFactory与ApplicationContext
本文总结自:https://www.cnblogs.com/xiaoxi/p/5846416.html 我们常说的Spring容器(即Spring Ioc 容器),是如何创建bean的? BeanFa ...
- 20145313张雪纯 《Java程序设计》第7周学习总结
20145313张雪纯 <Java程序设计>7周学习总结 教材学习内容总结 1967年定义的国际原子时,将秒的国际单位定义为铯原子辐射振动9192631170周耗费的时间. 为了简化日后对 ...