Warning, /kdevelop/kdev-embedded/README.md is written in an unsupported language. File is not indexed.

0001 
0002 [GSoC 2016] KDevelop Integration with Arduino and embedded development
0003 ---------------------------------------------------------------------------
0004 
0005     Electronic engineering, Federal University of Santa Catarina, Brazil,
0006     e-mail: <patrickelectric at gmail dot com>
0007 
0008 
0009 Motivation
0010 ==========
0011 
0012 The actual Arduino IDE, was initially created with
0013 Java and is still a simple IDE that does
0014 not provides autocompletion, sentence errors, assembly visualizer, field
0015 for compiling and linking flags, syntax highlighting and other features
0016 present in both [Kdevelop](https://www.kdevelop.org/) and [Qt
0017 Creator](http://www.qt.io/ide/).
0018 
0019 The other alternative IDEs for Arduino are:
0020 
0021 -   PROGRAMINO IDE:
0022     It provides good features and development options, but isn't a free
0023     or open source software.
0024 
0025 -   PlatformIO IDE:
0026     A good substitute to Arduino IDE. It's a modified
0027     [Atom](https://atom.io/) version, Doesn' have assembly
0028     visualization, serial plotting, data loggging and other
0029     important tools. It's written in CoffeeScript, JavaScript, Less
0030     and HTML.
0031 
0032 -   Embrio:
0033     An easy variable visualization ambient with real-time" plot with
0034     code editor. But, isn't free or open source.
0035 
0036 Some developers and [educators](http://www.hackvandedam.nl/blog/?p=762)
0037 say that Arduino IDE isn't as good and comfortable as a development
0038 ambient for higher education and development. In order to the to fix
0039 this situations, the development of Arduino plugins for KDevelop, Qt
0040 creator, Visual Studio and Eclipse began, but generally the setup for
0041 such plugins is complicated and it's necessary a good understanding of
0042 these IDEs and OS'a ambient functionality.
0043 
0044 Project goals
0045 =============
0046 
0047 Here I will showcase some of the features that I propose to implement.
0048 Right now I'm the [second biggest
0049 contributor](https://github.com/mupuf/arduide/graphs/contributors) of a
0050 project called [ArduIDE](http://mupuf.org/project/arduide.html), a C++
0051 IDE to help with software development to Arduino boards.
0052 
0053 The initial idea is to work with KDevelop to port some implemented features that
0054 already exist in others embedded systems IDE, like:
0055 memory map view, assembly visualizer and others.
0056 
0057 Some of the goals are:
0058 
0059 1.  Port Arduino support from 1.6.0 to last Arduino version
0060     into KDevelop.
0061 
0062 2.  Port and create others features like:
0063     - Board selector.
0064     - Clock selector.
0065     - Serial monitor.
0066     - Assembly visualization.
0067     - Compilation flags editor.
0068     - Real-time plotting with serial input, with integrator and derivator plot.
0069     - Real-time data logging.
0070 
0071 3.  Perform the upload process for Arduino boards with AVR processors.
0072 
0073 4.  Perform the upload process for Arduino boards with ARM processors.
0074 
0075 5.  (If time isn't a problem) Realize the upload process for Arduino
0076     boards with x86 processors.
0077 
0078     With all Arduino features implemented, the development of ARM
0079     processors can start:
0080 
0081 6.  Implement same features of Arduino development with ARM processors.
0082 
0083 7.  Add support to JTAGs(Joint Test Action Group) with [OpenOCD](http://openocd.org/).
0084 
0085 8.  Add GDB debugger with OpenOCD interface.
0086 
0087 Timeline
0088 ========
0089 
0090 This section shows the estimated timeline of the project.
0091 
0092 ### Done:
0093 #### Arduino
0094   - Download and install tools.
0095 
0096 
0097 May:
0098 ----
0099 
0100 Initial week, change ArduIDE features from Qt4 to Qt5 in KDevelop.
0101 Almost everything in ArduIDE is done with Qt4,
0102 [Grantlee](https://github.com/steveire/grantlee) and
0103 [QScintilla](https://riverbankcomputing.com/software/qscintilla/intro)
0104 
0105 It's possible to replace grantlee with QML since ArduIDE create only a
0106 dynamic webpage with examples and libraries installed on the system.
0107 Right now a good part of ArduIDE it's in Qt5 in my personal repository
0108 but isn't finished yet.
0109 
0110 Some of the features that already exist in ArduIDE that will be ported
0111 to KDvelop:
0112 
0113 -   Board selector
0114 -   Clock selector
0115 -   Serial monitor
0116 -   Assembly visualization
0117 -   Compilation flags
0118 
0119 June:
0120 -----
0121 
0122 After the transition from Qt4 to Qt5, the IDE needs to be updated to the
0123 last version of Arduino software and be compatible with the boards.
0124 
0125 Test the software compatibility and programmability of KDevelop with
0126 Arduino's source code and libraries. After that, a plugin will be
0127 created to manage what kind of embedded system the project will use
0128 during the development, this same plugin will manage other plugins that
0129 will provide a variable system development.
0130 In the beginning will be only one children plugin to manage the Arduino
0131 environment and process. To perform such boards and processors
0132 management it's possible to use a generic *makefile* to compile and
0133 upload the project to Arduino boards.
0134 With selectors menu, like Board and processor clock, it's possible to
0135 use the Kdevelop module called *Sublime* with a drop-down menu in
0136 toolbar that will be display the options to the user, and with this
0137 information it's possible to modify a generic Arduino makefile to manage
0138 the project compiling and upload process.
0139 
0140 The data-log can be added in a Dock, the same back-end of data-log can
0141 be used to the a plot system that will provide in the same Dock a
0142 user visualization tool to display the output data of the board.
0143 
0144 July:
0145 -----
0146 
0147 With all Arduino AVR boards working, the process of Arduino ARM boards
0148 begun. Unlike the AVR boards which use
0149 [*avrdude*](http://www.nongnu.org/avrdude/), the ARM boars use
0150 [*bossac*](http://www.shumatech.com/web/products/bossa) to perform the
0151 upload process. The same process of Arduino AVR can be used with the
0152 Arduino ARM boards, using a generic makefile, but with *bossac* and
0153 *arm-none-eabi-binutils* in the place of *avrdude*.
0154 The Arduino X86 boards uses a script to perform the compile and upload
0155 process. If time isn't a problem until now in the project the
0156 implementation of such feature will be performed.
0157 With *arm-none-eabi-binutils* we already have a .bin, .elf or .hex to be
0158 uploaded to an ARM processor. It's necessary something between the
0159 processor and the computer to realize the upload process, this thing
0160 it's called JTAG or programmer interface, can it be a Pirate BUS, JTAG,
0161 DTAG and ICSP interface or a simple FTDI232R/H to realize the midfield
0162 to the in-chip JTAG. It's possible to communicate with all this
0163 interfaces with OpenOCD, a list with all possible interfaces can be
0164 located
0165 [here](http://openocd.org/doc/html/Debug-Adapter-Configuration.html).
0166 Using OpenOCD can be a bit complicated but not impossible !
0167 
0168 August:
0169 -------
0170 
0171 If the last point finish with success, this part can be done without so
0172 much problems. With a OpenOCD link with the board interface, it's
0173 possible to use the GDB with a remote access to the socket door that
0174 OpenOCD open to realize the communication with GDB and the hardware
0175 components of the processor debug.
0176 With all this steps done, we have created a awesome embedded system
0177 platform with our friend KDevelop :)
0178 The last week will be reserved to solve some bugs and finish some points
0179 in the documentation of the project.
0180 
0181 Branchs
0182 ========
0183 1. [Master](https://phabricator.kde.org/diffusion/KDEVEMBEDDED/)
0184 2. [Arduino](https://phabricator.kde.org/diffusion/KDEVEMBEDDED/repository/Arduino/)
0185 
0186 Instalation
0187 ========
0188 
0189 1.  Download/Clone the repository (`git clone repository.git`)
0190 2.  Create a build folder (`mkdir build && cd build`)
0191 3.  Configure (`cmake .. `), if you are using KDevelop from source (`cmake .. -DCMAKE_INSTALL_PREFIX=PathToKDE5`)
0192 4.  Compile and install (`make install`)
0193 
0194 Debuging:
0195 -------
0196 
0197 The debug can be done using the output of qCDebug() function.
0198 1.  Turn the debug variable true (`export QT_LOGGING_RULES="Kdev.embedded*.debug=true"`)
0199 2.  Highlight and show debug messages (`kdevelop 2>&1 | grep Kdev.embedded `)
0200 
0201 If you want to help us if a bug appears, please use `kdevelop 2>&1 | grep Kdev.embedded > kdev-embedded-log.txt` to save the debug message and send to us.