Un esempio Bticino ed il mondo domotica - GL-Como

Transcript

Un esempio Bticino ed il mondo domotica - GL-Como
Linux in Bticino 2000 .. 2012+
https://gitorious.org/~bticino
Il Sistema MyHome
La storia
Medium Platform: ciclo di sviluppo di una piattaforma
Lo sviluppo distribuito
La formazione
Lo Stackopen v2 : struttura a plugin
Debug sui sistemi embedded in pratica
I prodotti e le versioni SDK
http://www.gl-como.it/linux-day-2012
[email protected]
SCS BUS – Lighting & Shutter example
Command
SCS
L
N
Loads
M
M
SCS BUS
 MY HOME is based on the use of the digital BUS SCS which can be used in any residential or
service environment.
 SCS is a proprietary protocol
 Twisted pair cable on which power, messages, audio (telephonic band and hi-fi band) and
video signals are transported
COMMANDS
VOICE
POWER
STEREO
HiFi
VIDEO
f
• Similar way for configuring and cabling
systems / devices
Legrand Group Home Automation…
Comfort

Ligth automation

Management of shutters / automations

Scenario activation

Sound diffusion
Safety

Burglar alarm

Technical alarms

Remote assistances

Video monitoring system
Remote management
• Remote access from your
laptop
• Remote access from mobile
control (smart phone,…)
Energy Management

Temperature control

Air conditioning

Load management

Consumption display
Touch Control & Multimedia

RSS Management

mediaclient

webcam
Audio Video communication

digital video door entry system

