Az első lépések

A fejezet tartalma:

1. A kártya beüzemelése

A FRDM-KL25Z mikrovezérlőkártya első használatba vétele előtt feltétlenül frissíteni kell a programozó/hibavadász egység firmware-ét. A gyárilag telepített korai OpenSDA firmware még a Windows 7 korszakának megfelelő környezethez készült, Windows 10 és Windows 11 alatt azonban nem működik megbízhatóan, sőt, a kártya használhatatlan állapotba kerülhet a hibavadász firmware megsérülése miatt, ami után a kártya csak a firmware újratelepítésével éleszthető fel. Szerencsére a FRDM-KL25Z kártyához is rendelkezésre áll a Segger J-Link OB firmware, amelynek telepítése ezt a problémát megoldja. A frissítés után a beépített programozó/hibavadász egység korszerű, széles körben támogatott J-Link kompatibilis eszközként használható, és a kártya a modern operációs rendszerekkel is stabilan és megbízhatóan működik.

1.1. A SEGGER J-Link OB firmware telepítése

A gyári OpenSDA firmware frissítésének legstabilabb és legidőtállóbb módja, ha a kártya programozó egységét átalakítjuk egy SEGGER J-Link OB (On-Board) eszközzé. Ez a megoldás az NXP OpenSDA platformját egy SEGGER J-Link LITE kompatibilis céleszközzé alakítja, amely Windows 10 és Windows 11 alatt is hibátlanul használható.

A J-Link OB firmware legnagyobb előnye, hogy egyszerre biztosítja az SWD alapú programletöltést és nyomkövetést, a virtuális soros porti (VCOM) kommunikációt, valamint támogatja a megszokott "drag-and-drop" (fájlbamásolós) programfeltöltést is.

A telepítés lépései:

  1. Illesztőprogramok telepítése: Töltsük le és telepítsük a J-Link Software and Documentation Pack csomagot a SEGGER hivatalos weboldaláról. Ez gondoskodik a szükséges J-Link USB-driverekről és a segédprogramokról.
  2. A firmware letöltése: A SEGGER weboldalán a J-Link OpenSDA - Board-Specific Firmwares szekcióban keressük meg és töltsük le a FRDM-KL25Z kártyához tartozó 12_OpenSDA_FRDM-KL25Z.bin állományt.
  3. Bootloader módba lépés: Tartsuk lenyomva a kártyán található RESET gombot, és közben csatlakoztassuk az USB kábelt a kártya OpenSDA csatlakozójába. A csatlakoztatás után engedjük el a gombot. A kártyán a D4 LED lassan villogni kezd, a számítógépen pedig megjelenik egy BOOTLOADER nevű cserélhető tárolóeszköz.
    Bootloader módba lépés
    1. ábra: A FRDM-KL25Z kártya bootloader módba helyezése
  4. Firmware másolása: A letöltött 12_OpenSDA_FRDM-KL25Z.bin fájlt egyszerűen másoljuk (drag-and-drop) a BOOTLOADER meghajtó gyökerébe.
    Firmware másolása
    2. ábra: A firmware bemásolása a BOOTLOADER mappájába
  5. Újraindítás: A másolás befejeztével húzzuk ki a kártyát, majd csatlakoztassuk újra (most már a RESET gomb lenyomása nélkül!). A számítógép a kártyát mostantól J-Link eszközként ismeri fel, és egy FRDM-KL25ZJ nevű cserélhető tárolóeszköz jelenik meg a rendszertöltőben.
Hasznos tudnivaló a drag-and-drop funkcióról: A J-Link OB alapértelmezés szerint létrehoz egy cserélhető meghajtót is a számítógépen a binárisok egyszerű bemásolásához (Mass Storage Device). Ha erre a funkcióra nincs szükségünk, a telepített J-Link csomag részét képező parancssori Jlink.exe eszközzel bármikor ki- és bekapcsolhatjuk az MSDdisable, illetve MSDenable parancsok kiadásával.

1.2. A FRDM-KL25Z kártya újraélesztése

