This thesis is the result of a collaboration with Cambridge Touch Technologies (CTT). The company's goal is to create a new kind of touch sensor, called UltraTouch, with innovative characteristics. The main focus of this activity was to add support for specific Arm processors to part of the software behind this new type of sensor, including demos, tests and the DSP pipeline. Today, Arm is the most common CPU architecture for the mobile market, like smartphones, and also have a strong presence in micro-controllers, automotive, and IoT devices. Compared to the x86 architecture, which currently dominates the desktop PC and server market, Arm processors tend to be less power consuming but also less performant. This may change in the future as many companies are considering or already migrating their consumer PC line up to Arm processors. Allowing the company's software to run on an Arm processor can therefore open many new market opportunities. Because different Arm CPUs can present significant differences –– for example the support of vector instructions that greatly speed up some mathematical operations or a dedicated floating-point unit –– it was useful to test different configurations and see how the performances were affected. As ARM testing devices, multiple types of Raspberry Pi were used. These are small and relatively cheap computers that can run a Linux system, and because different Raspberry Pis have different hardware specifications, like the available RAM and the CPU model, some assessment about the performance and the requirements of the code could also be done. Due to the limited speed of these devices, and because developers are working on computers with x86 processors and different operating systems, cross-compilation has been extensively used. A base configuration for the operating system running on these devices was created, as well as an automated way to recreate it in the future. Also, the CI pipeline was updated so that every time a change is committed by any developer, a battery of automated tests is executed for every platform supported and an updated installer can be produced. At the end of this part, the company was successfully able to replace some x86 computers –– that reached EOL –– with Arm devices. Another part of the thesis work was the creation of a new environment to simulate and benchmark code that will be executed on an ASIC with Arm CPU. This allows the company to keep track of the performance between versions of the DSP, check for regressions, and also differences in the output produced by distinct compiler configurations. It is also useful to guarantee a real-time response of some components, which might be a requirement in specific use cases. The environment is based on a simulator made by Arm, the company producing the processors, and available only to specific customers. To satisfy CTT needs, multiple meetings with Arm were scheduled, and this process brought to light some issues and errors present in the simulator, that were consequently fixed. The final part of the thesis was dedicated to adding support and creating a test app for Android. Compatibility for this operating system is important given its diffusion in multiple areas and markets, and the company might continue with further research and development activities in the future.
Integrazione del supporto ad Arm nel software di gestione del sensore UltraTouch. Questa tesi è il risultato di una collaborazione con CTT. L'obiettivo dell'azienda è creare un nuovo tipo di sensore tattile, chiamato UltraTouch, con caratteristiche innovative. L'obiettivo principale di questa attività era aggiungere il supporto a specifici processori Arm a parte del software a sostegno di questo nuovo tipo di sensore, incluse applicazioni per le dimostrazioni, test automatici e la pipeline DSP. Oggi, Arm è l'architettura CPU più comune nel mercato mobile come quello degli smartphone, e ha anche una forte presenza nei microcontrollori, nell'automotive e nei dispositivi IoT. Rispetto all'architettura x86, che attualmente domina il mercato dei PC desktop e dei server, i processori Arm tendono a consumare meno energia ma sono anche meno performanti. Questa tendenza potrebbe cambiare in futuro poiché molte aziende stanno valutando la migrazione, o addirittura già migrando, la propria linea di PC consumer e server verso processori Arm. Far sì che il software dell'azienda sia eseguibile su un processore Arm può quindi aprire molte nuove opportunità di mercato. Poiché diverse CPU Arm possono presentare differenze significative tra loro, ad esempio il supporto ad istruzioni vettoriali che velocizzano notevolmente alcune operazioni matematiche o un'unità a virgola mobile dedicata, è stato utile testare diverse configurazioni ed osservare come le prestazioni venissero influenzate. Come dispositivi di test sono stati utilizzati più tipi di Raspberry Pi. Si tratta di computer piccoli ed economici che possono eseguire un sistema Linux e, poiché diversi Raspberry Pi hanno specifiche hardware differenti, come la RAM disponibile e il modello di CPU, è possibile effettuare anche alcune valutazioni sulle prestazioni e sui requisiti del codice. A causa delle prestazioni limitate di questi dispositivi, e poiché gli sviluppatori lavorano su computer con processori x86 e differenti sistemi operativi, si è dovuto ampiamente ricorrere alla cross-compilazione. È stata anche creata una configurazione di base per il sistema operativo in esecuzione su questi dispositivi, nonché un modo automatizzato per ricrearla in futuro. La pipeline di CI è stata aggiornata in modo tale che ogni volta che venga applicata una modifica da uno sviluppatore, una batteria di test automatici per ogni piattaforma supportata viene eseguita e possa essere prodotto un programma di installazione aggiornato. Al termine di questo processo, l'azienda è riuscita con successo a sostituire alcuni dispositivi x86, non più supportati dalle case madri, con dispositivi Arm. Un'altra parte del lavoro di tesi è stata la creazione di un nuovo ambiente per simulare e confrontare porzioni di codice che verranno eseguite su un ASIC con CPU Arm. Ciò consente all'azienda di tenere traccia delle prestazioni tra le versioni della pipeline del DSP, verificare la presenza di regressioni e anche delle differenze prodotte da distinte configurazioni del compilatore. È anche utile per poter garantire una risposta in tempo reale di alcune componenti, che potrebbe essere un requisito in casi d'uso specifici. L'ambiente si basa su un simulatore realizzato da Arm, l'azienda produttrice dei processori. Per soddisfare le esigenze di CTT, sono stati programmati più incontri con Arm e questo processo ha portato alla luce alcuni problemi ed errori presenti nel simulatore, che sono stati di conseguenza risolti. La parte finale del lavoro di tesi è stata dedicata all'aggiunta del supporto ad Android e alla creazione di un app di test. La compatibilità con questo sistema operativo è importante data la sua diffusione in più ambiti e mercati, e l'azienda potrebbe continuare con ulteriori attività di ricerca e sviluppo in futuro.
Integrating ARM support in UltraTouch sensor management software
ANDREOTTI, GIANLUCA
2020/2021
Abstract
This thesis is the result of a collaboration with Cambridge Touch Technologies (CTT). The company's goal is to create a new kind of touch sensor, called UltraTouch, with innovative characteristics. The main focus of this activity was to add support for specific Arm processors to part of the software behind this new type of sensor, including demos, tests and the DSP pipeline. Today, Arm is the most common CPU architecture for the mobile market, like smartphones, and also have a strong presence in micro-controllers, automotive, and IoT devices. Compared to the x86 architecture, which currently dominates the desktop PC and server market, Arm processors tend to be less power consuming but also less performant. This may change in the future as many companies are considering or already migrating their consumer PC line up to Arm processors. Allowing the company's software to run on an Arm processor can therefore open many new market opportunities. Because different Arm CPUs can present significant differences –– for example the support of vector instructions that greatly speed up some mathematical operations or a dedicated floating-point unit –– it was useful to test different configurations and see how the performances were affected. As ARM testing devices, multiple types of Raspberry Pi were used. These are small and relatively cheap computers that can run a Linux system, and because different Raspberry Pis have different hardware specifications, like the available RAM and the CPU model, some assessment about the performance and the requirements of the code could also be done. Due to the limited speed of these devices, and because developers are working on computers with x86 processors and different operating systems, cross-compilation has been extensively used. A base configuration for the operating system running on these devices was created, as well as an automated way to recreate it in the future. Also, the CI pipeline was updated so that every time a change is committed by any developer, a battery of automated tests is executed for every platform supported and an updated installer can be produced. At the end of this part, the company was successfully able to replace some x86 computers –– that reached EOL –– with Arm devices. Another part of the thesis work was the creation of a new environment to simulate and benchmark code that will be executed on an ASIC with Arm CPU. This allows the company to keep track of the performance between versions of the DSP, check for regressions, and also differences in the output produced by distinct compiler configurations. It is also useful to guarantee a real-time response of some components, which might be a requirement in specific use cases. The environment is based on a simulator made by Arm, the company producing the processors, and available only to specific customers. To satisfy CTT needs, multiple meetings with Arm were scheduled, and this process brought to light some issues and errors present in the simulator, that were consequently fixed. The final part of the thesis was dedicated to adding support and creating a test app for Android. Compatibility for this operating system is important given its diffusion in multiple areas and markets, and the company might continue with further research and development activities in the future.È consentito all'utente scaricare e condividere i documenti disponibili a testo pieno in UNITESI UNIPV nel rispetto della licenza Creative Commons del tipo CC BY NC ND.
Per maggiori informazioni e per verifiche sull'eventuale disponibilità del file scrivere a: unitesi@unipv.it.
https://hdl.handle.net/20.500.14239/13824