Repos
Per realizzare il nostro layer BSP ci baseremo sull’utilizzo e la configurazione dei seguenti progetti:
Come facciamo a sapere che STM ha creato dei fork delle varie repository open source di questi componenti? Dal utilizzo di queste all’interno del loro layer BSP, ovvero meta-st-stm32mp
32# ---------------------------------
33# Configure devupstream class usage
34# ---------------------------------
35BBCLASSEXTEND = "devupstream:target"
36
37SRC_URI:class-devupstream = "git://github.com/STMicroelectronics/arm-trusted-firmware.git;protocol=https;branch=${ARCHIVER_ST_BRANCH}"
38SRCREV:class-devupstream = "cadc66f13d2b8f292fe9335bf097b8801f5a4cd7"45# ---------------------------------
46# Configure devupstream class usage
47# ---------------------------------
48BBCLASSEXTEND = "devupstream:target"
49
50SRC_URI:class-devupstream = "git://github.com/STMicroelectronics/u-boot.git;protocol=https;branch=${ARCHIVER_ST_BRANCH}"
51SRCREV:class-devupstream = "64beae9fed51f49b53f952d00d9918b9eb3b040b"48# ---------------------------------
49# Configure devupstream class usage
50# ---------------------------------
51BBCLASSEXTEND = "devupstream:target"
52
53SRC_URI:class-devupstream = "git://github.com/STMicroelectronics/optee_os.git;protocol=https;branch=${ARCHIVER_ST_BRANCH}"
54SRCREV:class-devupstream = "a8dd87d45831be900f0aaa44a5e0587269e3df25"35# ---------------------------------
36# Configure devupstream class usage
37# ---------------------------------
38BBCLASSEXTEND = "devupstream:target"
39
40SRC_URI:class-devupstream = "git://github.com/STMicroelectronics/linux.git;protocol=https;branch=${ARCHIVER_ST_BRANCH}"
41SRCREV:class-devupstream = "f01241fbba4d879fa770685629b49d42e904e43c"
42#FIXME force the PV to avoid build issue:
43# do_package: ExpansionError('SRCPV', '${@bb.fetch2.get_srcrev(d)}', FetchError('SRCREV was used yet no valid SCM was found in SRC_URI', None))
44PV:class-devupstream = "${LINUX_VERSION}${LINUX_SUBVERSION}-${LINUX_TARGET}.${SRCPV}"Perchè utilizzare le loro repository invece che quelle ufficiali? Il motivo è che a causa della grande quantità di cambiamenti e aggiunte, che sicuramente sono stati fatti da STM per integrare i loro componenti specifici all’interno di questi software, sarebbe estremamente dispendioso capire quali modifiche sono state fatte e replicarle noi stessi. Tanto vale partire dalla loro base di codice e piuttosto capire come configurarla a nostro piacimento.
Perchè rifare dei recipe da zero invece che utilizzare quelli STM? Anche qua, potremmo risparmiarci molto lavoro utilizzando direttamente i loro recipe, ma questi spesso introducono ulteriori complessità e dipendenze all’interno del nostro progetto e soprattutto non espongono in modo chiaro come avviene la configurazione del codice sorgente. Per questo, personalmente, preferisco ricreare i recipe, in modo da poter fare riferimento per la maggior parte delle informazioni alla documentazione ufficiale del progetto e in caso faticare un po’ di più per capire i dettagli specifici necessari per la piattaforma STM. Questo mi obbliga sì a studiarmi gran parte del codice sorgente, ma con la sicurezza di saper dove mettere le mani, qualora ne avessi bisogno.
Punto alla libertà di configurazione, ma sapendo di avere tra le mani un codice sorgente che dovrebbe funzionare senza problemi sulla mia piattaforma.
Ma soprattuto ho odiato dover capire i giri e rigiri che avvenivano nei recipe STM per poi alla fine assegnare dei valori del cazzo ad alcune variabili di compilazione.