查看: 334|回复: 3

请教,arduino如何开发ESP32上面的双核?

[复制链接]

该用户从未签到

发表于 2018-11-29 16:19 | 显示全部楼层 |阅读模式
本帖最后由 kylongmu 于 2018-12-4 22:10 编辑

ESP32具有两个核心,arduino开发的程序如何用到它们呢?由于只有一个loop入口,不知道如何放多核代码。
partitions.jpg
D:\Arduino\hardware\arduino-esp32\esp32\tools\partitions
从分区文件看有app0、app1两个应用程序分段,但是如何开发两个app并把他们写入到各自的flash,又是如何共享交互数据呢?//追加-----------------------------------------------
现在搞清楚了app0、app1是用来做OTA升级用的,不是写两个core的app。


  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2018-11-29 17:09 | 显示全部楼层
    arduino应该是不行的
    如果以上内容对你有帮助,你可以通过打赏支持作者

    该用户从未签到

     楼主| 发表于 2018-11-29 21:02 | 显示全部楼层
    这么看来arduino的发展落后了,esp32用单核版的就可以了,双核版纯浪费啊。
    以后需要有loop_01()、loop_02()来做多核心的支持。

    该用户从未签到

     楼主| 发表于 2018-12-4 21:57 | 显示全部楼层
    本帖最后由 kylongmu 于 2018-12-4 22:07 编辑

    找到了一篇说明:
    https://techtutorialsx.com/2017/05/09/esp32-running-code-on-a-specific-core/
    看意思应该是只需要启动FreeRtOS的多TASK就能利用多核。在tools\sdk\include\freertos\freertos\task.h中有如下函数:

    kittenblock中小学创客名师推荐的图形化编程软件

    /*-----------------------------------------------------------
     * TASK CREATION API
     *----------------------------------------------------------*/
    
    /**
     * Create a new task with a specified affinity.
     *
     * This function is similar to xTaskCreate, but allows setting task affinity
     * in SMP system.
     *
     * @param pvTaskCode Pointer to the task entry function.  Tasks
     * must be implemented to never return (i.e. continuous loop).
     *
     * @param pcName A descriptive name for the task.  This is mainly used to
     * facilitate debugging.  Max length defined by configMAX_TASK_NAME_LEN - default
     * is 16.
     *
     * @param usStackDepth The size of the task stack specified as the number of
     * variables the stack can hold - not the number of bytes.  For example, if
     * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes
     * will be allocated for stack storage.
     *
     * @param pvParameters Pointer that will be used as the parameter for the task
     * being created.
     *
     * @param uxPriority The priority at which the task should run.  Systems that
     * include MPU support can optionally create tasks in a privileged (system)
     * mode by setting bit portPRIVILEGE_BIT of the priority parameter.  For
     * example, to create a privileged task at priority 2 the uxPriority parameter
     * should be set to ( 2 | portPRIVILEGE_BIT ).
     *
     * @param pvCreatedTask Used to pass back a handle by which the created task
     * can be referenced.
     *
     * @param xCoreID If the value is tskNO_AFFINITY, the created task is not
     * pinned to any CPU, and the scheduler can run it on any core available.
     * Other values indicate the index number of the CPU which the task should
     * be pinned to. Specifying values larger than (portNUM_PROCESSORS - 1) will
     * cause the function to fail.
     *
     * @return pdPASS if the task was successfully created and added to a ready
     * list, otherwise an error code defined in the file projdefs.h
     *
     * \ingroup Tasks
     */
    #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
            BaseType_t xTaskCreatePinnedToCore(        TaskFunction_t pvTaskCode,
                                                                                    const char * const pcName,
                                                                                    const uint32_t usStackDepth,
                                                                                    void * const pvParameters,
                                                                                    UBaseType_t uxPriority,
                                                                                    TaskHandle_t * const pvCreatedTask,
                                                                                    const BaseType_t xCoreID);
    
    #endif
    

    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    arduino温湿度无线传感控制系统
    arduino温湿度无线传感控
    求求你我真的不会,要挂科了,我快哭了真的。如何把功能1234合在一起,目前只会功能2
    请问大神们,这是怎么回事
    请问大神们,这是怎么回事
    出现了这个问题,不知道怎么改,求助大神
    [游戏发布]飞机大战
    [游戏发布]飞机大战
    飞机大战游戏,你可以通过按键控制飞机躲避障碍,直到30000分通关 你要控制飞
    一 个 维 信,改 变你 的 一 生
    一 个 维 信,改 变你 的
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表