关于友善的KITL调试问题

FriendlyARM所给的bsp是不支持(或者说不正确地支持)KITL的,因此无法在没有硬件调试器的情况下对驱动进行

源代码级调试。为了工作方便,我们决定让这个bsp支持KITL。


首先大概说一下,在没有硬件调试器的情况下,获取调试信息的两种方法:一是DEBUG PORT,二是KITL。
先说DEBUG PORT
在绝大多数情况下,DEBUG PORT实际上就是串口,我们可以让我们的驱动从串口打印一些信息出来,比如
“靠,程序怎么跑到这个鬼地方来了。”早些时候的CE系统还支持并口输出调试信息,但现在已经不用了。
这种方式的优点是简便,且可以兼用于BOOTLOADER和KERNEL。缺点是太简便了,难以交互式调试。
输出信息的函数是DbgOutputString(...) 在Boot阶段,也可以使用EdbgOutputDebugString
再说KITL。
KITL需要CE内核支持,也是通过某个硬件接口和开发人员交互,可以下断点,观察变量,
基本上就是一个完整的源代码级调试环境,缺点是无法用于Bootloader,需要在Kernel跑起来以后才能用。
目前CE支持Serial、Ethernet、USB三种接口的KITL。

现在让我们回到FriendlyARM提供的那个BSP。这个bsp使用了一种很古怪的方式来定义DEBUG PORT和KITL,
见options.h:
#define KITL_xxxx xxxx
然后把这个宏同时用于DEBUG PORT和KITL。换句话说,这个bsp把DEBUG PORT和KITL设定为同一个硬件接口,

