实时性要求和网络要求很高,又不想上VxWorks,毕竟比较贵。
所以打算上一个双核的A9,一个核跑Linux,负责网络、文件这些,一个核裸奔,处理实时数据。
裸奔核对外设要求很低,就串口和GPMC。
但是,需要裸奔的核能够访问外部的DDR3,以便和Linux核交换数据。不知道飞思卡尔官方这方面的技术支持么?
就我粗读手册来看,DDR控制器和两个A9都挂在AHB上,
那么一个A9初始化完成控制器,在MMU中把部分DDR设置成不映射,那么另外一个A9应该可以通过读写这块内存来实现双核之间的数据交换?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1、可以。Kernel BootArg加maxcpus=1即可。
但是,似乎,理论上,Linux Kernel只能跑在CPU0上,就是系统Boot引导的那个Primary CPU。
2、DDR初始化Kernel不管,这是UBoot或者上一级BootLoader干的。
Kernel只是获得可用内存空间并且用,内存控制器初始化不管。
当然,低功耗、休眠的时候可能会去操作内存控制器,但正常情况下不介入。
3、裸奔工程框架和你单核裸奔(或者从主处理器Boot,裸奔)是一样的。
MMU,L1是每个核独享的,自己想怎么初始化都行。
L2,GIC是双核共享的,这个由Linux Kernel初始化,裸奔工程要小心处理,不能影响Kernel方可。
其它独享外设随便用。
问题在于Kernel加载和裸奔代码的加载流程控制上,此外是共享资源和Kernel的互动上。这两个要需要比较好的技术支持才容易搞。
一周热门 更多>