Skip to content
This repository was archived by the owner on Jun 5, 2019. It is now read-only.

Commit 79c5a1f

Browse files
lt72lt72
authored and
lt72
committed
Update README.md.
Correct minor typographical & grammatical errors. Corrected some very minor typographical errors (2), added punctuation (1 spot), added the word "the" in one spot, and changed "One Core" to "OneCore" to match the term used by Gabe Aul in his January 13, 2016 blog post. https://blogs.windows.com/windowsexperience/2016/01/13/announcing-windows-10-insider-preview-build-11099/. Added setenv script for Win32 platforms. Required LLVM version updated to 3.8.1. Minor script fixes: grammatics and default LLVM version updated. update .gitignore.
1 parent e3d6235 commit 79c5a1f

File tree

5 files changed

+62
-19
lines changed

5 files changed

+62
-19
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -257,3 +257,4 @@ Zelig/Zelig/CompileTime/Llvm.NET/Win32/RelWithDebInfo/Llvm.NET.dll
257257
*.opendb
258258
/Zelig/Zelig/CompileTime/Llvm.NET/LibLLVM/generatedversioninfo.h
259259
/LlilumSDK/LlilumSDK/FrameworkList.xml
260+
Zelig/Zelig/Zelig.VC.db

README.md

+34-15
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,53 @@ Welcome to LLILUM!
44
A development platform for IL based languages and UWP applications targeting Cortex-M processors.
55

