这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 【已解决】打开内核调试功能后USE_HOOK_TRACE后链接出错

共10条 1/1 1 跳转至

【已解决】打开内核调试功能后USE_HOOK_TRACE后链接出错

高工
2013-06-18 13:16:57     打赏

我打开内核调试跟踪:#define USE_HOOK_TRACE            1U

后链接时出错:

.\chip_stm32f407vg\kernel-rom.sct: Error: L6218E: Undefined symbol tk_cre_tsk (referred from tasksample.o).

.\chip_stm32f407vg\kernel-rom.sct: Error: L6218E: Undefined symbol tk_del_tsk (referred from tasksample.o).

。。。。。。。。。。。。。。。。。。。。。。。。。

.\chip_stm32f407vg\kernel-rom.sct: Error: L6218E: Undefined symbol knl_unhook_dsp (referred from tk_sysimpl.o).

.\chip_stm32f407vg\kernel-rom.sct: Error: L6218E: Undefined symbol knl_unhook_svc (referred from tk_sysimpl.o).

如果不打开调试支持,这些地方都没有问题。

看样子好像是与USE_HOOK_TRACE相关的部分保被条件编译干掉了


2013.06.21解决

问题:1、什么原因?

         有部分依赖关系没有根据这个开关重新编译

2、怎样解决

 设置这个开关后,rebuild整个工程。仅仅的增量build不行

3、我如果不需要调试内核,只是普通的使用,内核调试功能有没有打开的必要?

   打开之后就能看见到底是什么了。





关键词: 解决     打开     内核     调试     功能     TRACE     链接         

高工
2013-06-18 13:30:45     打赏
2楼

追问:

这个问题应该与宏定义KNL_TK_WRAPER_TEMPLET有关。这是个什么东西?

我查找这个定义,只有一个地方像是在定义,其他地方都是在用:

KNL_TK_WRAPER_TEMPLET $name, $code


我看不懂这是定义什么


附:问度娘的结果那是相当的失望:

抱歉,没有找到与KNL_TK_WRAPER_TEMPLET相关的网页。


建议:
  • 检查输入是否正确
  • 简化输入词
  • 尝试其他相关词,如同义、近义词等
  • 阅读帮助


菜鸟
2013-06-18 16:19:47     打赏
3楼
/*
 * Debugger support function
 *   0: Invalid
 *   1: Valid
 */
#define USE_DBGSPT                0U

/*
 * Use program trace function (in debugger support)
 */

#define USE_HOOK_TRACE            0U


这两个宏同时打开才能启动debug功能


高工
2013-06-18 17:08:16     打赏
4楼
都打开了。 而且这个现象好像跟编译时USE_DBGSPT 有没有打开没关系。

高工
2013-06-18 17:08:44     打赏
5楼
都打开了。 而且这个现象好像跟编译时USE_DBGSPT 有没有打开没关系。

菜鸟
2013-06-18 17:45:12     打赏
6楼

添加HOOK函数主要是为了进行测试或者其他辅助功能,比如为了了解系统处理的实时速度,我们一般会在HOOK函数中记录时间,一进一出就可以计算处理速度;再比如,我们想随时知道栈的使用情况,防止栈的浪费和溢出,可以在HOOK函数中添加。我们写的实验教程中你打开HOOK和不打开HOOK,您都可以试一试。大概就知道HOOK的一些使用方法了。你也会发现HOOK是一个非常有意思的机制。当然,产品发布时不能有HOOK,会影响实时性。

贴几张图,分别是打开HOOK需要修改的配置文件(以STM32F407VG为例),修改的两个宏,eclipse编译通过的图片和keil下编译通过的图片。

配置文件(在keil下看不到,在其他环境下可以,所以如果在keil下,最好手动拖到编辑窗口中)


高工
2013-06-20 20:24:09     打赏
7楼
rebuild
rebuild
rebuild
rebuild
rebuild

rebuild

要全部编译才行


院士
2013-06-20 20:59:50     打赏
8楼
这个要记下来。等拿到板子的时候肯定不可避免的要遇到。

高工
2013-06-20 21:33:17     打赏
9楼
刚发现,问题不是这样的。 是每次改tk_config_depend.h里边的配置之后,都要rebuild,不然会报错。刚验证了下。 我认为是编译的时候,根据配置使用了不同的函数。配置变了,但是有一些东西没有重新编译。所有链接时候出错

菜鸟
2013-06-21 09:18:52     打赏
10楼

不需要绝对目录,我一般是拷到其他目录的,并且改文件后,重新编译也很正常


共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]