把COM0变成可以用的普通串口

    技术2022-05-13  58

    把COM0变成可以用的普通串口了。我修改的地方如下:1.smdk6410.bat里set BSP_NOUART0=1将这句的值去掉set BSP_DEBUGPORT=SERIAL_UART0将这句屏蔽掉2.OAL下debug.c把判断debug_port的分支和条件都注掉,只留一个想改为调试口的分支的实现部分。

    修改后:

    修改前如下:

    3.smdk6410_serial.cppSetDTR()实现注掉。具体怎么注释掉还不清楚。

     

     

    前两步没有悬念。只做前两步的话,可以看到COM0不输出wince的启动信息,改由COM3输出。但在应用程序中调用CreateFile无法打开COM0,错误号55。注册表中看到当前加载的已经是COM0~2,应当没有错误才是。比较COM0和COM3输出的启动信息,在COM3输出时多出了以下一段话:

    DEBUG: CreateSerialObject 0-OALIntrRequestSysIntr(irq = 61, sysIntr = 33)

     

    输出的错误到这里。

     

    Exception 'Data Abort' (4): Thread-Id=00d20002(pth=85b71510), Proc-Id=00400002(pprc=823f9308) 'NK.EXE', VM-active=01e90002(pprc=85af9780) 'udevice.exe'PC=c0d01e40(smdk6410_serial.dll+0x00001e40) RA=c0d01d94(smdk6410_serial.dll+0x00001d94) SP=d27ae904, BVA=00000000Exception 'Raised Exception' (-1): Thread-Id=00d20002(pth=85b71510), Proc-Id=00400002(pprc=823f9308) 'NK.EXE', VM-active=01e90002(pprc=85af9780) 'udevice.exe'PC=c003bc70(k.coredll.dll+0x0001bc70) RA=8011c4c8(kernel.dll+0x000064c8) SP=d27ae1a0, BVA=ffffffffException 'Prefetch Abort' (3): Thread-Id=04a90002(pth=85784324), Proc-Id=00400002(pprc=823f9308) 'NK.EXE', VM-active=01e90002(pprc=85af9780) 'udevice.exe'PC=c0d02f90(???+0xc0d02f90) RA=c004bdc4(k.coredll.dll+0x0002bdc4) SP=d327fe84, BVA=c0d02f90

     

    --------------------------------------------------------------------------------------------------------------------------------------------

    友坚6410其BSP的默认调试串口为com0(STEPLDR、EBOOT、Wince的都是),现在在wince中使用COM0想把调试口修改到wince的COM3,可以如下操作。

    修改E:/WINCE600/PLATFORM/SMDK6410/SMDK6410.bat中的

    set BSP_NOUART0=1set BSP_NOUART1=set BSP_NOUART2=set BSP_NOUART3=

    ……

    set BSP_DEBUGPORT=SERIAL_UART0@REM set BSP_DEBUGPORT=SERIAL_UART1@REM set BSP_DEBUGPORT=SERIAL_UART2@REM set BSP_DEBUGPORT=SERIAL_UART3

    修改为:

    set BSP_NOUART0=set BSP_NOUART1=set BSP_NOUART2=set BSP_NOUART3=1

    ……

    @REM set BSP_DEBUGPORT=SERIAL_UART0@REM set BSP_DEBUGPORT=SERIAL_UART1@REM set BSP_DEBUGPORT=SERIAL_UART2set BSP_DEBUGPORT=SERIAL_UART3

    重新生成STEPLDR.bin、EBOOT.bin、nk.bin烧入核心板启动,Wince启动后在

    DEBUG: CreateSerialObject 2

    OALIntrRequestSysIntr(irq = 63, sysIntr = 30)

    卡住

    寻找资料后,需要修改E:/WINCE600/PLATFORM/SMDK6410/CESYSGEN/files/platform.reg,把

    ;IF BSP_NOUART2 !;IF BSP_KITL != SERIAL_UART2;IF BSP_NOIRDA2;--------------- UART2 (Physical COM2 Port) ----------------------------------;[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial2]; "DeviceArrayIndex"=dword:2; "Irq"=dword:3F    ; UART2 Virtual IRQ = 63 (0x3F), Physical IRQ = 39; "MemBase"=dword:7F005800; "MemLen"=dword:40;;    "ISTTimeouts"=dword:200  ; every 512 ticks checking Modem status.; "Prefix"="COM"; "Index"=dword:3; "Dll"="smdk6410_serial.dll"; "Order"=dword:30; "Port"="COM3:";   "DeviceType"=dword:0;    "FriendlyName"=LOC_DISPLAYNAME_COM3;    "Tsp"="unimodem.dll";    "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}";    "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00;--------------------------------------------------------------------------;ENDIF;ENDIF;ENDIF

    ;IF BSP_NOUART3 !;IF BSP_KITL != SERIAL_UART3;IF BSP_NOIRDA3;--------------- UART3 (Physical COM2 Port) ----------------------------------;[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial3]; "DeviceArrayIndex"=dword:3; "Irq"=dword:40    ; UART3 Virtual IRQ = 64 (0x40), Physical IRQ = 40; "MemBase"=dword:7F005C00; "MemLen"=dword:40;; "ISTTimeouts"=dword:200  ; every 512 ticks checking Modem status.; "Prefix"="COM"; "Index"=dword:4; "Dll"="smdk6410_serial.dll"; "Order"=dword:30; "Port"="COM4:"; "DeviceType"=dword:0; "FriendlyName"=LOC_DISPLAYNAME_COM4; "Tsp"="unimodem.dll"; "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"; "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00;;--------------------------------------------------------------------------;ENDIF;ENDIF;ENDIF

    这部分全部注释即可解决以上问题。

     


    最新回复(0)