|
发表于 2012-1-19 12:57:43
|
显示全部楼层
#define FINSH_FUNCTION_EXPORT(name, desc) \
const char __fsym_##name##_name[] = #name; \
const char __fsym_##name##_desc[] = #desc; \
const struct finsh_syscall __fsym_##name SECTION("FSymTab")= \
{ \
__fsym_##name##_name, \
__fsym_##name##_desc, \
(syscall_func)&name \
};
这里在调用的时候会定义一些数据,这些数据都是放在FSymTab中的,在MDK下面会直接生成这个section,
当然还得设置链接参数--keep,不然会被链接器去除掉。
extern int FSymTab$$Base;
extern int FSymTab$$Limit;
extern int VSymTab$$Base;
extern int VSymTab$$Limit;
这些变量是编译器定义的,只要声明下就可以使用的,不声明的话是不会定义的。 |
|