1. platform创建

在file->new->other中选择new platform 创建平台文件,平台文件的名字通常以ti.platform.xxx方式进行命名,创建完成之后会直接在保存的位置形成文件夹的方式,而平台的配置信息可以在Platform.xdc文件中进行查看;

  1. ti系统自带的平台文件ti.platforms.evmOMAPL138;

package ti.platforms.evmOMAPL138;

metaonly module Platform inherits xdc.platform.IPlatform

{

readonly config xdc.platform.IPlatform.Board BOARD = {

id:             "0",

boardName:      "evmOMAPL138",

boardFamily:    "evmOMAPL138",

boardRevision:  null,

};

readonly config xdc.platform.IExeContext.Cpu DSP = {

id:             "0",

clockRate:      300.0,

catalogName:    "ti.catalog.c6000",

deviceName:     "OMAPL138",

revision:       "",

};

readonly config xdc.platform.IExeContext.Cpu GPP = {

id:             "1",

clockRate:      300.0,

catalogName:    "ti.catalog.arm",

deviceName:     "OMAPL138",

revision:       "1.0",

};

instance:

/*

*  DDR is 128MByte but we need to share it with Arm.

*  Reserve 32MB for Arm/Linux (base: 0xC000000)

*  16MB for shared Arm/DSP (base: 0xC2000000)

*  16MB for DSP (base: 0xC3000000)

*  64MB for ARM (base: 0xC4000000)

*/

override readonly config xdc.platform.IPlatform.Memory

externalMemoryMap[string] = [

["DDR",  {name: "DDR",  base: 0xC3000000, len: 0x01000000}],

];

/*

*  ======== sectMap ========

*  Define a placement of compiler generated output sections into

*  memory regions defined in the memTab above.

*/

override config string codeMemory = "DDR";

override config string dataMemory = "DDR";

override config string stackMemory = "DDR";

/*

*  ======== l1PMode ========

*  Define the amount of L1P RAM used for L1 Program Cache.

*

*  Check the device documentation for valid values.

*/

config String l1PMode = "32k";

/*

*  ======== l1DMode ========

*  Define the amount of L1D RAM used for L1 Data Cache.

*

*  Check the device documentation for valid values.

*/

config String l1DMode = "32k";

/*

*  ======== l2Mode ========

*  Define the amount of L2 RAM used for L2 Cache.

*

*  Check the device documentation for valid values.

*/

config String l2Mode = "0k";

};

这样一个平台文件中包含了两个cpu设置,一个是DSP,另一个是ARM,这里对内存分配的设置比较简单,具体的设置是通过静态设置的方式进行设置的,这是config.bld文件,

var Build = xdc.useModule('xdc.bld.BuildEnvironment');

/*  Memory Map for ti.platforms.evmOMAPL138

*

*  C000_0000 - C7FF_FFFF   800_0000  ( 128 MB) External Memory

*  ------------------------------------------------------------------------

*  C000_0000 - C1FF_FFFF   200_0000  (  32 MB) Linux

*  C200_0000 - C200_FFFF     1_0000  (  64 KB) SR_0 (ipc)

*  C201_0000 - C2FF_FFFF    FF_0000  ( ~15 MB) SR_1 (program shared region)

*  C300_0000 - C37F_FFFF    80_0000  (   8 MB) DSP_PROG (code, data)

*  C380_0000 - C3FF_FFFF    80_0000  (   8 MB) --------

*  C400_0000 - C7FF_FFFF   400_0000  (  64 MB) Linux

*/

var SR_0 = {

name: "SR_0", space: "data", access: "RWX",

base: 0xC2000000, len: 0x10000,

comment: "SR#0 Memory (64 KB)"

};

var SR_1 = {

name: "SR_1", space: "data", access: "RWX",

base: 0xC2010000, len: 0xFF0000,

comment: "SR#1 Memory (15 MB)"

};

Build.platformTable["ti.platforms.evmOMAPL138:dsp"] = {

externalMemoryMap: [

[ SR_0.name, SR_0 ],

[ SR_1.name, SR_1 ],

[ "DSP_PROG", {

name: "DSP_PROG", space: "code/data", access: "RWX",

base: 0xC3000000, len: 0x800000,

comment: "DSP Program Memory (8 MB)"

}]

],

codeMemory:  "DSP_PROG",

dataMemory:  "DSP_PROG",

stackMemory: "DSP_PROG",

l1DMode: "32k",

l1PMode: "32k",

l2Mode: "32k"

};

