Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 ·...
Transcript of Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 ·...
![Page 1: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/1.jpg)
Jaeyong ChungSoC Laboratory
Incheon National University
Embedded System Design
Term Project – Porting(v1.04)
![Page 2: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/2.jpg)
� The reason why you install an OS on your embedded system is not only to do multi-tasking� Operating Systems provide hardware abstraction, which let you
run many existing applications on your system
� These days, it is not common to build something from scratch� Most software is developed by integrating existing
programs/libraries� There are tons of open-source programs on the Internet
� Porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed.
Porting
Chung EPC6071 2
![Page 3: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/3.jpg)
Open-source Community
� www.sourceforge.net� www.github.com� and many more
Chung EPC6071 3
![Page 4: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/4.jpg)
Term Project
� The objective is to port an open-source program for 320 embedded system� Choose one out of 4 given programs (MP3 player, image
viewer, web server, pacman game)� Source codes will be provided� Cross-compile and run it on the target system
Chung EPC6071 4
![Page 5: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/5.jpg)
Term Project
� You are supposed to change the USER INTERFACEof the programs
� You don’t have to modify and even understand the core of the programs
� Modify the user interface and use as many I/O devices in the 320 (e.g., FND, dot-matrix, character display, keypad, etc) as possible
� Install necessary device drivers to the target system � Driver sources and test programs will be given
Chung EPC6071 5
![Page 6: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/6.jpg)
General guidelines
� Download the source files� Compile it for your intel PC� Run it and think about how to modify its user interface� Repeat when you don’t have the board:
� Try to find how the program take inputs from the user and produce outputs in the source files� Use printf here and there
� Compile it for your intel PC� Run it
Chung EPC6071 7
![Page 7: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/7.jpg)
General guidelines
� Repeat until the project is done:� Modify the source files referring to fnd_test.c, key_test.c, etc� Cross-compile it for the 320 embedded system� Transfer executables and libraries to the board using minicom� Run it
Chung EPC6071 8
![Page 8: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/8.jpg)
Topics
� (easiest) HTTP server� (tinyhttpd-0.1.0, http://sourceforge.net/projects/tinyhttpd/ )
� (easy) MP3 Player� (mpg123-1.19.0, http://www.mpg123.de )
� (moderate) Image Viewer� (sxiv-1.2, https://github.com/muennich/sxiv )
� (difficult) Pacman Game� (njam-1.25, http://njam.sourceforge.net/ )
� (difficult) Overlay System� Use Xilinx Zynq SoC, 4 teams only
Chung EPC6071 9
![Page 9: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/9.jpg)
Webserver
� tinyhttpd (http://sourceforge.net/projects/tinyhttpd/)� Ideas to modify :
� Control FND and the character display from the web browser in your smartphone
� And many more
� Download tinyhttpd-0.1.0.tar.gz from the website� Extract it
Chung EPC6071 10
![Page 10: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/10.jpg)
Webserver (Compile)
� In tinyhttpd-0.1.0 directory� $ nano Makefile
� $ make� $ ./httpd
� Open firefox and connect to http://localhost:[port]
Chung EPC6071 11
![Page 11: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/11.jpg)
Webserver (Cross-compile)
� In tinyhttpd-0.1.0 directory� $ nano Makefile
� $ make
Chung EPC6071 12
![Page 12: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/12.jpg)
For the rest of topics
� $ sudo ln -s /usr/local/hybus-arm-linux-R1.3/ /usr/local/arm-linux-4.1.1
Chung EPC6071 13
![Page 13: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/13.jpg)
MP3 Player
� mpg123 (http://www.mpg123.de)� Ideas to modify:
� Display the name of the song being played in the character display
� Display remaining time in the FND� Play, Stop, etc buttons using keypad� and many mores
� Download mpg123-1.22.1.tar.bz2 from the website� Extract it (use $ tar -jxvf )
Chung EPC6071 14
![Page 14: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/14.jpg)
MP3 Player (Compile)
� $ sudo apt-get install libasound2-dev� In mpg123-1.22.1 directory
� $ ./configure� $ make� $ cd src� $ ./mpg123 xxxxx.mp3
Chung EPC6071 15
![Page 15: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/15.jpg)
MP3 Player (cross-compile)
� In mpg123-1.22.1 directory� $ ./configure CC=/usr/local/hybus-arm-linux-R1.3/bin/arm-
linux-gcc --with-cpu=arm_nofpu --with-default-audio=alsa --host=i686 --build=arm --enable-modules=no
� $ make clean� $ make� $ ls ./src/mpg123
� That is the executable for ARM CPU
Chung EPC6071 16
![Page 16: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/16.jpg)
Image Viewer
� sxiv-1.2� Dependencies: Imlib2 and giflib� https://github.com/muennich/sxiv� Ideas to modify
� Display the file name in the character display� Display something in FND� Next and previous buttons using the keypad� And many more
� Download the source files� $ git clone https://github.com/muennich/sxiv
Chung EPC6071 17
![Page 17: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/17.jpg)
Image Viewer (compile)
� $sudo apt-get install libimlib2-dev � In sxiv directory
� $ make� $ ./sxiv image.jpg image.png image.gif
Chung EPC6071 18
![Page 18: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/18.jpg)
Image Viewer (cross-compile) - 1
� Download imlib2-1.4.4.tar.gz from� http://freecode.com/projects/imlib2
� In imlib2-1.4.4 directory� $ ./configure CC=/usr/local/hybus-arm-linux-R1.3/bin/arm-
linux-gcc FREETYPE_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi/bin/freetype-config --host=arm-none-linux --build=i686 --without-gif --prefix=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi
� $ nano src/lib/loaderpath.h
� $ make� $ sudo make install
Chung EPC6071 19
![Page 19: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/19.jpg)
Image Viewer (cross-compile) - 2
� Download giflib-5.1.1.tar.bz2 from� http://sourceforge.net/projects/giflib/
� In giflib-5.1.1 directory� $ ./configure CC=/usr/local/hybus-arm-linux-R1.3/bin/arm-
linux-gcc --host=arm-none-linux --build=i686 --prefix=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi
� $ make� $ sudo make install
Chung EPC6071 20
![Page 20: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/20.jpg)
Image Viewer (cross-compile) - 3
� In sxiv directory� $ nano Makefile
� $ make� $ ls sxiv
� That’s the executable for ARM
Chung EPC6071 21
![Page 21: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/21.jpg)
Image Viewer (Install to the target board)
� Transfer dynamic libraries� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/libImlib2.so.1.4.4� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/libgif.so.6.0.1
� Transfer dynamic libraries into /root/imlib2/loaders� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/imlib2/loaders/jpeg.so� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/imlib2/loaders/png.so� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/imlib2/loaders/bmp.so
� Transfer the executable
Chung EPC6071 22
![Page 22: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/22.jpg)
Pacman game
� njam-1.25 (http://njam.sourceforge.net/)� Note that njam is written in C++� Dependencies: SDL_mixer, SDL_net� Ideas to modify :
� Buttons to move� Display something on FND, dot-matrix, and/or character display� Fix the sound problem� Fix the resolution problem� And many more
� Download njam-1.25-src.tar.gz from the website� Extract it
Chung EPC6071 23
![Page 23: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/23.jpg)
Pacman game (compile)
� $ sudo apt-get install build-essentials� $ sudo apt-get install libsdl1.2-dev libsdl-image1.2-
dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
� In njam-1.25-src� $ ./configure –prefix=/usr/local� $ make� $ sudo make install� $ njam -w
Chung EPC6071 24
![Page 24: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/24.jpg)
Pacman game (cross-compile) - 1
� Fix a bug in SDL� $ sudo nano /usr/local/arm-linux-4.1.1/arm-iwmmxt-linux-
gnueabi/include/SDL/SDL_stdinc.h
Chung EPC6071 25
![Page 25: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/25.jpg)
Pacman game (cross-compile) - 2
� Download SDL_mixer-1.2.12.tar.gz from� http://www.libsdl.org/projects/SDL_mixer/release-1.2.html
� In SDL_mixer-1.2.12 directory� $ ./configure PKG_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-
iwmmxt-linux-gnueabi/bin/pkg-config CC=/usr/local/hybus-arm-linux-R1.3/bin/arm-linux-gcc --host=arm-none-linux --build=i686 SDL_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi/bin/sdl-config --prefix=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi –disable-music-mod
� $ make� $ sudo make install
Chung EPC6071 26
![Page 26: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/26.jpg)
Pacman game (cross-compile) - 3
� Download SDL_net-1.2.8.tar.gz from http://www.libsdl.org/projects/SDL_net/release-1.2.html
� In SDL_net-1.2.8 directory� $ ./configure PKG_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-
iwmmxt-linux-gnueabi/bin/pkg-config CC=/usr/local/hybus-arm-linux-R1.3/bin/arm-linux-gcc --host=arm-none-linux --build=i686 SDL_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi/bin/sdl-config --prefix=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi
� $ make� $ sudo make install
Chung EPC6071 27
![Page 27: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/27.jpg)
Pacman game (cross-compile) - 4
� In the njam-1.25-src directory� Fix a bug in ./configure
� $ nano ./configure� In 4089 line,
� SDL_LIBS="`$SDL_CONFIG --libs`"� SDL_CFLAGS="`$SDL_CONFIG --cflags`“
� $ ./configure PKG_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi/bin/pkg-config CC=/usr/local/hybus-arm-linux-R1.3/bin/arm-linux-gcc CXX=/usr/local/hybus-arm-linux-R1.3/bin/arm-linux-g++ --host=arm-none-linux --build=i686 SDL_CONFIG=/usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-gnueabi/bin/sdl-config --prefix=/root
Chung EPC6071 28
![Page 28: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/28.jpg)
Pacman game (cross-compile) - 4
� $ make clean� $ make� $ sudo make install� $ ls ./src/njam
� This is the executable for the ARM cpu
Chung EPC6071 29
![Page 29: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/29.jpg)
Pacman game (cross-compile) - 5
� Transfer dynamic libraries� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/libSDL-1.2.so.0.11.1� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/libSDL_image-1.2.so.0.1.5� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/libSDL_mixer-1.2.so.0.12.0� /usr/local/hybus-arm-linux-R1.3/arm-iwmmxt-linux-
gnueabi/lib/libSDL_net-1.2.so.0.8.0
Chung EPC6071 30
![Page 30: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/30.jpg)
Pacman game (cross-compile) - 6
� Transfer image files,etc� $ sudo -i� $ cd /root/share� $ tar czvf njam.tar.gz njam� Transfer njam.tar.gz and extract it at /usr/local/share
� Transfer the executable
Chung EPC6071 31
![Page 31: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/31.jpg)
Overlay System
� Recommended for who took digital integrated circuits� Will use Xilinx Zynq SoC
� Cortex A9 + FPGA on a single chip
� Will exercise all of what you have learned in DIC and this course
� Need to develop hardware controllers and test programs
� Before you start:� Finish the following tutorial� https://www.digilentinc.com/Data/Products/ZYBO/ZYBO-
Embedded_Linux_Hands-on_Tutorial.pdf
Chung EPC6071 32
![Page 32: Embedded System Design - INUesc.inu.ac.kr/~chung/epc6071_2017/Project.pdf · 2017-05-18 · Embedded System Design Term Project –Porting(v1.04) ... FND, dot-matrix, character display,](https://reader033.fdocuments.us/reader033/viewer/2022041806/5e547898e691e8713a634871/html5/thumbnails/32.jpg)
Overlay System
Chung EPC6071 33
ARM A9
Frame buffer
Overlay buffer
Zynq SOC
OV7670 Ctrl
VGA Ctrl