Contiki and FreeRTOS

Last week, I am still doing on contiki’s functions testing in my new porting microprocessor and platform. After 1 week plus of function testing, the basic functions are working in my porting microprocessor and platform. The process in contiki OS called protothread. All of those protothread are scheduled in cooperative manner. The current cooperative process need to be finish first before the following scheduled cooperative process can be run. Other than that, contiki os also support preemptive process. It is normally Read more

TCP/IP Echo Server

This week my job scope was about the TCPIP. I need to use the PICDEM.net 2 as a TCP echo server that listen on a TCP/IP socket and transmits back exactly everything that it receives. There are some demos in the microchip application library, what I have to do was to study them and create a simple echo server. This task was difficult since it require a lot of understanding on networking and strong mastering on C programming. The coding Read more

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