HI,各位,
最近在调试6678在SYS/BIOS系统下使用IPC多核触发。我在裸跑的时候已经可以通过IPC使core0触发其他核了,但是在SYS/BIOS系统里面创建了一个task用于core0触发其他核,通过调试发现,core0已经正常的跑起来了,但是其他核并没有被触发 而跑起来。请问在这个问题中,还需要注意什么呢?
我在想SYS/BIOS的一个task是用一个while里面死循环的,说明一个task没调度的话是不会跳出的。但是core0的触发代码已经做好了,按理来说其他核会被加载上执行文件,请问这是什么情况呢?谢谢。
Andy Yin1:
您好,
你是在SYS/BIOS中使用IPCGR来产生核间中断,还是使用的是MCSDK安装完之后的IPC Module测试?如果只是采用直接写IPCGR寄存器的方式的话,在裸机及带SYS/BIOS下是没有差异的。请确认
chunlei gan:
回复 Andy Yin1:
HI Andy Yin,
我用的是 :DEVICE_REG32_W(IPCGR(core), 1),也就是使用IPCGR来产生核间中断的。我再确认下。谢谢
chunlei gan:
回复 Andy Yin1:
hi Andy Yin,
想问下,如果在SYS/BIOS下使用IPCGR触发的那块库和裸跑下的那块库是一样的么?
extern cregister volatile unsigned int DNUM;
extern far uint32_t _c_int00;
主要是上面这两句,在SYS/BIOS下也是相应的判断core和起始地址么?
谢谢
chunlei gan:
回复 Andy Yin1:
您好,Andy Yin
我在MCSDK安装目录下搜索到image_processing.ipc这块的IPC,请问这块是IPC Module测试程序么?还是在其他什么安装路径下?谢谢
chunlei gan:
回复 Andy Yin1:
您好,Andy Yin
MCSDK安装完之后的IPC Module测试代码已经找到,在mcsdk_<version>\packages\ti\transport\ipc\qmss
谢谢
chunlei gan:
回复 Andy Yin1:
您好,Andy Yin
我反复看了代码,把裸跑写IPCGR寄存器来用IPC触发成功的代码移植到SYS/BIOS里面,但是在SYS/BIOS下就是没法通过core0触发其他核。在裸跑代码中,就是通过写magic地址和用中断触发其他核的,想问下在SYS/BIOS下用中断触发的会不会有影响?谢谢
chunlei gan:
回复 Andy Yin1:
您好, Andy Yin
我在SYS/BIOS的task1里面做了core0触发core1的代码,代码在附件中,core0触发其他核后,给一个地址赋值,而当core1被触发后会有闪灯效果。但是core0可以启动,说明进入了task任务,而闪灯没有效果,说明core1没有被触发,你能帮我看下问题么?谢谢
Thomas Yang1:
回复 chunlei gan:
chunlei gan 你好
方便把整个工程发来看下吗,包括core0和 core1的,
请告诉我们必要的编译和运行注意事项,我们在EVM上复现一下,希望可以帮助到你
Andy Yin1:
回复 Thomas Yang1:
您好,
对你其中的DEVICE_REG32_W(BOOT_MAGIC_ADDR(core), (uint32_t)&_c_int00); 类似写magic addr的操作不是很理解,能否说明一下,谢谢
chunlei gan:
回复 Andy Yin1:
HI,Andy.
这句是在裸跑代码里面参考的,也是参考你们的demo–pcieboot_helloworld的里面,在for循环里面将每个core的_c_int00都写一次?
想问下如果用SYS/BIOS来写magic addr那需要怎么写呢?谢谢