integrated telephone system
La storia: 1998-2000
Web Server a stack TCP-IP e Sistema Operativo a
memoria non protetta proprietario (acquistati i
sorgenti), CPU AMD186 60Mhz, 512KB Flash, 512
KB Ram.
Vantaggi: molto efficiente
Svantaggi: no riutilizzo di codice, no community,
memoria RAM condivisa tra applicazioni, stack tcp ip e
sistema operativo.
Sistema Operativo e Stack Tcp-Ip: US Robotics
http://www.gl-como.it/linux-day-2012
La storia: 2000-2002
Gateway e Webserver con scheda grafica per
acquisizione immagini 4fps colori basato su X86
300Mhz, scheda per interfacciamento con bus di campo
SCS.
Vantaggi: scheda cpu già pronta, community Linux
Svantaggi: mancanza di controllo sull'hardware per la
scheda cpu
Linux Redhat 6.2
(distribuzione ritagliata per "starci" nel piccolo harddisk).
http://www.gl-como.it/linux-day-2012
La storia: 2003-2004
Gateway e Webserver (CPU: StrongArm 1110 200Mhz)
Vantaggi: controllo completo sull'hardware, community
Linux, riutilizzo software precedente tramite
cross-compilazione
Svantaggi: necessità di ottimizzare gli applicativi per la
cpu meno potente
Sistema Operativo Linux
Bootloader: Ecos redboot
Kernel: 2.4.19-rmk7-pxa2
Distribuzione: Etlinux
http://www.gl-como.it/linux-day-2012
La storia: 2005-2010
Btweb Platform
Gateway, Webserver, Touschscreen 3,5'' e 10'',
Interfaccia Voip da SCS a Ethernet, Scheduler scenari
programmabile.
CPU: PXA255 (fino a 64MB Ram, 32 MB Flash NOR)
Kernel: 2.4.19-rmk7-pxa2 , 2.6.26
[email protected]:btweb_platform/linux-2_4_19-rmk7pxa2-btweb.git
Distribuzione: Etlinux2.
[email protected]:btweb_platform/etlinux2_3-0.git
http://www.gl-como.it/linux-day-2012
La storia: 2005-2010
Btweb Platform – Singolo Kernel
https://gitorious.org/btweb_platform/linux-2_4_19-rmk7-pxa2btweb/blobs/master/arch/arm/mach-pxa/btweb-flavors.c
/*
* linux/arch/arm/mach-pxa/btweb-flavors.c
*
* Management of different hardware flavors for the BTicino devices
*
* The boot loader should have left the GPIOs as generic as possible, so we fix
* them to the needs of the product.
*
* Adapted to the BTicino device family by Alessandro Rubini in 2006
*
* Customizations for new BTicino products made by Raffaele Recalcati in 2006,2007,2008
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/***************************************************
GPIO58 GPIO6 GPIO7 GPIO82 GPIO84 RAM SPEED
F453
0 0 0 0
0
64 400 // 0x0
F543AV
0 0 0 0
1
64 400 // 0x1
346890
0 0 0 1
0
64 400 // 0x2
PBX-2/8/8/exp 0 0 0 1
1
64 400 // 0x3
PBX-2/8/8 0 0 1 0
0
64 400 // 0x3
PE
0 0 1 0
1
64 400 // 0x3
PI
0 0 1 1
0
64 400 // 0x3
H4684/IP
0 0 1 1
1
64 400 // 0x3
H4684/IP/8 0 1 0 0
0
64 400 // 0x3
CDP/HW
0 1 0 0
1
64 400 // 0x3
INTERFMM
0 1 0 1
0
64 400 // 0x3
BMNE500
F453
MH200N
MH200
0 1 0 1
1
64 400 // 0x3
MEGATICKER 0 1 1 0
0
64 400 // 0x3
OLD
F453/MH200 0 0 1 x
x
64 // 0x4-0x7
H4684
0 1 0 0
0
64 200 // 0x8
PE-monob 0 1 0 0
1
32 200 // 0x9
F453AV-proto 0 1 1 1
1
64 400 // 0xf
Moreover: GPIO63, GPIO64, GPIO69 (hw revisions)
***************************************************/
http://www.gl-como.it/linux-day-2012
La storia: 2011+
Medium Platform
Porting da PXA255 a DM365 degli stessi prodotti
CPU: DM365 270Mhz
(fino a 256MB Ram, 256MB NAND, 2GB eMMC)
https://gitorious.org/medium_platform
Vedi presentazione FOSDEM 2011
Medium_Platform.pdf file nel repository
https://gitorious.org/medium_platform/documentation/trees/master
http://www.gl-como.it/linux-day-2012
La storia: ARM MACH number
http://www.arm.linux.org.uk/developer/machines/
670
2567
2948
3337
3982
3983
3715
4227
4326
4327
3341
Btweb
BTicino PXA270 Multimedia Touch
BASI
Dingo Board
JUMBO_D
JUMBO_I
Owl Board
Lago pure gateway
amico_i
amico_e
omap3_baia
http://www.gl-como.it/linux-day-2012
pxa255
pxa270
dm365
dm365
dm365
dm365
dm365
dm365
dm365
dm365
dm3730
Medium Platform:
ciclo di sviluppo di un prodotto
La progettazione iniziale HwBsp, Middle Layer, Gui è
estremamente modulare
http://www.gl-como.it/linux-day-2012
Medium Platform:
ciclo di sviluppo di un prodotto
In base alle necessità si differenzia solo quello che serve
http://www.gl-como.it/linux-day-2012
Medium Platform:ciclo di sviluppo di un prodotto
Lo Sviluppo
Si decidono le peculiarità del dispositivo, ad esempio Web
server e il Touchscreen 3.5'' Davinci.
Sviluppo hardware
Bring-up scheda e verifica HwBsp: tempo ridotto grazie al
lavoro precedente sulla piattaforma
Utilizzo di bt_test_bsp e bt_test per verifica dell'hardware e
dei driver
http://www.gl-como.it/linux-day-2012
Medium Platform:ciclo di sviluppo di un prodotto
Lo Sviluppo
Sviluppo applicativi, interfaccia grafica Qt e libreria HAL
(Hardware Abstraction Layer: interfaccia verso il kernel).
Si parametrizza il software di configurazione per effettuare
l'aggiornamento firmware e modificare la configurazione del
dispositivo rispetto all'impianto voluto
Test automatici degli applicativi mediante Robot framework
http://www.gl-como.it/linux-day-2012
Medium Platform:ciclo di sviluppo di un prodotto
Test Lab
Test completi effettuati da un altro gruppo di lavoro:
Test CE: EMC, sicurezza
Internal test: funzionali
Eventuali feedback per correzioni hardware e software.
http://www.gl-como.it/linux-day-2012
Medium Platform:ciclo di sviluppo di un prodotto
Impianti Pilota
Test di alcuni mesi effettuati su impianti reali, duranti i
quali l'assistenza tecnica monitora il funzionamento e
raccoglie osservazioni per lo sviluppo R&D.
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
No ad eccessive interdipendenze tra i diversi strumenti (posso sostituirne uno di essi senza pregiudicare gli altri)
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
Introduzione del concetto di Maintainers
Rispetto del CodingStyle
Altri siti Legrand
Fornitori esterni in Vpn
Introduzione workflow per accettazione contributi
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
glossario
[A] = Autore (chi effettua lo sviluppo e manda le patch)
[M] = Maintainer (chi verifica il CodingStyle e la compatibilità
con gli altri dispositivo già stabili, chi ha i diritti per pushare sul
git tree presente nella LAN Bticino)
[T] = Tester (verifica dopo la ricompilazione complessiva)
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
Stable TAG
device1
[A] Nuovo sviluppo su device2
Develop branch in locale
(macchina virtuale backuppata)
[A]Valid
Send patches
[M]Valid
[M] commit
per avere history pulita
Stable TAG
device2
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
Stable TAG
device1
[A] Nuovo sviluppo su device2
Develop branch in locale
(macchina virtuale backuppata)
[M] Bug fix per
dispositivi in
produzione
[A]Valid
Send patches
[M]Valid
[M] commit
per avere history pulita
Stable TAG
device2
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
Stable TAG
device1
[A] Nuovo sviluppo su device2
Develop branch in locale
(macchina virtuale backuppata)
[M] Bug fix per
dispositivi in
produzione
[A]Valid
Send patches
[M]Valid
[M] commit
per avere history pulita
Stable TAG
device2
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
Stable TAG
device1
[A] Nuovo sviluppo su device2
Develop branch in locale
(macchina virtuale backuppata)
[M] Bug fix per
dispositivi in
produzione
[A]Valid
Send patches
[M]Valid
[M] commit
per avere history pulita
Stable TAG
device2
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
miglioramenti
Evitare ignore white space
Mandare le patch nel body e plain text
(consente il commento in linea da parte del maintainer)
"[nome_modulo PATCH 1/5 v3] “titolo”
Realizzare test automatici di validazione sui device non
in sviluppo
…....
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
verifica automatica di integrità (in sviluppo)
Stable TAG
device1
[M] Bug fix per
dispositivi in
produzione
[A] Nuovo sviluppo su device2
Develop branch in locale
(macchina virtuale backuppata)
[A]Valid
[J] validazione automatica
[J] Valid anche su device1 delle
periferiche hw e funzionalità sw
Send patches
[M]Valid
[M] commit
per avere history pulita
Stable TAG
device2
http://www.gl-como.it/linux-day-2012
Lo sviluppo distribuito
validazione automatica (in sviluppo)
http://www.gl-como.it/linux-day-2012
La formazione: interna
Poco formalizzata, ma quotidiana e tra tutti i gruppi di
lavoro.
La condivisione del know-how è la vera chiave.
Approccio Out4Insourcing, grazie a consulenze mirate
che accrescono il know-how del gruppo stesso.
No a sviluppi esterni a scatola chiusa, non sono
funzionali, nè integrabili, viste le numerose dipendenze
con hardware e software sviluppati internamente
http://www.gl-como.it/linux-day-2012
La formazione: esterna
Corsi organizzati dalle risorse umane su esigenze di sviluppo espresse con un anno di anticipo.
Date
Name
embedded linux conference 2012
05/11/2012
licenze open source
17/05/2012
html5 & css3
02/04/2012
introduzione java e fondamenti di programmazione android
26/03/2012
le reti ip multicast
09/11/2011
embedded linux conference europe
26/10/2011
integrità dei segnali nelle moderne schede elettroniche
20/06/2011
problematiche avanzate di internetworking
07/06/2011
networking ed infrastrutture
13/04/2011
arm linux advanced course - medium platform hardware based
29/03/2011
conoscenza sull'applicazione sistemi arm-linux
16/12/2010
gstreamer conference 2010 + celf embedded linux conference europe
26/10/2010
fosdem 2010
06/02/2010
embedded linux conference europe 2009
15/10/2009
metodologie agili
12/05/2009
ip telephony
05/12/2006
http://www.gl-como.it/linux-day-2012
Lo Stackopen v2 : struttura a plugin
dalla struttura a IPC (stackopen 2002-2011+)
http://www.gl-como.it/linux-day-2012
Lo Stackopen v2 : struttura a plugin
dalla struttura a IPC (stackopen)
Processi scritti diversamente
Interfacce sopra e sotto reimplementate (anche in modo differente)
Gli stili di debug possono essere differenti
Il test può essere solo ai morsetti esterni e, di solito, sul target
Le frame di aggiornamento da scssserver vanno a tutti i processi
Il file di configurazione è unico e serve per stabilire chi si connette a
chi, quindi i processi sono interdipendenti
Context Switch inefficiente
http://www.gl-como.it/linux-day-2012
Lo Stackopen v2 : struttura a plugin
dalla struttura a IPC poco efficiente (stackopen)
http://www.gl-como.it/linux-day-2012
Lo Stackopen v2 : struttura a plugin
https://git.gitorious.org/bt_general/coso.git (LGPL)
PLUGINS
COSO
http://www.gl-como.it/linux-day-2012
Lo Stackopen v2 : struttura a plugin
soluzioni
Processi scritti diversamente
OK
Interfacce sopra e sotto reimplementate (anche in modo differente)
OK
Gli stili di debug possono essere differenti
OK
Il test può essere solo ai morsetti esterni e, di solito, sul target
Sviluppo e test sul PC
Le frame di aggiornamento da scssserver vanno a tutti i processi
no a comunicazioni superflue
Il file di configurazione è unico e serve per stabilire chi si connette a
chi, quindi i processi sono interdipendenti
ciascuno ha il suo file di configurazione
Context Switch inefficiente
meno scambi di informazione
http://www.gl-como.it/linux-day-2012
Debug sui sistemi embedded in pratica
Jtag Lauterbach (ETM per off-chip trace) e Peedi
DS-5 per analisi colli di bottiglia
In realtà tanta esperienza, stampe di trace su
seriale, gpio ed un oscilloscopio sono la pratica
quotidiana e solo in casi particolari si ricorre alla
strumentazione di cui sopra, che richiede spesso
setup complicati
http://www.gl-como.it/linux-day-2012
I prodotti e le versioni SDK
Di solito utilizzate dai system integrator
http://www.myopen-legrandgroup.com/devices/default.aspx
Ci sono esempi già implementati per i vari prodotti e wiki
descrittive
http://www.gl-como.it/linux-day-2012