Embedded 估算数值例程的嵌入式内存大小

Embedded 估算数值例程的嵌入式内存大小,embedded,cross-compiling,68000,Embedded,Cross Compiling,68000,只有一个类似的问题,但我试图用不同的方法来估计尺寸要求 我试图比较两个数字例程在68k上的执行情况。嵌入的大小和执行速度是我需要量化的指标 有关例程的详细信息:其中一个包含许多复杂的数学运算,如求幂运算。另一个是近似版本,只有加法和乘法 为了比较执行时间,我只是在计算机上使用两个例程的挂钟时间 为了比较内存大小,我制作了一个交叉编译器,并使用数学库的静态链接生成了二进制代码。二进制文件的大小可以很好地衡量嵌入式系统的内存需求,对吗 编辑我正在使用crosstool NG构建编译器。当我使用m68

只有一个类似的问题,但我试图用不同的方法来估计尺寸要求

我试图比较两个数字例程在68k上的执行情况。嵌入的大小和执行速度是我需要量化的指标

有关例程的详细信息:其中一个包含许多复杂的数学运算,如求幂运算。另一个是近似版本,只有加法和乘法

为了比较执行时间,我只是在计算机上使用两个例程的挂钟时间

为了比较内存大小,我制作了一个交叉编译器,并使用数学库的静态链接生成了二进制代码。二进制文件的大小可以很好地衡量嵌入式系统的内存需求,对吗


编辑我正在使用crosstool NG构建编译器。当我使用
m68k unknown uclinux uclibc gcc
时,代码会编译。但是,当我使用
m68k unknown elf gcc
时,我得到一个错误
致命错误:math.h:没有这样的文件或目录
。我认为库部分引用了目标,编译是使用主机上的库完成的

其中一种可能是:

  • 大小:使用objdump获取有关对象文件的信息,它提供了许多有用的信息,例如符号及其地址。另一种方法是生成映射文件,它包含对象和符号映射到内存中的位置(RAM和ROM,但不是动态分配)。这些链接可以帮助您:
  • 执行时间:考虑到它必须在运行时计算,IMO有两个选项:一个内部uC定时器或一个切换引脚(和一个示波器)。我更喜欢第二个选项,从实现的角度来看,它更容易,而且精度比计时器更好(此外,它需要更少的指令)

编辑:关于您的编辑,请尝试将路径添加到编译命令(或makefile),例如
-I[yourPath]

按大小,您指的是代码大小(ROM)还是内存使用量(RAM),还是两者兼而有之?第一个是通过检查链接器的映射文件很容易找到的。如果您使用的是任何一种动态分配,那么第二种方法的参与度要高得多。@OregonJim。谢谢你的评论。事实上,我不是很确定,但我认为使用简化的数值例程而不是复杂的例程会对两者产生影响。还有很多其他的事情要做(读取输入,计算基于模型的控制,设置执行器信号)。我的任务是提取模型的一部分并简化它mathematically@OregonJim你能详细说明一下链接器地图吗。我是一个数值分析的人,对嵌入式系统几乎没有什么背景。你在使用什么编译器?@yaska,链接器生成的映射文件(你可能需要使用开关才能启用)向你显示程序各个部分的代码大小,以及静态数据大小。但是,它不会帮助您计算任何动态分配的内存。非常感谢您的回答。我不明白如何使用objdump中的信息来区分ROM和RAM内存requirements@yaska参考手册提供了内存映射,它解释了内存是如何分布的(以及它们的地址,因此您可以知道它是ram还是rom)。