66
## Why LLILUM
7-
Cortex-M processors are heavily resource contrained, and yet, because of their low power consumption and optimized interrupt dispatching, are arguably the most suitable solution for IoT applications.
7+
Cortex-M processors are heavily resource constrained, and yet, because of their low power consumption and optimized interrupt dispatching, are arguably the most suitable solution for IoT applications.
88
Existing development platfoms and tool chains that target this space are based on C/C++, and no native support for higher level languages and RAD environment exist that can take advantage of what a Cortex-M HW can offer.
99
Previous efforts in this space include [.NET Micro Framework](https://github.com/NETMF/netmf-interpreter) and other Java solutions, which are sometimes too large in code size, too slow or too difficult to extend for mainstream adoption.
1010
LLILUM implements a scalable alternative to C/C++ that features comparable code size and speed, as well as easy extensibility from within the Visual Studio development tool chain.
1111

1212
## What is LLILUM
13-
LLILUM is an optimizing compilation tool chain that, just like .NET Micro Framework, is entirely based on [CLI](http://www.ecma-international.org/publications/standards/Ecma-335.htm).
14-
LLILUM relies on the well known development experience in Visual Studio to transform source code into MSIL, and then into an intermediate represenation (IR) that is optmized for size and speed, taking into account the target platform constraints, such as memory layout, native ISA, calling convention, and, first and foremost, the application requirements. The method and type closure is optimized based on application usage of system facilities, and the type system is morphed to shrink into the smallest possible footprint.
13+
LLILUM is an optimizing compiler tool chain based on the latest [CLI](http://www.ecma-international.org/publications/standards/Ecma-335.htm) standard and [LLVM](http://llvm.org/) version [3.8.1](http://llvm.org/releases/download.html#3.8.1).
14+
LLILUM relies on the compelling development experience of Visual Studio to transform source code into MSIL, and then into an intermediate represenation (IR) that is optmized for size and speed, taking into account the target platform constraints, such as memory layout, native ISA, calling convention, and, first and foremost, the application requirements. The method and type closure is optimized based on application usage of system facilities, and the type system is morphed to shrink into the smallest possible footprint. Debugging is carried out through Visual Studio and GDB.
1515
Standard features of CLI environments, e.g. type system (TS) introspection, garbage collection (GC) and a full featured multi-threaded execution engine (MTEE) are provided.
1616

17-
## State of the Art
18-
LLILUM can generate runnable images for ARMv4 and ARMv5 ISA, with partial FP support. We could extend the code generator to support ARMv7-M but we decided to leverage LLVM instead, hoping we can get a wider set of targets over time. The current incarnation of the system successfully uses LLVM to target a Cortex-M ISA with a fully functional Type System. LLILUM provides GC through reference counting and full suport for MTEE. Boehm GC is in the works.
17+
18+
# State of the Art
19+
LLILUM can generate runnable images for ARMv4 and ARMv5 ISA, with partial FP support. We could have extended the code generator to support ARMv7-M but we decided to leverage LLVM instead, hoping we can get a wider set of targets over time.
20+
The current incarnation of the system successfully uses LLVM to target:
21+
* Cortex-M0/3/4 ISA with
22+
* A fully functional Managed Type System and FP support
23+
* A reference counting collector
24+
* A conservative tracing collector (Bohem GC)
25+
* A fully multi-threaded execution environment compatible with Cortex-M architecture for `NVIC` and `SysTick` standard controllers
26+
* [lwIP](http://savannah.nongnu.org/projects/lwip/) TCP/IP stack
27+
* [CMSIS-RTOS](http://www.keil.com/pack/doc/cmsis/RTOS/html/index.html) porting layer for easy network stack porting
28+
* Visual Studio SDK with GDB debugging
29+
30+
# Supported Hardware
31+
LLILUM supports a significant number of development boards from the [mBed](https://www.mbed.com/en/) ecosystem, and specifically:
32+
* [Freescale K64F-FRDM](https://developer.mbed.org/platforms/FRDM-K64F/) Cortex-M4 development board
33+
* [NXP LPC1768](https://developer.mbed.org/platforms/mbed-LPC1768/) Cortex-M3 development board
34+
* [STMicroelectronics STM32F091RC](https://developer.mbed.org/platforms/ST-Nucleo-F091RC/) Cortex-M0 development board
35+
* [STMicroelectronics STM32F401RE](https://developer.mbed.org/platforms/ST-Nucleo-F401RE/) Cortex-M3 development board
36+
* [STMicroelectronics STM32F411RE](https://developer.mbed.org/platforms/ST-Nucleo-F411RE/) Cortex-M4 development board
37+
* [STMicroelectronics STM32L152RE](https://developer.mbed.org/platforms/ST-Nucleo-L152RE/) Cortex-M3 development board
1938

2039
# Supported Languages
21-
Currrent target language is C#; extensions to Python and possibly TypeScript are in the works. We are also targeting [UWP](https://msdn.microsoft.com/en-us/library/dn894631.aspx) app development, so that it will be possible to share code between a Windows 10 device app and a Cortex-M micro processor. Welcome to One Core!
40+
Currrent target language is C#; extensions to Python and possibly TypeScript are in the works. We are also targeting [UWP](https://msdn.microsoft.com/en-us/library/dn894631.aspx) app development, so that it will be possible to share code between a Windows 10 device app and a Cortex-M micro processor. Welcome to OneCore!
2241

2342
# Further reading
2443
Please see the following documents in our wiki:
44+
Welcome to the _llilum_ wiki!
2545

26-
1. [Detailed system description](https://github.com/NETMF/llilum-pr/wiki/system)
27-
1. [Build System](https://github.com/NETMF/llilum-pr/wiki/system.build)
28-
2. [Front End Configuration](https://github.com/NETMF/llilum-pr/wiki/system.frontend)
29-
2. [Repo layout](https://github.com/NETMF/llilum-pr/wiki/docs/resources/repo)
30-
3. [Setup and build instruction](https://github.com/NETMF/llilum-pr/wiki/setup)
31-
4. [Build and run test demo](https://github.com/NETMF/llilum-pr/wiki/demo)
32-
5. [Performance considerations](https://github.com/NETMF/llilum-pr/wiki/perf)
33-
6. [Next steps](https://github.com/NETMF/llilum-pr/wiki/roadmap)
46+
1. [Detailed system description](https://github.com/NETMF/llilum-pr/wiki/System)
47+
1. [Build System](https://github.com/NETMF/llilum-pr/wiki/Building)
48+
2. [Front End Configuration](https://github.com/NETMF/llilum-pr/wiki/LLILUM-Compiler-Frontend)
49+
2. [Setup and build instruction](https://github.com/NETMF/llilum-pr/wiki/Setup)
50+
3. [Build and run test demo](https://github.com/NETMF/llilum-pr/wiki/Demo)
51+
4. [Performance considerations](https://github.com/NETMF/llilum-pr/wiki/Performance-Considerations)
52+
5. [Next steps](https://github.com/NETMF/llilum-pr/wiki/Prototype-Roadmap)
3453

3554

36-
# Acknowledgment
55+
# Acknowledgments
3756
A big thanks to Miguel Perez Martinez for helping bringing up this proof of concepts with exceptional dedication, perseverance and competency. An even bigger thanks to D.M., who created the vast majority of this codebase single-handedly.

Zelig/Zelig/CompileTime/Llvm.NET/LibLLVM/BuildLlvmWithVS.cmd

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ set LLVM_ROOT=%~d0%~p0
1414
set GENERATE=1
1515
set BUILD=1
1616
set REGISTER=1
17-
set LlvmVersion=3.8.0
17+
set LlvmVersion=3.8.1
1818

1919
@REM - Allow overriding default version and disabling any of the stages via parameters
2020
:arg_loop
@@ -66,7 +66,7 @@ if %BUILD%==1 (
6666
if %REGISTER%==1 (
6767
@echo registering LLVM path in registry
6868
reg add HKCU\Software\LLVM\%LlvmVersion% /v SrcRoot /d %LLVM_ROOT% /f
69-
echo Setting per machine rigistry path
69+
echo Setting per machine registry path
7070
echo NOTE: Administrator permissions required to set per machine registry settings.
7171
echo If you get 'ERROR: Access is denied.' the per machine registration is not available
7272
reg add HKLM\Software\LLVM\%LlvmVersion% /v SrcRoot /d %LLVM_ROOT% /f
@@ -90,7 +90,7 @@ goto :exit
9090
@echo -g- disables the cmake project generation phase
9191
@echo -b- disables the code build phase
9292
@echo -r- disables the registry update
93-
@echo -v ^<LlvmVersion^> sets the LLVM version number used for the registry entry (Default is 3.7.0)
93+
@echo -v ^<LlvmVersion^> sets the LLVM version number used for the registry entry (Default is 3.8.1)
9494
@echo.
9595
@echo The registry entry is used by the LlvmApplication.props Propertysheet for VC projects to locate the various
9696
@echo LLVM headers and libs. Alternatively, if LLVM_SRCROOT_DIR is provided either as an environment variable

Zelig/Zelig/CompileTime/Llvm.NET/LibLLVM/LlvmApplication.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
-->
1010
<LlvmVersionMajor Condition="'$(LlvmVersionMajor)'==''">3</LlvmVersionMajor>
1111
<llvmVersionMinor Condition="'$(llvmVersionMinor)'==''">8</llvmVersionMinor>
12-
<LlvmVersionBuild Condition="'$(LlvmVersionBuild)'==''">0</LlvmVersionBuild>
12+
<LlvmVersionBuild Condition="'$(LlvmVersionBuild)'==''">1</LlvmVersionBuild>
1313
<LLVM_VERSION Condition="'$(LLVM_VERSION)'==''">$(LlvmVersionMajor).$(llvmVersionMinor).$(LlvmVersionBuild)</LLVM_VERSION>
1414
<!-- Source ROOT Dir contains the full source of LLVM. To support both developer and automated build service
1515
scenarios try user registry, then HKLM-64 and HKLM-32 in that order

setenv32.cmd

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
@echo off
2+
3+
set LLILUM_ROOT=%~dp0%
4+
5+
prompt $_$+---$G $P$_$+ $G$_Cmd$G
6+
7+
::
8+
:: Set LLVM environment variables.
9+
::
10+
11+
set LLVM_BIN=%LLVM_SRCROOT_DIR%\build\Win32\Release\bin\
12+
set LLVM_INCLUDE=%LLVM_SRCROOT_DIR%\include\
13+
set LLVM_LIBS=%LLVM_SRCROOT_DIR%\
14+
15+
::
16+
:: Add pyOCD and and make to path.
17+
::
18+
19+
set PATH=%LLILUM_ROOT%Zelig\tools;%LLILUM_ROOT%Zelig\tools\openocd\bin-x64;%PATH%
20+
set LLILUM_OPENOCD_SCRIPTS=%LLILUM_ROOT%Zelig\tools\openocd\scripts\
21+
22+
cd Zelig
23+
echo Welcome to LLILUM!

0 commit comments

Comments
 (0)