这不就打架了么。所以我们把options.h里面关于KITL_XXX的行统统删除(在tiny6410中,

保留并打开#define KITL_SERIAL_UART0),然后把设定写在platform\smdk64\smdk6410.bat里面:

------------------------------------------------------------------------------
REM 关闭所有串口驱动
set BSP_NOSERIAL=1
set BSP_NOUART0=1
set BSP_NOUART1=1
set BSP_NOUART2=1
set BSP_NOUART3=1
set BSP_NOIRDA2=1
set BSP_NOIRDA3=1
REM 关闭DEBUG PORT
set BSP_DEBUGPORT=
REM KITL使用UART0
set BSP_KITL=SERIAL_UART0 
-------------------------------------------------------------------------------

上面的设定让KITL使用串口0,且关闭DEBUG PORT功能。为什么要关DEBUG PORT? 因为我

没有两根串口线,而我暂时又搞不定USB的KITL,所以只好先这样了。

什么,为嘛要写在bat文件里?这个我也说不清,反正很多官方的bsp都是这么干的,包括但不限于:
PXA255, PXA310, SMDK2410
然后在sources文件里根据bat设定的环境变量设置C编译器宏:
PLATFORM\SMDK6410\SRC\KITL\sources:
添加:
---------------------------------------------------------------------

!IF "$(BSP_KITL)" == "SERIAL_UART0"
CDEFINES=$(CDEFINES) -DKITL_SERIAL_UART0
!ENDIF

!IF "$(BSP_KITL)" == "SERIAL_UART1"
CDEFINES=$(CDEFINES) -DKITL_SERIAL_UART1
!ENDIF

!IF "$(BSP_KITL)" == "SERIAL_UART2"
CDEFINES=$(CDEFINES) -DKITL_SERIAL_UART2
!ENDIF

!IF "$(BSP_KITL)" == "SERIAL_UART3"
CDEFINES=$(CDEFINES) -DKITL_SERIAL_UART3
!ENDIF

!IF "$(BSP_KITL)" == "USBSERIAL"
CDEFINES=$(CDEFINES) -DKITL_USBSERIAL
!ENDIF

PLATFORM\SMDK6410\SRC\OAL\OALLIB\sources
添加:
--------------------------------------------------------------------------------
!IF "$(BSP_DEBUGPORT)" == "SERIAL_UART0"
CDEFINES=$(CDEFINES) -DDEBUG_PORT=0
!ENDIF

!IF "$(BSP_DEBUGPORT)" == "SERIAL_UART1"
CDEFINES=$(CDEFINES) -DDEBUG_PORT=1
!ENDIF

!IF "$(BSP_DEBUGPORT)" == "SERIAL_UART2"
CDEFINES=$(CDEFINES) -DDEBUG_PORT=2
!ENDIF

!IF "$(BSP_DEBUGPORT)" == "SERIAL_UART3"
CDEFINES=$(CDEFINES) -DDEBUG_PORT=3
!ENDIF

这样就差不多了。但是且慢,KITL的是可以在bootloader里开或关的,
不幸的是Superboot并没有这个功能。
所以我们强制开启:
在KITL.C中修改:
-----------------------------------------------------------

BOOL OEMKitlStartup(void)
{
...
// Force startup KITL
    if(0/*(pArgs->flags & OAL_KITL_FLAGS_ENABLED) == 0*/)
    {
        RETAILMSG(1,(TEXT("KITL was Disabled from EBOOT !!\r\nPlease set KITL Configuration in EBoot !!\r\n")));
        return FALSE;

    }

...

}

好了,现在clean sysgen,把程序烧进flash,启动后可以看到串口工具里会显示KITL已经启动。
现在关闭串口工具,在vs2005的target菜单下选connectivity options,
Transport选serial,设置好端口,debugger选kdstub,download选none,然后点debug->attach
过一会……不,是过一大会,vs2005的output窗口就有东西出来了,告诉你跟设备连上了。
为什么是一大会?这个我们要理解,串口的速度是很慢滴。。。。。。
在我的机子上KITL花了五分钟打印出近千行调试信息,还是没出来CE漂漂的界面。MD,不玩了!

总结:KITL框架没有问题,但是serial太慢了,完全不实用。
下一步:搞定usb KITL。
时间:明年再说吧。

对了,还有一点:编译debug版本以前先给工程瘦个身,Tiny6410的ram是放不下FriendlyARM原版工程的Debug版的。

补充1:以上文字大多数人可以自由使用,但禁止FriendlyARM使用以上文字和根据以上文字得来的东西修改自己的BSP,哈、哈、哈
补充2:补充1是个玩笑,请忽略。估计FriendlyARM的工程师们会笑话这小子狂妄自大、不知天高地厚 :-)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
友善串口调试助手是一个功能强大且易于使用的串口调试工具。以下是使用友善串口调试助手的简要教程: 1. 下载和安装友善串口调试助手:你可以从官方网站或其他可靠的下载来源获得友善串口调试助手,并按照安装向导进行安装。 2. 连接串口设备:将串口设备连接到计算机,并确认设备已正确连接。你可以使用USB转串口适配器来连接串口设备。 3. 打开友善串口调试助手:双击桌面上的友善串口调试助手图标,或者从开始菜单中找到并打开它。 4. 配置串口参数:在友善串口调试助手的界面上,选择正确的串口号和波特率。你可以根据串口设备的要求选择正确的参数。 5. 打开串口连接:点击“打开串口”按钮,建立与串口设备的连接。 6. 接收和发送数据:在接收和发送区域,你可以输入要发送的数据,并点击“发送”按钮发送数据。同时,友善串口调试助手会实时显示串口设备发送过来的数据。 7. 设置自动发送周期:如果需要定期发送数据,你可以在工具栏中设置自动发送的时间间隔。 8. 保存数据:友善串口调试助手可以将接收到的数据保存为文本文件。你可以点击“保存数据”按钮选择保存路径和文件名。 9. 断开串口连接:在使用完毕后,点击“关闭串口”按钮,断开与串口设备的连接。 友善串口调试助手具有用户友好的界面和丰富的功能,可满足不同用户的需求。希望这个简要教程对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值