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.

[参考译文] Linux/LAUNCHCC3220MODASF:内存 cc3220

Guru**** 2557660 points
Other Parts Discussed in Thread: CC3200, SYSBIOS

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/738194/linux-launchcc3220modasf-memory-cc3220

器件型号:LAUNCHCC3220MODASF
Thread 中讨论的其他器件:SYSBIOSCC3200

工具/软件:Linux

您好、Jan、

在 cc3220modasf 上、我想 声明 char * boot_mem =(char *) 0x20000000;在对我进行编程时?

谢谢

Nguyen

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

    很抱歉、我不理解您的问题。

    如果您希望通过指针访问 RAM、则上面的代码将正常工作。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    我需要访问 RAM。
    对于我来说、询问 cc3220modasf 上的 sched_priority 是否最高?
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Nguyen:

    这取决于使用的 RTOS。

    FreeRTOS:
    /*
    *任务优先级的范围可以是0到 CONFIGMAX_Priorities - 1、
    *其中 CONFIGMAX_PRIESTERS 是在 FreeRTOSConfig.h 中定义的 。
    *空闲任务的优先级为0、其他任务可以共享此优先级
    *(configIDLE_PAD_Yield = 1)。
    *确保空闲任务不会因其责任而变得无所事事
    *用于释放已删除任务的内存。
    *

    TI-RTOS:
    e2e.ti.com/.../427818

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    我使用 tirtos,那么 configMAX_Priorities 有多少?
    TI-RTOS 为1到15
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这取决于 cfg 文件中 RTOS 的设置:

    VAR 任务= xdc.useModule('ti.sysbios.knl.Task'); 
    /* 减少任务优先级的数量。 *默认值为16。 *减少任务优先级的数量可节省内存。 */ Task.numPriorities = 16;

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    那么、我可以更改 Task.numPriorities = 16;为什么我找不到文件 cfg?
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    那么、我可以更改 Task.numPriorities > 16;为什么我找不到文件 cfg?
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Nguyen:

    是的、您可以增加任务的优先级数量。 如果设置不在.cfg 文件中、则使用默认值16。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    我有宏:
    #define sawn_task_priority(3)
    #define TASK_PRIORY_TCP(17)线程未运行,但我定义了 TASK_PRIORY_TCP(15)运行正常,我不理解
    #define task_priority_spi_slave(5)
    #define task_priority_cli(2)

    我的代码如下:
    /*
    *版权所有(c) 2016、德州仪器(TI)公司
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、

    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *

    /*
    *==== main_tirtos.c ====
    *
    #include

    /* POSIX 头文件*/
    #include

    /* RTOS 头文件*/
    #include

    /* TI-RTOS 头文件*/
    #include

    #include

    //#include
    /*示例/板头文件*/
    #include "Board.h"
    #include "UART_terminal.h"
    #include "main_thread.h"


    extern void * mainThread1 (void * arg0);
    extern void * ShellThread (void * param);
    extern void * TcpThread (void * param);
    extern void * spiSlaveHandleTask (void * param);
    extern void * receive (void * param);
    extern void * client_group2 (void * param);

    #define task_stack_size (1024)


    /*
    //#define Task_Priority_MAINTHREAD(15)
    #define sawn_task_priority(14)
    #define TASK_PRIORY_TCP(13)
    #define TASK_PRIORY_RECEIVE(10)
    #define Task_Priority_CLIENTGROUP(10)
    #define task_priority_spi_slave(11)
    #define task_priority_cli(2)
    *

    #define sawn_task_priority(3)
    #define TASK_PRIORY_TCP(6)
    #define task_priority_spi_slave(5)
    #define task_priority_cli(2)



    #define ENABLE_CLI_TASK(1)
    #define ENABLE_tcp_task(1)
    #define ENABLE_SPI_TASK(1)
    #define ENABLE_MAIN_THREAD_TASK(0)
    #define init_hardware (0)
    #define ENABLE_CLIENTGROUP(0)
    #define ENABLE_SL_TASK(1)
    #define ENABLE_RECEIVE(0)



    /*以字节为单位的栈大小*/
    #define THREADSTACKSIZE 1024
    sm_t guserConfig_init;
    SEM_t 从器件;
    //sem_t masterSem;
    SEM_t 客户机;

    pthread_mutex_t clientMutex;

    /*pthread_t thread =(pthread_t)空;
    pthread_t thread_tcp =(pthread_t) NULL;
    pthread_t thread_mainthread =(pthread_t)空;
    pthread_t thread_SPI =(pthread_t) NULL;
    pthread_t thread_cli =(pthread_t)空;
    pthread_t thread_receivetcp=(pthread_t) NULL;
    pthread_t f衍生 线程=(pthread_t) NULL;*/

    pthread_t thread_tcp =(pthread_t) NULL;
    pthread_t thread_SPI =(pthread_t) NULL;
    pthread_t thread_cli =(pthread_t)空;
    pthread_t f衍生 线程=(pthread_t) NULL;
    /*
    *==== main ====
    *
    int main (空)


    pthread_attr_tpAttrs;
    pthread_attr_tattrs_spawn;

    structsched_param primParam;
    intretc;
    struct timespec TS ={0};
    // intdetachState;
    // void *thread_result;


    /*呼叫板初始化函数*/
    Board_initGeneral();
    InitTerm();
    GPIO_init();
    spi_init();

    /* Init 应用程序变量*/
    // RetVal = initAppVariables();

    /*初始化终端 UART */


    /*初始化实时时钟*/
    Clock_settime (clock_realtime、&ts);

    /*关闭主板上的所有 LED */
    GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);
    GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF);
    GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_OFF);

    retc = SEM_INIT (&guserCONFIG_INIT、0、0);
    如果(retc < 0)

    while (1);

    // retc = SEM_INIT (&clientsem、0、0);
    //如果(retc < 0)
    //{
    // while (1);
    //}


    retc = SEM_INIT (&SLAVE、0、0);

    如果(retc!= 0)

    UART_PRINT ("创建 slaveSem 行[%d]函数[%d]\n\r\n 时出错"、__LINE__、__function__);

    while (1);


    /* retc = SEM_INIT (&masterSem、0、0);
    如果(retc!= 0)

    UART_PRINT ("创建 masterSem 行[%d]函数[%d]\n\r\n 时出错"、__LINE__、__function__);
    while (1);
    }*/
    retc = pthread_mutex_init (&clientMutex、NULL);
    如果(retc!= 0)

    /* pthread_mutex_init()失败*/
    UART_PRINT ("无法初始化 pthread_mutex_init\n\r");
    while (1);

    /*设置优先级和堆栈大小属性*/
    pthread_attr_init (&pAttrs);
    pthread_attr_init (&attrs_spawn);
    #if 0
    priParam.sched_priority = 1;

    detachState = pthread_create_detached;
    retc = pthread_attr_setdetachstate (&pAttrs、detachState);
    if (retc!= 0)

    /* pthread_attr_setdetachstate()失败*/
    while (1)





    pthread_attr_setschedparam (&pAttrs、&priParam);

    retc |= pthread_attr_setstacksize (&pAttrs、THREADSTACKSIZE);
    if (retc!= 0)

    /* pthread_attr_setstacksize()失败*/
    while (1)




    #endif

    /*创建 sl_Task */


    #if (ENABLE_MAIN_THREAD_TASK)

    priParam.sched_priority = task_priority_MAINTHREAD;
    retc = pthread_attr_setschedparam (&pAttrs、&priParam);
    // detachState = 1;
    // retc |= pthread_attr_setdetachstate (&pAttrs、detachState);
    retc |= pthread_attr_setstacksize (&pAttrs、task_stack_size * 3);

    if (retc!= 0)

    /*错误处理*/
    while (1)

    UART_PRINT ("无法创建 mainThread1线程\n");
    返回(空);


    retc = pthread_create (&thread_mainthread、&pAttrs、mainThread1、NULL);
    if (retc!= 0)

    /* pthread_create()失败*/
    UART_PRINT ("无法创建任务 mainThread1\n\r");
    while (1)





    #endif

    #if (ENABLE_SL_TASK)

    priParam.sched_priority = sawn_task_priority;
    retc = pthread_attr_setschedparam (&attrs_spawn、&priParam);
    retc |= pthread_attr_setstacksize (&attrs_spawn、task_stack_size * 2);

    retc = pthread_create (&farnThread、&attrs_spawn、sl_Task、NULL);
    if (retc!= 0)

    /*句柄错误*/
    UART_PRINT ("无法创建 sl_Task 线程\r\n);
    while (1);


    #endif


    #if init_hardware
    struct timespec TS ={0};

    spi_init();
    GPIO_init();
    InitTerm();
    Clock_settime (clock_realtime、&ts);
    /*关闭主板上的所有 LED */
    GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);
    GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF);
    GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_OFF);
    #endif



    #if (enable_tcp_task)
    //创建线程 TCP
    // pthread_attr_init (&pAttrs_TCP);
    priParam.sched_priority = task_priority_tcp;
    retc = pthread_attr_setschedparam (&pAttrs、&priParam);
    retc |= pthread_attr_setstacksize (&pAttrs、task_stack_size * 4);

    if (retc!= 0)

    /*错误处理*/
    while (1)

    UART_PRINT ("无法创建 TCP 线程\n");
    返回(空);



    retc = pthread_create (&thread_TCP、&pAttrs、TcpThread、NULL);

    if (retc!= 0)

    UART_PRINT ("无法创建任务 TcpThread\n\r");
    while (1)




    #endif

    #if (ENABLE_CLIENTGROUP)

    priParam.sched_priority = task_priority_CLIENTGROUP;
    retc = pthread_attr_setschedparam (&pAttrs、&priParam);
    retc |= pthread_attr_setstacksize (&pAttrs、task_stack_size * 3);

    if (retc!= 0)

    //错误处理
    while (1)

    UART_PRINT ("无法创建 CLIENTGROUP 线程\n");
    返回(空);



    retc = pthread_create (&thread_receivetcp、&pAttrs、client_group2、NULL);

    if (retc!= 0)

    UART_PRINT ("无法创建任务 client_group2\n\r");
    while (1)




    #endif

    #IF (ENABLE_Receive)

    priParam.sched_priority = task_priority_receive;
    retc = pthread_attr_setschedparam (&pAttrs、&priParam);
    retc |= pthread_attr_setstacksize (&pAttrs、task_stack_size * 2);

    if (retc!= 0)

    //错误处理
    while (1)

    UART_PRINT ("无法创建接收线程\n");
    返回(空);



    retc = pthread_create (&thread_receivetcp、&pAttrs、receive、NULL);

    if (retc!= 0)

    UART_PRINT ("无法创建任务接收\n\r");
    while (1)




    #endif
    #if (ENABLE_SPI_Task)

    priParam.sched_priority = task_priority_spi_slave;
    retc = pthread_attr_setschedparam (&pAttrs、&priParam);
    retc |= pthread_attr_setstacksize (&pAttrs、task_stack_size * 7);

    if (retc!= 0)

    /*错误处理*/
    while (1)

    UART_PRINT ("无法创建 SPI 线程\n");
    返回(空);



    retc = pthread_create (&thread_SPI、&pAttrs、spiSlaveHandleTask、NULL);

    if (retc!= 0)

    UART_PRINT ("无法创建任务 spiSlaveHandleTask\n\n");
    while (1)





    #endif

    #if (enable_cli_task)
    //创建线程 shell
    // pthread_attr_init (&pAttrs_shell);
    priParam.sched_priority = task_priority_cli;
    retc = pthread_attr_setschedparam (&pAttrs、&priParam);
    retc |= pthread_attr_setstacksize (&pAttrs、task_stack_size * 3);

    if (retc!= 0)

    /*错误处理*/
    while (1)

    UART_PRINT ("无法创建 Shell 线程\n");
    返回(空);



    retc = pthread_create (&thread_cli、&pAttrs、ShellThread、NULL);

    if (retc!= 0)

    UART_PRINT ("无法创建任务 ShellThread\n\r\n);
    while (1)





    #endif







    BIOS_start();

    返回(0);


    /*
    *==== dummyOutput ====
    *基准测试和尺寸比较所需的虚拟 SysMin 输出函数
    FreeRTOS 和 TI-RTOS 解决方案*。
    *
    void dummyOutput (void)(空)



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

    如果您已将 RTOS 中的最大优先级数设置为16、则不能预计您无法将任务优先级设置为17 (15 < 17)。

    我不知道你为什么设置如上所述。 预期相同的函数会将优先级设置为:
    (空闲任务)... 0
    Task_priority_cli... 1
    sawn_task_priority... 2.
    Task_Priority_SPI_Slave ... 3.
    Task_priority_tcp... 4.

    这意味着、在您的案例中、优先级将达到5个。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    那么、我想让大于15的设置任务必须执行吗?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    更改.cfg 文件中 RTOS 的配置。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    在 cc3200上设置:
    #define task_priority_network 20.
    #define TASK_PRIORY_OTA 9.
    #define TASK_PRIORY_MQTT 23
    #define task_priority_p2p_main 22.
    #define TASK_PRIORY_SPI_SLAVE 11.
    #define task_priority_ntp 12.
    #define TASK_PRIORY_GPIO 13.
    #define task_priority_notification 19.
    #define task_priority_idle_task 1
    #define Task_Priority_register 21.
    #define task_priority_Button 10.
    #define task_priority_cli 15.
    #define task_priority_State_machine 22.
    #define task_priority_LED_control 2.

    那么、在 cc3220上、我想要设置大于15的任务必须执行吗?
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    我不知道。
    它是如何变化的、
    请帮帮我
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、Jan

    更改.cfg 文件中 RTOS 的配置。

    我不知道。
    它是如何变化的、
    请帮帮我
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Nguyen:

    您所需的优先级不超过16个。 我认为您不需要这个数字优先级。 我认为您的许多任务可以使用相同的优先级。 其次、您有14个任务、因此、有16个任务优先级足够。

    在上面的一个回答中描述了如何增加 TI-RTOS (.cfg 文件)中的优先级数量。

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


    这取决于 cfg 文件中 RTOS 的设置:

    VAR 任务= xdc.useModule('ti.sysbios.knl.Task');
    /*
    *减少任务优先级的数量。
    *默认值为16。
    *减少任务优先级的数量可节省内存。
    *
    Task.numPriorities = 16;
    我不知道你说哪里可以改变
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Nguyen:

    例如、将16更改为32...

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    我不明白、你更清楚地说不明白
    谢谢
    Nguyen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Nguyen:

    按行 Task.numPriorities 你为 RTOS 设置优先级的数量。 如果您需要16个以上的器件、则可以进行更改。 例如、32等。。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    现在我设置:
    #define sawn_task_priority(17)
    #define TASK_PRIORY_TCP(18)
    #define TASK_PRIORY_SPI_SLAVE(18)
    #define task_priority_cli(16)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    现在、我设置如下:
    #define sawn_task_priority(17)
    #define TASK_PRIORY_TCP(18)
    #define TASK_PRIORY_SPI_SLAVE(18)
    #define task_priority_cli(16)
    谢谢
    Nguyen