Linux Pentru sistemele embedded Faculty of Electronics Telecommunications
Linux Pentru sistemele embedded
Faculty of Electronics, Telecommunications and Information Technology Arhitectură software și hardware Conexiunea ethernet: n Utilizată în procesul de boot-are: U-Boot încarcă kernel-ul în memoria RAM n Transfer sistem de fișiere prin intermediul protocolului NFS n Conexiune SSH la sistemul de operare (SO) embedded ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 2
Faculty of Electronics, Telecommunications and Information Technology Open Source n Libertăți: ® ® n de a utiliza programul, în orice scop (se mai numește „libertatea 0”); de a studia modul de funcționare a programului, și de a-l adapta nevoilor proprii („libertatea 1”), deci se asigură accesul la tot codul sursă al programului; de a redistribui copii, în scopul ajutorării aproapelui tău („libertatea 2”): de a îmbunătăți programul, și de a pune îmbunătățirile la dispoziția publicului, în folosul întregii societăți („libertatea 3”). open source vs. free software ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 3
Instalare mașină virtuală Faculty of Electronics, Telecommunications and Information Technology Există mai multe pachete software de virtualizare: n Virtual. Box processors. wiki. ti. com/index. php/How_to_Build_a_Ubun tu_Linux_host_under_Virtual. Box n Vmware n Virtual PC ® ® n Windows Virtual PC – Windows 7 Virtual PC 2007 – Windows XP Hyper-V ® Pentru Windows 10 ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 4
Instalare Ubuntu n n Faculty of Electronics, Telecommunications and Information Technology n O nouă versiune la 6 luni, versiune standard suport timp de 9 luni Din 2 în 2 ani apare o nouă LTS – abreviere pentru “Long Term Support” 5 ani suport atât pentru server cât și pentru desktop ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 5
Primii pași în Ubuntu Faculty of Electronics, Telecommunications and Information Technology n n Descărcați SO Ubuntu 16. 04. 3 LTS (alegeți versiunea pe 32 de biți) de la: http: //www. ubuntu. com/download/desktop Linux-ul este un SO multi-user ® ® n n Utilizatorul root este echivalent cu cel de tip administrator din Windows putând executa acțiuni “privilegiate” precum: “montarea” unui sistem de fișiere, schimbarea configurației SO, creare și configurarea a noi useri, instalare sau eliminare pachete software etc. Toți ceilalți utilizatori nu au aceste privilegii și nu pot efectua aceste operații. Într-un SO precum Ubuntu nu este posibilă logarea ca root SO a fost configurat a. î. primul cont creat să poată executa operațiile privilegiate prin intermediul unui program denumit sudo: $ sudo mount /dev/sdb 2 /mnt/flash_disk ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 6
Faculty of Electronics, Telecommunications and Information Technology Instalare Ubuntu (16. 04 LTS) Cerințe minime pt. SO Ubuntu versiunea Desktop: n 2 GHz dual core (700 MHz processor - about Intel Celeron or better) n 2 GB of RAM (512 Mi. B RAM) n 25 GB (5 GB) of hard-drive n VGA capable of 1024 x 768 (800 x 600) screen resolution n Either a CD/DVD drive or a USB port for the installer media Cerințe minime pt. SO Ubuntu Server (CLI) n 1 GHz (300 MHz) x 86 processor n 512 MB (192 MB) of system memory (RAM) n 1 GB of disk space (1. 75 GB for all features to be installed) n Graphics card and monitor capable of 640 x 480 n CD drive ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 7
Ce este o distribuție Linux Faculty of Electronics, Telecommunications and Information Technology n n O distribuție Linux (denumită prescurtat distro) este un sistem de operare (SO) construit dintr-o sumă de componente software în jurul unui nucleu (kernel) Linux și, câte o dată, în jurul unui sistem de menagement a componentelor – o colecție de componente software ce automatizează procesul de instalare, upgradare, configurare și înlăturare a componentelor SO într-o manieră consistentă Există mai mult de 600 de distribuții Linux, peste 300 din ele sunt active – într-o dezvoltare continuă Distribuții: Fedora (Red Hat), open. SUSE (SUSE), Ubuntu (Canonical Ltd. ), Debian, Slackware, Gentoo, Arch Linux etc. ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 8
Faculty of Electronics, Telecommunications and Information Technology Ce este o distribuție Linux n Componente SO: kernelul Linux (inima SO), shell-ul text (terminalul), X server (susține interfața grafică), interfața grafică cu utilizatorul (ce rulează pe X server), browser web, pachetul Office, uneltele de dezvoltare etc. n Kernel: ® ® ® n vine din cuvântul german Kern – nucleu Componeta principală a SO Este o “punte” între partea hardware și componentele software Shell-ul – poate fi grafic sau text (bash, tcsh, ksh, etc. ) ® ® Comenzile introduse în mod text; Rezultatele comenzilor sunt prezentate în mod text – în fereastra terminal; Nu este necesară existența unei interfețe grafice. Ce shell folosesc? ls -l /bin/sh ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 9
Ce este o distribuție Linux Faculty of Electronics, Telecommunications and Information Technology n n Multe din aceste componente sunt dezvoltate independent de diferite organizații – cea mai mare parte din ele fiind open-source O distribuție Linux este o combinație specifică a acestor elemente puse împreună cu un kernel Linux și generate pentru o anumită arhitectură Distribuție – un SO Linux complet ! Diferitele distribții Linux au la bază o anumită filozofie: ® ® ® Fedora – doar pe baza componentelor open-source Mint - include și component closed-source, scop: să îi fie cât mai ușor utilizatorului Arch Linux – obiectiv: rapiditatea și simplitatea, adresându-se utilizatorilor avansați ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 10
Ce este o distribuție Linux Faculty of Electronics, Telecommunications and Information Technology n O distribuție Linux, pentru o anumită platformă, minimal trebuie să includă componentele: 1. 2. 3. 4. Kernel Linux – specific arhitecturii So. C, componentă a PSP (Platform Support Package, echivalentul BSP din Windows Embedded Compact) Bootloader-ul - Uboot este bootloader-ul standard pentru ARM Linux Sistemul de fișiere Linux – nu se referă la un tip specific de sistem de fișiere (precum FAT 32 sau NTFS) este ceva echivalent cu discul “C: ” din Windows. Se referă la acele componente software de tip “user mode” necesare unei aplicații pentru a rula: librării grafice, aplicații de rețea, codecuri, librării C de tip run-time, diferite module încărcate dinamic în kernel etc. Unelte de dezvoltare (GCC, GDB, CCS etc. ) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 11
Sistemul de fișiere Linux Faculty of Electronics, Telecommunications and Information Technology n n n caracterizat printr-o structura ierarhică, arborescentă organizat sub forma unui arbore cu un director rădăcină (root) arbore poate conține: ® ® ® n n n fișiere ordinare, fișiere de tip legătură sau alte directoare - numite subdirectoare Subdirectoarele = noduri în arbore, fișierele = frunzele arborelui Nu există limitare a numărului de noduri sau frunze – restricții date doar de capacitatea de stocare Referirea la un fișier prin: ® ® specificarea numelui său precedat de un șir de caractere numite cale ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 12
Sistemul de fișiere Linux n Prin cale se indică poziția în cadrul arborelui a fișierului Faculty of Electronics, Telecommunications and Information Technology ® ® n pornind de la directorul rădăcină (cale absolută sau completă) de la directorul curent (cale relativă), referit prin simbolul “. ” diferențe între Linux și Windows ® ® ® Caracterul “” este înlocuit în Linux cu “/”; în Linux se face distincție între litere mici și litere mari; un fișier executabil în Linux nu are o extensie specifică, el este un fișier ce are setat dreptul de execuție; există diferențe notabile între modul de stabilire și organizare a drepturilor de acces asupra unui fișier; într-un fișier text: § din Linux sfârșitul de linie este dat de un singur caracter (“n” - cel cu codul ASCII 10), § în Windows sfârșitul de linie este dat prin două caractere (cu codurile ASCII în zecimal 13 şi 10). ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 13
Sistemul de fișiere Linux n Faculty of Electronics, Telecommunications and Information Technology n n /dev - director ce contine toate driverele dispozitelor atasate sistemului (/dev/hda - aici este HDD; /dev/zero) /etc - doar fisiere de configurare și diferite scripturi de inițializare/startare/oprire servicii /home – locul de stocare a fisierelor utilizator ® ® ® n n n n Fiecare utilizator are un folder personal (de ex. /home/mdobrea) Similar cu “My Documents” din Windows Diferit doar pentru utilizatorul “root” ce are drept folder personal: /root /media – în mod uzual CDROM-urile sunt montate aici /mnt – alte tipuri de dispozitive sunt montate aici /opt – loc unde sunt stocate diferite pachete software /proc – include o cantitate foarte mare de informații asociate diferitelor procese ce se execută în acel moment /sbin - executabile utilizate doar de utilizatorul root (conține programe administrative în principal) /usr – utilitarele executabile de baza se regăsesc aici /var – diverse: ® ® /var/www – stocare fișiere server web /var/log/syslog - ultimile evenimente din sistem ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 14
Faculty of Electronics, Telecommunications and Information Technology Comenzi Linux n Comenzile au următoarea sintaxă: $ comanda optiuni argumente n Fiecare element individual din comandă se separă prin spațiu n optiunile schimbă modul în care comanda se execută ® Dacă optiunile au o singură literă sunt precedate de “-”, de exemplu: -a -b -c ® n sau -abc Dacă în optiuni sunt incluse cuvinte întregi sunt precedate de “--”, de exemplu: --help argumente pot fi nume de fișiere sau alte informații necesare în execuția comenzii ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 15
Comenzi Linux n Fișiere ® Faculty of Electronics, Telecommunications and Information Technology ® ® ® n ls cp cat grep mkdir mv pwd n ® ® ® n Administrare & securitate ® ® ® passwd addgroup useradd usermod chown chmod ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Management componente Rețea ® ® ® n apt-get install “pachet” apt-get remove “pachet” apt-get update apt-get upgrade apt-get dist-upgrade do-release-upgrade ifconfig iwconfig ping ifdown ifup Etc. Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 16
Faculty of Electronics, Telecommunications and Information Technology Comenzi Linux n Idee de baza: nu vă apucați să memorați comenzi !!! n Funcție de distribuția Linux cu care lucrați: ® ® n există deosebiri între opțiunile diferitelor comenzi sau; anumite comenzi nu se regăsesc în diferite distribuții; Utilizați opțiunile de help disponibile (în diferite nivele de profunzime și detailiere): ® ® ® whatis command --help man info /usr/share/doc. . . Internet ! ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 17
Comenzi Linux Faculty of Electronics, Telecommunications and Information Technology n whatis ® Afișează doar o scurtă descriere a diferitelor comenzi - o singură linie ® Fiecare pagină de manual a unei comenzi are o scurtă descriere – whatis caută pagina comenzii și afișează această descriere ® Baza de date a comenzii este updatată automat ® Sintaxă: whatis comandă de exemplu: whatis cat ® Acceptă multiple comenzi: whatis cat date ls ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 18
Comenzi Linux Faculty of Electronics, Telecommunications and Information Technology n command –help ® Afișează un rezumat al modului de utilizare a comenzii și lista opțiunilor ® Deoarece de cele mai multe ori este afișată o cantitate mare de date, pentru ușurința vizualizării le puteți trimite către comanda less: date --help | less ® în acest mod puteți derula informațiile cu ajutorul tastaturii (a săgeților) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 19
Comenzi Linux n man: Faculty of Electronics, Telecommunications and Information Technology ® ® ® Este comanda “pricipală” care documentează diferitele comenzi Fiecare comandă are o “pagină” man Utilizând opțiunea -f se va obține același rezultat cu cel dat de whatis man -f cat ® ® = whatis cat Cu toate că paginile comenzii man sunt în mod uzual vizualizate întro fereastră de tip consolă (mod text) sau fereastră terminal (fereastră text în mediu GUI) acestea pot fi vizualizate și într-un web browser Introduceți în câmpul link-urilor: man: cat ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 20
Comenzi Linux n Navigare ® Săgeți + Pg. Up + Pg. Down Căutare: /text Prin intermediul n/N vă puteți duce la următoarea/anterioara potrivire q ieșire ® Utilizează aceeași bază de date ca și whatis ® Comandă complexă cu foarte multe opțiuni ® Pentru mai multe informații, utilizați: Faculty of Electronics, Telecommunications and Information Technology ® ® ® man ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 21
Update Ubuntu Instalare pachet software: sudo apt-get install <nume pachet> n Eliminare pachet software: sudo apt-get remove <nume pachet> n Loc stocare local a căilor de căutare pachete software: /etc/apt/sources. list n Update BD cu căile de căutare a pachetelor software sudo apt-get update n Căutare pachet software: apt-cache search <keyword> Sau utilizând opțiunea search: http: //packages. debian. org sau http: //packages. ubuntu. com Faculty of Electronics, Telecommunications and Information Technology n ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 22
Update Ubuntu Faculty of Electronics, Telecommunications and Information Technology n “soft” update: sudo apt-get upgrade ® n “hard” update SO Ubuntu: sudo apt-get dist-upgrade ® n n Va instala noua versiune a pachetelor dar fără a elimina vechile dependințe Poate elimina anumite componente După finalizarea operației, ștergeți toate pachetele utilizate în operația de update prin: sudo apt-get clean Upgrade SO Ubuntu (către o nouă versiune): sudo do-release-upgrade ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 23
Faculty of Electronics, Telecommunications and Information Technology Cum comunicam cu SO Ubuntu? n Instalare VMware Tools (drag and drop) n Conectare la un director shared al calculatorului host: smb: //192. 168. 3. 100/Share n Preluare date server web - Instalare XAMPP ce conține: ® ® n Apache My. SQL PHP Perl SFTP susținuta de un server de tip SSH (OPENSSH) # apt-get install openssh-server n Share director din sistemul virtual ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 24
Faculty of Electronics, Telecommunications and Information Technology Cum comunicam cu SO Ubuntu? 1. Instalare Samba: 5. Editare fișier configurare $ sudo apt-get update $ sudo apt-get install samba [My. Share] path = /home/mdobrea/Share valid users = mdobrea read only = no 2. Setare parolă user: $ sudo smbpasswd -a mdobrea 3. Creare director share: 6. Restartare serviciu samba: $ mkdir /home/mdobrea/Share $ sudo service smbd restart 4. Copie de siguranță fișier configurare: 7. Verificare sintaxă fișier configurare Samba: $ sudo cp /etc/samba/smb. conf ~ $ testparm ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 25
Modalități de boot linux SO Linux este compus (d. p. d. v. al funcționalității minimale) din mai multe componente: Faculty of Electronics, Telecommunications and Information Technology n Modulele necesare procesului de boot: ® ® n n x-loader u-boot Kernel-ul – u. Image Sistemul de fișiere Acestea se pot găsi pe: n Sistemul embedded – pe SD, FLASH, USB, ROM, etc. n Pe sistemul de dezvoltare (HDD) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 26
Necesități pentru dezvoltarea aplicațiilor Faculty of Electronics, Telecommunications and Information Technology Pentru dezvoltarea aplicațiilor Linux avem nevoie de următoarele componente: Componentă Scopul acestei aplicații Fișierul Code. Sourcery GCC toolchain Cross compiler utilizat în generarea fișierelor binare (ARM, Linux) arm-2009 q 1 -203 arm-none-linuxgnueabi Open Source Linux libraries Oferă diferite tipuri de librării: libpng, libusb, libz, libcurl etc. Platform Support Package Oferă driverele pentru sistemul EVM, documentații și exemple necesare dezvoltării de aplicații. Linux kernel Kernelul Linux cu driverele din PSP DVSDK – Digital Video Software Development Kit Info: http: //www. ti. com/tool/linuxdvsdk-omap 3530 ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 27
Faculty of Electronics, Telecommunications and Information Technology Necesități pentru dezvoltarea aplicațiilor Sistemul pe care sunt dezvoltate (compilate) aplicațiile Sistemul pe care sunt rulate aplicațiile ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 28
Cross-compiling development tool chain Faculty of Electronics, Telecommunications and Information Technology n n n n Avem nevoie de un set de instrumente care să ruleze pe PC dar să genereze cod pentru un alt tip de procesor Prin “cross-compiling” se înțelege utilizarea unui compilator, pe un anumit tip de sistem, pentru a genera cod care să ruleze pe un alt sistem Cel mai utilizat compilator în cadrul SO Linux este GCC Inițial a fost denumit Gnu C Compiler – denumire schimbată în GNU Compiler Collection deoarece în timp a oferit suport pentru multe alte limbaje, altele decât C GCC: C, C++, Objective C, Fortran, Java, Ada etc. GCC susține o paletă largă de arhitecturi: x 86, Alpha, ARM, M 68000, MIPS, Power. PC, SPARC etc. GCC poate rula pe: Linux, Unix, DOS sau Windows ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 29
Configurare generală Faculty of Electronics, Telecommunications and Information Technology sudo apt-get install xinetd - lansare serviciu corespunzător tftpd - server Trivial File Transfer Protocol nfs-kernel-server - server NFS (Network File System) build-essential - unelte de bază libncurses 5 -dev - librării u-boot-tools - pentru crearea lui boot. scr autoconf - produce scripturi shell automake - generare automată Makefile vim sau gvim - editoare ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 30
minicom Faculty of Electronics, Telecommunications and Information Technology n n Instalare: sudo apt-get install minicom Parametrii comunicare serială: ® ® ® n n n baudrate 115200, 8 biți, fără paritate, 1 bit de stop, Invalidați hardware flow control, Pentru adaptor serial pe USB se utilizează: /dev/tty. USB 0. Lansați minicom -s pentru a intra în interfața de configurare Totul salvat în fișierul de configurare “. minirc. dfl” Pentru meniu minicom: Control-A (first) + {tastă funcție} (then) ® ® ® Control-A + z : ecran help Control-A + c : șterge informația ecran Control-A + x : ieșire minicom ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 31
Faculty of Electronics, Telecommunications and Information Technology Boot-are SD / MMC card n n n Pe partiția FAT 32: MLO (xldr) + u-boot + u. Image Pe partiția EXT 3: sistemul de fișiere Linux ext 3 – elimină necesitatea verificării sistemului de fișiere în cazul unei opriri necontrolate a SO ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 32
Boot-are Linux: din ROM către kernel n Faculty of Electronics, Telecommunications and Information Technology n RBL - ROM boot loader – 1 st stage boot loader – utilizat pentru pornirea SO prin intermediul portului serial, NAND flash, SD card etc. 2 nd stage boot loader, denumit UBL (user boot loader), MLO sau x-loader RBL ROM Device x-loader U-Boot Kernel Internal RAM DDR 2 UBL / RBL UBL / x-loader UBL x-loader UBoot Linux Kernel DDR 2 UBoot ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Flash Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro Linux Kernel 33
Boot-are Linux: din ROM către kernel Boot stage Operații OMAP 3530 Faculty of Electronics, Telecommunications and Information Technology Cod existent în ROM: 1. Verifică Firstlevel starea unor SW prin care detectează dispozitivul (NAND, UART, SD card etc. ) de unde procesul de boot va continua; 2. Inițializează dispozitivul respectiv; 3. Încarcă și execută 2 nd stage boot loader de la perifericul selectat Funcția primară a acestui software este de a memoria externă și ceasul sistemului Second- inițializa pentru ca un pachet software mai mare și mai level complex de tip boot loader (în acest caz Uboot) să fie încărcat și executat. • U-boot este un boot loader-ul standard, de tip open-source, pentru ARM Linux; • suportă boot-are prin intermediul rețelei – Linux de ex. TFTP sau NFS; boot • U-boot este utilizat în localizarea și execuția kernel-ului Linux (u. Image) putând trimite și anumite argumente nucleului SO. ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro RBL X-load U-boot 34
Faculty of Electronics, Telecommunications and Information Technology Boot-are SD / MMC card n RBL-ul este de mic dimensiuni și el poate lucra doar cu un SD card ce are următoarea structură: ® ® 255 heads și 63 sectors/track n [ Capacitate SD card ] = cylinders x heads x sectors x 512 n cylinders = Floor ([Capacitate SD card] / heads / sectors / 512) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 35
Necesar creare card n am nevoie din PSP (Platform Support Package): ® Faculty of Electronics, Telecommunications and Information Technology ® n n din ${DVSDK}/psp/prebuilt-images/ de MLO, u-boot. bin și u. Image $DVSDK/filesystem/dvsdk-omap 3 evm-rootfs. tar. gz u-boot poate boot-a din diferite tipuri de fișiere (ldr files, elf files, binary files), dar în special include suport pentru formatul său specific u. Image (U-Boot image format) Kernel Images ® ® ® Pot fi în format ELF (Executable and Linking Format) sau în format U-Boot, pot fi asociate cu un sistem de fișiere sau nu Kernel-ul în format U-Boot conține u. Image în denumire (u. Image sau vm. Image), cel în format ELF conține termenul linux în denumire (linux sau vmlinux) Formatul U-Boot este unul comprimat minimizare spațiu Formatul ELF nu este comprimat creșterea vitezei de boot Kernel-ele ce au atașate sisteme de fișiere au tipul specific de sistem de fișiere ca sufix (de exemplu: . ext 2 sau. initramfs) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 36
Faculty of Electronics, Telecommunications and Information Technology Necesar creare card ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 37
Configurare U-boot n Faculty of Electronics, Telecommunications and Information Technology n Pentru informații complete consultați de ex. : http: //www. denx. de/wiki/view/DULG/UBoot U-boot acceptă o serie largă de comenzi: ® ® ® n setenv: setează valoarea unei variabile; dhcp: comandă invocată pentru a obține IP sau parametrii de boot; bootm: boot-are imagine SO ce se află în memoria sist. embedded; tftpboot: boot-are imagine prin intermediul rețelei utilizând TFTP; etc. Utilizează anumite variabile: ® ® bootargs: conținutul acestei variabile este trimis către kerne-ul SO ca argumente de boot-are; bootfile: numele imaginii kernelului care va fi încărcată prin TFTP; bootdelay: după resetarea plăcii U-Boot va așteapta un nr. de secunde înaintea executării conținutiului variabilei bootcmd. Permite sau nu realizarea unui proces de boot interactiv. etc. ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 38
Fișier configurare u-boot n Faculty of Electronics, Telecommunications and Information Technology n Pentru a nu da comenzile manual la fiecare boot-are U-boot caută după un fișier boot. scr pe partiția FAT, apoi pe ext. X (X = 3) Conținut fișier: setenv bootargs 'console=tty. S 0, 115200 n 8 root=/dev/mmcblk 0 p 2 rw ip=off mem=99 M mpurate=720 omap_vout. vid 1_static_vrfb_alloc=y omapfb. vram=0: 3 M rootwait' fatload mmc 0 80200000 u. Image bootm 80200000 n omap_vout. vid 1_static_vrfb_alloc=y ® ® n omapfb. vram=0: 3 M ® n n n API: Video For Linux (V 4 L) Alocare memorie alocare 3 MB memorie pentru framebuffers mem=99 M - Continuous Memory Shared buffers: ARM & DSP fatload <interface> <dev[: part]> <addr> <filename> [bytes] bootm [addr [arg. . . ]] ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 39
Faculty of Electronics, Telecommunications and Information Technology Informații tehnice DVSDK conține multe componente, parte din ele dezvoltate de TI (în albastru), parte dezvoltate de comunitatea open source (în gri). ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 40
Faculty of Electronics, Telecommunications and Information Technology Informații tehnice ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 41
mkimage n Faculty of Electronics, Telecommunications and Information Technology n n Pentru crearea unei imagini boot-abile – nu este cazul aici Utilizat de această dată în crearea boot. scr din boot. cmd Cum: mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Execute u. Image. bin' -d /tmp/sdk/boot. cmd /tmp/sdk/boot. scr n Semnificație: ® ® ® ® -A [architecture] – alegere tip arhitectură -O [os] – alegere tip OS -T [image type] – alegere tip imagine -C [compression type] – alegere tip compresie -a [load addess] – setare adresă de încărcare, în hex -e [entry point] – setare punct intrare (adresă execuție) -d [image data file] - alegere fișier de intrare ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 42
Boot-are SD / MMC card n Ultimul pas: Faculty of Electronics, Telecommunications and Information Technology ® ® Set the SW 4 switch to boot from SD SW 4 = 11100100 (SW 4), 1 = "On" position on the switch UART 1/2 !!!!!! n login name: root n Matrix Application Launcher GUI: /etc/init. d/matrix-gui-e start n Terminare Matrix GUI: /etc/init. d/matrix-gui-e stop n Calibrare manuală: ts_calibrate n ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 43
Boot-are NAND flash + SD Faculty of Electronics, Telecommunications and Information Technology În continuare ne propunem configurația 2 pentru boot n n n Se presupune existența unui SD card boot-abil funcțional Se va prezenta doar modalitatea de copiere a boot loaders (x-loader și u-boot) în memoria FLASH internă a plăcii OMAP 3530 Ambele fișiere (x-loader și u-boot) ce vor fi scrise în memoria FLASH sunt aceleași cu cele existente pe SD card ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 44
Faculty of Electronics, Telecommunications and Information Technology Boot-are NAND flash + SD +----+-->0 x 0000 -> X-loader start | |-->0 x 0007 FFFF-> X-loader end | |-->0 x 00080000 -> U-Boot start | |-->0 x 001 BFFFF-> U-Boot end | |-->0 x 001 C 0000 -> ENV start | |-->0 x 0027 FFFF-> ENV end | |-->0 x 00280000 -> Linux Kernel start | |-->0 x 0077 FFFF-> Linux Kernel end | |-->0 x 00780000 -> Filesystem start | | | +----+-->0 x 10000000 -> Filesystem end ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 45
Boot-are NAND flash + SD Faculty of Electronics, Telecommunications and Information Technology n n n n 0 x 0000000 - 0 x 0080000 - 0 x 0260000 - 0 x 0280000 - 0 x 0780000 - 0 x 8000000 X-Loader U-boot Image U-Boot Env Data (X-loader) Kernel Image depends on application MLO are o lungime de 18512 bytes U-boot are o lungime de 212880 bytes ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 46
Boot-are NAND flash + SD Faculty of Electronics, Telecommunications and Information Technology n Comenzi U-Boot de copiere a x-loader și u-boot: OMAP 3_EVM # nand erase 0 20000 OMAP 3_EVM # nand erase 80000 40000 OMAP 3_EVM # nandecc hw OMAP 3_EVM # mmc init OMAP 3_EVM # fatload mmc 0 0 x 81600000 MLO OMAP 3_EVM # nand write. i 0 x 81600000 0 20000 OMAP 3_EVM # nandecc sw OMAP 3_EVM # fatload mmc 0 0 x 81600000 u-boot. bin OMAP 3_EVM # nand write. i 0 x 81600000 80000 40000 n Set the SW 4 switch to boot from NAND (1 = "On" position on the switch): SW 4 = 00101010 (high to low, i. e. SW 4. 1 = 0) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 47
Faculty of Electronics, Telecommunications and Information Technology Boot-are NAND flash + SD n fatload <interface> <dev[: part]> <addr> <filename> [bytes] load binary file 'filename' from 'dev' on 'interface' to address 'addr' from dos filesystem n nand write. i addr off size write 'size' bytes starting at offset 'off' from memory address 'addr', skipping bad blocks. n nandecc [hw/sw] Switch between NAND hardware (hw) or software (sw) ecc (Elliptic Curve Cryptography) algorim ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 48
Faculty of Electronics, Telecommunications and Information Technology Kernel via TFTP + sistem fișiere via NFS n n abordarea de tip network boot este dedicată în special pentru partea de develpment a nucleului și a aplicațiilor Este necesar să configurăm mediul astfel încât: ® ® Să boot-am nucleul sistemului de operare linux prin intermediul unui server TFTP, din directorul implicit: /tftpboot Să boot-am sistemul de fișiere linux prin intermediul Network File System (NFS), pe mașina virtuală în care realizăm dezvoltarea structura de fișiere va fi localizată în: ${HOME}/targetfs ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 49
Faculty of Electronics, Telecommunications and Information Technology Kernel via TFTP + sistem fișiere via NFS ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 50
Kernel via TFTP + sistem fișiere via NFS Faculty of Electronics, Telecommunications and Information Technology n ALOCARE STATICA: setenv bootdelay 4 setenv bootargs 'console=tty. S 0, 115200 n 8 rw mem=99 M mpurate=720 omap_vout. vid 1_static_vrfb_alloc=y omapfb. vram=0: 3 M root=/dev/nfs nfsroot=192. 168. 3. 100: /home/mdobrea/targetfs ip=192. 168. 3. 181: 192. 168. 3. 100: : 255. 0: emb_OMAP: eth 0: off' mmc init fatload mmc 0 0 x 82000000 u. Image bootm 0 x 82000000 n ip=<client-ip>: <server-ip>: <gw-ip>: <netmask>: <hostname>: <device>: <autoconf>: <dns 0 -ip>: <dns 1 -ip> ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 51
Kernel via TFTP + sistem fișiere via NFS Faculty of Electronics, Telecommunications and Information Technology n ALOCARE STATICA: setenv bootdelay 4 setenv bootargs 'console=tty. S 0, 115200 n 8 rw mem=99 M mpurate=720 omap_vout. vid 1_static_vrfb_alloc=y omapfb. vram=0: 3 M root=/dev/nfs nfsroot=192. 168. 3. 100: /home/mdobrea/targetfs ip=192. 168. 3. 181: 192. 168. 3. 100: : 255. 0: emb_OMAP: eth 0: off' mmc init fatload mmc 0 0 x 82000000 u. Image bootm 0 x 82000000 n ip=<client-ip>: <server-ip>: <gw-ip>: <netmask>: <hostname>: <device>: <autoconf>: <dns 0 -ip>: <dns 1 -ip> ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 52
Kernel via TFTP + sistem fișiere via NFS n Configurarea xinetd: Faculty of Electronics, Telecommunications and Information Technology ® ® n Prin intermediul fișierului de configurare standard: /etc/xinetd. conf Configurarea serviciilor suportate – fișiere de configurare stocate în: /etc/xinetd. d directory Creati fișierul /etc/xinetd. d/tftp cu următorul conținut: service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in. tftpd server_args = /home/mdobrea/tftpboot disable = no } ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 53
Dezvoltarea aplicațiilor Faculty of Electronics, Telecommunications and Information Technology n n Pentru dezvoltarea diferitelor componente necesare sistemului OMAP 3530 EVM (nucleul Linux, u-boot, codecuri, aplicații DSP, etc. ) sunt necesare o serie de librării, fișiere header etc. În vederea configurării mediului de lucru pentru crosscopilere trebuie setate diferite variabile prin: source ${DVSDK}/linux-devkit/environment-setup n Finalizarea cu succes a setării acestor variabile (a exportului coținutului lor către mediu) va fi semnalizat prin adăugarea [linux-devkit] în cadrul liniei de comandă ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 54
Dezvoltarea aplicațiilor Faculty of Electronics, Telecommunications and Information Technology n Recompilarea diferitelor componente ale DVSDK poate fi realizată, în modul clasic din Linux, prin intermediul comenzii make • Primul pas, intrarea în structura de directoare ale DVSDK cd ${DVSDK} • Pentru lista completă a aplicațiilor ce pot fi construite: make help • Fiecare din componentele menționate anterior poate fi construită prin: make <target>_clean make <target>_install ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 55
Dezvoltarea aplicațiilor Faculty of Electronics, Telecommunications and Information Technology n n n Prin lansarea în execuție a comenzii de instalare (make <target>_install), fișierele binare rezultate sunt copiate în calea stocată în variabila EXEC_DIR din fișierul ${DVSDK}/Rules. make Această variabilă trebuie să indice către structura de directoare oferită de NFS și utilizată de sistemul embedded Deci, în Rules. make din $DVSDK se inițializează variabila EXEC_DIR cu: ${HOME}/targetfs/home/root/omap 3530 n n Astfel încât în urma compilării fișierele rezultante să fie plasate pe sistemul host în directorul de mai sus în timp în ce pe placa de dezvoltare fișierele executabile se vor găsi în: /home/root/omap 3530 ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 56
Dezvoltarea aplicațiilor Faculty of Electronics, Telecommunications and Information Technology n Pentru eliminarea tutror componentelor compilate: make clean n Pentru obținerea tutror fișierelor binare rezultat (inclusiv fișierele demonstrative și exemplele): make all n Pentru instalarea lor: make install n În mod implicit (după instalare) o parte din elementele DVSDK nu există pentru aceasta putem da: make clean make components ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 57
Kernel-ul Linux - istorie n Faculty of Electronics, Telecommunications and Information Technology n În aprilie 1991, Linus Torvalds, un student al Universității din Helsinki, Finlanda în vârstă de 21 de ani a început lucrul la SO ce va fi cunoscut sub numele de Linux Versiuni: ® în septembrie 1991, versiunea 0. 01 a kernelului de Linux a fost lansată – avea 10239 linii de cod ® 14 martie 1994, versiunea 1. 0. 0 a kernelului de Linux a fost lansată – avea 176250 linii de cod ® martie 1995, versiunea 1. 2. 0 a kernelului de Linux a fost lansată – avea 310950 linii de cod ® 25 ianuarie 1999 – vers. 2. 2. 0 (1 800 847 linii de cod) ® 18 decembrie 1999 – un patch pentru sistemele mainframe IBM (2. 2. 13) din acest moment Linux este utilizat pe sisteme enterpriseclass ® 17 december 2003 – vers. 2. 6. 0 (5 929 913 linii de cod) ® iunie 2013, versiunea 3. 10 (15 803 499 linii de cod) ® iune 2015, vers. 4. 1 (peste 19. 5 milioane linii de cod), au contribuit aproape 14 000 programatori ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 58
Faculty of Electronics, Telecommunications and Information Technology Kernel-ul Linux - istorie ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 59
Kernel-ul Linux Faculty of Electronics, Telecommunications and Information Technology n n n în cod sursă Linux 3. 10 are o mărime de 573 MB (43 000 fișiere, aproximativ 15 800 000 linii de cod) De ce este așa de mare ? ? Info kernel: drivers: 49. 4% kernel: 1. 0% arch: 21. 9% tools: 0. 9% fs: 6. 0% scripts: 0. 5% include: 4. 7% mm: 0. 5% sound: 4. 4% crypto: 0. 4% Documentation: 4. 0% security: 0. 4% net: 3. 9% lib: 0. 4% firmware: 1. 0% block: 0. 2% n NUCLEUL SISTEMULUI DE OPERARE (programatorul, managmentul memoriei etc. ) ESTE FOARTE MIC ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 60
Faculty of Electronics, Telecommunications and Information Technology Kernel-ul Linux ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 61
Kernel-ul Linux - rol Faculty of Electronics, Telecommunications and Information Technology Rolul kernel-ului: n Managementul resurselor hardware; n Utilizează un API (portabil și independent față de arhitectură și de componentele hardware) ce permite aplicațiilor și librăriilor din spațiul utlizator să acceseze resusrsele hardware; n Managementul accesului concurențial la resursele hardware a diferitelor aplicații: ® De exemplu: o singură interfață de rețea este utilizată de mai multe aplicții din spațiul utilizator (user space), nucleul SO fiind responsabil de operația de “multiplexare” a accesului la resurse ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 62
Faculty of Electronics, Telecommunications and Information Technology Kernel-ul Linux - caracteristici n Este de tip monolitic n Este un SO de tip multitasking preemtiv Este un sistem de operare modular Arhitecturile minime suportate sunt pe 32 biți Este un SO scalabil – rulează arât pe supercomputere dar și pe mici sisteme embedded (4 Mb de RAM sunt îndeajuns) n n n ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 63
Kernel-ul Linux - caracteristici Faculty of Electronics, Telecommunications and Information Technology n n Este un SO de tip SMP (symmetric multiprocessing) Este un SO de operare portabil (aproape pe orice arhitectură): ® ® ® n Arhitecturi pe 32 biți suportate: arm, avr 32, blackfin, m 68 k, microblaze, mips, score, sparc, um Arhitecturi pe 64 biți suportate: alpha, arm 64, ia 64, sparc 64, tile Arhitecturi pe 32/64 suportate: powerpc, x 86, sh Utilizează tehnici de managment a memoriei de tip memorie virtuală ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 64
Debugging n Faculty of Electronics, Telecommunications and Information Technology n n GDB – prescurtarea de la Gnu De. Bugger Utilizat pentru controlul execuției unui program, utilizarea punctelor de întrerupere (breackpoints), vizualizarea și/sau schimbarea stării unor variabile, etc. https: //en. wikipedia. org/wiki/GNU_Debugger La compilare trebuie să includ și informațiile de debug prin: ® ® n n “-ggdb” - enable debugging symbols so we can load the application into gdb and step through it with detailed information “-ggdb 3” switch - this tells gcc to associate the executable with the source file, so that when the program is being examined with gdb we can take a look at the line of code we’re executing, instead of pure machine code Limbaje suportate: C, C++, Pascal, Objective-C, Fortran, Ada. . . De tip consolă (linie de comandă) ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 65
Faculty of Electronics, Telecommunications and Information Technology Debugging Sistemul host Ubuntu virtualizat ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Sistemul Embedded OMAP Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 66
Debugging Faculty of Electronics, Telecommunications and Information Technology n gdbserver este o aplicație ce-ți permite realizare unei conexiuni către programul ce rulează pe sistemul emedded prin intermediul unei aplicații de tip GDB ce rulează pe sistemul host, sintaxa: gdbserver comm program [ args. . . ] n comm este numele unui dispozitiv (linie serială) sau un nume de host TCP și un număr de port. De exempu, pentru a realiza debug-ul aplicației vim cu argumentul “fisier. txt” utilizând portul de comunicație serială “/dev/com 1”: gdbserver /dev/com 1 vim fisier. txt n gdbserver așteaptă pasiv ca o aplicație GDB de pe host să comunice. Pentru utilizarea unei conexiuni TCP: gdbserver host: 2345 vim fisier. txt ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 67
Faculty of Electronics, Telecommunications and Information Technology Debugging I. Pe sistemul embedded (OMAP 3530 EVM) trebuie să existe o copie a programului (fișierul execuabil) pe care îl vom depana, de ex. helloworld: gdbserver 192. 168. 3. 100: 2345. /helloworld II. Pe sistemul host: arm-none-linux-gnueabi-gdb helloworld III. În cadrul arm-none-linux-gnueabi-gdb executați: target remote 192. 168. 3. 181: 2345 ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 68
Debugging n Comenzi utile: Faculty of Electronics, Telecommunications and Information Technology ® ® ® Sdv Edv ADBV ”Gheorghe Asachi” Technical University | www. etti. tuiasi. ro/cin Dan-Marius Dobrea, mdobrea@etti. tuiasi. ro 69
- Slides: 69