📄 调试记录.txt
字号:
问题1:部分硬盘不能写入数据,中断发生不正常。
解决办法:调整IDE通道的地址建立时间(Address Setup Time)。修改南桥中IDE通道的pci配置寄存器(0x4c)的默认值。
具体代码:
/*Address Setup Time 00--->1T */
vt82c686PciConfigWrite(VTSB_BUS,VTSB_DEV,VTSB_IDE_FUNC,0x4c,1,0x00); (vt82c686.c文件)
问题2、USB设备插入无任何响应。
解决办法:(1)修改寄存器读写端模式。本项目CPU(MPC8245)使用大端模式,由于sysOutWord等函数本身就已经做了翻转,
因此在访问USB寄存器时就不用再做翻转了。
具体代码:
usbPciStub.c文件中:
UINT16 usbPciWordIn
(
UINT32 address /* PCI I/O address */
)
{
UINT16 w = OUR_PCI_IN_WORD (address);
return w/*FROM_LITTLEW (w)*/;
}
VOID usbPciWordOut
(
UINT32 address, /* PCI I/O address */
UINT16 value /* value */
)
{
/*UINT16 w = TO_LITTLEW (value);*/
OUR_PCI_OUT_WORD (address, value/*w*/);
CACHE_PIPE_FLUSH ();
}
(2)添加正确的地址偏移和中断向量偏移.
usbPciStub.c文件中:
#define PCI_IO_OFFSET 0xfe000000
#define PCI_MEM_OFFSET 0x00000000
#define PCI_MEMIO_OFFSET 0x80000000
#define IVEC(i) INUM_TO_IVEC ((int) ((i) + INTERRUPT_BASE))
(3)添加正确的中断号和基地址。
在vt82c686.c文件中:
/*定义IO基地址*/
vt82c686PciConfigWrite(VTSB_BUS,VTSB_DEV,VTSB_USB_FUNC_01,0x20,4,0xa001);
vt82c686PciConfigWrite(VTSB_BUS,VTSB_DEV,VTSB_USB_FUNC_23,0x20,4,0xc001);
/*定义中断号,PCI B(PCIB_IRQ)*/
vt82c686PciConfigWrite(VTSB_BUS,VTSB_DEV,VTSB_USB_FUNC_01,0x3c,1,0xa);
vt82c686PciConfigWrite(VTSB_BUS,VTSB_DEV,VTSB_USB_FUNC_23,0x3c,1,0xa);
问题3:在bootrom中如果插上CF卡会导致一个网卡(有时候是第一个,有时候是第二个)的PCI空间不能访问,从而该网卡不通。
解决办法:
问题4:用命令行编译带符号表的系统映像vxeorks.st,网络无法启动。
解决办法:(1)在config.h中添加以下宏,添加符号表并初始化化网络。
#define INCLUDE_SYM_TBL_SHOW
#define INCLUDE_STANDALONE_SYM_TBL
#define INCLUDE_SYM_TBL_INIT
#define STANDALONE_NET
(2)在系统启动后调用usrNetInit函数,初始化网络。
问题5:从PC机ping rtl8139网卡时,大包不通,小包通。
解决办法:正确拷贝ring buffer内的数据包到族数据中。当一个大包到达ring buffer的结束时都无法完全存储,需要把
余下的部分放入ring buffer的最前面。在拷贝这个数据包到相应的族数据中时,需要正确拷贝余下的部分。
具体代码件rtl81x9.c文件的rtl81x9HandleRecvInt函数。
#ifdef CPU_PENTIUM
memcpy (pNewCluster +len - wrapSize -4, pDrvCtrl->ptrRxBufSpace, wrapSize+0x04);
/* there have some error compiler's bug in this line*/
/* If I just copy the correct bytes the last two bytes will*/
/* have some trouble, so I copy extra bytes to fix the CPU or*/
/* OS's bug vic */
#else
memcpy (pNewCluster /*+len - wrapSize -4*/, pDrvCtrl->ptrRxBufSpace, wrapSize/*+0x04*/);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -