0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C2000芯片如何给一个连续的RAM区间赋初值

星星科技指导员 来源:TI 作者:Johnson Chen 2023-03-24 09:26 次阅读

在开发程序的时候,我们经常会希望某些全局变量在被使用时已经有想要的初始值,我们通常会用下面两种方法来实现变量的初始值赋值,

方法一:定义带初始值的全局变量

例如:int temp1 = 0x00;

方法二:定义不带初始值的全局变量

例如:int temp1;

在main()函数初始化时给变量写初值

例如: temp1= 0x00;

但如果很多的变量比如一个RAM section都要赋同一个初值,使用上面提到的两个方法就会比较繁琐。本文介绍方法可以快速实现这个功能。

此方法有以下几个特点:

不影响这个连续的RAM区间里的部分变量需要通过前面提到的方法一重新赋初值。

可以避免有时因为编程者的初心大意忘记给某些变量赋值而导致程序运行异常。

解决很多不了解C2000汇编指令用户实现此功能的困扰。

首先我们要了解C2000上电时的流程,下图为C2000 上电时从RAM或者FLASH 引导的流程图。

poYBAGQc_EqAb5a_AAEIHV_RIcc681.png

对于C2000 芯片来说程序的执行入口是在CMD 文件里面“codestart”这个段定义的,而在”XXXXXX_CodeStartBranch.asm”里面通过“.sect "codestart" ”语句将相应的跳转指令分配到了这个段。

通常“XXXXXX_CodeStartBranch.asm”文件内容如下:

pYYBAGQc_EqAcQwxAADHH99Wdoc766.png

其中_c_int00 这个函数本体是在C2000编译器的RTS library里面,这个函数实现的功能是把用户定义的带初始值的全局变量的初始值的从FLASH搬运到RAM里面,从而实现初始值的传递,之后PC就会跳转到用户的main()入口。

因此我们需要在“LB _c_int00” 语句之前实现RAM section值的初始化。

假设我们需要对0x00000400为起始地址长度为0x200的RAM 区间进行初始化,初始值为0x00。

下面为具体实现代码:

MOV ACC, #00H ; initialed value

MOVL XAR5, #400H ;Dest address

MOVL XAR4, #(200H-1) ;length

RPT @AR4 || MOV *XAR5++, ACC

如果需初始化成其它值,将第一行 “#00H”更改为其它的值即可。

将代码放入“ XXXXXX_CodeStartBranch.asm ”下面蓝色部分位置即可。

poYBAGQc_EuAbDqSAAEwkRVQHPk401.png

注意事项:

1.本方法适用于所有C2000产品,不同芯片“ XXXXXX_CodeStartBranch.asm ”文件名不同,XXXXXX为芯片系列名。

2.因为C2000的看门狗上电时是默认开启的, 且溢出后会产生复位。为了确保在初始化RAM时不会产生看门狗复位,我们首先要先禁止看门狗,请确保“ WD_DISABLE .set 1 ”。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    454

    文章

    50475

    浏览量

    422053
  • 看门狗
    +关注

    关注

    10

    文章

    559

    浏览量

    70759
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49060
收藏 人收藏

    评论

    相关推荐

    C2000资料

    自己最近刚开始入手STM32,以前都是做DSP C2000的,没什么可以大家的,发C2000TMS320F28027的资料吧。F28027.rar (20.84 MB )
    发表于 04-30 02:06

    C2000系列芯片RAM在线诊断方法有哪些?

    C2000系列芯片RAM在线诊断实现方法
    发表于 11-24 06:08

    基于C2000系列芯片RAM在线诊断实现方法

    Software Package和C2000 SafeTI 60730 SW Packages软件库等,可以提供很多的诊断测试功能,例如CPU、时钟、外设、RAM等的诊断,已经可以满足部分的需求…
    发表于 11-08 07:12

    C2000如何连续RAM区间初值

    面提到的两方法就会比较繁琐。本文介绍方法可以快速实现这个功能。此方法有以下几个特点:不影响这个连续RAM区间里的部分变量需要通过前面提到的方法
    发表于 11-08 06:11

    TI C2000 引导模式原理的理解

    在使用C2000的时候,经常遇到工程师说芯片仿真能够运行,但是单机跑却不能跑起来;或者在调试时,复位芯片run,发现程序不能跑起来。这其中的原因主要是没有了解C2000的引导模式设置。
    发表于 04-26 12:41 6420次阅读
    TI <b class='flag-5'>C2000</b> 引导模式原理的理解

    C2000入门:C2000的基本知识介绍(1)

    C2000入门基础()—C2000概述(上)
    的头像 发表于 08-14 01:54 1.2w次阅读

    C2000的开发环境

    C2000入门基础(七)—C2000 开发环境
    的头像 发表于 08-10 01:01 3685次阅读

    C2000入门:C2000的复位系统介绍

    C2000入门基础(三)—C2000的复位系统
    的头像 发表于 08-06 00:55 5303次阅读

    C2000入门:C2000的外置电路的控制介绍(6)

    C2000入门基础(六)C2000的控制外设
    的头像 发表于 04-15 06:41 3973次阅读
    <b class='flag-5'>C2000</b>入门:<b class='flag-5'>C2000</b>的外置电路的控制介绍(6)

    C2000入门:C2000的基本知识介绍 (2)

    C2000入门基础(二)C2000概述(下)
    的头像 发表于 04-15 06:30 4143次阅读
    <b class='flag-5'>C2000</b>入门:<b class='flag-5'>C2000</b>的基本知识介绍 (2)

    C2000芯片如何连续RAM区间初值

           例如: temp1= 0x00; 但如果很多的变量比如RAM section都要一个
    的头像 发表于 10-20 18:38 512次阅读

    C2000芯片怎么连续RAM区间初值

    。 此方法有以下几个特点: 不影响这个连续RAM区间里的部分变量需要通过前面提到的方法重新
    的头像 发表于 01-19 15:15 1683次阅读
    <b class='flag-5'>C2000</b><b class='flag-5'>芯片</b>怎么<b class='flag-5'>给</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>连续</b>的<b class='flag-5'>RAM</b><b class='flag-5'>区间</b><b class='flag-5'>赋</b><b class='flag-5'>初值</b>

    C2000系列芯片RAM在线诊断实现方法

    C2000系列芯片RAM在线诊断实现方法
    发表于 10-31 08:23 1次下载
    <b class='flag-5'>一</b>种<b class='flag-5'>C2000</b>系列<b class='flag-5'>芯片</b>的<b class='flag-5'>RAM</b>在线诊断实现方法

    C2000芯片如何连续RAM区间初值

    C2000芯片如何连续RAM
    发表于 10-31 08:23 2次下载
    <b class='flag-5'>C2000</b><b class='flag-5'>芯片</b>如何<b class='flag-5'>给</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>连续</b>的<b class='flag-5'>RAM</b><b class='flag-5'>区间</b><b class='flag-5'>赋</b><b class='flag-5'>初值</b>

    C2000上电引导模式解析

    。另外当我们想通过其他方式去引导芯片启动的时候,往往也需要清楚知道C2000的引导是怎么设置的。因此,在这里跟大家分享下我对C2000引导模式的理解,希望对各位理解
    的头像 发表于 04-11 09:44 1601次阅读
    <b class='flag-5'>C2000</b>上电引导模式解析