Ismert probléma: A Windows 10 fájlrendszer-indexelése tönkreteszi a kártya gyári OpenSDA bootloaderét. Emiatt előfordulhat, hogy az 1.1. pont szerinti J-Link OB firmware telepítés sem sikerül, a kártya debuggere használhatatlanná válik. Ebben az esetben a kártyát "újra kell éleszteni" az alábbiak szerint.

Az újraélesztés menete (csak Windows 7 alatt működik stabilan):


1.3. A kártya kipróbálása (Működésellenőrzés)

Amikor a firmware frissítése befejeződött, ellenőrizzük a programletöltést egy előre lefordított mintaprogram segítségével:

  1. Csatlakoztassuk a kártyát a számítógéphez normál üzemmódban (RESET gomb lenyomása nélkül). Ekkor a számítógépen felbukkan a FRDM-KL25ZJ nevű cserélhető tárolóeszköz.
  2. Töltsük le a tesztelési célt szolgáló előrefordított mintaprogramot: rtos_basic_KL25Z.bin.
  3. Másoljuk be a letöltött .bin állományt a FRDM-KL25ZJ meghajtó gyökerébe. A másolás alatt a D4 LED szabálytalan ütemben villog.
  4. Amikor a másolás befejeződött, nyomjuk meg a kártyán található RESET gombot. A feltöltött program elindul, és az RGB LED felváltva vörös, zöld és narancssárga színben villog, ahogy az alábbi videón is látható: rtos_basic.mp4.

2. Az offline fejlesztői környezet kialakítása (gcc4mbed)

2.1. Mi a gcc4mbed?

Az Mbed hivatalos támogatásának megszűnésével a felhőalapú fordítás elérhetetlenné vált. A gcc4mbed ezt váltja ki egy teljes értékű, helyben futó alternatívával. A gcc4mbed egy nyílt forráskódú, könnyűsúlyú, parancssori fejlesztői csomag és Makefile‑alapú build‑rendszer, amelyet kifejezetten az Mbed‑alapú C/C++ projektek helyi fordítására hoztak létre. A korábbi online fejlesztőkörnyezettel szemben a projektek konfigurálása nem grafikus felületen történik, hanem egy rövid és egyszerű Makefile megírásával. A projekt fordítása ezután a make paranccsal indítható, amellyel közvetlenül előállíthatók a mikrovezérlőre letölthető bináris (.bin vagy .hex) állományok.

A gcc4mbed csomag legfőbb összetevői és jellemzői:

2.2. A gcc4mbed eszköztár telepítése

A telepítés lépései Windows rendszeren:

  1. A forráskód letöltése: Nyissuk meg a projekthez tartozó hivatalos GitHub tárolót: https://github.com/adamgreen/gcc4mbed. Kattintsunk a zöld Code gombra, majd válasszuk a Download ZIP lehetőséget. (Közvetlen letöltési hivatkozás: gcc4mbed-master.zip).
  2. Kicsomagolás: Csomagoljuk ki a letöltött ZIP állomány tartalmát egy rövid, szóközöket és ékezetes betűket nem tartalmazó útvonalra, mint például: C:\gcc4mbed.
  3. A telepítő script futtatása: Lépjünk be a parancssorban a kicsomagolt mappa könyvtárába a cd C:\gcc4mbed parancssori utasítással, majd indítsuk el a Windows-hoz mellékelt telepítő scriptet a win_install.cmd parancs kiadásával.
  4. A telepítés lefutása: A telepítő sokáig dolgozik! Futás közben automatikusan letölti a szükséges ARM GCC toolchain-t, majd kicsomagolja azt a gcc-arm-none-eabi almappába. Ezután ellenőrzésként négy különböző mbed‑es célplatformra (KL25Z, K64F, LPC1768, NRF51_DK) a samples almappában lefordít néhány mintaprojektet. Ez a lépés nagyon időigényes mert első alkalommal le kell fordítania a teljes mbed forráskódot is

    A telepítés "hordozható", nem módosítja a Windows globális környezeti változóit (PATH), így a fordításhoz szükséges eszközöket lokálisan kezeli a csomag. A telepítő szkript sikeres lefutása után a környezet készen áll a projektek fordítására.

