Come si puo' vedere il sistema e' particolarmente lento ed al limite dell'usabile (sarebbe da provare anche con un puntatore ed una tastiera fisica)
martedì 5 febbraio 2013
Debian on Android
Esempio di Linux in Android (Debian small image) su un tablet Mediacom 850i
Come si puo' vedere il sistema e' particolarmente lento ed al limite dell'usabile (sarebbe da provare anche con un puntatore ed una tastiera fisica)
Come si puo' vedere il sistema e' particolarmente lento ed al limite dell'usabile (sarebbe da provare anche con un puntatore ed una tastiera fisica)
Scrivere e leggere file testo in Qt
Un semplice esempio di come scrivere e leggere un file testo in Qt
L'esempio e' ripreso sostanzialmente dall'help in linea per cui non vengono fornite ulteriori spiegazioni
------------------------------------------------
//scrittura
QFile mfile("/home/luca/prova.txt");
if (!mfile.open(QFile::WriteOnly | QFile::Text))
{
return ;
}
QTextStream out(&mfile);
out << "La risposta e': " << 42 << "\n";
out << "Ma la domanda quale e'??";
mfile.flush();
mfile.close();
//lettura
QFile rfile("/home/luca/prova.txt");
if (!rfile.open(QFile::ReadOnly | QFile::Text))
return;
QTextStream in(&rfile);
QString t;
while (!in.atEnd()) {
QString line = in.readLine();
t = t + line + "\n";
}
ui->textEdit->setText(t);
rfile.close();
-------------------------------------------------
altrimenti in C++ classico
--------------------------------------------------
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ofstream myfile ("prova.txt");
if (myfile.is_open()){
myfile << "This is a line.\n";
myfile.close();
}
else
cout << "Unable to open file";
ifstream myfile2 ("prova.txt");
if (myfile2.is_open())
{
while (! myfile2.eof() )
{
getline (myfile2,line);
cout << line << endl;
}
myfile2.close();
}else
cout << "Unable to open file";
}
L'esempio e' ripreso sostanzialmente dall'help in linea per cui non vengono fornite ulteriori spiegazioni
------------------------------------------------
//scrittura
QFile mfile("/home/luca/prova.txt");
if (!mfile.open(QFile::WriteOnly | QFile::Text))
{
return ;
}
QTextStream out(&mfile);
out << "La risposta e': " << 42 << "\n";
out << "Ma la domanda quale e'??";
mfile.flush();
mfile.close();
//lettura
QFile rfile("/home/luca/prova.txt");
if (!rfile.open(QFile::ReadOnly | QFile::Text))
return;
QTextStream in(&rfile);
QString t;
while (!in.atEnd()) {
QString line = in.readLine();
t = t + line + "\n";
}
ui->textEdit->setText(t);
rfile.close();
-------------------------------------------------
altrimenti in C++ classico
--------------------------------------------------
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ofstream myfile ("prova.txt");
if (myfile.is_open()){
myfile << "This is a line.\n";
myfile.close();
}
else
cout << "Unable to open file";
ifstream myfile2 ("prova.txt");
if (myfile2.is_open())
{
while (! myfile2.eof() )
{
getline (myfile2,line);
cout << line << endl;
}
myfile2.close();
}else
cout << "Unable to open file";
}
--------------------------------------------------
lunedì 4 febbraio 2013
Modalita' scalata in VirtualBox
Una delle cose piu' fastidiose in VirtualBox e' la modalita' scalata che in pratica fa scomparire il menu' di Virtualbox dalla finestra dell'applicazione (impedendo cosi' di ripristinare la modalita' precedente via mouse)
per poter riconquistare il menu si deve premere la combinazione CTRL destro + F
Modalita' a finestra |
Modalita' Scalata |
per poter riconquistare il menu si deve premere la combinazione CTRL destro + F
Debian in Android su Samsung GT-5570i
In questo post verra' descritto come ho installato Linux Complete Installer ed una Debian Testing sul mio telefono Samsung GT-5550i con Rom Optimus
Il programma che effettua questo trucco si chiama Complete Linux Installer ed ha bisogno dei privilegi di root per funzionare. La cosa simpatica e' che il programma sfrutta il chroot per creare un ambiente che funziona in parallelo ad Android senza ad andare ad intaccarne la funzionalita' (non e' un dualboot..diciamo che e' piu' simile ad una macchina virtuale)
Dopo di cio' si deve scaricare l'immagine (per Debian ne esistono di tre tipi core=solo interfaccia testuale, Small e Large con Xwindows e XFCE come DM)
le immagini, una volta scompattate si chiamano tutte debian.img quindi non possono risiedere nella stessa sottodirectory. Di default l'immagine di Debian deve essere contenuta nella SD Card nella directory "debian"
Una volta installato il programma si devono installare anche il terminale e VNCClient per Android
A questo punto si clicca Launch e si seleziona Debian.
Si apre il terminale, viene effettuato il check dell'immagine mediante il file md5 allegato e vengono richieste alcune configurazioni (per esempio la nuova password,le dimensioni della finestra grafica per VNC e se avviare il server SSH)
Se tutto va bene ci si trova in questa condizione
ovvero si leggera' il messaggio X Desktop is localhost:0
Non rimane che minimizzare il terminale e lanciare VncViewer per Android impostando la password come "debian" (attenzione.. quella che e' stata selezionata prima e' relativa all'utente Linux e non a VNC) e la risoluzione a 24 bit
ed ecco il risultato finale
ovviamente piu' il telefono e' veloce migliore sara' il risultato ed altrettanto ovviamente se il telefono e' collegato in rete si potra' usare il VNC client anche su PC od altre piattaforme
PS: una volta terminata la fase di controllo del checksum il file MD5 viene cancellato e viene creato un file di configurazione (file testo) nel quale viene riportata la dimensione del file VNC e quali server (SSH, VNC) sono attivati
Il programma che effettua questo trucco si chiama Complete Linux Installer ed ha bisogno dei privilegi di root per funzionare. La cosa simpatica e' che il programma sfrutta il chroot per creare un ambiente che funziona in parallelo ad Android senza ad andare ad intaccarne la funzionalita' (non e' un dualboot..diciamo che e' piu' simile ad una macchina virtuale)
Dopo di cio' si deve scaricare l'immagine (per Debian ne esistono di tre tipi core=solo interfaccia testuale, Small e Large con Xwindows e XFCE come DM)
le immagini, una volta scompattate si chiamano tutte debian.img quindi non possono risiedere nella stessa sottodirectory. Di default l'immagine di Debian deve essere contenuta nella SD Card nella directory "debian"
Una volta installato il programma si devono installare anche il terminale e VNCClient per Android
A questo punto si clicca Launch e si seleziona Debian.
Si apre il terminale, viene effettuato il check dell'immagine mediante il file md5 allegato e vengono richieste alcune configurazioni (per esempio la nuova password,le dimensioni della finestra grafica per VNC e se avviare il server SSH)
Se tutto va bene ci si trova in questa condizione
ovvero si leggera' il messaggio X Desktop is localhost:0
Non rimane che minimizzare il terminale e lanciare VncViewer per Android impostando la password come "debian" (attenzione.. quella che e' stata selezionata prima e' relativa all'utente Linux e non a VNC) e la risoluzione a 24 bit
ed ecco il risultato finale
ovviamente piu' il telefono e' veloce migliore sara' il risultato ed altrettanto ovviamente se il telefono e' collegato in rete si potra' usare il VNC client anche su PC od altre piattaforme
PS: una volta terminata la fase di controllo del checksum il file MD5 viene cancellato e viene creato un file di configurazione (file testo) nel quale viene riportata la dimensione del file VNC e quali server (SSH, VNC) sono attivati
venerdì 1 febbraio 2013
Loop mktime in configure/make
tentando di compilare Oleo mi sono imbattuto in un loop infinito nella fase di configure quando viene effettuato il controllo di mktime
La cosa, estremamente fastidiosa e che riguarda anche altri programmi, sembra essere relativa ad una versione troppo recente di autoconf...al momento non ho trovato soluzioni
Comandi utili da shell Linux
Settare la data
date -s "31 Jan 2013 13:57:00"
Controllare lo stato delle batteria
acpi
Controllare la memoria
top
puo' essere utile installare atop che fornisce una quantita' maggiore e piu' organizzata di informazioni
puo' essere utile installare atop che fornisce una quantita' maggiore e piu' organizzata di informazioni
Controllare lo stato dei dischi
df -H
Controlla lo stato della rete
iftop
iptraf
Controlla la scheda wireless
Ceni
Calcolatrice
echo $[2+4]
oppure si puo' usare dc (calcolatrice in notazione polacca)
dc
per esempio
dc
10
2
p
20
q
si moltiplica 10*2, si stampa il risultato e si fa quit
altrimenti si puo' usare
che si usa in notazione standard, da notare che e' un calcolatore a precisione arbitraria
10*2 [enter]
20
per usare le funzioni matematiche (vedi per esempio trigonometriche) si deve lanciare con lo switch bc -l mentre per definire la precisione si usa il comando scale (per esempio scale=100 imposta una precisione di 100 numeri decimali)
Gestione Archivi
unp (non e' propriamente un gestore di archivi ma sceglie quale scompattatore usare in base al file selezionato)
Text Editor
nano
fte-terminal (per una interfaccia testuale ma a finestre)
jed
Spreadsheet
sc
oleo (pacchetto da compilare, non esiste un pacchetto Debian ed al momento non si compila su Debian Testing)
teapot
File Manager
mc
Downloader
wget
Calendario
cal
Web
lynx e elinks
alpine
Visualizzatore/Conversione immagini
pacchetto imagemagick con display (visualizzatore), convert (per modificare le immagini)
Music Player
cmus
Torrent
rtorrent
Grafici
gnuplot
Mandelbrot in Assembler
Premettendo che niente del codice che segue e' frutto del mio lavoro ho raccolto (prima che si perdano) un po' di sorgenti per generare l'insieme di Mandelbrot in Assembler x86
Questa era una attivita' tipica del DOS quando si poteva avere accesso diretto in scrittura sulla memoria della VGA...con i nuovi sistemi operativi tale approccio e' sostanzialmente impossibile
i compilatori sono vari (TASM, FASM) e si vede anche la differenza tra la presenza e l'assenza del coprocessore matematico (che nei primi processori x86 era opzionale)
Listato 1
--------------------------------
--------------------------------
Listato 2
--------------------------------
;value: EAX - sentinella (max. TIEFE, min. 0)
PUBLIC rechnePunkt_
rechnePunkt_ PROC NEAR
TIEFE EQU DWORD PTR [EBP + 24]
CI_S EQU QWORD PTR [EBP + 16]
CR_S EQU QWORD PTR [EBP + 8]
push ebp
mov ebp, esp
fld CI_S
fstp ci
fld CR_S
fstp cr
push ecx
mov ecx, TIEFE
; CoProzessorstack einrichten
fldZ ; z.r = 0
fldZ ; z.i = 0
fldZ ; z.r^2 = 0
fldZ ; z.i^2 = 0
l1:
;Jetzt: st(0) - (z.i)^2
; st(1) - (z.r)^2
; st(2) - z.i
; st(3) - z.r
fsubp st(1),st ; z.r^2 - z.i^2
fadd cr ; z.r^2 - z.i^2 + c.r
fstp st(3)
fmulp st(1),st ; z.r * z.i
fadd st,st ; 2 * z.r * z.i
fadd ci ; 2 * z.r * z.i + c.i
;Ora : st(0) - new z.i = z.i
; st(1) - new z.r = z.r
fld st(1) ; z.r
fmul st,st ; z.r^2
fld st(1) ; z.i
fmul st,st ; z.i^2
fld st(1) ; z.r^2
fadd st,st(1) ; z.r^2 + z.i^2
fcomp grenze ; st = zabs2, < 4.0 ?
;Ora : st(0) - (z.i)^2 (confronta con occupazione in l1:)
; st(1) - (z.r)^2
; st(2) - z.i
; st(3) - z.r
fstsw ax
sahf
jae ende ;quanso st >= 4.0 -> vai a ende
dec ecx ;piu' veloce di un ciclo
jnz l1
ende: ffree st(3)
ffree st(2)
ffree st(1)
ffree st
mov eax, TIEFE
sub eax, ecx
pop ecx
mov esp, ebp
pop ebp
ret 20
rechnePunkt_ ENDP
_TEXT ENDS
--------------------------------
Listato 3
--------------------------------
; Mandelbrot found in the FIDO-Net. Very nice.
org 100h
start: mov ax,13h
int 10h ; set 320x200 256 color mode
mov ax,0a000h
mov ds,ax ; load ds with video segment
xor di,di ; zero out screen offset
mov bp,-200 ; load y with -(screen height)
l1: mov si,-320 ; load x with -(screen width)
l2: push di ; save screen offset
xor bx,bx ; val1 = 0
xor di,di ; val2 = 0
l3: push bx
lea ax,[bx+di] ; ax = val1 + val2
sub bx,di ; bx = val1 - val2
imul bx ; ans = val1^2 - val2^2
mov bl,ah
mov bh,dl
lea bx,[bx+si-64] ; val1 = (ans/256) + x - 64
pop ax
imul di ; ans = val1 * val2
mov al,ah
mov ah,dl
add ax,ax
xchg ax,di
lea di,[bp+di-56] ; val2 = (ans/128) + y - 56
cmp bh,4
jg draw ; if val1 > 1024 then draw point
inc cl ; increment color
jne l3
draw: pop di ; restore screen offset
xchg [di],cl ; store color, and make color = 0
inc di ; increment screen offset
inc si ; increment x
jne l2 ; if x <> 0 then continue lp2
inc bp ; increment y
jne l1 ; if y <> 0 then continue lp1
xor ax,ax
int 16h
mov ax,3
int 10h ; set text mode
ret ; exit program
--------------------------------
Questa era una attivita' tipica del DOS quando si poteva avere accesso diretto in scrittura sulla memoria della VGA...con i nuovi sistemi operativi tale approccio e' sostanzialmente impossibile
i compilatori sono vari (TASM, FASM) e si vede anche la differenza tra la presenza e l'assenza del coprocessore matematico (che nei primi processori x86 era opzionale)
Listato 1
--------------------------------
; Mandelbrot Set - fasm example program
; requires FPU
org 100h
mov ax,13h
int 10h
push 0A000h
pop es
mov dx,3C8h
xor al,al
out dx,al
inc dl
mov cx,64
vga_palette:
out dx,al
out dx,al
out dx,al
inc al
loop vga_palette
xor di,di
xor dx,dx
finit
fld [y_top]
fstp [y]
screen:
xor bx,bx
fld [x_left]
fstp [x]
row:
finit
fldz
fldz
mov cx,63
iterate:
fld st0
fmul st0,st0
fxch st1
fmul st0,st2
fadd st0,st0
fxch st2
fmul st0,st0
fsubp st1,st0
fxch st1
fadd [y]
fxch st1
fadd [x]
fld st1
fmul st0,st0
fld st1
fmul st0,st0
faddp st1,st0
fsqrt
fistp [i]
cmp [i],2
ja over
loop iterate
over:
mov al,cl
stosb
fld [x]
fadd [x_step]
fstp [x]
inc bx
cmp bx,320
jb row
fld [y]
fsub [y_step]
fstp [y]
inc dx
cmp dx,200
jb screen
xor ah,ah
int 16h
mov ax,3
int 10h
int 20h
x_left dd -2.2
y_top dd 1.25
x_step dd 0.009375
y_step dd 0.0125
x dd ?
y dd ?
i dw ?
--------------------------------
Listato 2
--------------------------------
;value: EAX - sentinella (max. TIEFE, min. 0)
PUBLIC rechnePunkt_
rechnePunkt_ PROC NEAR
TIEFE EQU DWORD PTR [EBP + 24]
CI_S EQU QWORD PTR [EBP + 16]
CR_S EQU QWORD PTR [EBP + 8]
push ebp
mov ebp, esp
fld CI_S
fstp ci
fld CR_S
fstp cr
push ecx
mov ecx, TIEFE
; CoProzessorstack einrichten
fldZ ; z.r = 0
fldZ ; z.i = 0
fldZ ; z.r^2 = 0
fldZ ; z.i^2 = 0
l1:
;Jetzt: st(0) - (z.i)^2
; st(1) - (z.r)^2
; st(2) - z.i
; st(3) - z.r
fsubp st(1),st ; z.r^2 - z.i^2
fadd cr ; z.r^2 - z.i^2 + c.r
fstp st(3)
fmulp st(1),st ; z.r * z.i
fadd st,st ; 2 * z.r * z.i
fadd ci ; 2 * z.r * z.i + c.i
;Ora : st(0) - new z.i = z.i
; st(1) - new z.r = z.r
fld st(1) ; z.r
fmul st,st ; z.r^2
fld st(1) ; z.i
fmul st,st ; z.i^2
fld st(1) ; z.r^2
fadd st,st(1) ; z.r^2 + z.i^2
fcomp grenze ; st = zabs2, < 4.0 ?
;Ora : st(0) - (z.i)^2 (confronta con occupazione in l1:)
; st(1) - (z.r)^2
; st(2) - z.i
; st(3) - z.r
fstsw ax
sahf
jae ende ;quanso st >= 4.0 -> vai a ende
dec ecx ;piu' veloce di un ciclo
jnz l1
ende: ffree st(3)
ffree st(2)
ffree st(1)
ffree st
mov eax, TIEFE
sub eax, ecx
pop ecx
mov esp, ebp
pop ebp
ret 20
rechnePunkt_ ENDP
_TEXT ENDS
--------------------------------
Listato 3
--------------------------------
; Mandelbrot found in the FIDO-Net. Very nice.
org 100h
start: mov ax,13h
int 10h ; set 320x200 256 color mode
mov ax,0a000h
mov ds,ax ; load ds with video segment
xor di,di ; zero out screen offset
mov bp,-200 ; load y with -(screen height)
l1: mov si,-320 ; load x with -(screen width)
l2: push di ; save screen offset
xor bx,bx ; val1 = 0
xor di,di ; val2 = 0
l3: push bx
lea ax,[bx+di] ; ax = val1 + val2
sub bx,di ; bx = val1 - val2
imul bx ; ans = val1^2 - val2^2
mov bl,ah
mov bh,dl
lea bx,[bx+si-64] ; val1 = (ans/256) + x - 64
pop ax
imul di ; ans = val1 * val2
mov al,ah
mov ah,dl
add ax,ax
xchg ax,di
lea di,[bp+di-56] ; val2 = (ans/128) + y - 56
cmp bh,4
jg draw ; if val1 > 1024 then draw point
inc cl ; increment color
jne l3
draw: pop di ; restore screen offset
xchg [di],cl ; store color, and make color = 0
inc di ; increment screen offset
inc si ; increment x
jne l2 ; if x <> 0 then continue lp2
inc bp ; increment y
jne l1 ; if y <> 0 then continue lp1
xor ax,ax
int 16h
mov ax,3
int 10h ; set text mode
ret ; exit program
--------------------------------
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...