14.1.1.2. Laiteohjelmiston kääntäminen¶
Kehitysympäristön pystyttäminen-ohjeen mukaisen ympäristön ollessa paikallaan laiteohjelmistovedoksen kääntäminen on kaksi make-komentoa plus TARGET-valinta.
14.1.1.2.1. Kääntäminen¶
Käännä ensin mpy-cross, isäntätyökalu joka kääntää jäädytetyt .py-moduulit tavukoodiksi (tee tämä kerran, ja uudelleen aina kun päivität MicroPythonin):
make -j$(nproc) -C lib/micropython/mpy-cross
Käännä sitten laiteohjelmisto kortille, missä <TARGET> on yksi alla olevan taulukon nimistä:
make -j$(nproc) TARGET=<TARGET>
-j$(nproc) kääntää rinnakkain kaikilla CPU-ytimillä (macOS:ssä käytä -j$(sysctl -n hw.ncpu)). TARGET on pakollinen – make ilman kohdetta keskeytyy virheeseen ”Invalid or no TARGET specified”.
Täydellinen ensimmäinen käännös alusta loppuun:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Tuetut kortit¶
TARGET-arvot ovat hakemistonimet boards/-kansion alla. Kamerat ja niiden piit:
Kamera |
|
MCU |
Portti |
Ydin |
|---|---|---|---|---|
OpenMV Cam M4 |
|
STM32F427 |
stm32 |
Cortex-M4 |
OpenMV Cam M7 |
|
STM32F765 |
stm32 |
Cortex-M7 |
OpenMV Cam H7 |
|
STM32H743 |
stm32 |
Cortex-M7 |
OpenMV Cam H7 Plus |
|
STM32H743 + SDRAM |
stm32 |
Cortex-M7 |
OpenMV Pure Thermal |
|
STM32H743 + SDRAM |
stm32 |
Cortex-M7 |
OpenMV Cam N6 |
|
STM32N657 |
stm32 |
Cortex-M55 |
OpenMV Cam RT1062 |
|
MIMXRT1062 |
mimxrt |
Cortex-M7 |
OpenMV AE3 |
|
Alif Ensemble (kaksois-M55) |
alif |
Cortex-M55 |
Arduino Portenta H7 |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Giga |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Nicla Vision |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Nano 33 BLE Sense |
|
nRF52840 |
nrf |
Cortex-M4 |
Arduino Nano RP2040 Connect |
|
RP2040 |
rp2 |
Cortex-M0+ |
Käännä laitteistollesi tarkka TARGET – esim. OPENMV4 OpenMV Cam H7:lle, OPENMV4P H7 Plus:lle, OPENMV_N6 N6:lle.
14.1.1.2.1.2. Käännöksen tuloste¶
Kaikki kortin tiedostot päätyvät hakemistoon build/<TARGET>/bin/. Arvolla TARGET=OPENMV4 se on build/OPENMV4/bin/, joka sisältää:
Tiedosto |
Mikä se on |
|---|---|
|
Laiteohjelmiston binääri – flashataan OpenMV IDE:n Tools -> Load Custom Firmware -toiminnolla ja |
|
Laiteohjelmisto virheenkorjaussymboleilla – tiedosto johon osoitat virheenkorjaajan |
|
Käynnistyslatain (vain korteilla joilla käynnistyslatain on käytössä) |
|
Yhdistetty käynnistyslatain + laiteohjelmistovedos |
|
Vain luku -ROM-tiedostojärjestelmävedos, joka flashataan laiteohjelmiston rinnalle |
Alif AE3 on kaksiytiminen, joten se tuottaa firmware_M55_HP.elf / firmware_M55_HP.bin (korkean suorituskyvyn ydin) ja erillisen firmware_M55_HE.elf / firmware_M55_HE.bin (korkean tehokkuuden ydin) sekä sisällysluettelo- (TOC) vedoksen, joka kertoo käynnistys-ROM:lle, missä kunkin ytimen vedos sijaitsee.
14.1.1.2.1.3. Puhdistus ja uudelleenkääntäminen¶
Käännökset on eristetty korttikohtaisesti hakemistoon build/<TARGET>/. Yhden kortin käännöksen pyyhkimiseen:
make TARGET=<TARGET> clean
distclean-komentoa ei ole; clean tarvitsee aina TARGET-arvon. mpy-cross on jaettu korttien kesken – jos päivität MicroPythonin, käännä myös se uudelleen:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
Käännöksen flash-/RAM-käytön raportoimiseen:
make TARGET=<TARGET> size
14.1.1.2.1.4. Kääntäminen Dockerissa (ei isännän työkaluketjua)¶
Jos et halua asentaa mitään isäntään (tai olet alustalla ilman natiivia käännöstä), käytä Docker-polkua:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
Tuotokset ilmestyvät hakemistoon openmv/docker/build/<TARGET>. Toistuviin käännöksiin on inkrementaalinen kehityspolku, joka liittää repositorion samaan absoluuttiseen polkuun kontin sisällä kuin isännässä, jolloin virheenkorjaajan lähdepolut ratkeavat ilman uudelleenkartoitusta:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
Suorita make clean-dev vaihtaessasi TARGET-arvoa.
14.1.1.2.2. Käännösvalinnat¶
Käännöksen käyttäytymistä ohjataan make-komentoriville annettavilla muuttujilla, esimerkiksi:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Muuttujat joita laiteohjelmistokehittäjä käyttää:
Muuttuja |
Oletus |
Vaikutus |
|---|---|---|
|
(pakollinen) |
Käännettävä kortti. Valitsee tiedoston |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mitä virheenkorjaajaa |
Muista
Muuttujia on paljon muitakin (kamera-/sensoriajurit, langattomat pinot, ML-taustajärjestelmät, USB-pino, suojattu käynnistys jne.), mutta ne asetetaan korttikohtaisesti tiedostossa boards/<TARGET>/board_config.mk eikä niitä yleensä ohiteta komentoriviltä. Niiden muuttaminen on kortin mukauttamista, ei normaali kehittäjän käännös – katso docs/boards.md laiteohjelmiston repositoriossa.
Arkityöhön ainoat tarvitsemasi valinnat ovat TARGET (aina), DEBUG=1 (aina kun aiot korjata virheitä, katso Laiteohjelmiston virheenjäljitys) ja toisinaan V=1.