Porting uLisp to STM32H747XI



I hope you are doing well.

Just quick check, as per uLisp docs you should be able to extend uLisp iff:

  • At least 2 Kbytes of RAM.
  • At least 32 Kbytes of program memory; probably more for 32-bit platforms.
  • A core for the Arduino IDE.
  • Support for serial via the Arduino IDE Serial Monitor.

However there is one particular topic with the: STM32H747XI

It is a Dual ARM® Cortex®:

Cortex -M7 core up to 480 MHz
Cortex -M4 core up to 240 MHz

Will this fact add some complications to porting uLisp, or you should be able to run the code once instructions are followed?

Instead of using on a board I would like to test on a arduino Opta micro PLC.

Best Regards


I’ve got uLisp running on an Arduino GIGA, which is the same processor. I actually managed to get uLisp running on either core, but I didn’t get as far as setting up a way to communicate between cores.

However, I halted work on this version because of some unsolved problems, and I’m waiting for help with these from the Arduino forum. Here’s my post describing the problems:

Problems porting Lisp to the Arduino GIGA core

I’m happy to share my incomplete version of uLisp that supports the Arduino GIGA.



Thank you so much for your feedback. I found something interesting (that probably you already know but just in case)

Looks like this simple example run:

On the other hand also found that Zephyr OS via IPC service APIs handled this topic.

But my guess is that it is just too complex to run / compile uLisp within Zephyr OS. The positive thing is that you would get access to libraries or even nb-iot “ready” processors like the NRF9160.

Best Regards


Yes, copies of uLisp running on each core could communicate with each other using that technique, and even transfer and evaluate uLisp code.



Ok. Thank you so much for your feedback. If some day this processor is able to work with uLisp I will test with a real PLC! :-D

Best Regards


Well, it works with uLisp apart from the three features I referred to on the Arduino forum:

  • Saving images to flash memory with save-image.
  • Running machine-code programs in RAM with defcode.
  • Full support of the Wi-Fi extensions.



Sounds good. I will try to get one Opta in August.

did you have some particular or special way to upload uLisp in the STM32H747XI? Like selecting one particular core while uploading the code or just need to follow the STM32 standard way?

PD: Just as an extra info, here the Arduino supported version for the Opta. Hopefully will work:


Best Regards


Did you have some particular or special way to upload uLisp in the STM32H747XI?

I used the Arduino Giga R1 core which provides a Target core menu option, with the alternatives Main Core and M4 Co-processor.


6 posts were split to a new topic: Running uLisp on a PLC such as the Arduino OPTA