platform创建说明
- platform创建
在file->new->other中选择new platform 创建平台文件,平台文件的名字通常以ti.platform.xxx方式进行命名,创建完成之后会直接在保存的位置形成文件夹的方式,而平台的配置信息可以在Platform.xdc文件中进行查看;
- 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内存进行了详细的分类,内存分配为三个部分,这样才能进行数据通讯以及双核模块的通讯。
- 自己创建的平台文件;
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的内存配置都存在的时候默认会采用静态配置。
- 修改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创建说明相关推荐
- SAP Cloud Platform创建Destination时Additional properties属性的维护
SAP云平台里创建Destination时,会要求维护如下三个字段: WebIDEUsage WebIDEEnabled WebIDESystem 这三个字段有什么作用? Values for the ...
- 一文读懂最新区块链游戏资产平台 Enjin Platform
文:Blake 出品:陀螺财经 虚拟世界是虚无与真实相遇的地方.--Richard A. Bartle 在某种程度上,虚拟世界与人类本身一样历史渊源. 在旧石器时代的黎明,远古人类聚在一起,许多狩猎采 ...
- 设备树与驱动的关系_Linux I2C驱动竟然如此简单?手把手教你写i2c驱动
Linux中I2C驱动框架分析 I2C核心(i2c_core) I2C核心维护了i2c_bus结构体,提供了I2C总线驱动和设备驱动的注册.注销方法,维护了I2C总线的驱动.设备链表,实现了设备.驱动 ...
- Android:手把手带你深入剖析 Retrofit 2.0 源码
前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天,我将手把手带你深入剖析Retrofit v2.0的源码,希望你们会喜 ...
- cloud 部署_使用Google Cloud AI平台开发,训练和部署TensorFlow模型
cloud 部署 实用指南 (A Practical Guide) The TensorFlow ecosystem has become very popular for developing ap ...
- cuba 平台_认识CLI for CUBA平台
cuba 平台 毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好通过单击一下鼠标键入10-15个字母. 而且我们的社区也不例外,因此我们经常被问到"如何在没有CU ...
- 认识CUBA平台的CLI
毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好是一次单击即可键入10-15个字母. 而且我们的社区也不例外,因此经常有人问我们"如何在没有CUBA Studio ...
- AMD OpenCL 大学课程
AMD OpenCL大学课程是非常好的入门级OpenCL教程,通过看教程中的PPT,我们能够很快的了解OpenCL机制以及编程方法.下载地址:http://developer.amd.com/zone ...
- xamarin android上传图片到服务器,从图片库中选取照片
从图片库中选取照片Picking a Photo from the Picture Library 03/06/2017 本文内容 本文介绍如何创建一种应用程序,使用户可通过该应用程序从手机的图片库中 ...
最新文章
- 合肥天鹅湖万达广场机器人_王健林再考察合肥!瞄准政务、高新,年末合肥楼市出现区域分化...
- Android MIPI转LVDS显示屏调试---DSI Tuner安装(1).docx
- Customization larbin
- js记录用户访问页面和停留时间
- .NET分层登陆——机房收费系统再总结
- 二维数组各行求和_JS数组reduce()方法详解及高级技巧
- 勒索病毒“永恒之蓝”变种再来,该如何关闭445端口(收藏)
- 教你如何使用数字组件,制作有灵魂的数据可视化大屏
- 5分绩点转4分_5分绩点转4分
- Python xlwt 操作 excel 表格基础(二):冻结窗口、设置加密保护、打印设置等
- java话费充值_手机话费充值-java示例
- 移动端-安卓-接口测试简介
- Hibernate【映射】知识要点
- MySQL(二)锁 ----- 表锁
- C# 保存窗口为图片(保存纵断面图)
- 通达信20个经典公式_20个欧美时尚达人高领毛衣+大衣造型集锦:冬季最高级的穿搭公式...
- RT-Thread使用CmBacktrace进行HardFault_Handler 追踪
- SI522如何兼容:RC522 FM17520 CV520 资料
- 极品飞车16秘籍代码
- 数据传送类指令LAD的数据传送方向是( )。 A 从寄存器到内存 B 从寄存器到寄存器 C 从内存到内存 D 从内存到寄存器...
热门文章
- 如何让一个div跟随鼠标移动
- Android 签名方法---同时使用V1和V2签名
- request的setAttribute()用法及request.sendRedirect 与 request.getRequestDispatcher.forward 的区别
- 项目时间管理-知识领域
- 牛人自制相机全过程(附:电路图)
- mysql workbench 1046,错误1046未选择数据库,如何解决?
- 适合笔记本计算机玩的游戏,十款,笔记本电脑可以畅玩的单机游戏
- C/C++黑魔法-防御性编程
- 偏态分布(Skewed distribution)
- ORACLE11g R2 for Linux 下载地址