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.

通过串口UART对DSP程序升级



我想通过UART对DSP的程序进行升级,网上搜了一下如下图,其中“与PC机建立联系?”是在什么部分执行,

Reset→InitBoot→SelectBootMode→SCI_BOOT→ExitBoot→EntryPoint→ code_start → wd_disable → copy_sections → c_int00 →main().

想问下所谓的升级的底层程序应该在那部分添加,是main()还是SCI_BOOT或者其他地方。求实例??????

不知道与官网的SCI_BOOT是否又关系

  • SCI Boot

    如果您要的是程序的话,TI还没有提供。 但BootROM的User Guide上有一些关于SCI Boot的相关代码。

    如果你要的是软件的话,参考Code Skin的C2Prog

  • 网上不知道有没有相关的。

    也就是“与PC机建立联系?”是写在SCI BOOT里面的了?

    你是不是也做过类似的,能详细的说下不?

  • 是的,在SCI Boot中,在BootROM文档中有详细的建立连接的过程和步骤。

    首先要自动匹配波特率等等,你下载一下Boot ROM文档自己研究一下吧

  • 我下载Boot ROM与代码研究了一下,但整个链路还不明白:

    Uint32 SCI_Boot()
    {
       Uint32 EntryAddr;

       // Asign GetWordData to the SCI-A version of the
       // function.  GetWordData is a pointer to a function.
       GetWordData = SCIA_GetWordData;

       SCIA_Init();
       SCIA_AutobaudLock();

       // If the KeyValue was invalid, abort the load
       // and return the flash entry point.
       if (SCIA_GetWordData() != 0x08AA) return FLASH_ENTRY_POINT;

       ReadReservedFn();

       EntryAddr = GetLongData();  

       CopyData();

       return EntryAddr;
    }

    1.相当于与PC机握手与询问PC机是否需要升级代码写在在Uint32 SCI_Boot()函数里面?

    2.另外,MemCopy()将API函数复制到RAM,也是写在Uint32 SCI_Boot()函数里面,整个串口接收应用程序、擦除Flash、烧写Flash、校验Flash均写在Uint32 SCI_Boot()函数里吗?

    3.整个链路我不太明白,我理解如下不知是否又什么问题:

    Reset→InitBoot→SelectBootMode→SCI_BOOT→ExitBoot→入口地址(EntryPoint1或EntryPoint2 )

                                                                                                   →EntryPoint1→ code_start → wd_disable → copy_sections → c_int00 →main()应用程序

                                                                                                   →EntryPoint2 → code_start → wd_disable → copy_sections → c_int00 →main()bootloader程序

  • Mak he 说:

    我下载Boot ROM与代码研究了一下,但整个链路还不明白:

    Uint32 SCI_Boot()
    {
       Uint32 EntryAddr;

       // Asign GetWordData to the SCI-A version of the
       // function.  GetWordData is a pointer to a function.
       GetWordData = SCIA_GetWordData;

       SCIA_Init();
       SCIA_AutobaudLock();

       // If the KeyValue was invalid, abort the load
       // and return the flash entry point.
       if (SCIA_GetWordData() != 0x08AA) return FLASH_ENTRY_POINT;

       ReadReservedFn();

       EntryAddr = GetLongData();  

       CopyData();

       return EntryAddr;
    }

    1.相当于与PC机握手与询问PC机是否需要升级代码写在在Uint32 SCI_Boot()函数里面?

    2.另外,MemCopy()将API函数复制到RAM,也是写在Uint32 SCI_Boot()函数里面,整个串口接收应用程序、擦除Flash、烧写Flash、校验Flash均写在Uint32 SCI_Boot()函数里吗?

    3.整个链路我不太明白,我理解如下不知是否又什么问题:

    Reset→InitBoot→SelectBootMode→SCI_BOOT→ExitBoot→入口地址(EntryPoint1或EntryPoint2 )

                                                                                                   →EntryPoint1→ code_start → wd_disable → copy_sections → c_int00 →main()应用程序

                                                                                                   →EntryPoint2 → code_start → wd_disable → copy_sections → c_int00 →main()bootloader程序

    我也有同样的问题,是否有大神可以解答下

  • 赞同你这个思路,但是我在程序跳转的时候出现点问题,不知可否指点一二。。。。。