zoukankan      html  css  js  c++  java
  • platform创建说明

    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选项中查看平台的配置文件。

  • 相关阅读:
    Asp.Net下的DataGrid的多层表头(转自csdn)
    C#中使用DirectX编程 (转)
    Factory Method来实现数据库操作的类 (转) 原文:冷风.NET
    (转)关于定时器,介绍得很好!
    (原创)如何让web页面产生服务器数据返回后仍然能够保留到用户输入的位置!
    最近加入了控件开发团队,发现一些基础的东西,转发上来方便大家学习(转)
    中国共享软件走向国际指南(转,有感而发!)
    水晶报表官方实例大全 (转)
    用VS.NET2003制作WEB应用程序的安装包 (转)
    开发 Windows Mobile 应用程序: FAQ(最近买了ppc,正好打算学习开发使用。)
  • 原文地址:https://www.cnblogs.com/longbiao831/p/4581039.html
Copyright © 2011-2022 走看看