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

Compilation Dummy Contiki

This week I am working on dummy contiki OS to be compile using RISC V compiler. During compilation, there are a lot errors prone. Most of the errors happened during typo occur in the code, such as #if but without #endif, without semicolon in the ending code and so on. Besides that, there are quite interesting error occur, which is variable conflict happen during compilation RISC V on contiki system. This error occur due to both RISC V and contiki core system Read more

Modifications to the Schematic Editor

Bugs, bugs, and more bugs! I think that summarizes the past week! We haven’t introduced much features to the project, but rather we spent the week improving the code, and solving the problems that arise. I basically worked on creating the components for the schematic editor, moving the schematic files from Wt’s app root to the server temporary directory, and doing some enhancements here and there. Schematic components If you remember my post from last week, it had a section Read more