[在此处输入文章标题]
问题一(已解决)关于axicom驱动在CPU主板和管理板不能中断的故障处理
- 怀疑AMP的问题,后经过升入SMP的模式后,依然不行,
- 因为故障是没有打印信息,后来怀疑驱动中的printk的故障,在/proc/sys/kernel中修改printk的级别(原来为7 4 1 7),改为8 4 1 7,故障依旧
- 在后来把原来的AMP的固件全部加载,并加入刘工新生成的bit文件,并加入修改过的设备树,发现问题解决。
问题二 关于SGI驱动不能中断的故障处理
写入新的驱动,主要完成SGI(软中断的处理)
根据同事的建议,在xilinx SDK的工程里面先实现软中断,
/*****************************************************************************/
/**
*
* Allows software to simulate an interrupt in the interrupt controller. This
* function will only be successful when the interrupt controller has been
* started in simulation mode. A simulated interrupt allows the interrupt
* controller to be tested without any device to drive an interrupt input
* signal into it.
*
* @param InstancePtr is a pointer to the XScuGic instance.
* @param Int_Id is the software interrupt ID to simulate an interrupt.
* @param Cpu_Id is the list of CPUs to send the interrupt.
*
* @return
*
* XST_SUCCESS if successful, or XST_FAILURE if the interrupt could not be
* simulated
*
* @note None.
*
******************************************************************************/
s32 XScuGic_SoftwareIntr(XScuGic *InstancePtr, u32 Int_Id, u32 Cpu_Id)
{
u32 Mask;
/*
* Assert the arguments
*/
Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
Xil_AssertNonvoid(Int_Id <= 15U) ;
Xil_AssertNonvoid(Cpu_Id <= 255U) ;
/*
* The Int_Id is used to create the appropriate mask for the
* desired interrupt. Int_Id currently limited to 0 - 15
* Use the target list for the Cpu ID.
*/
Mask = ((Cpu_Id << 16U) | Int_Id) &
(XSCUGIC_SFI_TRIG_CPU_MASK | XSCUGIC_SFI_TRIG_INTID_MASK);
/*
* Write to the Software interrupt trigger register. Use the appropriate
* CPU Int_Id.
*/
XScuGic_DistWriteReg(InstancePtr, XSCUGIC_SFI_TRIG_OFFSET, Mask);
/* Indicate the interrupt was successfully simulated */
return XST_SUCCESS;
}
}
NO |
ph address |
name |
value |
1 |
0xF8F00208 |
Global_Timer_Control_Register |
0 |
2 |
0xF8F00200 |
Global_Timer_Counter_Register0 |
0 |
3 |
0xF8F00204 |
Global_Timer_Counter_Register1 |
0 |
4 |
0xF8F00208 |
Global_Timer_Control_Register |
1 |
5 |
0xF8F02F40 |
reg15_debug_ctrl |
0x03 |
6 |
0xF8F027FC |
reg7_clean_inv_way |
0xFFFF |
7 |
0xF8F02740 |
|
0 |
8 |
0xF8F01000 |
ICDDCR(分配控制寄存器) |
0 |
9 |
0xF8F01c08 |
ICDICFR2(中断配置寄存器) |
0 |
10 |
0xF8F01c0c |
ICDICFR3 |
0 |
11 |
0xF8F01c10 |
ICDICFR4 |
0 |
12 |
0xF8F01c14 |
ICDICFR5 |
0 |
13 |
0xF8F01400 |
ICDIPR0(中断优先级寄存器) |
0xa0a0a0a0 |
14 |
0xF8F01404 |
ICDIPR1 |
0xa0a0a0a0 |
15 |
0xF8F01408 |
ICDIPR2 |
0xa0a0a0a0 |
16 |
0xF8F0140c |
ICDIPR3 |
0xa0a0a0a0 |
17 |
0xF8F01410 |
ICDIPR4 |
0xa0a0a0a0 |
18 |
0xF8F01414 |
ICDIPR5 |
0xa0a0a0a0 |
19 |
0xF8F01418 |
ICDIPR6 |
0xa0a0a0a0 |
20 |
0xF8F0141c |
ICDIPR7 |
0xa0a0a0a0 |
21 |
0xF8F01424 |
ICDIPR9 |
0xa0a0a0a0 |
22 |
0xF8F01428 |
ICDIPR10 |
0xa0a0a0a0 |
23 |
0xF8F0142c |
ICDIPR11 |
0xa0a0a0a0 |
24 |
0xF8F01430 |
ICDIPR12 |
0xa0a0a0a0 |
25 |
0xF8F01434 |
ICDIPR13 |
0xa0a0a0a0 |
26 |
0xF8F01438 |
ICDIPR14 |
0xa0a0a0a0 |
27 |
0xF8F0143c |
ICDIPR15 |
0xa0a0a0a0 |
28 |
0xF8F01440 |
ICDIPR16 |
0xa0a0a0a0 |
29 |
0xF8F01444 |
ICDIPR17 |
0xa0a0a0a0 |
30 |
0xF8F01448 |
ICDIPR18 |
0xa0a0a0a0 |
31 |
0xF8F0144c |
ICDIPR19 |
0xa0a0a0a0 |
32 |
0xF8F01450 |
ICDIPR20 |
0xa0a0a0a0 |
33 |
0xF8F01454 |
ICDIPR21 |
0xa0a0a0a0 |
34 |
0xF8F01458 |
ICDIPR22 |
0xa0a0a0a0 |
35 |
0xF8F0145c |
ICDIPR23 |
0xa0a0a0a0 |
36 |
0xF8F01820 |
ICDIPTR8(中断目标设置寄存器) |
0x01010101 |
37 |
0xF8F01824 |
ICDIPTR9 |
0x01010101 |
38 |
0xF8F01828 |
ICDIPTR10 |
0x01010101 |
39 |
0xF8F0182c |
ICDIPTR11 |
0x01010101 |
40 |
0xF8F01830 |
ICDIPTR12 |
0x01010101 |
41 |
0xF8F01834 |
ICDIPTR13 |
0x01010101 |
42 |
0xF8F01838 |
ICDIPTR14 |
0x01010101 |
43 |
0xF8F0183c |
ICDIPTR15 |
0x01010101 |
44 |
0xF8F01840 |
ICDIPTR16 |
0x01010101 |
45 |
0xF8F01844 |
ICDIPTR17 |
0x01010101 |
46 |
0xF8F01848 |
ICDIPTR18 |
0x01010101 |
47 |
0xF8F0184c |
ICDIPTR19 |
0x01010101 |
48 |
0xF8F01850 |
ICDIPTR20 |
0x01010101 |
49 |
0xF8F01854 |
ICDIPTR21 |
0x01010101 |
50 |
0xF8F01858 |
ICDIPTR22 |
0x01010101 |
51 |
0xF8F0185C |
ICDIPTR23 |
0x01010101 |
52 |
0xF8F01180 |
ICDICER0(中断清除/使能寄存器) |
0xFFFFFFFF |
53 |
0xF8F01184 |
ICDICER1 |
0xFFFFFFFF |
54 |
0xF8F01188 |
ICDICER2 |
0xFFFFFFFF |
55 |
0xF8F01000 |
ICDDCR(分配控制寄存器) |
0x01 |
56 |
0xF8F00104 |
ICCPMR(中断优先级屏蔽寄存器) |
0xF0 |
57 |
0xF8F00100 |
ICCICR(CC CPU接口配置寄存器) |
0x07 |
58 |
0xF8F01100 |
ICDISER0(中断设置启动寄存器) |
0x1000 |
59 |
0xFFFFFFF0 |
cpu1 jump |
0x200000 |
60 |
0xF8F01F00 |
ICDSGIR(软中断产生寄存器) |
0x0003000c |
61 |
0xF8F00110 |
ICCEOIR(中断结束寄存器) |
0x0000000c |