我想通过UART对DSP的程序进行升级,网上搜了一下如下图,其中“与PC机建立联系?”是在什么部分执行,
Reset→InitBoot→SelectBootMode→SCI_BOOT→ExitBoot→EntryPoint→ code_start → wd_disable → copy_sections → c_int00 →main().
想问下所谓的升级的底层程序应该在那部分添加,是main()还是SCI_BOOT或者其他地方。求实例??????
不知道与官网的SCI_BOOT是否又关系
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.
我下载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程序
我也有同样的问题,是否有大神可以解答下