Konsolenbefehl mit Argumenten

Werden in der Konsole Argumente mitgegeben

./video 50070 -1                    // [port] [dumped]

so müssen diese im Executable verarbeitet werden.

int main(int argc, char *argv[]) {

   // set configruations

    if (argc > 1) {
        Port = atoi(argv[1]);
        ....
    }

    if(argc > 2) {
       if (atoi(argv[2]) == -1) {
          ..  // open dumped-file
        }
       else if (atoi(argv[2]) == 1) {
          ..  // open ...
        }
    }

 

 

 

 

 

 

shell / ./ . etc

/

cd /Verzeichnis/

Der Pfad beginnt  „ab root“

————————————————————————————-

./

./temp/

Bedeutet, dass der Pfad im „aktuellen Verzeichnis“ beginnt.
./ ist gleichbedeutet mit ganz weglassen:  temp/

————————————————————————————-

.

Ist keine Pfadangabe. Der Punkt versteckt die Datei.

 .datei.txt       -> unsichtbare Datei

Booten

Notwendige Dateien

preloadImage.bin                 // falls doppel-Boot
fpgaSystem.rbf                     // binäre Systemdatei
socfpga.dtb                           // device Tree
U-Boot.scr                            // script bootloader
zImage                                  // Yocto-Ergänzungen

Die Images können z.B. mit Bitbake (yocto) erstellt werden.

Build-System

Für ein eigenes Linux, muss im

Minimum

  • Files-System mit von Hand kompilierten Programmen für das Target

oder im Normalfall für ein

Kleines Linux

  • Bibliotheken (uCLib)
  • Bootlaoder
  • Sytemprogramme (Busybox) oder Kernel
  • Applikationsprogramme

Für das Target kompilieren und dort zum Laufen (Booten) bringen.

Diese Schritte können von Hand, oder mit der Hilfe eine Build-Systems getan werden.

Vorteil Build-System

Bei der Installation wird die korrekte Reihenfolgen durch die Automatisation eingehalten. Abhängigkeiten sind bekannt und das Build-System zeigt Inkompatibilitäten an.

 

Bekannte Build-Systeme

  • Buildroot
  • OpenWRT (basiert auf Buildroot)
  • Yocto

 

Build Programme

  • bitbake (Yocto):
    In Yocto wird für den bootloader (+ preloader), den kernel mit dem dazugehörendem device tree und für das file System ein separates Image gebildet.  Alle Images und Zusatzdateien zusammen führen zu einer grossem Image.bin.

 

 

 

Big Endidan, littel endian

Einfach, weil ich es immer wieder verwechsle:

Little Endian, entspricht der hex schreibweise
Wert:                                               0xA0C518
Reihenfolge im Speicher:           0xA0C518

  • hat sich durchgesetzt bei PCs (weil dies meist Intel-Prozessoren sind, x86, die littel endian Daten Speichern
  • Aufbau wie Stunden::Minuten::Sekunden.
    Zuerst der grosse Wert, dann der kleinere. (Am Ende stehen die tiefen Werte, die Einer)
  • Aufbau wie unser Dezimal (oder Hex) Zahlensytem

Big Endian, der Exot
Wert:                                               0xA0C518
Reihenfolge im Speicher:           0x18C5A0

  • Wird bei den Netzwerkprotokollen gebraucht
  • Kommt im Embedded Bereich bei der Datenverarbeitung vor
  • Das Ablegen der Daten entspricht nicht der Zahlenwertnotation
  • Aufbau wie Tag::Monat::Jahr
    Am Ende steht die grösste Einheit

Android App: Hauptseite mit Auswahlliste

Siehe Chapter 6 aus: Head-First-Android-Development-2015

Auf dem Hauptbildschirm erscheint eine Liste von Optionen zur Auswahl, die man anklicken kann.

Nach der Auswahl wird die neue Aktivität aufgerufen.ListAuswahl_Android

 

Java-Struktur

  • Alle Aktivitäten (Auswahlen) erhalten eine Klasse.
    Es gibt die Hauptklasse (hier Top Level Activity) und  zu jeder Auswahl folgt eine Klasse (Klasse Drinks, Klasse Menüs, Klasse Standorte).
  • In der Anzeigeklassen wird das Anzeigen der Elemente verwaltet
  • Soll nach der ersten Auswahl noch weitere Details angezeigt werden, erhalten diese auch wieder eine Aktivitätsklasse.

 

Anzeigeklasse

public class Drink {
    private String name;
    private String description;
    private int imageResourceId;

    // drinks is an array of Drinks
    public static final Drink[] drinks = {     // Bild hinzufügen
            new Drink("Latte", "With milk", R.drawable.latte),
            new Drink("Cappu", "With chocolate", R.drawable.cappucino),
            new Drink("Filter", "With water", R.drawable.filter)
    };

    //Each Drink has a name, description, and an image ressource
    private Drink (String name, String description, int imageResourceId){
        this.name = name;
        this.description = description;
        this.imageResourceId = imageResourceId;
    }

    public String getDescription() {
        return description;
    }

    public String getName(){
        return name;
    }

    public int getImageResourceId(){
        return imageResourceId;
    }

    public String toString(){
        return this.name;
    }
}

 

Layout Liste einbauen

Man findet unter Container die Listview. Android_ListAuswahl

// top_level_activity.xml
<ListView
    android:id="@+id/list_options"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/options" />    // die Auswahlnamen in Array
// string.xml
<resources>
    ...
    <string-array name="options">
        <item>Drinks</item>
        <item>Food</item>
        <item>Stores</item>
    </string-array>

</resources>

 

Elemente der Auswahlklasse sollen antworten
Dies geschieht über einen EventListener. So hören die Klassenvariablen auf eine Aktivität. Um einen EventListener zu implementieren, muss die Methode OnItemClickListener()  implementiert werden.

 

 

..

 

 
DoppelteListAuswahl_Android

 

Android App: Ordner Ressourcen und Variable R

Der Ordner res beinhaltet die visuellen Dateien (geschrieben in xml) und verwaltet deren Anbindung an die Java-Aktivitäten.

Die Variable R

An sie sind alle xml-Definitionen angebunden. Über sie kann in Java auf die einzelen Definitionen zugegriffen werden. Als erstes wird über diese Variable die generellen Layout-Settings in der Funktion getCreat() geladen.

setContentView(R.layout.activity_top_level);

In den folgenden Aktivitäten-Codes werden spezifische Settings zu einer Ansicht (Layout) über die Variable gesetz. Oft über die id-Referenz:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

Hier werden die korrespondierenden Bilder über die Variable R geladen:

new Drink("Latte", "With milk", R.drawable.latte),

 

Der Ordner values

Die Einstellungen, die über die Variable R aufgerufen werden im Ordner ../res/values abgelegt. Alle Werte, die im Layout in der Datei ../res/layout/activiy_main.xml einer Ansicht zugewiesen werden, werden von Android Studio auch im Ordner  ../res/ values/ abgelegt. Dort hat jede Variable einen Namen und einen Wert.

Beispiel
Variable fürs Zuweisen von Text

// activity_main.xml

<TexView 
    android text="string/Willkommen !"   // Variablen-Wert setzen
    />

 

Speichern von Text per value

// activity_main.xml

<TexView 
    android text="@string/willkommen"     // Variablen-Name setzen
    />
// string.xml

<recources>
     <string name = "willkommen">Willkommen !</string>   // name, Wert
     </recources>

Speichern per reference ist vor allem beim Speichern mehrerer Auswahlen wichtig.

// activity_main.xml
<ListView
     android:entries="@array/options"
     />
// string.xml
<string-array name="options">      // mehrere Namen für eine Liste
    <item>Drinks</item>
    <item>Food</item>
    <item>Stores</item>
</string-array>

Android App: Zusammenfassung Layout

Prinzip von ViewGroups und Views

Auch das Layout ist hierarchisch bzw. über Vererbung aufgebaut. ViewGroups definieren die Grundansicht des Layouts wie z. B. ein <LinearLayout>  oder ein <RelativeLayout> . Views werden als User Interface Components bezeichnet. Es handelt sich um die konkreten Teile auf dem Layout wie z.B. ein Text   <TextView> , eine Taste, ein Schalter  <Button> oder eine Eingabezeile <editText> .

Auswahl über visuelle Hilfe
Im Layout-Ordner kann man die Elemente per xml (siehe Tab Text) oder über Auswahl/Platzieren (im Tab Design) direkt auf ein simuliertes Gerät laden.
Android_Layout_Visuel

 

Widgets sind interaktive Eingaben, die eine Handlung auslösen.

Android_Layout_Widget

 

TextFields sind aussschliesslich für Texteingaben gedacht. Android bietet bereits viele vordefinierte Input-Strukturen an, so dies eine Telefonnummer, ein normaler Text oder sei dies ein Pin.

Android_Layout_Textfields

..

 

 

..