在嵌入式环境中创建没有 main() 函数的二进制文件

问题描述 投票:0回答:1

我需要在c语言上为MCU创建一些项目,该项目没有main()函数。该项目应该被编译和链接。该项目中的函数可以通过指针调用,指针应该有固定的地址。 我为此使用基于 Eclipse 的 IDE 和 GCC 工具链。

例如:

/* linker script SECTIONS: '.fun1 0x601f1000 : {KEEP(*(.fun1))}' */
int (* fun_ptr)(int) __attribute__((section(".fun1")))  = &fun;
int fun(int a)
{
    return a*2;
}

int res
void main (void)
{
    int (* fun_call_ptr)(int) = (int (*)(int))(*(int*)0x601f1000);
    res = (*fun_call_ptr)(10);
}

目标是在一个项目中拥有“有趣”功能,在另一个项目中拥有“主要”功能。然后构建两个项目并将两个二进制文件分别加载到闪存。

我想这可以通过一些链接器脚本或makefile来完成,但不知道如何做到。

c makefile linker embedded
1个回答
0
投票

新用户不知道这是否属于评论,但可能重复使用 GCC 工具链构建两部分固件映像

© www.soinside.com 2019 - 2024. All rights reserved.