2.3. A fejlesztői környezet könyvtárszerkezete

A telepítést követően a C:\gcc4mbed könyvtárban létrejön az offline fejlesztéshez szükséges teljes mappaszerkezet:

Firmware másolása
3. ábra: A gcc4mbed könyvtárstruktúrája

A gcc4mbed eszköztár hatékony használatához és a saját vagy átvett projektek sikeres fordításához elengedhetetlen a gyökérkönyvtár szerkezetének ismerete. A fordítási folyamat során (a Makefile beállításaiban) ugyanis a rendszernek pontosan tudnia kell, hol találja a fordítóprogramokat, a kártyaspecifikus könyvtárakat és a kiegészítő modulokat. Ezek elérését relatív útvonalakkal (például ../../external/mbed-libs) adjuk meg a felépített mappastruktúrának megfelelően.

A könyvtárszerkezet legfontosabb elemei és szerepük:

2.4. Az első próbaprojekt lefordítása és futtatása

A gcc4mbed környezet parancssori használatra épül. A fordításhoz szükséges eszközök elérési útvonalait a telepítési könyvtárban található Buildshell.cmd indítóscript állítja be. Ezt elindítva egy előre beállított parancssori környezet (shell) nyílik meg. A fordítást (make parancs) mindig ebből az ablakból kell indítani!

Elsőként próbáljuk ki a csomagban található Samples/HelloWorld mintaprojektet!

Ez a program nem szöveges "Hello World" üzenetet jelenít meg, hanem a mikrovezérlős környezet hagyományainak megfelelően a kártya beépített LED-jét villogtatja. Ezzel ellenőrizhető, hogy a fejlesztőkörnyezet, a fordítóprogram és a kártya egyaránt megfelelően működik.

1. lista: A HelloWorld/main.cpp program listája

/* Test which brings default HelloWorld project from
mbed online compiler to be built under GCC.
*/
#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

A fordítás beállításait a projekt könyvtárában található Makefile tartalmazza:

2. lista: A HelloWorld/Makefile listája


# Copyright 2017 Adam Green (http://mbed.org/users/AdamGreen/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
PROJECT         := HelloWorld
DEVICES         := KL25Z
GCC4MBED_DIR    := ../..
GCC4MBED_TYPE   := Release
MBED_OS_ENABLE  := 0
NEWLIB_NANO     := 1
NO_FLOAT_SCANF  := 1
NO_FLOAT_PRINTF := 1

include $(GCC4MBED_DIR)/build/gcc4mbed.mk

A legfontosabb beállítások:

A programfordítás menete:

  1. A Buildshell.cmd script elindításával nyissunk egy parancsablakot, és navigáljunk a HelloWorld mintaprojekt mappájába, például: cd C:\gcc4mbed\samples\HelloWorld.
  2. Adjuk ki a make parancsot. Többmagos számítógépen a fordítás párhuzamos futtatással gyorsítható. például: make -j16 akár 16 programszálat futtathat egyidejűleg.
  3. Sikeres fordítás után az eszköz nevével létrejövő kimeneti könyvtárban találjuk meg a mikrokontrollerre tölthető programfájl. A legfontosabb formátumok:
    - .bin – közvetlenül a kártyára másolható bináris program,
    - .hex – Intel HEX formátumú programfájl.
  4. Csatlakoztassuk a FRDM-KL25ZJ kártyát a számítógéphez normál üzemmódban (csatlakoztatáskor ne nyomjuk le a RESET gombot).
  5. Másoljuk át a generált HelloWorld.bin fájlt a PC-n megjelenő FRDM-KL25ZJ meghajtó gyökerébe. A másolás befejeztével a RESET gomb megnyomásával vagy a kártya újracsatlakoztatásával az új program azonnal elindul.