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

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

3天内不再提示

C2000芯片怎么给一个连续的RAM区间赋初值

电子设计 来源:电子设计 作者:电子设计 2022-01-19 15:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:TI FAE – Johnson Chen

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

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

例如:int temp1 = 0x00;

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

例如:int temp1;

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

例如: temp1= 0x00;

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

此方法有以下几个特点:

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

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

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

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

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

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

pYYBAGGKTZqARho2AADHH99Wdoc656.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 ”下面蓝色部分位置即可。

poYBAGGKTZyAWGOdAAEwkRVQHPk713.png

注意事项:

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

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

审核编辑:金巧

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

    关注

    0

    文章

    341

    浏览量

    10450
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66829
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51078
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    谷东智能C2000 AR智能眼镜推动航空航天行业数字化转型

    在航空航天领域,安全、效率与精准性是永恒的追求。谷东智能推出的 C2000 AR 智能眼镜,凭借其卓越的性能与广泛的应用,已成为众多头部航司的得力助手,并获得了某民航局局长的高度认可。
    的头像 发表于 06-20 15:14 996次阅读

    纳芯微NSSine™ NS800RT正面硬刚TI C2000,国产替代“芯”战事, 工业控制MCU市场迎来变局?

    而言,C2000不仅仅是芯片,它是种技术惯性,庞大而成熟的生态,
    的头像 发表于 06-20 12:45 1222次阅读
    纳芯微NSSine™ NS800RT正面硬刚TI <b class='flag-5'>C2000</b>,国产替代“芯”战事, 工业控制MCU市场迎来变局?

    16 位 ADC 的 汽车类与非汽车类C2000™ 32 位 MCU(TMS320F28377DPTPS TMS320F28377SPTPQ)微控制器

    ADC 的 C2000™ 32 位 MCU 说明 TMS320F28377DPTPS是款功能强大的 32 位浮点微控制器单元 (MCU),专为工业电机驱动器、光伏逆变器和数字电源、电动汽车和运输以及
    发表于 04-30 14:11

    TMS320F2800155 C2000™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F280015x (F280015x) 是成本优化的 C2000 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子的效率而设计。
    的头像 发表于 04-15 15:08 1035次阅读
    TMS320F2800155 <b class='flag-5'>C2000</b>™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F280034-Q1 汽车级 C2000™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F28003x (F28003x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子效率而设计,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-15 14:59 795次阅读
    TMS320F280034-Q1 汽车级 <b class='flag-5'>C2000</b>™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F2800133 C2000™ 32 位 MCU,具有 120 MHz、64 KB 闪存、FPU 和 TMU数据手册

    TMS320F280013x (F280013x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子效率而设计。
    的头像 发表于 04-15 14:46 1121次阅读
    TMS320F2800133 <b class='flag-5'>C2000</b>™ 32 位 MCU,具有 120 MHz、64 KB 闪存、FPU 和 TMU数据手册

    TMS320F2800153-Q1 具有 HRPWM、CAN-FD、锁步 ASIL B 的汽车类 C2000™ 32位MCU 120MHz 64KB 闪存数据手册

    TMS320F280015x (F280015x) 是成本优化的 C2000 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子的效率而设计。
    的头像 发表于 04-15 13:46 807次阅读
    TMS320F2800153-Q1 具有 HRPWM、CAN-FD、锁步 ASIL B 的汽车类 <b class='flag-5'>C2000</b>™ 32位MCU 120MHz 64KB 闪存数据手册

    F29H850TU C2000™ 64 位 MCU,带 C29x 200MHz 三核技术手册

    F29H85x 和 F29P58x 是 C2000™ 实时微控制器系列的成员,该系列是可扩展、超低延迟的器件,旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 14:10 1328次阅读
    F29H850TU <b class='flag-5'>C2000</b>™ 64 位 MCU,带 <b class='flag-5'>C</b>29x 200MHz 三核技术手册

    TMS320F28P550SG C2000™ 32 位 MCU技术手册

    TMS320F28P55x (F28P55x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 10:35 1959次阅读
    TMS320F28P550SG <b class='flag-5'>C2000</b>™ 32 位 MCU技术手册

    F29H859TU-Q1 汽车级 C2000™ 64 位 MCU数据手册

    F29H85x 和 F29P58x 是 C2000™ 实时微控制器系列的成员,该系列是可扩展、超低延迟的器件,旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 09:44 1064次阅读
    F29H859TU-Q1 汽车级 <b class='flag-5'>C2000</b>™ 64 位 MCU数据手册

    C2000 GANG Programmer error灯常亮是什么原因导致的?

    C2000 GANG Programmer 用了没几次,今天开机发现error 灯常亮,无法工作,也没有任何报错信息,请问是什么问题呢?
    发表于 02-28 08:31

    PMP40690 使用C2000™ MCU和GaN的4kW交错式 CCM 图腾柱无桥 PFC 参考设计

    此参考设计是 4kW 交错式 CCM 图腾柱 (TTPL) 无桥 PFC 参考设计,使用 64 引脚 C2000™ 微控制器、LM3410 氮化镓器件和TMCS1100霍尔传感器。它
    的头像 发表于 02-26 09:50 978次阅读
    PMP40690 使用<b class='flag-5'>C2000</b>™ MCU和GaN的4kW交错式 CCM 图腾柱无桥 PFC 参考设计

    采用 C2000™ MCU的CCM图腾柱 PFC和CLLLC DC/DC的7.4kW车载充电器参考设计

    TIDM-02013 是款双向车载充电器参考设计。该设计包括交错式连续导通模式 (CCM) 图腾柱 (TTPL) 无桥功率因数校正 (PFC) 功率级,后接
    的头像 发表于 02-25 15:16 1101次阅读
    采用 <b class='flag-5'>C2000</b>™ MCU的CCM图腾柱 PFC和CLLLC DC/DC的7.4kW车载充电器参考设计

    参考设计#PMP41043 1.6kW 采用 C2000 和 GaN 实现的 CCM 图腾柱 PFC 和电流模式 LLC

    此参考设计演示了混合磁滞控制 (HHC) 方法,这是种在半桥 LLC 级上使用 C2000 F28004x 微控制器的电流模式控制方法。该硬件基于 TIDA-010062,后者是 1kW、80
    的头像 发表于 02-25 11:27 947次阅读
    参考设计#PMP41043 1.6kW 采用 <b class='flag-5'>C2000</b> 和 GaN 实现的 CCM 图腾柱 PFC 和电流模式 LLC

    C2000 MCU+TLV5636输出电压衰减的原因?

    我用的是C2000 MCU+TLV5636。硬件电路为: Vout接示波器 当我想输出三角波的时候 发现输出的三角波的电压峰峰值直在衰减。如下图: 可是我的程序并没有这么做。 换了几片
    发表于 12-31 06:00