前言
DSP28335开发程序的过程中一般可以分为两个步骤。首先,在调试阶段我们一般会将程序烧录进RAM中运行,因为这样运行速度快,便于快速的对代码做出调整。待我们程序稳定后我们会将程序烧录进Flash中运行,固化程序到芯片中,使得芯片掉电也不会丢失程序。
一、待解答问题
程序烧录进RAM中运行使用28335_RAM_lnk.cmd文件;
程序烧录进Flash中运行使用F28335.cmd文件。这两个文件区别所在,如何导致程序运行在不同的模式?
二、原理简介
1. 启动加载模式(BootMode)
TI支持很多种方式的boot,内部的ram(saram),flash,sci,spi
等等,但无论哪种启动都遵循下面的流程:
该流程中的Reset,Initboot,Call Selectbootmode, Read I/O state, Call Boot Loader这些步骤都是固化在芯片内的程序自己执行的,这些代码在出厂的时候已经在TI的芯片内。在28335中是一段的8k*16的read-only的memory,
启动模式有以下几种选择
根据上面TI的官方文档可以看出Boot-mode信号告诉BootLoader 软件启用那个软件,用户可以选择正常启动、通过外部接口去升级(加载)新程序、或者启动编程在内部Flash的软件。
内部flash程序的启动方式和Saram程序启动方式不同的原因的主要原因在于启动加载时选择的模式不同(这也正是我们调试程序时仿真调试的lnk_RAM.cmd文件和flash.cmd 文件只能存在一个的原因),因此程序在开始跳转的时候,开始地址的位置是不同的。如下图所示:
2. CMD文件简介
CMD是用来分配ROM和RAM空间用的,告诉链接程序怎样计算地址和分配空间
。所以不同的芯片就有不同大小的ROM和RAM,存放用户程序的地方也不尽相同。所以要根据芯片进行修改,分为MEMORY
和SECTIONS
两个部分。
==a) == 分配空间及对应MEMMORY部分,但不同的芯片有不同的大小的内存空间
DSP28335对应的内存空间图如下所示:
Cmd 文件中MEMORY部分就是对该内存空间的分配
。
b) SECTIONS 部分是对程序中生成的代码或者数据字段等的一个分配,那些放在RAM区域,那些放在FLASH区域,进行详细的说明。
总结
本文针对DSP28335开发程序的过程中调试阶段和代码固化两个阶段的实现原理进行一些科普性说明,可以大致了解RAM和Flash运行过程中程序的配置差别,主要是系统的启动加载模式和cmd文件的设置所决定。同时,也了解到该处理器有多种启动加载方式,后面我们继续对该应用进行整理记录。(最后,向对我类似的新手朋友说,一定要动手练习,理论是恒定的,知识的理解和应用的差异需要我们亲自去辨别)。