CodeWarrior for S12X 调试器的D-Flash编程支持

由于在暑假匆忙接收的嵌入式项目中需要使用特别大的数组,非分页RAM的内存不够用了,没办法,硬着头皮尝试使用分页RAM,但是完全没有单片机的基础,导致极其的困难。之前写程序都是按照纯软件的思维,主要考虑架构,不会考虑到每个变量具体存在哪个物理地址这么底层的问题,结果被飞思卡尔这分页地址、prm文件什么的搞得一头雾水,而网上的资料又少,讲的又大同小异的笼统,最后写出来的程序因为这分页地址的原因存在各种问题(还以为把变量放到分页RAM了,结果现在稍微懂了点回去看,发现其实很多根本还是分配在非分页区。晕倒~。但是居然还能相对正常运行也是很神奇)。这些天各种找相关的资料,结果发现在CodeWarrior的官方文档资料里其实把我想知道的都讲的很清楚了(还是官方文档给力,以后学什么东西直接找官方文档,不去到处找网上一堆零零散散的资源来学了)。本着学习的态度,将逐步把官方文档翻译一遍,供大家一起交流学习进步。

翻译的资料是公开的,我想应该不会有什么版权问题,如涉及版权问题,请联系我删除文章,原文档在这里(https://www.nxp.com/pages/codewarrior-development-studio-for-hcs12x-microcontrollers-classic-ide-v5.2:CW-HCS12X?&tab=Documentation_Tab&linkline=Users-Guides),另感谢NXP提供的学习资料。


S12P、S12XEx、S12XS版本的HI-WAVE中的D-Flash编程支持

译者注:译者博客(http://blog.csdn.net/lin_strong),转载请保留这条。此为官方文档TN263,仅供学习交流使用,请勿用于商业用途。

这个文档描述了怎么在D-Flash/EEPROM中加载初始化的变量。这个特性只用于large地址模型。
用于下列设备的Flash编程算法包含对这些区域的编程支持。为了有效率的使用它,需要调整项目。
这篇文档解释了怎么调整项目以使能编程D-Flash。

支持的设备

这个特性用于以下设备:
S12XEP100
S12XEP768
S12XEQ512
S12XEQ384
S12XEG384
S12XES384
S12XET256
S12XEA256
S12XEG128
S12XEA128

S12XS256
S12XS128
S12XS64

S12P128
S12P96
S12P64
S12P32

调整项目

可能需要调整项目配置以使能编程支持,这与在链接器配置文件和(当如果需要加载S-record格式数据时)烧写器命令文件中的内存区域定义有关。

PRM文件

PRM文件需要在满足以下前提下定义D-Flash区域:
D-Flash segments应该使用24位逻辑地址定义。
比如,应该在S12XEP100的PRM文件SEGMENT列表中包含D-flash定义:

EEPROM_00 = READ_ONLY 0x000800 TO 0x000BFF;
EEPROM_01 = READ_ONLY 0x010800 TO 0x010BFF;
EEPROM_02 = READ_ONLY 0x020800 TO 0x020BFF;
...
EEPROM_1F = READ_ONLY 0x1F0800 TO 0x1F0BFF;

应该在PLACEMENT列表中把常量放到D-flash中,比如:

/* constant variables */
ROM_VAR INTO EEPROM_00, EEPROM_01, EEPROM_1F;
myseg0 INTO EEPROM_02;

S-record生成

取决于你的应用要干什么,可能你需要加载S-record文件,在这种情况下,你可能需要调整烧写器脚本文件(burner.bbl)以包含需要的区域到生成的S19镜像中。下面是S12XEP100 .bbl文件的片段:

...
/* logical banked D-flash to logical */
len = 0x000400
origin = 0x000800
destination = 0x000800
SENDBYTE 1 "%ABS_FILE%"
origin = 0x010800
destination = 0x010800
SENDBYTE 1 "%ABS_FILE%"
origin = 0x020800
destination = 0x020800
SENDBYTE 1 "%ABS_FILE%"
...
origin = 0x1F0800
destination = 0x1F0800
SENDBYTE 1 "%ABS_FILE%"
...

调试

在调试时,可以在Connection菜单的Flash菜单项中找到擦除D-Flash区域的选项(Connection的名字是和当前使用的链接一致的)。

非易失性内存控制

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值