Show simple item record

dc.contributor.advisorGill, Andy
dc.contributor.authorGrebe, Mark
dc.date.accessioned2019-01-01T20:57:48Z
dc.date.available2019-01-01T20:57:48Z
dc.date.issued2018-05-31
dc.date.submitted2018
dc.identifier.otherhttp://dissertations.umi.com/ku:15846
dc.identifier.urihttp://hdl.handle.net/1808/27591
dc.description.abstractResource limited embedded systems provide a great challenge to programming using functional languages. Although these embedded systems cannot be programmed directly with Haskell, I show that an embedded domain specific language is able to be used to program them, and provides a user friendly environment for both prototyping and full development. The Arduino line of microcontroller boards provide a versatile, low cost and popular platform for development of these resource limited systems, and I use these boards as the platform for my DSL research. First, I provide a shallowly embedded domain specific language, and a firmware interpreter, allowing the user to program the Arduino while tethered to a host computer. Shallow EDSLs allow a programmer to program using many of the features of a host language and its syntax, but sacrifice performance. Next, I add a deeply embedded version, allowing the interpreter to run standalone from the host computer, as well as allowing the code to be compiled to C and then machine code for efficient operation. Deep EDSLs provide better performance and flexibility, through the ability to manipulate the abstract syntax tree of the DSL program, but sacrifice syntactical similarity to the host language. Using Haskino, my EDSL designed for Arduino microcontrollers, and a compiler plugin for the Haskell GHC compiler, I show a method for combining the best aspects of shallow and deep EDSLs. The programmer is able to write in the shallow EDSL, and have it automatically transformed into the deep EDSL. This allows the EDSL user to benefit from powerful aspects of the host language, Haskell, while meeting the demanding resource constraints of the small embedded processing environment.
dc.format.extent165 pages
dc.language.isoen
dc.publisherUniversity of Kansas
dc.rightsCopyright held by the author.
dc.subjectComputer science
dc.subjectArduino
dc.subjectEDSL
dc.subjectEmbedded Systems
dc.subjectGHC
dc.subjectHaskell
dc.subjectTransformations
dc.titleDomain Specific Languages for Small Embedded Systems
dc.typeDissertation
dc.contributor.cmtememberAlexander, Perry
dc.contributor.cmtememberKulkarni, Prasad
dc.contributor.cmtememberShontz, Suzanne
dc.contributor.cmtememberCamarda, Kyle
dc.thesis.degreeDisciplineElectrical Engineering & Computer Science
dc.thesis.degreeLevelPh.D.
dc.identifier.orcid
dc.rights.accessrightsopenAccess


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record