实时性要求和网络要求很高,又不想上VxWorks,毕竟比较贵。
所以打算上一个双核的A9,一个核跑Linux,负责网络、文件这些,一个核裸奔,处理实时数据。
裸奔核对外设要求很低,就串口和GPMC。
但是,需要裸奔的核能够访问外部的DDR3,以便和Linux核交换数据。不知道飞思卡尔官方这方面的技术支持么?
就我粗读手册来看,DDR控制器和两个A9都挂在AHB上,
那么一个A9初始化完成控制器,在MMU中把部分DDR设置成不映射,那么另外一个A9应该可以通过读写这块内存来实现双核之间的数据交换?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
高人啊,可惜这帖忘了开成悬赏帖,不然一点莫币也算聊胜于无。
1、Linux Kernel只能跑在CPU0上-------这个完全没有问题。
2、DDR初始化Kernel不管,这是UBoot或者上一级BootLoader干的。------------是不是说,bootloader初始化DDR控制器后,总线上的所有设备都可以读写DDR了?我觉得应该是这样,不然DMA一类的没法处理。
基本上来说,就是linux核初始化DDR控制器,把内存加载到比如0x8000000开始的地方,然后裸奔核以0x80000000为基址就可以读写DDR了?
3、MMU,L1是每个核独享的,自己想怎么初始化都行。L2,GIC是双核共享的,这个由Linux Kernel初始化,裸奔工程要小心处理,不能影响Kernel方可。其它独享外设随便用。------------看来L2得关掉了……能不能只关裸奔核的?
问题在于Kernel加载和裸奔代码的加载流程控制上,此外是共享资源和Kernel的互动上。这两个要需要比较好的技术支持才容易搞。------------------对,交互是个大问题,不过如果裸奔核可以直接访问DDR就好办了,linux核在初始化MMU的时候,把一部分内存
比如10M,设置成不映射,这个时候这段内存就是物理地址,两个CPU就可以互动了。
一周热门 更多>