TI-RTOS Kernel User‘s Guide:7---Memory

介绍在SYS/BIOS中使用内存的相关问题.

7.1Background

本章讨论静态内存的配置(即内存映射和节放置)、缓存和堆栈。它还提供有关动态内存分配的信息(在运行时分配和释放内存)。

静态内存配置与可执行文件可用的“内存映射”以及将代码和数据放置到内存映射中有关。内存映射由存在于CPU内的内部内存区域和位于硬件板上的外部内存区域组成。有关内存映射的详细信息,请参见7.2节

链接器使用链接器命令文件将代码和数据放置在内存区域中。链接器命令文件指定内存映射。对于每个内存区域,链接器命令文件指定起始地址或基址、长度和属性(读、写和执行)。在链接器命令文件中指定的内存区域也称为“内存段”。

以下是链接器命令文件中的内存映射规范:

MEMORY {
    IRAM (RWX) : org = 0x800000, len = 0x200000
    DDR : org = 0x80000000, len = 0x10000000
}

链接器命令文件还包含有关“内存段”位置的信息,如下面的示例所示。节是由编译器生成的可重新定位的代码块。编译器为各种类型的代码和数据生成一些著名的节,例如:.text、.switch、.bss、.far、.cinit和.const。有关详细信息,请参阅相应的编译器用户指南。

SECTIONS {
 .text: load >> DDR
 .switch: load >> DDR
 .stack: load > DDR
 .vecs: load >> DDR
 .args: load > DDR
 .sysmem: load > DDR
 .far: load >> DDR
 .data: load >> DDR
 .cinit: load > DDR
 .bss: load > DDR
 .const: load > DDR
 .pinit: load > DDR
 .cio: load >> DDR
}

链接器将“内存段”(如。text和。cinit)放入链接器命令文件的sections部分指定的“内存段”(如IRAM)中。有关Section放置的详细信息,请参见章节7.3

7.2Memory Map

可执行文件的内存映射由设备(具有内部内存)和硬件板(具有外部内存)决定。

当使用SYS/BIOS的应用程序创建CCS项目时,可以在RTSC Configuration Settings页面上选择一个平台,设备内存储器和外部存储器的内存映射由该平台确定,还可以设置时钟速度并指定内存段的位置。在创建新项目或更改项目构建属性时选择平台,而不是在创建配置文件时选择平台。需要不同内存映射的可执行文件必须使用不同的平台,即使它们运行在相同类型的主板上。

该平台绑定到一个特定的设备(CPU),并从该设备获取内部内存映射——例如,IRAM和FLASH。该平台还包含外部内存规格和缓存设置。内部和外部内存段共同构成内存映射。

7.2.1选择一个可用的平台

在构建SYS/BIOS 6.x可执行文件,需要选择使用的硬件板子。平台字段提供了与目标匹配的所有可用平台的下拉列表;这些下拉列表可用于您所选设备(CPU)的各种评估板。

要查看平台( platform)的内存映射(memory map ),选择打开平台向导 Tools > RTSC 
Tools > Platform > Edit/View.选择SYS/BIOS安装中的包存储库(<bios_install_dir>\packages directory))

在大多数情况下,您使用其中一个评估板开始应用程序开发,并且可以从下拉列表中选择一个标准平台。如符合下列各项,你应选择其中一个现有平台:

(1)开发阶段使用评估版

(2)不关心缓存大小,并且对现有平台设置的默认值感到满意

(3)不希望更改默认的部分位置。

(4)需要与评估板相同的时钟速率。

7.2.2创建自定义平台

在应用程序开发过程中的某个时刻,大多数客户构建自己的电路板,选择TI器件并添加自定义外部存储器。如果符合以下任何一项,您还需要创建自己的平台:

(1)需要自定义缓存大小。

(2)希望手动覆盖默认的部分位置。

对于这种自定义板,您需要使用平台向导创建一个平台。平台向导是一个GUI工具,允许您轻松地创建自定义平台。在定义内存映射和选择用于分段放置的默认内存段方面,创建自定义平台为您提供了很大的灵活性.要运行平台向导,请执行以下步骤:

(1)在CCS,选择tools> RTSC Tools > Platform > New ,将打开新平台向导

(2)命名包,是为项目选择选择的平台名称,是包含平台包的目录名字。

您可以使用简单的名称或以句点分隔的名称。周期对应于创建平台包时的目录级别。

如果将 C:\myRepository\packages 作为存储库位置,创建C:\myRepository\packages\myBoards\DA830_bigCache --->myBoards.DA830_bigCache 

(3)在平台包存储库字段旁边点击浏览,选择要在其中保存平台包的存储库的位置

如果您以前没有创建过包存储库,并且不想使用默认的存储库,那么创建一个新目录来包含该存储库。在您选择的目录中,创建名为“packages”的子目录。例如,您可以使用C:\myRepository\packages作为存储库。存储库的完整路径不应该包含任何空格。

(4)勾选上图的add Repository to project package path

(5)选择设备簇和设备名称

(6)点击 Next 将看到设备页的平台向导( Device Page of the platform wizard)

如果您希望另一个项目能够使用该平台,您可以稍后将包含该平台的存储库添加到项目的属性中,方法是右键单击项目并选择Build properties。选择“CCS General”类别,然后选择“RTSC”页签。单击Add并浏览您希望项目能够搜索平台的存储库的文件系统。

7.2.2.1获取和设置时钟速度和默认内存设置

设备页打开时没有时钟速度设置,没有外部内存段,也没有内存段分配。通常,您要做的第一件事是从现有平台导入默认设置,以便您可以使用这些设置作为进行所需修改的基础.导入默认设置步骤:

单击时钟速度字段旁边的导入按钮,在Select Platform对话框中,选择要导入其默认值的平台,然后单击OK。在询问您是否确定要更改设置的确认对话框中单击Yes。您可以看到默认的时钟速度和外部内存设置。如果你愿意,你可以换这些。

7.2.2.2确定自定义平台的缓存大小

由于缓存大小会影响内存映射,如果您使用的是C6000目标,那么在创建平台时需要决定要使用的大小。例如,如果您正在使用“ti.平台。在evmDA830”平台上,L1P、L1D和L2缓存大小会影响可用的L1PSRAM、L1DSRAM和IRAM的大小。

由于缓存大小是在平台中设置的,因此需要不同缓存配置的可执行文件也需要不同的平台。下面的示例步骤使用平台向导的设备页面来指定TMS320DA830平台的最大缓存大小:

将 L1D Cache设置为32K,设置 L1P Cache为32K,设置 L2 Cache为256K。

 L1PSRAM, L1DSRAM and IRAM 的大小可调整至0

7.2.2.3为数据、代码和堆栈选择默认内存段

平台还确定用于放置代码、数据和堆栈的默认内存段。如果没有显式放置节,则使用默认值。例如,如果您没有在*.cfg文件中配置任务堆栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值