hi,您好
6678板卡,emif接有 nor flash,现想通过spi 做一个二级启动从emif flash启动,基本思想是 把core 0 ~ core7 的.out 转为.bin分别烧入 emif flash 起始分别为0,0×100000,0x200000…0x700000的地址空间中(.bin文件小于1M)。在spi中烧入搬移程序,将烧入flash中的各核程序段搬移到对应的地址,之后各核分别跳转到各自的cint00地址执行。我是在调试模式下运行此搬移程序,参看.map文件已验证各核程序段搬移成功,各核再运行跳转到对应的入口地址执行,程序并没有启动,请问问题出在哪?这种做法单核从emif 二级启动可以成功
谢谢!
Andy Yin1:
EMIF可以直接支持Nor flash XIP即直接从0x70000000开始执行,所以可以只使用EMIF Nor flash即可支持二级加载,在0x70000000处烧写一段搬移程序,负责将flash的数据解析搬移到内部memory。
6678还支持SPI nor flash boot,这种模式下可以将image烧写到flash,此时不需要二级搬移程序,RBL会负责将数据从flash搬移到内部memory。
SPI flash boot例子:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/46608.aspx
jack liu_first:
回复 Andy Yin1:
hi,您好 我们希望从emif启动,spi串行启动慢,我们的芯片是PG1.0的,直接从emif启动会存在你们说的时钟锁定的问题,所以我选择从spi做二级引导从emif启动,目前的做法是二级引导程序做了所有核程序段的搬移,并跳转到core0的入口地址执行,在core0的代码内加入写各核的magic地址,并发起ipc给其余核。 这样做只有core0启动,我的问题是:这样的二级启动,从核是否会从core0写的magic addr处执行,如果不是,我该如何做使其余从何跳转到各自的入口地址执行?
谢谢