This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARMv7多核处理器问题

最近搞飞思卡尔iMX6 4核A9处理器,有几个问题要请教下:

1、每个核都是有一套独立的指令寄存器吧,问题来了,PC寄存器和一些状态寄存器是否也是独立的?

2、在裸机开发的情况下,怎么获取当前的代码运行在哪个核上面?

3、如果在多核处理器上面实现一个longjmp应如何实现?longjmp只能实现核内长跳吗?

4、核处于关闭状态,来一中断后,是所有核都唤醒还是只有其中一个?核被关闭后,然后被唤醒,需要重新初始化核的PLL等那些参数吗?standby状态与其他两关闭状态主要区别在哪?

5、中断发生后,哪个核要进行中断服务处理是程序员事件还是硬件事件?还是两种都支持?

6、一般裸机开发用什么开发平台比较方便,用jlink或者ulink可以实现单步调试吗?

Parents
  • Hi, Cut,

    >1、每个核都是有一套独立的指令寄存器吧,问题来了,PC寄存器和一些状态寄存器是否也是独立的?

    是的,每个核拥有独立的物理通用寄存器和状态寄存器。

    >2、在裸机开发的情况下,怎么获取当前的代码运行在哪个核上面?

    可以通过读取MPIDR寄存器来获取当前运行的程序所对应的Cluster ID以及某一Cluster内部的CPUID.需要注意的是,该寄存器只能在Core处于privileged mode 下才可以被读取。该寄存器为32bit,其中[1:0]

    CPUID[11:8]bit 表示ClusterID.

    >3、如果在多核处理器上面实现一个longjmp应如何实现?longjmp只能实现核内长跳吗?

    据我所知,longjump/setjump以及siglongjump作为标准C库函数的一部分,其在不同的处理器架构上有不同的实现,但是与是否多核没有直接必然的联系,在实现longjump的时候,应该考虑multi-threading和signal handling时的情况。

    >4核处于关闭状态,来一中断后,是所有核都唤醒还是只有其中一个?核被关闭后,然后被唤醒,需要重新初始化核的PLL等那些参数吗?standby状态与其他两关闭状态主要区别在哪?

    A9支持4中power mode,分别是run mode, standby mode, Domant mode 和shutdown mode.这四种power mode的主要区别为:

    Run mode: 既功能mode

    Standby mode: 通过执行WFI 和WFE可以使Core 进入standby mode.此时core内的大部分逻辑的时钟是被gating掉的,但是逻辑处于power on状态。Core一直处于这种状态除非发生了一些事件或者行为,例如发生了IRQ/FIQ interrupt, asynchronous abort或者debug事件等。你可以通过用户板子用户手册或者

    Dormant mode:在该种Power mode下,硬件中的大部分逻辑除了cache memory 保持power up 保存有数据之外,其他的逻辑都是power down的,这样可以让系统在上电的时候快速恢复并有效的减少功耗。

    Shutdown mode:整个core 此时都是掉电的。

    你可以通过阅读用户手册或者下载以下文档http://infocenter.arm.com/help/topic/com.arm.doc.ddi0407i/DDI0407I_cortex_a9_mpcore_r4p1_trm.pdf来获得更多的相关方面的内容。

    standby 模式下,若MPCore 接收到一个中断,是否唤醒取决于多方面的因素,主要包括

    1)是否已经通过配置中断控制器将对应的中断发往指定的core

    2)若该中断已经发往指定的core,该core是否被唤醒还取决于此种standby mode 是由WFI指令产生还是WFE指令产生,若为WFI 产生,则该core回因为收到了中断而唤醒。若为WFE产生,则是否被唤醒还取决于是否配置了CPSR.I,CPSR.F屏蔽了该中断。

    >5、中断发生后,哪个核要进行中断服务处理是程序员事件还是硬件事件?还是两种都支持?

    对于A9 MPCore来讲,内部集成有一个中断控制器,可以通过软件编程(ICDIPTRn来将制定的中断发往指定的核。对于Software Generated Interrupt类型中断,还有更多的的控制规则。

    >6、一般裸机开发用什么开发平台比较方便,用jlink或者ulink可以实现单步调试吗?

    ARM以及合作伙伴都推出了大量的开发平台以供客户使用,你可以根据需求有针对性的进行选择。其中,对于ARM来讲,TC2也可以满足您的开发需求。对于Jlink和Ulink来讲都支持单步调试。我建议你使用ARM最新的DS-5 开发套件,可以提供强大的develop 和debug等功能,你可以通过http://ds.arm.com/ 来获取更多有关DS-5有关信息。

Reply
  • Hi, Cut,

    >1、每个核都是有一套独立的指令寄存器吧,问题来了,PC寄存器和一些状态寄存器是否也是独立的?

    是的,每个核拥有独立的物理通用寄存器和状态寄存器。

    >2、在裸机开发的情况下,怎么获取当前的代码运行在哪个核上面?

    可以通过读取MPIDR寄存器来获取当前运行的程序所对应的Cluster ID以及某一Cluster内部的CPUID.需要注意的是,该寄存器只能在Core处于privileged mode 下才可以被读取。该寄存器为32bit,其中[1:0]

    CPUID[11:8]bit 表示ClusterID.

    >3、如果在多核处理器上面实现一个longjmp应如何实现?longjmp只能实现核内长跳吗?

    据我所知,longjump/setjump以及siglongjump作为标准C库函数的一部分,其在不同的处理器架构上有不同的实现,但是与是否多核没有直接必然的联系,在实现longjump的时候,应该考虑multi-threading和signal handling时的情况。

    >4核处于关闭状态,来一中断后,是所有核都唤醒还是只有其中一个?核被关闭后,然后被唤醒,需要重新初始化核的PLL等那些参数吗?standby状态与其他两关闭状态主要区别在哪?

    A9支持4中power mode,分别是run mode, standby mode, Domant mode 和shutdown mode.这四种power mode的主要区别为:

    Run mode: 既功能mode

    Standby mode: 通过执行WFI 和WFE可以使Core 进入standby mode.此时core内的大部分逻辑的时钟是被gating掉的,但是逻辑处于power on状态。Core一直处于这种状态除非发生了一些事件或者行为,例如发生了IRQ/FIQ interrupt, asynchronous abort或者debug事件等。你可以通过用户板子用户手册或者

    Dormant mode:在该种Power mode下,硬件中的大部分逻辑除了cache memory 保持power up 保存有数据之外,其他的逻辑都是power down的,这样可以让系统在上电的时候快速恢复并有效的减少功耗。

    Shutdown mode:整个core 此时都是掉电的。

    你可以通过阅读用户手册或者下载以下文档http://infocenter.arm.com/help/topic/com.arm.doc.ddi0407i/DDI0407I_cortex_a9_mpcore_r4p1_trm.pdf来获得更多的相关方面的内容。

    standby 模式下,若MPCore 接收到一个中断,是否唤醒取决于多方面的因素,主要包括

    1)是否已经通过配置中断控制器将对应的中断发往指定的core

    2)若该中断已经发往指定的core,该core是否被唤醒还取决于此种standby mode 是由WFI指令产生还是WFE指令产生,若为WFI 产生,则该core回因为收到了中断而唤醒。若为WFE产生,则是否被唤醒还取决于是否配置了CPSR.I,CPSR.F屏蔽了该中断。

    >5、中断发生后,哪个核要进行中断服务处理是程序员事件还是硬件事件?还是两种都支持?

    对于A9 MPCore来讲,内部集成有一个中断控制器,可以通过软件编程(ICDIPTRn来将制定的中断发往指定的核。对于Software Generated Interrupt类型中断,还有更多的的控制规则。

    >6、一般裸机开发用什么开发平台比较方便,用jlink或者ulink可以实现单步调试吗?

    ARM以及合作伙伴都推出了大量的开发平台以供客户使用,你可以根据需求有针对性的进行选择。其中,对于ARM来讲,TC2也可以满足您的开发需求。对于Jlink和Ulink来讲都支持单步调试。我建议你使用ARM最新的DS-5 开发套件,可以提供强大的develop 和debug等功能,你可以通过http://ds.arm.com/ 来获取更多有关DS-5有关信息。

Children