F28335程序下载与引导总结

1.前言

距离上一篇博客的时间已经有2个月了。还记得当时信誓旦旦地在研旭至尊板——F28335知识点总结①博文的最后怒立flag,要接着上电复位电路,继续讲DSP启动和引导的过程。现在想来,有些事情如果不立马去做,一拖再拖就拖得不知道到什么时候去了。希望通过这篇文章可以了却一下我的一个心结——给自己尊敬的教授我DSP课程的老师一个交代,同时给自己一个交代。闲话不多说了,直接步入正题。

2.从仿真调试时的程序烧录,运行过程谈起

相信好多同学一开始上手DSP的时候,应该是这样的一个过程。买到开发板后,将DSP插上电,仿真器朝电脑上一连,然后按照卖方的指导手册,对现成的例程,编译连接,然后点击甲壳虫下载到DSP中。然后再一点运行,LED小灯闪烁了起来。这是一个非常奇妙且增强自信心的过程,而且看起来非常简单。但正如我本科时概率论老师讲过的:任何事情都怕去问,只要肯问一直问,总能把你问住。有些简单的事情有的时候其实蛮复杂;有些复杂的事情有些时候其实又蛮简单(原谅我思维太过于发散哈哈哈哈)。
所以问题来了:DSP里面存储空间那么多,程序被下载到了什么地方呢?CPU又是怎么自己就知道程序在哪里就去运行了呢?
DSP芯片的片内存储器,只要没有被TI 占用,用户都可以全权支配。TI 设计了“CMD文件”这种与用户的接口形式,用户通过编写CMD文件,来管理、分配系统中的所有物理存储器和地址空间。CMD文件其实就是用户的“声明” 。用户编写完自己的程序以后,要经过开发环境(编译器)的安排和解释(即编译)。转换为芯片可以识别的机器码,最后下载到芯片中运行。CMD 文件就是在编译源程序、生成机器码的过程中发挥作用的,它作为用户的命令或要求,交给开发环境(编译器)去执行:告诉DSP,我的东西该如何如何分配!故而如果所选择的cmd文件针对的地址空间是RAM的话,程序就被下载到RAM中;cmd文件针对的是FLASH的话,程序就被下载到了FLASH里面。关于cmd文件的详细介绍,我的空间中前面已经转载了一些,大家可自行查阅。下面分别是一个RAM.cmd和FLASH.cmd中内容的截图。
RAM.cmd
FLASH.cmd
一般大家拿到的开发板例程配套的cmd文件都是把程序下载到RAM中去的。在下载到RAM之后,如何找到程序进而去执行呢?这个就可以续着上一篇博客上电复位来介绍了。器件退出复位状态之后,首先从复位向量处开始运行,即0x3FFFC0地址处。该地址存放着BOOT ROOM中的第一个汇编初始引导程序Init Boot程序的入口地址。即上电在退出复位状态之后,首先执行Init Boot程序,初始化F28335器件工作的目标模式。然后读取安全保护模块的密码,如果CSM密码被擦除(全部等于0xFFFF),则自动解锁,否则CSM仍被锁定。
在执行完Init Boot程序后,会紧接着执行引导模式选择的程序(SelectBootMode)。该程序将首先通过判断TRST(F28335上的JTAG引脚)的状态来判断DSP是否和仿真器连接。关于TRST引脚的说明如下图所示。
在这里插入图片描述
当DSP和仿真器连接时,这时TRST引脚为高电平,则进入仿真调试引导模式。当DSP和仿真器未连接时,这时TRST引脚为低电平,则进入普通的单机跑引导模式。如下图所示
在这里插入图片描述
在仿真调试引导模式下,通过CCS开发环境便可以直接找到程序main函数的入口地址,进而完成程序的运行。也就是下图中大家平时习以为常的全速运行就完事了。
在这里插入图片描述
在单机跑引导模式下(也就是不连仿真器,程序已经烧录到DSP中的非掉电易失的存储空间了),则接下来会根据GPIO引脚84、85、86、87的状态进而确定处理器的引导方式。从而决定到哪个地方去找程序,进而运行程序。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39529052/article/details/108142760