Problem Definition:
Computer market is the most dynamic market of the contemporary World. Leader sectors of this market changes time to time. Today, embedded electronics drive the computer market.
Since the embedded system is dedicated to specific tasks, design engineers can optimize it, reducing the size and cost of the product This feature makes embedded products the shining star of the market. Moreover, as it is a developing technology, there is not a fully robust development environment for it so embedded electronic environments are seen as a forsaken palace of software engineering.
A misleading view to embedded software is that, this technology is mostly concerned by electronic engineers however rapid development in embedded technologies calls for special software engineering techniques. As a result of these technique and obvious difference between high level programming techniques, a special development environment is required.
To provide personal for this special software techniques most of the computer engineering departments teach corresponding courses. Middle East University Computer Engineering department (METU-CENG) is one of these departments. In 2006- spring term, METU-CENG staff decided to use PIC microcontrollers instead of INTEL microcontrollers and a TA of CEng336 course, Alper KILIC, developed a special board for the course CENG-336.However, using such board and developing software projects brings some problems as below:
- Frequent upload of code to board is time consuming,
- Microprocessor and their components are so sensitive devices that small lack of care causes malfunctions, most of the time these malfunctions are not recoverable and they cost considerable amount of money and time ,
- Even there are emulators for PIC and its components , most of the time they require technical background which is generally not related at corresponding courses,
- METU-CENG staff and students prefer UNIX environment for courses however current emulators and development environments developed for Windows environment,
- Software engineers prefer vi as a text editor however such a development environment does not exist,
- Current Integrated development environments(IDE) provides a emulators for the track of code through registers and memory however they do not provide such features for components like LCD, Led Display , Keyboard etc
- Platform independency is much desired feature for every kind of applications, especially students have different operating system choices; this makes platform independency more valuable.
Project Scope and Goals
Main purpose of our project is to develop an IDE built on eclipse with the feature of emulating the board for CENG-336 course. However as an expansion point we will aim a general use IDE plug-in that can be used for PIC programming. The scope and features of the projects are stated below:
- Compiler: IDE will compile given PIC-assembly code in to hexadecimal code and will generate compile-time errors for syntax and semantics errors.
- To avoid hardware malfunctions, emulator is needed for the PIC microprocessor and components. Emulator will specially configured to PIC board used in CENG-336.
- IDE will check paging errors , if code exceeds page limits IDE will give warning,
- Run Time error: checking in simulator phase will be implemented. For instance stack overflows will
- be detected.
- Project Templates: To reduce time consumption for common projects templates will be provided.
- Workspace: Working environment of user will be saved therefore user setting such as opened files, emulator settings will be remembered.
- Debugging: Programmer will be able run code in emulator, will be able to put breakpoints, watch registers, and track memory-stack. Programmer can modify registers, memory during runtime.
- Code Completion, Interactive Help: During coding stage IDE will give assistance for the completion of commands and give warning in the case of syntax errors. Programmer will be able to get instance help about commands, for instance user will highlight the command or register, call help and help screen will display corresponding information. Calling help could be by a hot-key etc
- Data Explorer & Types: One of the challenging parts of low level programming is that they do not have data structures like high level programming languages. Our solution for the matters is user-defined data structures as collection of register, memory locations. Moreover user can tag certain parts of code to define data structure. These structures can be followed by a class-view like window.
- Favorites Code Block: Programmer can tag certain parts of the code as favorite and quickly jump to that location.
- Hot-Key Feature: Programmer can reach certain features of the IDE and simulator via hot-keys. Hot-keys can be defined by users and IDE will provide some common templates such as Visual Studio key settings or MPLab key settings.
- Component Feature: All components in pic-board (CENG-336 board) will be attachable and unattachable. User will be able to attach or unattach these components according to project requirements. Moreover as an open issue user will be able to create new components through a wizard step-by-step and attach this to simulator.
- Some common libraries will be provided to user like LCD, Clock-Timer commands.
- Clock-Frequency calculator: Programmer will be able to measure performance of the program or code segments. Clock cycles will be provided as a measure unit.
- Plug-in Feature: Programmers who wants to add new feature to IDE be able to write their own plug-ins and import them.
- Search/Replace: Programmer will be able Search/Replace keywords through project or current document or in selection.
- Higher Level to PIC : This feature is an open issue, we are thinking about designing a higher level language or optimizing a common used higher level language, possibly C, to write PIC programs. IDE compilation feature will compile this higher level language and produce PIC-assembly and then hex file.