Saturday, 2 January 2016

Completed M-Tech (erstwhile M.S.) in Software Systems (Specialization in Embedded Systems) from BITS Pilani (WILP)

Hello friends,

I am extremely happy that I achieved one of my long-cherished dreams - getting a masters degree from BITS Pilani. On 26-Dec-2015, the final dissertation result was published. :) Completed my two years journey successfully.

I should say that it was a very interesting course and could learn new concepts. The course is very well tailored and crafted for working professionals. Online sessions are all scheduled for evenings after 5:30PM on weekdays and for the day time on weekends. Faculties are all very good at their subjects and have good practical knowledge too (except a few). Those who cannot attend the live online sessions can download recorded sessions from Taxila, a BITS student portal. Recorded video sessions are highly useful while preparing for exams. Evaluation assignments are really useful to evaluate how well you have understood the concepts. Majority of the assignments are objective in nature and some assignments are programming oriented. BITS has an online lab which students can access through Taxila.

The mode of exams is also highly appreciable. Questions will be based on practical case studies where you will have to apply the techniques that you have learnt in the course. Both mid-semester and comprehensive exams are subjective. Mid semester exams will be closed-book sessions where you can expect some direct questions from your study material, though it is not mandatory. Comprehensive exams at the end of each semester will be open-book, where you can bring in any type of books or your preparation notes, anything but not loose papers. The interesting part is that when we see the questions, we will really think where the hell in the book the answer lies. :). Most of the questions will be purely practical questions based on certain case studies. Usually, you will not get enough time to open the relevant book, get to the topic in question, understand the concept and answer the question. But the presence of books will surely improve your confidence.

From experience, I can share you some tips for exam preparations.

1. Always prepare in the following order:
   a) Go through the recorded video session of a subject.
   b) Go through the corresponding PPTs/lecture notes uploaded in Taxila.
   c) Read the prescribed text books.
   d) Go through previous year question papers to understand the nature of questions.
2. Though assignments carry only 15 marks, never skip them.
3. Never skip any exams; you will have to re-register the semester, paying the whole fees once again.
4. Once the dates for exams and assignments are declared, it is very very rare for BITS to change those dates.
5. By-heart the important concepts and definitions for mid-semester exams. Understand the important concepts for comprehensive exams; no by-hearting is required.
6. Failing in even one subject will need you to re-register for the semester paying the whole semester fees. But you may have to write only the failed subject; no need to write all the papers once again.

Once the exams are over results will be announced usually within one month. A hard copy of the mark list will be sent to your permanent address within a couple of months.

After 3 semesters of theory, final semester will be a dissertation project. You can choose a project topic from a broad range of domains. After choosing a topic, you will have to submit an abstract about the topic. Within a couple of weeks, a faculty will be assigned and BITS will let you know whether the topic is accepted or not. Plagiarism is not at all tolerated by BITS. After that, you will have to submit a mid-term evaluation report within a month. After another one month, you will have to submit the final report along with presentation (PPT). For all these reports, you will have to submit an evaluation sheet signed by your mentor and a supervisor who could be anyone in your company capable of guiding you. Mentor and supervisor should be different persons. Finally, you can choose the mode of final presentation - online or in-person. You will be allocated a set of timings to choose from. I chose online mode. At the time of presentation, faculty can ask to see the demo of your project. So be prepared.

Be cool. Everything will go swiftly. Have self confidence, you will achieve it. :D. All the best.

God Bless!

Sunday, 22 December 2013

Joined BITS, Pilani for MS in Software Systems

Finally, I have joined BITS Pilani for Master's in Software Systems.

Now I can proudly say that I am a BITSian. :)

I was looking for this course for the past 3 years.

But I was too busy with my projects that either I will miss the admission announcement or I will miss the last date to send across the application form.

This year, I was determined to apply for MSSS.

I started watching BITS Pilani website from August for admission announcement.

By the end of October first week, the announcement came in their website.

I downloaded the application form and remitted the application fee of Rs 1500 via Net banking.

Downloaded application form was duly filled in.

Application form required the applicant's' personal, academic as well as professional details.

Along with the application form, applicant has to get 

  1. Employer's consent form - The form is attached along with the downloaded application. Applicant has to get it duly filled and approved by the employer. In my case, I approached our HR executive and got it done within a day.
  2. Mentor's consent form - This is also attached along with the downloaded application. Applicant has to identify a mentor from his organization itself. The mentor should conform to the criteria mentioned in the application form. For eg. Mentor should hold a masters (MS/M.Tech/ME/M.Phil) or any senior professionals with more than 5 years of experience and a degree (BS/B.Tech/MCA...). Fortunately my PM was having MS from BITS and he was ready to become my mentor. :). Got the form duly filled in with his signature.
