/
lispbm.html
166 lines (120 loc) · 6.82 KB
/
lispbm.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<HTML>
<HEAD>
<meta charset="UTF-8">
<meta name="description" content="LispBM: A Microcontroller Lisp for Embedded Systems - Explore the features, performance, and documentation of LispBM for STM32, ESP32, and NRF52 microcontrollers.">
<meta name="keywords" content="Lisp, Scheme, LispBM, LBM, scripting, microcontroller lisp, microcontrollers, documentation, performance, lisp on microcontrollers">
<meta name="author" content="Bo Joel Svensson">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</HEAD>
<style type="text/css">
body, html {
margin-left: 5%;
margin-right: 5%;
}
img {
max-width: 100%;
max-height: 100vh;
width: auto;
margin: auto;
}
.topnav {
overflow: auto;
white-space: nowrap;
background-color: #333;
}
.topnav a {
display: inline-block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
}
.topnav a:hover {
background-color: #ddd;
color: black;
}
.topnav a.active {
background-color: #4CAF50;
color: white;
}
.hero-image {
background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url("./images/lispbm_llama_small.png");
height: 50%;
/* Position and center the image to scale nicely on all screens */
background-position: center;
background-repeat: repeat;
position: relative;
}
/* Place text in the middle of the image */
.hero-text {
text-align: center;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: gray;
}
}
</style>
<BODY bgcolor=#C0C0C0>
<div class="hero-image">
<div class="hero-text">
<h1>LispBM</h1>
</div>
</div>
<div class="topnav">
<a href="./index.html"> Home </a>
<a href="./index.html#BLOG"> Blog </a>
<a href="./index.html#VIDEOS"> Videos </a>
<a href="./research.html"> Research </a>
<a class="active" href="./lispbm.html"> LispBM </a>
<a href="./about.html"> About </a>
<a href="./privacy_policy.html">Privacy Policy</a>
</div>
<h2>What is LispBM?</h2>
<p>LispBM is a versatile Lisp or Scheme-like programming language, implemented in C, with a focus on microcontrollers. It is designed to empower developers to work with microcontrollers like the STM32, ESP32, and NRF52, allowing you to embed LispBM in your applications as a scripting engine.</p>
<p>You can find the LispBM source code on <a href="https://github.com/svenssonjoel/lispbm">GitHub</a>, collaboration and contributions are welcome.</p>
<p>LispBM is an integral part of the VESC BLDC Open Source motor controller, starting from <a href="https://vesc-project.com/node/3385">VESC firmware version 6.00</a>. Additionally, it is incorporated into the <a href="https://github.com/vedderb/vesc_express">VESC EXPRESS firmware</a>, a versatile code base that facilitates the development of custom VESC-compatible hardware devices.</p>
<p>If you're looking to start your journey with LispBM, consider getting an <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html">ESP32C3 devkit</a> and using the VESC Express firmware. This combination offers a user-friendly and feature-rich platform to explore LispBM's capabilities and develop your projects.</p>
<h2> Success Stories: How LispBM Facilitates Creativity in Embedded Systems Programming </h2>
<ul>
<li>
<a href="https://www.kitesforfuture.de/">Kites For Future</a> are generating electricity using a kite, a VESC BLDC motor controller, and clever Lisp scripting. Watch their <a href="https://www.youtube.com/watch?app=desktop&v=pU08gItGpAs">demonstration of their autonomous power-generating kite</a>.
</li>
<li>
<a href="https://github.com/aka13-404/VSETT-LISP">The VSETT-LISP repository by Alexander Krasnov (aka13-404)</a> provides scripts that acts as a middle-man between a VESC and a stock VSETT/Kaboo scooter display.
</li>
</ul>
<p>Have a success story using LispBM that you'd like to share? We'd love to feature your achievement here! Please send us an email with the details at <a href="mailto:blog.joel.svensson@gmail.com">blog.joel.svensson@gmail.com</a>.</p>
<h2>LispBM Performance Evolution</h2>
<p>The performance of the LispBM implementation continuously evolves as we introduce new features and engage in optimization efforts. We work to enhance its efficiency for microcontrollers, such as the STM32F4 running at 168MHz.</p>
<p>Below, you can find performance charts illustrating LispBM's performance on a set of benchmarks:</p>
<img src="./images/benchresults.png" alt="Performance on a small set of benchmarks." />
<img src="./images/benchresults_log.png" alt="Performance (log scale) on a small set of benchmarks." />
<p>If you're interested in the technical details and benchmarks, you can explore our benchmark code here:</p>
<p><a href="./code/lbm_benchmarks_2022_02_27/index.html">Benchmarks 2022_02_27</a></p>
<h2>Documentation</h2>
Work in progress <a href="https://github.com/svenssonjoel/lispBM/tree/master/doc/manual"> LispBM programming manual</a>.<br>
Work in progress <a href="https://github.com/svenssonjoel/lispBM/blob/master/doc/lbmref.md"> language reference</a>.<br>
Work in progress <a href="./lbmdoc/html/index.html"> LispBM implementations documentation</a>.<br>
<br>
<h2>Lisp-Like Languages for Microcontrollers</h2>
<p>Explore a range of Lisp-like programming languages that are tailored for microcontroller development. These languages are designed to thrive in resource-constrained environments, making them ideal choices for embedded systems. Whether you're looking for a lightweight solution or a minimalist Lisp dialect, these languages offer unique approaches to microcontroller programming.</p>
<ul>
<li>
<strong>uLisp:</strong> A Lisp dialect specifically designed for microcontrollers. <a href="http://www.ulisp.com/">Learn more</a>
</li>
<li>
<strong>FemtoLisp:</strong> A minimalistic Lisp designed for resource-constrained environments. <a href="https://github.com/JeffBezanson/femtolisp">Learn more</a>
</li>
<li>
<strong>PicoLisp:</strong> A lightweight and minimalistic Lisp dialect for both server-side and embedded programming. <a href="https://picolisp.com/">Learn more</a>
</li>
</ul>
<p>Did we miss to link to your favourite microcontroller lisp? Please send us an email with the details at <a href="mailto:blog.joel.svensson@gmail.com">blog.joel.svensson@gmail.com</a>.</p>
<br>
<hr>
© Copyright 2022 Bo Joel Svensson
</BODY>
</HTML>