⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 调试记录.txt

📁 cpc-1631的BSP包for VxWorks操作系统
💻 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 + -