Jul 7, 2014

upload bootloader to mega2560 using Uno

Run arduino ide (arduino 1.5.7 is required. won't work with older versions of software )
Connect the uno board to USB.
Open arduino ISP from examples.
Compile it and upload to uno board. (Board:Uno, Programmer Arduino as ISP)

Now make the following connections with the mega board. It is basically interfacing boards through SPI (MOSI, MISO, SCK) and SS(UNO) to RESET (MEGA2560)

UNO       MEGA2560
10 --------> 53
11 --------> 51
12 --------> 50
13 --------> 52

+5V --------> +5V
GND -------> GND

Select Board: Mega2560
Processor: 2560
Programmer: Arduino as ISP and then Tools > burn bootloader.Thsi time don't click upload.

Now connect mega2560 to PC and open a blink program. Compile and upload the program.

May 2, 2014

Install debian iso with usb

Creating a startup disk is simple in linux. No third party apps like start-up disk creator or unetbootin is required. Linux base command dd is enough.
That is it. A base kernel will get installed. While installing provide an internet connection so that it will automatically fetch required packages online. The installation will check for available connections ( Ethernet/WiFi ) while installing.

I think this works with almost all main linux distros

Ref: https://wiki.archlinux.org/index.php/Putting_installation_media_on_a_USB_key

Mar 20, 2014

Some tech reminiscence

Was formatting my PC and I got some old docs.
Btech final year project report: Secure Wireless Communication System
and
DESD ( CDAC ) seminar report: PageRank

Jan 21, 2014

An RTOS from the ground up

Just developed an RTOS from the ground up. It is still in the primitive stage but has got all the requirements of an RTOS. I used gcc toolchain to compile the sources and an Atmega328P (AVR) microcontroller to test it.

Source code is made available in my github. https://github.com/arunkumarv31/rtos

I have four infinite functions and the RTOS scheduler select the tasks to run and switches among them.
We can create tasks like this

createTask ( &function_1, "fun_one", 1, 200 );
 

createTask ( &function_2, "fun_two", 2, 200 );
.

.
createTask ( &function_n, "fun_three", n, 200 );


where the first parameter is the address of the function / task, the second parameter is its name. This name is used as the task identifier to change the attributes of a task, the third parameter is the priority of the task and the last parameter is the stack space required for the task.

A user function / task can be something like this. usually it will be an infinite loop.

void function_2 ( void )
{
  while (1)
  {
      changePriority ( "fun_one", 3 );
      changePriority ( "fun_two", 5 );
      changePriority ( "fun_three", 2 );
      changePriority ( "fun_four", 4 );
     
      printf ( "function_2\n" );
  }
}


The scheduler follows "fixed priority pre-emptive scheduling". And it always executes the highest priority task. So to give multitasking effect, i.e to preempt the current task and to execute other tasks we need to change the priority of the other tasks  in the current task with changePriority( "fun_one", 2 ) method.

If two or more tasks has the same priority which is the highest priority then ithe scheduler will execute the task first created.

changeStatus ( "fun_three", WAIT ) is used to change the status of a task. Here I have three status RUN, TERMINATE and WAIT.

deleteTask ( "fun_two" ) will delete the task and it will no longer be available to execute.

Jan 13, 2014

Saving SP in atmega328p

Context switching is one of the core component of parallel processing. I was trying to implement one such. Storing the SP to data space is something noteworthy.

Dec 21, 2013

Create a printf logic in arduino uno for debugging - avr-gcc

If you are using arduino uno board with avr-gcc compiler. You can have a printf printing system for better debugging.

Dec 20, 2013

Clear your memory card safely

Deleting a file in Win/Linux is almost like locking in a safe. It can be  retrieved from the drive easily with a recovery program as long as it is not overwritten by some other data.

For Web Developer

  open -a "Google Chrome" --args --disable-web-security