可以看出这里对ddr内存进行了详细的分类,内存分配为三个部分,这样才能进行数据通讯以及双核模块的通讯。

  1. 自己创建的平台文件;

metaonly module Platform inherits xdc.platform.IPlatform {

config ti.platforms.generic.Platform.Instance CPU =

ti.platforms.generic.Platform.create("CPU", {

clockRate:      456,

catalogName:    "ti.catalog.c6000",

deviceName:     "OMAPL138",

customMemoryMap:

[

["IRAM",

{

name: "IRAM",

base: 0x11800000,

len: 0x38000,

space: "code/data",

access: "RWX",

}

],

["IROM",

{

name: "IROM",

base: 0x11700000,

len: 0x00100000,

space: "code/data",

access: "RX",

}

],

["L3_CBA_RAM",

{

name: "L3_CBA_RAM",

base: 0x80000000,

len: 0x00020000,

space: "code/data",

access: "RWX",

}

],

["SR_0",

{

name: "SR_0",

base: 0xc2000000,

len: 0x10000,

space: "code/data",

access: "RWX",

}

],

["SR_1",

{

name: "SR_1",

base: 0xc2010000,

len: 0xa00000,

space: "code/data",

access: "RWX",

}

],

["DSP_PROG",

{

name: "DSP_PROG",

base: 0xc3000000,

len: 0x800000,

space: "code/data",

access: "RWX",

}

],

],

l2Mode: "0k",

l1PMode: "32k",

l1DMode: "32k",

});

instance :

override config string codeMemory  = "DSP_PROG";

override config string dataMemory  = "DSP_PROG";

override config string stackMemory = "DSP_PROG";

config String l2Mode = "0k";

config String l1PMode = "32k";

config String l1DMode = "32k";

}

这里只创建了一个平台,对于ti默认的package则可以选择CPU为DSP和GPP两种,这里暂时不讨论如何进行创建(主要是不知道。。。),可以对比,自己创建的平台文件与系统自带的文件区别是更详细的配置,但是这些配置并没有起到应有的作用,因为config.bld文件的静态配置与package的内存配置都存在的时候默认会采用静态配置。

  1. 修改cfg与bld文件,修改makefile文件-p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld 为-p ti.platforms.C6748 -b ../shared/config.bld ,将bld文件中的关于ti.platforms.evmOMAPL138:dsp平台修改ti.platforms.C6748,之前在平台文件这里出现过错误,cfg文件提示没有SR_0和SR_1(提示未定义),我们从package文件中已经看到它并没有设置SR_0和SR_1内存分配向而这些是在bld中进行静态设置的,所以会出现错误提示,这里我们自己创建的package文件则不会存在这种问题,但是为了保持静态配置内容有效,因此我们这里仍然将bld文件的平台修改为我们自己创建的平台。

2.内存配置

0x0080 0000 - 0x0083 FFFF 256K DSP L2_RAM

这个地址是DSP的私有地址,L2_RAM是c6748的二级缓存RAM;

0x1180 0000 - 0x1183 FFFF 256K DSP L2_RAM

而这个地址是DSP在总线上的地址,只有这个地址才能被DSP核心和所有外设进行访问,需要经过总线,会对速度有少量影响;

缓存的配置可以在创建packages时设定,也可以在sysbios创建的cfg文件时设定,这里cfg文件设定的缓存配置优先级高,如果两者都配置的话会优先采用sysbios里面的配置;

在打开cfg配置文件的Available Products窗口中可以在other Products选项中查看平台的配置文件。

转载于:https://www.cnblogs.com/longbiao831/p/4581039.html

