Avisto Internship - Embedded Software
Avisto Internship - Embedded Software
Avisto Internship - Embedded Software
Author(s):
Stefan Vukčević ([email protected]),
Bodin Matejić ([email protected]),
Nikola Nešković ([email protected])
Internal
Intro 3
Linux intro 4
C/C++ and GIT 5
Sorting comparison 5
N queens’ problem 5
Knight tour problem 5
String search algorithm 5
POSIX producer-consumer (optional) 6
Possible upgrades to the process 6
TIVA C 7
UART Echo 7
MikroE module 7
Expanded UART echo 7
Possible upgrades to the process 7
Zybo Z7 8
Deploy Linux with Petalinux tool 8
Booting with ramfs 8
Booting with Linaro filesystem 8
Deploy Linux with Vivado 8
Deploy Linux with Buildroot 8
2
Intro
This document describes what is given to interns to do during the internship.
The section Zybo Z7 is optional and situational. The section Linux intro is also optional but
recommended.
3
Linux intro
Basics of the Linux kernel, compiling and booting of a kernel.
Basics of Linux Device Drivers and making of a char driver.
Literature: https://lwn.net/Kernel/LDD3/
Usually only the first 4 chapters.
4
C/C++ and GIT
Create several C/C++ applications and test programmer skills. Throughout the development
process, interns learn about GIT and version control in general and are introduced to good
programming practices.
Sorting comparison
Compare four sorting algorithms of various sizes. Use the following four sorting algos:
● Quick sort.
● Bubble sort.
● Insertion sort
● Merge sort
Use following sizes for sort: 10, 100, 1000, 10000, 100000, 1000000. To have
the same test conditions use the same test vector for each algorithm. Measure the
time and print the results in the file.
N queens’ problem
Create the application which will put N queens on the chess table (N x N). Print all solutions.
5
POSIX producer-consumer (optional)
Implement a producer and consumer thread with a FIFO that emulates the cp command.
Use POSIX C99 standard and stdin and out.
6
TIVA C
The board: http://www.ti.com/tool/EK-TM4C123GXL
Useful: https://www.ti.com/lit/ug/spmu298d/spmu298d.pdf
UART Echo
Send a message and receive it back on the same device. BareMetal and RTOS
implementation.
Learned: UART bus and protocol, finding and reading documentation, the start of
BareMetal and RTOS embedded programming.
MikroE module
Communicate and use functionalities from the provided MikroE click board. BareMetal and
RTOS implementation.
Learned: CAN bus and protocol, finding and reading documentation, BareMetal and
RTOS embedded programming.
7
Zybo Z7
The objective of this part is for interns to get familiar with embedded Linux systems. Interns
will go through a couple of different ways of deploying Linux on the Digilent Zybo Z7 board.
The outcome of every step is to have a functional Linux system that can be accessed via the
serial interface.
Easy use of the Petalinux tool will introduce interns to the ways of deploying Linux to
embedded systems.
Useful: https://www.xilinx.com/products/design-tools/embedded-software/petalinux-sdk.html
Useful: https://www.linaro.org/about/
Build separate Linux kernel and u-boot bootloader and make an executable image with
Vivado to boot on Zybo Z7 board.
Learned: build process of Linux and u-boot, Vivado and SDK tools
1. With ramfs
2. With linaro filesystem
8
Deploy Linux to Zybo Z7 using Buildroot.
Learned: Buildroot image build flow