大家好!!
小弟最近在弄idea6410。系统设置的是UART0为调试串口。。我想把UART0修改成普通串口,把UART1修改成调试串口。
我在OAL的debug.c中找到了调试串口的初始化函数OEMInitDebugSerial
贴一些代码:
……………………
[code=C/C++][/code]
#if (DEBUG_PORT == DEBUG_UART0)
// UART0
g_pUARTReg = (S3C6410_UART_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_UART0, FALSE);
#elif (DEBUG_PORT == DEBUG_UART1)
// UART1
g_pUARTReg = (S3C6410_UART_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_UART1, FALSE);
// #endif
#elif (DEBUG_PORT == DEBUG_UART2)
// UART2
g_pUARTReg = (S3C6410_UART_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_UART2, FALSE);
#elif (DEBUG_PORT == DEBUG_UART3)
// UART3
g_pUARTReg = (S3C6410_UART_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_UART3, FALSE);
#else
INVALID_DEBUG_PORT // Error
#endif
……………………
应该就是由这个部分来配置的。除此之外,在文件init.c中也找到了PCLK的配置
贴代码:
……………………
[code=C/C++][/code]
#if (DEBUG_PORT == DEBUG_UART0) // Be Careful to Serial KITL Clock
|(0<<4) // UART3
|(0<<3) // UART2
|(0<<2) // UART1
|(1<<1) // UART0 <--- Always On
#elif (DEBUG_PORT == DEBUG_UART1) // Be Careful to Serial KITL Clock
|(0<<4) // UART3
|(0<<3) // UART2
|(1<<2) // UART1 <--- Always On
|(0<<1) // UART0
#elif (DEBUG_PORT == DEBUG_UART2) // Be Careful to Serial KITL Clock
|(0<<4) // UART3
|(1<<3) // UART2 <--- Always On
|(0<<2) // UART1
|(0<<1) // UART0
#elif (DEBUG_PORT == DEBUG_UART3) // Be Careful to Serial KITL Clock
|(1<<4) // UART3 <--- Always On
|(0<<3) // UART2
|(0<<2) // UART1
|(0<<1) // UART0
#endif
……………………
该怎样修改呢?
我尝试着在代码上做了些修改,而且注册表中我也做了修改,把有关UART0的条件信息和UART1的全部信息给屏蔽掉了,虽然编译的内核能够烧到板子上,但是当我CreateFile的时候,就会报错,错误代码55,设备不可用。。
不知道哪里出问题了。
还有一个疑问就是上面代码中的DEBUG_PORT ,到底在哪里啊? 我搜索了半天,也只在buildlog里面找到了。。。
请高人赐教!!感激不尽!!。最近被这个东西弄的都快要疯了…………
------解决方案--------------------
看你的代码是通过某个变量来设置哪个是调试输出UART,可能是在SMDK6410.bat里边有设置,你找找看
------解决方案--------------------
那你就看下错误代码号55是表示什么内容了。
并且CreateFile用的是COM几?并不是说UART0一定对应的COM0,要看注册表中的相应Index值。