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.

6678如何实现多个程序的动态加载



您好;

最近有项目需求,需要在flash中存储多个.out程序,然后需要根据用户需求(目前设想通过薄码开关、GPIO管脚等指示信号)动态加载flash中存储的程序,即未来可能在flash中烧写10个.out程序,加载的时候根据用户加载其中任意4个.out程序至片内运行!

我从已有的帖子上看到多核启动的LED的demo,通过hex6x和mergebtbl等工具将多个.out烧写至flash, 但似乎每个核都已经按顺序与.out绑定了对应了关系,无法实现动态加载过程!

请问各位专家 我的应用需求该如何实现?

  • 加载时由于要将代码或数据加载每个core私有的memory中,如果使用了使用全局地址,这样就不需要host端解析文件确定将文件加载到哪个core。如果要实现你的要求,在编译时不要使用全局地址,host端根据需要解析出local address,再进行加载。

  • 感谢您的回复。

    但您说Host端解析文件这个过程我没太理解。

    我认为6678加电启动的时候所有核都会执行RBL程序,然后核0开始搬移flash中程序,其他核都会进入IDLE状态,待程序搬移完毕,通过IPC中断其它核让其运行。不知我理解的是否正确?

    问题1:Host端解析是指核0对flash中文件的解析过程吗?

    问题2:现在我一共需要烧写10个.out程序至flash,还是和多核加载一样通过Hex6x和merge工具将其烧入flash中吗?您说的“Host端”解析,具体实现能否明细些,十分感谢?

  • 1. 如果你用的是emif nor flash加载,DSP core是直接从EMIF的地址开始运行的,这时候core 0可以运行起来进行解析和程序搬移,并通过IPC中断启动其他core

    2.你还可以利用I2c 做1次加载,通过控制i2c parameter idx选择不同的boot image