There will be a checklist along with the application form which will mention the list of enclosures to be submitted along with the application form. Some of the mandatory documents that are required are
  1. Attested photocopy of your degree (B.Tech/BE...) certificate.
  2. As a proof of age (DOB), attested photocopy of your 10th/12th certificate/Marksheet.
  3. Attested mark sheets for all the semesters of your degree exams.
  4. Experience certificate from the current organization as well as from the previous organizations.
  5. Applicant's professional resume with academic as well as professional achievements.
  6. Latest brochure giving a detailed profile of the applicant's current organization.
  7. Write up of the applicants career objective.
  8. Detailed resume of your mentor along with an attested photocopy of mentors highest degree certificate.
  9. Details of the application fee receipt (DD/Net banking/Credit card)
  10. 4 Photos of the applicant.
Got all the required documents within 3 days and on the 4th day posted the application along with the required documents to The Dean, WILPD, Bits,Pilani, Rajasthan.

November 11 2013 was the last date to reach the application at Pilani campus.

On November 13, I got the admission offer letter from BITS.

It stated the admission fee and the course fee (Rs 15000 + Rs 35600) of Rs 50600 in total and the subjects for the first semester. Fees should be remitted and the fee receipt along with attested photocopy of the applicant's degree certificate should reach BITS Pilani within 2 weeks as a token of acceptance.

Everything was done and now am going to become a BITSian.

Was too happy at my heart.

By the first week of December, I got the BITS ID no and access to their online services.

Classes started by the second week of December and the course handouts were released by the starting of third week of December.

Now I am too happy that I have started chasing down one of my dreams in life. :)

Thanks to all those who helped me in doing this - My HR department and my mentor.

I know that I have to go a long way to complete my dream of getting an MS degree from BITS.

Let GOD and HIS blessings be with all of us. :)

See this too - After completing the course.

Monday, 22 April 2013

Debugging Linux processes in an embedded system using GDB and remote GDBServer stub

In today's embedded world, developers often come across a situation where they need to debug an embedded application which will be running on Linux/Android or other such embedded operating systems.

Mostly, to ease the debugging effort, an x86 port of the application will be developed at first. Initial developer testing will be done in the development machine itself so that native debugging tools can be used. Entry level bugs (which may constitute general typos and coding standard issues), of course, can be detected and fixed like this. 

However, there are lots of other issues which can arise only when the application is run in the target. Some of the issues may be due to 
  • cross compiling of the application 
  • resource constraints (memory, CPU)
  • timing constraints
  • differences in the platform-dependent behavior of Linux.
Such issues will make the developers say 'It is working perfectly in my machine; but when run in the target, it is behaving weirdly'.

In such cases, it will be best to debug the application right in the environment where it is executing.

GDB (GNU Debugger) helps a lot in this regard. It has got an extensive and robust support for remote debugging as well as support for an exhaustive range of processor architectures (like ARC, ARM, MIPS, PowerPC etc). Remote debugging is the mechanism to debug an application running remotely in an embedded target or another machine using a GDB running in a host machine, say an x86 PC.

Setting up a remote-debug environment

It is really easy to setup one remote debugging environment. Once you read this article completely, you will think "Why the hell I hadn't done this before???".

To set up a remote debugging environment, the following components are required:
  • A GDB cross-compiled for the required target architecture which can run in your host machine.
  • A GDBServer cross-comiletd for the required target architecture which can run in your target system.
  • A communication medium - either a serial cable or an ethernet cable through which the host machine can communicate with the remote target.
NOTE: How to cross compile GDBServer, GDB and your application for a specific platform is out of the scope of current discussion and shall be discussed separately.

Usually, developers will have to handle two sorts of situations
  1. Debug a process from its start-up.
  2. Debug a process which is already running in target.
For both these cases, things to do in the host GDB are same.

Step 1: Run GDB in the host machine.

Step 2: Run GDBServer in the remote target. This can be done through a remote shell via teraterm, hyper-terminal, minicom or through SSH if SSH is running in the target.

GDBServer can be invoked in 3 different modes:
  1. gdbserver :<port number> <application name>
  2. gdbserver :<port number> --attach <Process ID>
  3. gdbserver :<port number> --multi
First method is used to debug a process from start-up, second method is used to debug an already running application and the third one is used to debug multiple processes.

Step 3: In host GDB's console, give target remote <ip>:<port number>. This will connect host GDB with the remote GDBServer listening at <port number> with ip-address <ip>.

Step 4: That's all folks. Now you can debug the application running in a remote target as anything which was running in your PC. You can step in, step over, put breakpoints, watch variables etc as you normally do in GDB.

Try this and make your developer's life better and easier. Enjoy!!!

More internal details of the above mentioned steps will follow soon... Before diving deeper, you better try this out and get your hands dirty...:).