swift-embedded / swift-embedded Goto Github PK
View Code? Open in Web Editor NEWSwift for Embedded Systems ✨
License: MIT License
Swift for Embedded Systems ✨
License: MIT License
Hello! Awesome project, I am attempting to try a compile here, using the toolchain & it dies at the part where it tries to link with __Vector. Any advice?
swiftc -Xcc -ffunction-sections -Xcc -fdata-sections -Xcc -mthumb -Xlinker --gc-sections -Xfrontend -metadata-sections -Xfrontend -function-sections -Xfrontend -data-sections -static-stdlib -target thumbv7m-unknown-none-eabi -use-ld=/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld -Xcc -D_BAREMETAL -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/lib/arm-none-eabi/8.2.1/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/lib/arm-none-eabi/8.2.1/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/lib/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/usr/lib/arm-none-eabi/8.2.1/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/usr/lib/thumb/v7e-m/nofp/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/lib/arm-none-eabi/8.2.1/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/lib/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/lib/arm-none-eabi/8.2.1/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/lib/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/usr/lib/arm-none-eabi/8.2.1/ -L/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../arm-none-eabi/usr/lib/ -lswiftCore -lswiftStdlibStubsBaremetal -lstdc++_nano -lc -lg -lm -lgcc -Xlinker -T -Xlinker ./linker.ld test.swift
/Users/ericlewis/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld:./linker.ld:54: undefined symbol `__Vectors' referenced in expression
clang: error: ld.lld command failed with exit code 1 (use -v to see invocation)
Hey, I just started using ESP32 in my project and it works great on C and I'm wondering if it is possible to launch Swift on it.
@dragomirecky could you please tell is it possible to launch swift on ESP32 or not?
Thanks for the good explanation and setup. I managed to get a board NUCLEO-H743ZI2 like described in the readme.
My toolchain is set to
xcrun -f swift
/Users/stijnwillems/Library/Developer/Toolchains/swift-LOCAL-2020-02-15-a.xctoolchain/usr/bin/swift
When I try to run openocd
it fails
openocd -f board/st_nucleo_f4.cfg
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Error: open failed
in procedure 'init'
in procedure 'ocd_bouncer'
But as my knowledge is not big on the openocd part I got opened a new therminal and tride to load the builded blinky in to the
xcrun arm-none-eabi-gdb .build/debug/Blinky -ex 'tar ext :3333' -ex 'load'
GNU gdb (GNU Tools for Arm Embedded Processors 8-2019-q1-update) 8.2.50.20181213-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin10 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from .build/debug/Blinky...
warning: Section .debug_names in /Users/stijnwillems/Developer/OpenSource/swift-embedded/examples/Blinky/.build/thumbv7m-unknown-none-eabi/debug/Blinky length 368 does not match section length 33060, ignoring .debug_names.
warning: Could not find DWO CU /Users/stijnwillems/Developer/OpenSource/swift-embedded/examples/Blinky/.build/thumbv7m-unknown-none-eabi/debug/ModuleCache/BDVD4G0YREPI/HardwareExt-27Z9BOINAXY0Z.pcm(0xf4d17d3941b52b0c) referenced by CU at offset 0x7539 [in module /Users/stijnwillems/Developer/OpenSource/swift-embedded/examples/Blinky/.build/thumbv7m-unknown-none-eabi/debug/Blinky]
So unfortunatly I am somewhat stuck now. Could you point me in a direction to look for a solution?
I think adding support for the new raspberry pi pico (RP2040) would make totally sense. It has 2mb flash and only costs 4 dollar. I think it will be one of the most used embedded microcontroller platform.
There are also already other boards with the RP2040 announced by sparkfun, adafruit, etc. with varying pcb size IOs, flash size and ram size.
More info here:
https://www.raspberrypi.org/blog/raspberry-pi-silicon-pico-now-on-sale/
Thanks for releasing.
Was looking for it just yesterday! ^_^
Regarding code size, is it possible to apply tree-shaking?
I'm expecting to receive Pyboard D-series (STM32F767) any day now. It features 4 MB of FLASH, WiFi+BT and more
Hello @dragomirecky, could you tell ifswift-embedded
now supportSTM32F767
?
I'm wondering how to use wifi/bt on microcontroller in swift. I need two things:
I'd love to write anything needed, but I need your help in the very beginning
Hi @dragomirecky, this is a great project, thanks so much for making it public.
I got a Nucleo-F439ZI board and followed your tutorial. And it worked, i.e. I can build, flash, and run your Blinky example. Success!
I have two questions that maybe you can answer:
Flashing the built Blinky binary to the STM32 with OpenOCD/GDB takes about 35 seconds for me. Is this normal? I find it quite annoying compared to other microcontrollers, which can usually be flashed in a few seconds at most.
I realize that the Swift binary is much bigger, but I still find it surprising that the transfer rate during flashing isn't higher than 40 kB/s or so.
The built Blinky binary is 3.7 MB (debug build built with cross build
) or 3.3 MB (release build, cross build -c release
), which is more than the storage space on the STM32, right? I don't understand how this works. What's in the binary that's not being written to the STM32? Debug symbols? What does gdb do to determine which parts of the binary to flash to the microcontroller?
When trying to setup visual studio code like in the ReadMe I got errors that it could not run the sourcekit-lsp. I'm trying this on Catalina.
Then I just tried to run it. But this failed with message below. Any idea's?
swift-LOCAL-2020-02-15-a.xctoolchain ./usr/bin/sourcekit-lsp
Fatal error: fatal error encountered decoding message MessageDecodingError(code: LanguageServerProtocol.ErrorCode(rawValue: -32700), message: "expected \':\' in message header", id: nil, messageKind: LanguageServerProtocol.MessageDecodingError.MessageKind.unknown): file /Users/jenkins/data/workspace/swift-embedded/swift/src/sourcekit-lsp/Sources/LanguageServerProtocolJSONRPC/JSONRPCConnection.swift, line 191
[1] 8624 illegal hardware instruction ./usr/bin/sourcekit-lsp
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.