platform创建说明相关推荐

  1. SAP Cloud Platform创建Destination时Additional properties属性的维护

    SAP云平台里创建Destination时,会要求维护如下三个字段: WebIDEUsage WebIDEEnabled WebIDESystem 这三个字段有什么作用? Values for the ...

  2. 一文读懂最新区块链游戏资产平台 Enjin Platform

    文:Blake 出品:陀螺财经 虚拟世界是虚无与真实相遇的地方.--Richard A. Bartle 在某种程度上,虚拟世界与人类本身一样历史渊源. 在旧石器时代的黎明,远古人类聚在一起,许多狩猎采 ...

  3. 设备树与驱动的关系_Linux I2C驱动竟然如此简单?手把手教你写i2c驱动

    Linux中I2C驱动框架分析 I2C核心(i2c_core) I2C核心维护了i2c_bus结构体,提供了I2C总线驱动和设备驱动的注册.注销方法,维护了I2C总线的驱动.设备链表,实现了设备.驱动 ...

  4. Android:手把手带你深入剖析 Retrofit 2.0 源码

    前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天,我将手把手带你深入剖析Retrofit v2.0的源码,希望你们会喜 ...

  5. cloud 部署_使用Google Cloud AI平台开发,训练和部署TensorFlow模型

    cloud 部署 实用指南 (A Practical Guide) The TensorFlow ecosystem has become very popular for developing ap ...

  6. cuba 平台_认识CLI for CUBA平台

    cuba 平台 毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好通过单击一下鼠标键入10-15个字母. 而且我们的社区也不例外,因此我们经常被问到"如何在没有CU ...

  7. 认识CUBA平台的CLI

    毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好是一次单击即可键入10-15个字母. 而且我们的社区也不例外,因此经常有人问我们"如何在没有CUBA Studio ...

  8. AMD OpenCL 大学课程

    AMD OpenCL大学课程是非常好的入门级OpenCL教程,通过看教程中的PPT,我们能够很快的了解OpenCL机制以及编程方法.下载地址:http://developer.amd.com/zone ...

  9. xamarin android上传图片到服务器,从图片库中选取照片

    从图片库中选取照片Picking a Photo from the Picture Library 03/06/2017 本文内容 本文介绍如何创建一种应用程序,使用户可通过该应用程序从手机的图片库中 ...

最新文章

  1. 合肥天鹅湖万达广场机器人_王健林再考察合肥!瞄准政务、高新,年末合肥楼市出现区域分化...
  2. Android MIPI转LVDS显示屏调试---DSI Tuner安装(1).docx
  3. Customization larbin
  4. js记录用户访问页面和停留时间
  5. .NET分层登陆——机房收费系统再总结
  6. 二维数组各行求和_JS数组reduce()方法详解及高级技巧
  7. 勒索病毒“永恒之蓝”变种再来,该如何关闭445端口(收藏)
  8. 教你如何使用数字组件,制作有灵魂的数据可视化大屏
  9. 5分绩点转4分_5分绩点转4分
  10. Python xlwt 操作 excel 表格基础(二):冻结窗口、设置加密保护、打印设置等
  11. java话费充值_手机话费充值-java示例
  12. 移动端-安卓-接口测试简介
  13. Hibernate【映射】知识要点
  14. MySQL(二)锁 ----- 表锁
  15. C# 保存窗口为图片(保存纵断面图)
  16. 通达信20个经典公式_20个欧美时尚达人高领毛衣+大衣造型集锦:冬季最高级的穿搭公式...
  17. RT-Thread使用CmBacktrace进行HardFault_Handler 追踪
  18. SI522如何兼容:RC522 FM17520 CV520 资料
  19. 极品飞车16秘籍代码
  20. 数据传送类指令LAD的数据传送方向是( )。 A 从寄存器到内存 B 从寄存器到寄存器 C 从内存到内存 D 从内存到寄存器...

热门文章

  1. 如何让一个div跟随鼠标移动
  2. Android 签名方法---同时使用V1和V2签名
  3. request的setAttribute()用法及request.sendRedirect 与 request.getRequestDispatcher.forward 的区别
  4. 项目时间管理-知识领域
  5. 牛人自制相机全过程(附:电路图)
  6. mysql workbench 1046,错误1046未选择数据库,如何解决?
  7. 适合笔记本计算机玩的游戏,十款,笔记本电脑可以畅玩的单机游戏
  8. C/C++黑魔法-防御性编程
  9. 偏态分布(Skewed distribution)
  10. ORACLE11g R2 for Linux 下载地址