Code Auto-Completion

For five weeks in row we have been working on the enhancement of the code. I really don’t know why it’s taking that much time. Is that what usually happens in any project developing?! Feel like we are in infinite loop… Hopefully we will reach the “break;” statement soon. Lol !! Code Auto-Completion: Anyway, this week I was working on adding the AUTO-Completion feature to our code editor. Our code editor is based on Code-mirror JavaScript editor which is rich Read more…

Bare Metal RISC-V Angel Simulator

This week, I finally get the RISC-V Angel Simulator to run the C/C++ code compiled from the default RISC-V GNU compiler, which is specifically designed to compile files into ELF file that to be used with the RISC-V Spike and Proxy Kernel. I had verified that the bootloader extracted from proxy kernel is usable. How Software Works I really need to thank my supervisor in figuring that my problem during the findings for the solution of the necessity of proxy Read more…

Exploring the Intermediate Representation of GCC

This week I gained a deeper and clearer understanding about some terminologies and the flow within a compiler that I have posted last week. Frontend Basically it uses a parser to produce the syntax tree abstraction of a given source file. It will translate source codes into intermediate representation (IR) like GENERIC, GIMPLE, and RTL that are used in GCC. GENERIC GENERIC is a common representation that is able to represent programs written in all the languages supported by GCC. It Read more…

A Deeper Look on RISC-V Angel

This week, I had really a hard time with RISC-V Angel. It started with finding the bootloader code from the RISC-V Proxy Kernel, as the bootloader is the primary program/codes that needs to be load up before the main program actually runs. I searched all over the proxy kernel code and eventually I realized that the bootloader code is in one of the file name “pk.S”, which loads a bundle of assembly codes that initialize the stack pointer, global pointer and Read more…

WEEK 4: Spartan 6 FPGA

My task of this week is the configuration of FPGA. I had to configure the Spartan 6 XC6SLX9 FPGA in the slave serial mode, by using the USART port in the PIC18F97J60. This is something really new to me and web references are scare. Therefore, the only way is to refer the Xilinx documentation to figure the method of doing it. At the beginning, for me the documentation is difficult to understand and I spent lots of time on reading Read more…

Running Tasks with Contiki

In contiki os, there are a lot of functions predefined in the core file. During programming in contiki os, programmers require to follow the contiki programming style to create their own code. These functions are PROCESS_BEGIN(), PROCESS_END(), PROCESS_YIELD() and so on. All of the functions have its own uses but some of it only slightly difference between each other. This week I am doing the on running simple task using contiki os. Function used are PROCESS_BEGIN, PROCESS_END, PROCESS_YIELD, PROCESS_WAIT_EVENT, PROCESS_WAIT_EVENT_UNTIL, PT_SEM_INIT, PT_SEM_SIGNAL, PT_SEM_WAIT. PROCESS_BEGIN() Read more…

Code Restructure!

The stream of code bugs and necessary modifications continued running this week as well. I had to do some code modification, complete some features and solve some bugs here and there. This  really took longer than I thought it would! Hopefully it will finish soon. Customizable BRAM size. I had already mentioned this issue in one of my past blog entries but since I was not done with it yet at that time, I didn’t talk in much details about Read more…

Logging and Restricting Connections

We are still working on fixing the code bugs, improving the application usability, and optimizing the code. There are a lot of small changes and enhancement that I’ve been working on, here, however I will detail the most important ones, that someone might actually find useful. So, let’s jump right into it. Logging Wt has a server log, and can be written to using the function Wt::log(). This can provide information about what’s going on and what the server is Read more…

Calling the Callbacks

This week I have tested all the plugin callbacks available in GCC The plugins list are defined by plugin.def in GCC. The plugin is initiated by plugin_init function, then the plugin is called through register_callback function. For each plugin, a register_callback is required, then the plugin function will be called and perform any task specified in the program. From there I have determined the correct and working way of plugin callback to call the plugin function. Then I tested the plugins Read more…

Week 3: SPI Communication

This week I continue on the working of SPI. The main problem is the writing through the page border of EEPROM. To write across the page, it is required to resend the write command and assigned new address. Firstly, I wrote a code that will keep refresh the address inside a for loop whenever the address reached the page border. After finishing and testing the code, I asked Dr. Shawn for review. He told me there is a problem on Read more…