W praktyce każdego elektronika konstruktora zajmującego się mikrokontrolerami nadchodzi moment, gdy staje on przed problemem zaprogramowania układu, który nie jest obsługiwany przez używane środowisko IDE oraz programatory. O ile w przypadku bardziej popularnych mikrokontrolerów zdobycie odpowiedniego programatora nie stanowi większego problemu, o tyle w przypadku układów niszowych, ewentualnie używanych sporadycznie, inwestowanie w środowisko IDE i programator okazuje się trudne lub po prostu nie ma ekonomicznego uzasadnienia.
W takiej sytuacji można posłużyć się programem OpenOCD. Jednak, o ile obsługuje on dużą liczbę różnych typów programatorów JTAG i SWD, o tyle zbiór obsługiwanych przez ten program mikrokontrolerów jest ograniczony do bardziej popularnych układów. Niestety, nie zaliczają się do nich mikrokontrolery typu HC32F003 i HC32F005, z którymi przyszło pracować autorowi.
Mikrokontrolery HC32F003 i HC32F005
Układy te są produkowane przez firmę Huada Semiconductor. Należą one do bardzo szerokiej grupy układów scalonych wytwarzanych przez firmy dalekowschodnie, głównie chińskie, które są zgodne na poziomie wyprowadzeń z mikrokontrolerem typu STM8S003. Układy te są wyposażane w różne typy rdzeni, zarówno 8-bitowe, jak i 32-bitowe oraz bogate zestawy peryferii. Układy te nie są więc zgodne na poziomie kodu programu z mikrokontrolerem STM8S003. Z powodu firmowych układów peryferyjnych nie są one również zgodne programowo między sobą, nawet jeśli mają taki sam rdzeń. Zestawienie przykładowych układów należących do tej grupy zawiera tabela 1.
Układy HC32F003 i HC32F005 są typowymi mikrokontrolerami z rdzeniem ARM Cortex-M0+ wyposażonymi w podstawowy zestaw układów peryferyjnych obejmujący: liczniki/timery, szeregowe układy komunikacyjne I²C, SPI i UART, 12-bitowy przetwornik analogowo-cyfrowy oraz komparatory analogowe. Na wyposażeniu tych mikrokontrolerów znajduje się też sprzętowy blok obliczania CRC. Cechą wyróżniającą omawiane układy na tle bardziej popularnych w naszym kraju rodzin mikrokontrolerów z rdzeniem Cortex-M0+ jest szeroki zakres napięć zasilania rozciągający się od 1,8 V do 5,5 V.
Oba układy zawierają ten sam zestaw identycznych peryferiów i różnią się jedynie rozmiarem zaimplementowanej pamięci. Układ HC32F003 jest wyposażony w 2 kB pamięci SRAM i 16 kB pamięci Flash, natomiast układ HC32F005 ma 4 kB pamięci SRAM i 32 kB pamięci Flash. Na portalach aukcyjnych dostępne są proste płytki uruchomieniowe do tych mikrokontrolerów. Ich wyposażenie jest minimalistyczne. Poza mikrokontrolerem, stabilizatorem napięcia zasilania, rezonatorem kwarcowym i przyciskiem RESET płytki zawierają tylko jeden przycisk i jedną diodę LED, które są przeznaczone do użycia przez program użytkownika. Na płytce uruchomieniowej nie ma układu programatora. Co gorsza, układy HC32F003 i HC32F005 nie mają też fabrycznego bootloadera, przez co ich programowanie jest możliwe tylko przez interfejs SWD.