Hint: this post is also available in English.

eigenmath_port

我之前说是移植失败了,那是我移植的方法不对。现在总结一下移植经验: 按照Linux版的去移植,删除以下文件:

  • cmddisplay.cpp
  • draw.cpp
  • history.cpp
  • html-tool.c
  • MainXP.cpp
  • MainOSX.cpp
  • msqrt.cpp
  • prototype-tool.c
  • window.cpp

因为部分数学函数丢失,删除

  • besselj.cpp
  • bessely.cpp

并且删除相应头文件和selftest声明 因为肯定工作在文字模式,因此可以无视图形操作,删除

  • display.cpp

,并且在去掉tty检测,直接输出文字。 修改stack.cpp中的堆栈位置为CCM内存(@ ".ccm"),加快速度,减少主内存占用 修改alloc.cpp中的N到合适大小,使之可以放进动态内存 修改stm32f40x_flash.icf中对于heapsize的定义,加大动态内存值define symbol ICFEDIT_size_heap = 0x8000; 增加对于CCM内存的支持:

define symbol __ICFEDIT_region_CCM_start__ = 0x10000000;
define symbol __ICFEDIT_region_CCM_end__   = 0x10010000;

define region CCM_region   = mem:[from __ICFEDIT_region_CCM_start__   to __ICFEDIT_region_CCM_end__];

并且修改内存位置分配

place in RAM_region   { readwrite, block HEAP};
place in CCM_region   { section .ccm,block CSTACK};

这样所有堆栈都在CCM里面,正常的RW和HEAP都在主RAM里。

不过由于内存大小不给力,selftest无法顺利运行,