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.

[参考译文] AM6421:从 SysConfig 工具自动生成代码

Guru**** 2964790 points

Other Parts Discussed in Thread: SYSCONFIG, AM6421

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1660228/am6421-auto-generated-code-from-sysconfig-tool

器件型号: AM6421
主题中讨论的其他器件: SysConfig、

尊敬的 TI 团队:

我正在 R5 内核上使用 AM6421、因此当我添加外设并生成代码时、SysConfig 工具会生成系统初始化并打开关闭代码。

我启用了 2 个 MCSPI、但驱动器打开和关闭功能相同。 我附在下图中

image.png 

我们能否从 SysConfig 工具生成像 Driver_mcspi0Open ()&Driver_mcspi1Open () 这样的分离函数、以便我可以随时从 diffenert 模块使用 thos 函数

此致

Shradda

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 :

    如果不需要一次性硬件初始化/设置、您可以在这两个函数中进行这些更改。 但请注意、对于未来的编译、您需要排除 SysConfig 生成的文件;否则、在重新生成期间可能会覆盖更改

    int32_t App_mcspi0Open(void)
    {
        gMcspiHandle[CONFIG_MCSPI0] = MCSPI_open(CONFIG_MCSPI0, &gMcspiOpenParams[CONFIG_MCSPI0]);
        return (gMcspiHandle[CONFIG_MCSPI0] != NULL) ? SystemP_SUCCESS : SystemP_FAILURE;
    }
    
    int32_t App_mcspi1Open(void)
    {
        gMcspiHandle[CONFIG_MCSPI1] = MCSPI_open(CONFIG_MCSPI1, &gMcspiOpenParams[CONFIG_MCSPI1]);
        return (gMcspiHandle[CONFIG_MCSPI1] != NULL) ? SystemP_SUCCESS : SystemP_FAILURE;
    }


    如果您手动更改这些函数、然后在 SysConfig 中修改任何内容并重新编译工程、这些更改将丢失、因为 SysConfig 模板将基于原始 SDK 模板重新生成文件。
    因此、如果您在使用 SysConfig 进行重建时需要保留此功能、则必须更新 SDK 中的相应模板文件、以便生成的代码包含您所做的更改。

    使用此补丁文件更改 SysConfig 模板  

    --/ source/sysconfig/drivers/.meta/mcspi/templates/mcspi_v0_open_close_config.c.xdt
    ++ b/source/sysconfig/drivers/.meta/mcspi/templates/mcspi_v0_open_close_config.c.xdt
    @@–200,49 +200,32 @@
    %}
    };

    Void Drivers_mcspiOpen (void)
    +% for(令 i = 0;i < module.$instances.length;i++){
    +% let 实例= module.$instances[i];
    +%让 instNameCamelCase = common.camelSentence(instance.$name);
    +/*
    +*`instance.$name`-单个打开/关闭(替换组合的 Drivers_mcspiOpen/close)
    +*/
    +void Drivers_mcspiOpen`instNameCamelCase`(void)
    {
    - uint32_t instCnt;
    - int32_t status = SystemP_Success;
    -
    - for (instCnt = 0U;instCnt < CONFIG_MCSPI_NUM_instances;instCnt++)
    + gMcspiHandle[` I`]= MCSPI_OPEN (`I`、&gMcspiOpenParams[`I`]);
    + if (NULL == gMcspiHandle[`i`])
    {
    - gMcspiHandle[instCnt]= NULL;/*初始化为 NULL、以便我们可以正常退出*/
    -}
    -
    -/*打开所有实例*/
    - for (instCnt = 0U;instCnt < CONFIG_MCSPI_NUM_instances;instCnt++)
    -{
    - gMcspiHandle[instCnt]= MCSPI_open (instCnt、&gMcspiOpenParams[instCnt]);
    - if (NULL == gMcspiHandle[instCnt])
    -{
    - DebugP_logError(实例%d!!!\r\n“、instCnt 的“MCSPI 打开失败);
    -状态= SystemP_FAILURE;
    -休息;
    -}
    -}
    -
    - if(SystemP_FAIL== status )
    -{
    - Drivers_mcspiClose ();/*正常退出*/
    + DebugP_logError(“对于实例`实例、MCSPI 打开失败。$name`!!!\r\n“);
    }

    返回;
    }

    void Drivers_mcspiClose (void)
    +void Drivers_mcspiClose`instNameCamelCase`(void)
    {
    - uint32_t instCnt;
    -
    -/*关闭所有已打开的实例*/
    - for (instCnt = 0U;instCnt < CONFIG_MCSPI_NUM_instances;instCnt++)
    + if(gMcspiHandle[`i`]!= NULL )
    {
    - if(gMcspiHandle[instCnt]!= NULL )
    -{
    - MCSPI_Close (gMcspiHandle[instCnt]);
    - gMcspiHandle[instCnt]= NULL;
    -}
    + MCSPI_CLOSE (gMcspiHandle[`i`]);
    + gMcspiHandle[`i`]= NULL;
    }

    返回;
    }
    +
    +%}
    --/ source/sysconfig/drivers/.meta/mcspi/templates/mcspi_v0_open_close.h.xdt
    ++ b/source/sysconfig/drivers/.meta/mcspi/templates/mcspi_v0_open_close.h.xdt
    @@μ A - 32、8 + 32、@@μ A
    extern MCSPI_UdmaChConfig g`instNameCamelCase`dmaChCfg[`instance.$name.toUpperCase ()`_NUM_CH];
    %}
    %}
    -/* MCSPI 驱动程序打开/关闭 — 当 Driver_open() 和时可由应用程序使用
    -* Driver_Close() 不是直接使用,而是应用程序想要控制各种驱动程序
    -*打开/关闭序列*/
    Void Drivers_mcspiOpen (void);
    Void Drivers_mcspiClose (void);
    +/* MCSPI 驱动程序打开/关闭 — 每个实例一个函数,调用您需要的函数
    +*单独代替组合的 Drivers_mcspiOpen ()/Drivers_mcspiClose ()*/
    +% for(令 i = 0;i < module.$instances.length;i++){
    +% let 实例= module.$instances[i];
    +%让 instNameCamelCase = common.camelSentence(instance.$name);
    +void Drivers_mcspiOpen`instNameCamelCase`(void);
    +void Drivers_mcspiClose`instNameCamelCase`(void);
    +%}
    --/ source/sysconfig/drivers/.meta/mcspi/templates/mcspi_open.c.xdt
    ++ b/source/sysconfig/drivers/.meta/mcspi/templates/mcspi_open.cxdt
    @@–1 +1 @@
    - Drivers_mcspiOpen ();
    +/*现在每个实例单独打开 MCSPI — 调用 Drivers_mcspiOpen() 自己*/
    --/ source/sysconfig/drivers/.meta/mcspi/templates/mcspi_close.cxdt
    ++ b/source/sysconfig/drivers/.meta/mcspi/templates/mcspi_close.cdt
    @@–1 +1 @@
    - Drivers_mcspiClose ();
    +/* MCSPI 现在每个实例单独关闭 — 调用 Drivers_mcspiClose() 自己*/

    谢谢、

    JOMY