Embedded Linux on ARM | Assignments

Home Embedded Linux on ARM  | Course Home Embedded Linux on ARM | Assignments

Embedded Linux programming on ARM – Assignments

In Emertxe each one of our embedded linux programming on ARM Assignments will ensure you apply the concept you have leant in your classroom. By solving these assignments, you will go through a systematic problem-solving approach which include requirement understanding, algorithm design, pseudocode creation, dry run and final execution. As you move from simple to more complex assignments of each module it will slowly start building your self-confidence. 

Chapter 1 : Single Linked List

Description:

Configure U-Boot to change the boot delay to 5 secs.

 

Objective:

To understand how to change the boot time if needed.

 

Requirements:

You have to try embedded linux programming assignment 1 using

  1. Menu configuration method – Change delay using uboot configuration
  2. Changing the u-boot default configuration file
  3. Setting the environment variable
    1. Reset uboot and observe change
    2. Power of the board or restart Qemu and see if you have the value set

Description:

Assume you have running instance of u-boot. Explore possible ways of uploading binary file and executing them.

 

Objective:

To understand different possible way of loading and executing U-Boot on the target board.

 

Requirements:

  1. In case of Qemu, you may try loading uboot using tftp protocol or load it from SD card
  2. If you have Beagle Bone Black you may also try loadx, loads to name some along with the above commands
 

Description:

Load the uEnv.txt into memory using network, import it to the environment and test whether its sets all the required variables and test them by booting the system.

 

Objective:

To understand possible way of setting U-Boot environmental variable.

 

Requirements:

Write a simple uEnv.txt and

    • Load using tftp command
    • Import it to set all the variables put it

Description:

Load all the binary images into the SD card using network interface.

 

Objective:

To understand how to load binary images from ext file system.

 

Requirements:

For example lets say you want to copy image into boot directory of your file system, you will have to follow the below steps

  1. Load uImage into memory
  2. Copy the bytes loaded in memory to boot directory

You will have to repeat the above steps for all other files

Description:

Generate uImage manually using objcopy and mkimage commands

 

Objective:

To understand the build process behind the make rules.

 

Requirements:

When we invoke the below command

  $ make uImage LOAD_ADDR=0x 60008000

There are 2 commands responsible to create uImage and they are objcopy and mkimage. Use these 2 commands to create uImage manually and try booting it.

Description:

While OS development we some time need different methods to load and test the boot able images on that direction try loading all the images from network.

 

Objective:

To understand the step involved in loading the images from network.

 

Requirements:

Modify the uEnv.txt to pick the bootable images from the network using tftp protocol.

Description:

Sometimes while development we may have a need to try different kernel images, like a working version and the current release, So in that direction try a dual boot using which the user can select the required image.

 

Objective:

To understand the dual boot feature provided by the boot loader.

 

Requirements:

Configure uboot for dual boot option. Build 2 kernel images one with intramfs and the other with ext fs and provide user and option to select the required image

Description:

By default when your board is up, the network interface would not be up. So configure the network configuration files so that the network is up while the system is booted.

 

Objective:

To understand how to configure target network

 

Requirements:

Configure the network script so set the IP on boot up. Try both the approaches, that is static as well as dynamic configuration

Description:

While working on the embedded OS development, sometimes we would want the target board interact with the host systems, So configure busy box so that you add the needed features.

 

Objective:

To understand how to add applications on the target root file system

 

Requirements:

Add the following network features you your system

  1. telnet
  2. ssh

Description:

By now you should have a clear idea on configuring and building all the images individually, now what if, you a option to build all the using a single command?. Well try that

 

Objective:

To understand how to build all the images using buildroot

 

Requirements:

Build all the images with help of build root instead of building them individually. All the images like u-boot.img, zImage should in the images directory.

Description:

When you use the root file system provided by build root, the init by default is busybox.
What if you want your application run in place of that? So write a simple calculator program and run it as your init when your system boots

 

Objective:

To understand system boot process and the significance of init

 

Requirements:

Should support all basic functions like addition, subtraction etc.

Description:

When you use the kernel default configuration file, the User LEDs are by default enabled. Now if you want to use them, it would conflict with your driver

 

Objective:

To understand how to configure and rebuild the kernel if needed

 

Requirements:

Rebuild the kernel disabling the Heartbeat LED so that it can be used by the user application