This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

使用MAD方式加载,其中用到的应用程序.exe文件从何而来?仅仅是makefile?



大家好:

目前我正在做MAD的加载方式。但第一步用到的.exe从何而来呢?

我尝试了example中的app1、app2生成.exe,看了用到的build_examples_msys.sh文件。

但我不确定是否只需要工程编译过后自动生成的makefile文件和类似于上述build_examples_msys.sh的文件即可完成所需.exe的生成?

如果不是,我应该从哪里得到相关的生成.exe文件的信息呢?

谢谢有关的回答。

  • 今天刚开始阅读MAD,关注,顶一个!

  • 另外,我在想我是不是可以直接将.out文件的后缀改为.exe?

    感谢有关的回答。

  • Hi David:

      从MAD的用户资料上看,应直接将用户程序的*.out文件直接改成*.exe文件,MAD资料上注明了其是ELF文件格式。

    别外:从I2C中进行单核NAND flash的boot过程你看好了没有,建议看一下。

    目前我也正关心如何简单地进行多核下的boot。虽然网上有些描述从从I2C中进行NAND flash的多核boot过程,但看了之后,总感觉是由启动之后的core0为其它核再进行第三次boot,总感觉过程复杂。

    另外MCSDK中已说明了“An example of an MCSDK application that uses MAD is the Image Processing Demo Guide.”。因而目前关心如何运用MAD进行boot。

    希望在MAD的boot方面多交流。我的QQ:1787765777

  • chenpjh,您好:

    谢谢您的回答,我想我应该试一下直接改后缀的方法。

    之前在论坛上看了看有关MAD的帖子(在英文论坛上找MAD时有人提到过MAD比较麻烦),用MAD加载的话的确是三次加载。

    目前我已经可以通过FLASH进行单核boot,但多核boot在MAD上卡住了,正努力解决。

    另外我注意到了 Image Processing Demo Guide中最后提到了两种MAD的boot方式,MAD相关内容应该就是这个吧

  • Hi David:

    通过对MAD用户手册的大概阅读,对多核boot的过程有一个认识。MAD对每一种CPU均需通过在MinGW环境下build以产生相应的boot工具。

    我对MinGW不是很熟悉。如手册第8页:“./build_examples_lnx.sh C6670 little static”,是不是在MinGW环境下使用的?.sh文件如何使用?

    另外:安装MinGW是不是只要选择-MSYS选项,其它如:C、C++均不需要选择?对MinGW-MSYS也不知如何使用?

  • Hi David:

    对于*.sh的文件你采用什么样的编辑器进行编辑的?

    开始我一般用Ultraedit进行编辑,发现该*.sh中的文件中有些特殊字符在编辑器中看不到,易于导致这些字符被删除,从而导致文件不能执行。

    我不知道*.sh文件一般是采用什么的编辑器进行编辑?

  • 你是说MAKEFILE生成.exe那一步吧

    如果你用LINUX的话用"_lix"的.sh文件,如果用msys的话需要用另一个"_msys"。

    其实我认为如果是在windows下的话应该都需要用另一个。

  • 我现在使用的是2.7版本的msys;3.3版本的在运行时出了些问题,官网也提示了3.3版本有兼容性问题

    C:\MinGW\msys\1.0\msys.bat

    用这个,具体用法我也在摸索中。

    ——————————————————————————————————————————————————

    改正:msys用TI推荐的版本就行,python需要是2.7的版本

  • Hi David:

    我讲的是如何对*.sh类型的文件进行编辑,采用什么样的编辑器?因而在使用MAD过程中,对*.sh文件进行适应性的编辑是必不可少的。

  • chenpjh,您好:

    我目前仅仅是使用文本方式对*.sh文件进行路径上的修改,还没有进行更多的尝试。

  • Hi David:

    遇到一个问题:MAD指南的第8页“maptool.py config-files\maptoolCfg_C6678_windows.json”命令时不能正确运行,你哪儿能运行吗?上面两个文件:maptool.py与 config-files\maptoolCfg_C6678_windows.json均是原来安装的文件,我没有作任何修改。但我这儿一运行就会再现如下错:

    Administrator@PC-200201010011 /c/ti/mcsdk_2_01_02_05/tools_chenpjh/boot_loader/m
    ad-utils/map-tool
    $ maptool.py config-files/maptoolCfg_C6678_windows.json
    ./maptool.py: line 32: import: command not found
    ./maptool.py: line 33: import: command not found
    ./maptool.py: line 34: import: command not found
    ./maptool.py: line 35: import: command not found
    ./maptool.py: line 36: import: command not found
    ./maptool.py: line 37: import: command not found
    ./maptool.py: line 38: import: command not found
    ./maptool.py: line 39: import: command not found
    ./maptool.py: line 42: syntax error near unexpected token `('
    ./maptool.py: line 42: `def dec2hex(n):'

    Administrator@PC-200201010011 /c/ti/mcsdk_2_01_02_05/tools_chenpjh/boot_loader/m
    ad-utils/map-tool
    $

    如果能运行告诉我一下:是怎样运行的,谢谢!

  • chenpjh,您好:

    你要先安装python

    之后你要对maptoolCfg_C6678_windows.json中的路径部分做一下修改,在MAD中有相关内路径修改说明,指向你的编译目录。

    如果你是在windows中运行需要让*.py的打开方式改为python.exe,而且还要添加下环境变量。

    不知道这能不能解决你的问题。

  • 另外,有谁能帮忙解决下我的问题吗。。。?

    我尝试用DEMO中的.out生成.bin结果还是无法运行。。。

  • Hi David:

     哪边有python的安装文件?另外问一下,python是要求在MinGW之前安装吗?

  • Hi David:

    我先安装了MinGW,而后在网上下载了:python-3.3.2.msi,并安装。之后在MinGW命令窗口中执行:maptool.py config-files\maptoolCfg_C6678_windows.json,还是出现之前的错。是什么原因?

  • 对下面修改进行测试:

    在windows系统PATH下增加了“PATH=python33”,在MinGW命令窗口中执行:python maptool.py config-files\maptoolCfg_C6678_windows.json,错误同之前不一样:

    Administrator@PC-200201010011 /c/ti/mcsdk_2_01_02_05/tools_chenpjh/boot_loader/m
    ad-utils/map-tool
    $ python maptool.py config-files/maptoolCfg_C6678_windows.json
      File "maptool.py", line 82
        except OSError, e:
                      ^
    SyntaxError: invalid syntax

    Administrator@PC-200201010011 /c/ti/mcsdk_2_01_02_05/tools_chenpjh/boot_loader/m
    ad-utils/map-tool

    这是什么原因?谢谢了!

     

  • chenpjh,您好:

    我已开始用的是3.3版本的,有问题,卸掉之后重新安的2.7版本

    (之前说的msys,不好意思,应该是python的版本需要是2.7的)

  • Hi David:

    采用python 的2.7版本之后,一切正常。谢谢!

    再向下继续研究MAD的方式。

  • Hi David:

    我在E2E上看到:对于MAD的boot方式,可能需要对IBL参数进行设置,需要改变的参数如下:

    ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_BBLOB;
    ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress = 0x9E000000;
    ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x9E001040;

    不知道你改了没有。

  • Hi David:

       MAD对多该启动过程成功了没?

  • hi  您好 我刚接触学习MAD 有些问题想向您请教

    1. 每一个C文件生成一个exe成为运行到某个核的代码吗?exe可以直接由out改后缀得到吗?比方说app1有一个src,里面有一个c文件,app2也是这样。但是实际中一个工程的out生成时可能用到了好几个c文件呀?我不太懂app里面文件的含义,如何得到的呢?

            2.  python maptool.py maptoolConfig_c6678_windows.json调用时,

             deployment_template_c6678_windows.json的内容,partitions里面的段名、secNamePat   是如何得到的?

             下面是我在网上看到的别人分享的一个json文件:

    "partitions" : [

    {

    "name"             : "DDR3-ROMFS",

    "vaddr"             :  "0x9e000000",

    "paddr"             : [ "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000"] ,

    "size"                 : "0x1000000",

    "secNamePat"       : ["text", "const"],

    "cores"              : [0,1,2,3,4,5,6,7],

    "permissions" : ["UR", "UX", "SR", "SX"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority" : 0,

    "shared"  : true,

    "loadPartition" : true

    },

    {

    "name"                       : "ddr-heapC0",

    "vaddr"                       : "0x81000000",

    "paddr"                      : ["0x801000000"],

    "size"                          : "0x1c900000",

    "secNamePat"       : ["HeapC0" ],

    "cores"                       : [0],

    "permissions" : ["UR", "UW", "SR", "SW"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority"          : 0,

    "shared"           : false

    },

    {

    "name"             : "MSMCSRAM",

    "vaddr"             : "0xc000000",

    "paddr"             : [ "0xc000000"],

    "size"                 : "0x100000",

    "secNamePat"       : [ "emacComm", "NDK_PACKETMEM", "NDK_OBJMEM"],

    "cores"              : [0],

    "permissions" : ["UR", "UW", "UX", "SR", "SW", "SX"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority" : 0,

    "shared"  : false

    },

    {

    "name"             : "L2SRAM",

    "vaddr"             : "0x800000",

    "paddr"             : [ "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000" ],

    "size"                 : "0x40000",

    "secNamePat"       : [  "cio", "far", "bss", "neardata", "fardata",  "stack",  "platform_lib", "vecs", "switch","csl_vect","HeapC17"],

    "cores"              : [0,1,2,3,4,5,6,7],

    "permissions" : ["UR", "UW", "UX", "SR", "SW", "SX"],

    "cacheEnable"          : false,

    "prefetch"      : false,

    "priority" : 0,

    "shared"  : false

    }

    ],

    "applications" : [

    {

    "name"                       : "app1",

    "fileName"       : ".\\MessQ_C0.out",

    "libPath"        : "..\\mad-loader\\examples\\shlibs\\build",

    "allowedCores"   : [0]

    },

    {

    "name"                       : "app2",

    "fileName"       : ".\\MessQ_C17.out",

    "libPath"        : "..\\mad-loader\\examples\\shlibs\\build",

    "allowedCores"   : [1,2,3,4,5,6,7]

    }

    ],

    "appDeployment" : [

    "app1",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2"

    ]

    }

     

             段名DDR3-ROMFS :  secNamePat:[text", "const]

             段名ddr-heapC0  : secNamePat:[HeapC0]

             段名MSMCSRAM : secNamePat:[emacComm", "NDK_PACKETMEM", "NDK_OBJMEM]

             段名L2SRAM:          secNamePat:[cio", "far", "bss", "neardata", "fardata",  "stack",  "platform_lib", "vecs", "switch","csl_vect","HeapC17]

         3.  里面的段名和它对应的secNamePat是跟什么有关系呢?原工程中的cmd文件吗?但是这个怎样子实现呢?我现在很多基本的概念还不是很明白,还望哪位知情人好好讲解下MAD,谢谢~~

  • hi  您好 我刚接触学习MAD 有些问题想向您请教

    1. 每一个C文件生成一个exe成为运行到某个核的代码吗?exe可以直接由out改后缀得到吗?比方说app1有一个src,里面有一个c文件,app2也是这样。但是实际中一个工程的out生成时可能用到了好几个c文件呀?我不太懂app里面文件的含义,如何得到的呢?

            2.  python maptool.py maptoolConfig_c6678_windows.json调用时,

             deployment_template_c6678_windows.json的内容,partitions里面的段名、secNamePat   是如何得到的?

             下面是我在网上看到的别人分享的一个json文件:

    "partitions" : [

    {

    "name"             : "DDR3-ROMFS",

    "vaddr"             :  "0x9e000000",

    "paddr"             : [ "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000"] ,

    "size"                 : "0x1000000",

    "secNamePat"       : ["text", "const"],

    "cores"              : [0,1,2,3,4,5,6,7],

    "permissions" : ["UR", "UX", "SR", "SX"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority" : 0,

    "shared"  : true,

    "loadPartition" : true

    },

    {

    "name"                       : "ddr-heapC0",

    "vaddr"                       : "0x81000000",

    "paddr"                      : ["0x801000000"],

    "size"                          : "0x1c900000",

    "secNamePat"       : ["HeapC0" ],

    "cores"                       : [0],

    "permissions" : ["UR", "UW", "SR", "SW"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority"          : 0,

    "shared"           : false

    },

    {

    "name"             : "MSMCSRAM",

    "vaddr"             : "0xc000000",

    "paddr"             : [ "0xc000000"],

    "size"                 : "0x100000",

    "secNamePat"       : [ "emacComm", "NDK_PACKETMEM", "NDK_OBJMEM"],

    "cores"              : [0],

    "permissions" : ["UR", "UW", "UX", "SR", "SW", "SX"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority" : 0,

    "shared"  : false

    },

    {

    "name"             : "L2SRAM",

    "vaddr"             : "0x800000",

    "paddr"             : [ "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000" ],

    "size"                 : "0x40000",

    "secNamePat"       : [  "cio", "far", "bss", "neardata", "fardata",  "stack",  "platform_lib", "vecs", "switch","csl_vect","HeapC17"],

    "cores"              : [0,1,2,3,4,5,6,7],

    "permissions" : ["UR", "UW", "UX", "SR", "SW", "SX"],

    "cacheEnable"          : false,

    "prefetch"      : false,

    "priority" : 0,

    "shared"  : false

    }

    ],

    "applications" : [

    {

    "name"                       : "app1",

    "fileName"       : ".\\MessQ_C0.out",

    "libPath"        : "..\\mad-loader\\examples\\shlibs\\build",

    "allowedCores"   : [0]

    },

    {

    "name"                       : "app2",

    "fileName"       : ".\\MessQ_C17.out",

    "libPath"        : "..\\mad-loader\\examples\\shlibs\\build",

    "allowedCores"   : [1,2,3,4,5,6,7]

    }

    ],

    "appDeployment" : [

    "app1",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2"

    ]

    }

     

             段名DDR3-ROMFS :  secNamePat:[text", "const]

             段名ddr-heapC0  : secNamePat:[HeapC0]

             段名MSMCSRAM : secNamePat:[emacComm", "NDK_PACKETMEM", "NDK_OBJMEM]

             段名L2SRAM:          secNamePat:[cio", "far", "bss", "neardata", "fardata",  "stack",  "platform_lib", "vecs", "switch","csl_vect","HeapC17]

         3.  里面的段名和它对应的secNamePat是跟什么有关系呢?原工程中的cmd文件吗?但是这个怎样子实现呢?我现在很多基本的概念还不是很明白,还望哪位知情人好好讲解下MAD,谢谢~~

  • hi  您好 我刚接触学习MAD 有些问题想向您请教

    1. 每一个C文件生成一个exe成为运行到某个核的代码吗?exe可以直接由out改后缀得到吗?比方说app1有一个src,里面有一个c文件,app2也是这样。但是实际中一个工程的out生成时可能用到了好几个c文件呀?我不太懂app里面文件的含义,如何得到的呢?

            2.  python maptool.py maptoolConfig_c6678_windows.json调用时,

             deployment_template_c6678_windows.json的内容,partitions里面的段名、secNamePat   是如何得到的?

             下面是我在网上看到的别人分享的一个json文件:

    "partitions" : [

    {

    "name"             : "DDR3-ROMFS",

    "vaddr"             :  "0x9e000000",

    "paddr"             : [ "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000", "0x81e000000"] ,

    "size"                 : "0x1000000",

    "secNamePat"       : ["text", "const"],

    "cores"              : [0,1,2,3,4,5,6,7],

    "permissions" : ["UR", "UX", "SR", "SX"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority" : 0,

    "shared"  : true,

    "loadPartition" : true

    },

    {

    "name"                       : "ddr-heapC0",

    "vaddr"                       : "0x81000000",

    "paddr"                      : ["0x801000000"],

    "size"                          : "0x1c900000",

    "secNamePat"       : ["HeapC0" ],

    "cores"                       : [0],

    "permissions" : ["UR", "UW", "SR", "SW"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority"          : 0,

    "shared"           : false

    },

    {

    "name"             : "MSMCSRAM",

    "vaddr"             : "0xc000000",

    "paddr"             : [ "0xc000000"],

    "size"                 : "0x100000",

    "secNamePat"       : [ "emacComm", "NDK_PACKETMEM", "NDK_OBJMEM"],

    "cores"              : [0],

    "permissions" : ["UR", "UW", "UX", "SR", "SW", "SX"],

    "cacheEnable"          : true,

    "prefetch"      : true,

    "priority" : 0,

    "shared"  : false

    },

    {

    "name"             : "L2SRAM",

    "vaddr"             : "0x800000",

    "paddr"             : [ "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000", "0x800000" ],

    "size"                 : "0x40000",

    "secNamePat"       : [  "cio", "far", "bss", "neardata", "fardata",  "stack",  "platform_lib", "vecs", "switch","csl_vect","HeapC17"],

    "cores"              : [0,1,2,3,4,5,6,7],

    "permissions" : ["UR", "UW", "UX", "SR", "SW", "SX"],

    "cacheEnable"          : false,

    "prefetch"      : false,

    "priority" : 0,

    "shared"  : false

    }

    ],

    "applications" : [

    {

    "name"                       : "app1",

    "fileName"       : ".\\MessQ_C0.out",

    "libPath"        : "..\\mad-loader\\examples\\shlibs\\build",

    "allowedCores"   : [0]

    },

    {

    "name"                       : "app2",

    "fileName"       : ".\\MessQ_C17.out",

    "libPath"        : "..\\mad-loader\\examples\\shlibs\\build",

    "allowedCores"   : [1,2,3,4,5,6,7]

    }

    ],

    "appDeployment" : [

    "app1",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2",

    "app2"

    ]

    }

     

             段名DDR3-ROMFS :  secNamePat:[text", "const]

             段名ddr-heapC0  : secNamePat:[HeapC0]

             段名MSMCSRAM : secNamePat:[emacComm", "NDK_PACKETMEM", "NDK_OBJMEM]

             段名L2SRAM:          secNamePat:[cio", "far", "bss", "neardata", "fardata",  "stack",  "platform_lib", "vecs", "switch","csl_vect","HeapC17]

         3.  里面的段名和它对应的secNamePat是跟什么有关系呢?原工程中的cmd文件吗?但是这个怎样子实现呢?我现在很多基本的概念还不是很明白,还望谢谢~~