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.

在freertos任务中调用ROM_UpdateEMAC()函数相关问题

Other Parts Discussed in Thread: TM4C1294NCPDT

芯片:TM4C1294NCPDT

我在freertos任务中调用ROM_UpdateEMAC()函数,发现启动不了bootloader。但是在创建或初始化函数中调用ROM_UpdateEMAC()函数就可以启动bootloader。有知道原因的吗?谢谢!!!

  • 你单步调试看看,在哪里停止了。

    1.确保你的freertos任务调用时OK的,这里可以点亮个LED试试

    2.单步调试看看进不去bootloader,是在哪里停止了。

  • 还有可能是任务权限不够的原因。你查查M4的指南,看看需要什么权限呢。

  • 我的可以哟!

        if(g_bFirmwareUpdate)
        {
          //
          // Transfer control to the bootloader.
          //
          SoftwareUpdateBegin(g_ui32SysClock);
        }

  • 您好,可以共享下你的简单工程代码吗?希望学习一下

  • 上次进这个网站,不能回复,老是说网页有一个错误;

    void
    SoftwareUpdateInit(tSoftwareUpdateRequested pfnCallback)
    {
        uint32_t ui32User0, ui32User1;

        //
        // Remember the callback function pointer we have been given.
        //
        g_pfnUpdateCallback = pfnCallback;

        //
        // Get the MAC address from the user registers in NV ram.
        //
        FlashUserGet(&ui32User0, &ui32User1);

        //
        // Convert the 24/24 split MAC address from NV ram into a MAC address
        // array.
        //
        g_pui8MACAddr[0] = ui32User0 & 0xff;
        g_pui8MACAddr[1] = (ui32User0 >> 8) & 0xff;
        g_pui8MACAddr[2] = (ui32User0 >> 16) & 0xff;
        g_pui8MACAddr[3] = ui32User1 & 0xff;
        g_pui8MACAddr[4] = (ui32User1 >> 8) & 0xff;
        g_pui8MACAddr[5] = (ui32User1 >> 16) & 0xff;

        //
        // Set up a UDP PCB to allow us to receive the magic packets sent from
        // LMFlash.  These may be sent to port 9 from any port on the source
        // machine so we do not call udp_connect here (since this causes lwIP to
        // filter any packet that did not originate from port 9 too).
        //
        g_psMagicPacketPCB = udp_new();
        udp_recv(g_psMagicPacketPCB, SoftwareUpdateUDPReceive, NULL);
        udp_bind(g_psMagicPacketPCB, IP_ADDR_ANY, MPACKET_PORT);
    }

    void SoftwareUpdateRequestCallback(void)
    {
     UARTprintf("receive udp magic!\n");
        g_bFirmwareUpdate = true;
    }

    //*****************************************************************************
    //
    // Setup lwIP raw API services that are provided by the application.  The
    // services provided in this application are - http server, locator service
    // and Telnet server/client.
    //
    //*****************************************************************************
    void
    SetupServices(void *pvArg)
    {  

    ....................................

    ...................................

     //
        // Start the remote software update module.
        //
        SoftwareUpdateInit(SoftwareUpdateRequestCallback);

    ..............................

    .............................

    }

    再加上上一个回复的内容(run in task)!

  • TI的社区就是有这个问题,是不是服务器不在大陆呢?刷新一下就好了。你这个是测试好的代码么?我有空跑跑看

  • 可以的! 有时间请帮我看看RFC2217的问题!

    谢谢