历史上的今天
今天是:2024年09月08日(星期日)
2018年09月08日 | STM8单片机的启动过程
2018-09-08 来源:eefocus
大学的时候,学过一学期的STM8单片机,当时也算下了挺大的功夫,用的是我挺佩服的一个老师的课本,是用汇编语言教的。不过佩服归佩服,这本书其实现在想起来,一些基础的东西讲得不是很明白,比如说第一章中讲单片机实现原理,居然用51单片机来讲,也用了51单片机的代码,可这本书是STM8好么!用51也要说一下吧,明显是出书出得有一些仓促了。而且书中出现了一些错别字,对我这种强迫症的人来讲,呵呵。当然好的地方就是里面有很多工程实际的东西,也讲到了用STM8汇编实现多任务的例子,和数字滤波等在我当时看来很奇妙很有趣的东西。我还是挺佩服他(潘永雄)的,这是实话,这本书我翻了n多遍,一直不舍等捐掉,其它的什么电路啊,模电啊,数电啊都已经捐给别人了。
好吧,进入主题。在讲STM8单片机的启动过程前,大家先要对STM8的存储映射(Memory Map)有一个基本的认识, 这个信息可以从STM8的data sheet上面找到。以下是截图(当然这是stm8其中一个系列的存储映射,其它的可能不一样):
大家可以看到一个叫“2 Kbyte boot Rom”的存储区域,硬件复位(从关机到开机)的复位向量就在这个区域里面,这个很特殊,因为下面有一个叫“32 interrupt vectors”的存储区域,其它所有的中断向量(见下表)都存在这个区域里面,只有硬件复位向量不是。
所以当硬件复位后,也即STM8从关机到开机后,最先执行的是在boot Rom上的代码。boot Rom上面的代码叫做bootloader,bootloader的主要功能是通过单片机集成的外设(UART,SPI,CAN)来烧写单片机程序到单片机里面而不需要使用ST-Link,不过这是在单片机第一次烧写或者Option bytes(这个也在存储映射那个图里)里的BL和NBL字节分别设置为55和AA并且内存的读保护没有启用的时候才可以烧写的,如果不满足条件了,可以使用ST-Link连接单片机在STVP里面设置Option bytes使之满足。从boot Rom启动后的具体流程图可以看下图(该图来自于官方的UM0560),也可以直接看文字。
满足前面所讲的条件之后,STM8会检测是否有来自主机(通常为电脑端)的同步信号,若有同步信号则STM8交给主机控制,主机就可以向STM8下载程序了(下载完后由主机指定程序开始执行的地址)。STM8若没有检测到主机的同步信号,则等待1秒钟后超时,超时后判断单片机是否还没有烧写过程序,如果是则回到硬件复位的状态,重新上面从硬件复位开始的流程。而如果之前有烧写过程序了,则到“32 interrupt vectors”里面找到复位向量的入口,进入向量所指的地址(通常就是我们所说的main函数了)开始执行程序。
那如果bootloader在开始执行的时候就不满足可以烧写程序的条件呢?也是到“32 interrupt vectors”里面找到复位向量的入口,进入向量所指的地址开始执行程序。
以上就是STM8单片机的启动过程了。
史海拾趣
|
无线宽带视频会议系统是架构于无线宽带网络上的视频会议系统,以其先进的技术、优异的性价比,极大地降低了沟通成本,提高了办公效率,必将逐步在各行业中发挥出重要的作用,成为企事业单位的“杀手级”办公“武器”,以应对日益严峻的竞争和挑战。 ...… 查看全部问答> |
|
北京时间9月2消息,据国外媒体报道,针对谷歌将推“Google Chrome”浏览器挑战微软的报道,谷歌日前在官方博客中给予证实,称周二将在全球100多个国家推出该款产品。 谷歌强调,Google Chrome尚处在测试版阶段,即将推出的版本也只适于Windows系统 ...… 查看全部问答> |
|
液晶显示问题。我买了快开发板,本来是1024*768分辨率的,根据网上资料,修改成800*600,但是整个WINDOWS界面只显示了屏幕的左上角,其他WINDOWS CE程序一切正常,不知道如何是好,希望各位能给电帮助。… 查看全部问答> |
|
一 为什么说是伪动态 做网站的人知道动态网页常用的开发语是ASP.net、JSP、PHP。而这里我们是没法用上的,我们用的是cgi文件。 二 什么是CGI Common Gate Interface(通用网关 ...… 查看全部问答> |
|
大家好! 小弟现在遇到一个奇怪的问题。 硬件测试环境:板子是STM8S208,板子上有两个LIN接口,一个做主机,一个做从机,用一条串口线将两个口连接起来通信。   ...… 查看全部问答> |
|
近几天一直在TI网站上瞎转悠,深为它的器件性能所引,在我提交的电源方案中(还没有完善)决定使用它的Piccolo CPU : _TMS320f28035,它可以由一块CPU担任所设想的从PFC到输出部分的、全部分的功率控制。 然而,搞这个没有个仿真器 ...… 查看全部问答> |
|
在写初始化液晶的时候,在设置数据指针的时候为什么要加个延时,不加延时数据指针设不了,是不是我时序顺序没弄好,最近才开始学习的,不太懂这个 #include #define uchar unsigned char #define uint unsigned int #define Data P ...… 查看全部问答> |
|
在CCS3.3的开发环境下,拿TDS560仿真器连接omapl138的板子,在reset_TDS560USB_plus时出现如下错误:C:\\CCStudio_v3.3\\cc\\bin>dbgjtag -f brddat\\ccbrd0.dat -rv ------------------------------------------------------------------------ ...… 查看全部问答> |




