This repository has been archived by the owner on Jun 5, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 52
demo
Lorenzo Tessiore edited this page Jul 27, 2016
·
14 revisions
The demo is implemented for a NXP LPC1768 device, featuring 512KB of NOR FLASH and 64Kb of SRAM. You can also use a K64F-FRDM board by Freescale for which the setup procedure is largely equivalent.
The device is enabled for the Mbed ecosystem. Any other Mbed device could be used with minimal changes to the makefile at <repo>\Zelig\LLVM2IR_results\mbed\simple\makefile.
- Setup your device following instructions at https://developer.mbed.org/platforms/mbed-LPC1768/. This includes updating the device firmware to support the MTP driver and virtual serial port.
- Install the virtual serial port driver for your Mbed device following instructions at https://developer.mbed.org/handbook/Windows-serial-configuration.
- Make the FrontEnd project the startup project in your solution, or simply run the FrontEnd executable from the command line
- If using the solution, configure the debug properties as follows:
-cfg ..\..\..\..\Zelig\CompileTime\CodeGenerator\FrontEnd\mbed_simple_LPC1768.FrontEndConfig
- If using the solution, configure the debug properties as follows:
- If running from the command line, simply pass the same
-cfg
parameters pointing to the above mentioned configuration file - The build output directory will be located in <repo>\Zelig\LLVM2IR_results\mbed\simple\
- Open a command prompt, move to the root <repo> directory, and run
setenv.cmd
to set local environment variables. - Move to the build output directory <repo>\Zelig\LLVM2IR_results\mbed\simple\ and run
build.bat
to invoke LLVM optimizer and compiler, and finally GCC- GCC will link the object file created by LLVM into a simple runnable image
- Code size of entire executable and will be dumped and disassembly will be produced
- Build output will contain the following:
- Microsoft.Zelig.Test.mbed.Simple.bc: the LVM binary bit code
- Microsoft.Zelig.Test.mbed.Simple.ll: the LLVM readable bit code
- Microsoft.Zelig.Test.mbed.Simple.TypeSystemDump.IrTxtpost: Zelig readable IR with TS details
- Microsoft.Zelig.Test.mbed.Simple.ZeligImage: The Zelig image
- Microsoft.Zelig.Test.mbed.Simple.ZeligIR: Zelig binary IR for reload
- Microsoft.Zelig.Test.mbed.Simple.ZeligIR_Post: Zelig binary IR
- Microsoft.Zelig.Test.mbed.Simple_opt.bc: LLVM optimized bit code
- Microsoft.Zelig.Test.mbed.Simple_opt.ll: LLVM optimized readable bitcode
- Microsoft.Zelig.Test.mbed.Simple_opt.o: LLVM object code
- Customize and invoke
deploy.bat
for your Mbed device- (each Mbed device creates a virtual serial port on your host system, you can discover which one using Device Manager. Simply run devmgmt.msc on any Windows machine and look under the Ports node)
- Deployment is a simple file copy through MTP, thanks to the Mbed bootloader
- When deploying the runnable image to the device, you will see the device blink
- Reset your device when deployment is complete (device stops blinking and copy completes)
- Your device is now ready for attaching a debugger
- To debug on the command line:
- Launch the
debug.bat
script. The script will launch pyOCD and try to connect to remote target on port 3333. - If the
debug.bat
script fails you can launch pyOCD manually pyOCD, which will automatically detect and connect to the device using CMSIS-DAP, and then connect to the pyOCD debug server with commandtarget remote :3333
- Launch the
- Now you can set a breakpoint with the command b_main and gdb will show you are hitting function
Microsoft.Zelig.Runtime.Bootstrap::Initialization()
.
- To debug in Visual Studio 2015:
- Launch VS from the command line so that it picks up your local environment variables.
- Open the command window (View | Other Windows | Command Window) and enter the following command:
Debug.MIDebugLaunch /OptionsFile:<repo>\Zelig\LLVM2IR_results\mbed\simple\DebugOptions.xml /Executable:<repo>\Zelig\LLVM2IR_results\mbed\simple\LPC1768\mbed_simple.elf
A rather complete GDB tutorial can be found at http://web.mit.edu/gnu/doc/html/gdb_1.html or in this PDF file.
Welcome to LLILUM!