Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)

Qualche anno fa, ho conosciuto i microcontrollori russi dell'azienda Milandr. Era il 2013, quando gli ingegneri discutevano animatamente i primi risultati del programma di sviluppo "Sviluppo della base dei componenti elettronici e della radioelettronica" per il periodo 2008-2015. In quel momento era già stato rilasciato il controllore K1986ВЕ9x (nucleo Cortex-M3) e stava appena emergendo il controllore 1986ВЕ1Т (nucleo Cortex-M1). La versione in involucro plastico LQFP-144 era documentata come K1986ВЕ1QI (avionico) e sulla microchip era indicata come MDR32F1QI. Sul sito del produttore porta il suffisso "avionico", poiché presenta interfacce specifiche per l'industria aeronautica (ARINC 429, MIL_STD_1553).

È sorprendente, ma al momento della diffusione di questi controllori, l'azienda Milandr aveva già preparato set di sviluppo e una libreria di funzioni per lavorare con le periferiche, "ma senza alcuna garanzia e obbligo riguardo alla correttezza della libreria". La libreria somiglia alla Standard Peripheral Library della STMicroelectronics. In generale, tutti i microcontrollori ARM basati sul nucleo Cortex-M hanno molte caratteristiche in comune. Per questo motivo, l'introduzione ai nuovi microcontrollori russi è avvenuta rapidamente. E per coloro che acquistavano i set di sviluppo ufficiali, era fornito supporto tecnico durante l'uso.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Set di sviluppo per il microcontrollore 1986ВЕ1Т, © Milandr

Tuttavia, nel tempo hanno cominciato a emergere le "malattie infantili" dei nuovi chip e delle librerie. Gli esempi di test delle versioni firmware funzionavano senza problemi evidenti, ma modifiche significative portavano a malfunzionamenti e errori. Il primo "segnale" nella mia esperienza furono i malfunzionamenti inspiegabili nel funzionamento del controllore CAN. Dopo un anno, nel controllore 1986ВЕ1Т (avionico) di prima revisione è stata scoperta una problematica con il modulo МКИО (canale multiplo di scambio informazioni). In generale, tutte le revisioni di questi microcontrollori fino al 2016 erano limitatamente utilizzabili. Molto tempo e nervi sono stati spesi per identificare questi problemi, la cui conferma può essere trovata ora nei elenco degli errori (Errata).

Un aspetto sgradevole è stato che lavorare e risolvere i problemi non avveniva su schede di debug, ma su schede prototipo di dispositivi che erano previsti per la produzione industriale. Di solito c'era solo il connettore JTAG. Era difficile e scomodo collegarsi con un analizzatore logico, e solitamente non c'erano né LED né schermi. Per questo motivo, mi è venuta in mente l'idea di creare la mia scheda di debug.

Da un lato, sul mercato c'erano set di debug brandizzati, oltre a ottime schede dell'azienda LDM-Systems di Zelenograd. Dall'altro lato, i prezzi di questi prodotti lasciano sbalorditi, e la funzionalità di base senza schede di espansione non corrisponde alle aspettative. Una scheda con un controllore saldato e un connettore a pin non mi interessa. Schede più interessanti hanno un costo elevato.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Scheda di debug MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

L'azienda «Milandr» ha una politica dei prezzi e un marketing peculiari. È possibile ricevere gratuitamente campioni di alcuni chip, ma questo è accessibile solo a persone giuridiche ed è legato a un quest burocratico. Nel complesso, i chip in corpi metalceramici sono considerati 'oro' in senso letterale e figurato. Ad esempio, il controllore 1986ВЕ1Т costa a Mosca da 14 a 24 mila rubli. Il chip di memoria statica 1645РУ6У costa da 15 mila rubli. E questo è l'andamento dei prezzi per tutti i prodotti. Di conseguenza, anche gli istituti di ricerca specializzati che ricevono ordini statali risparmiano e si spaventano di fronte a tali prezzi. I chip in corpi plastici per applicazioni civili sono significativamente più economici, ma non sono disponibili presso i fornitori popolari. Inoltre, la qualità dei chip in corpi plastici, a mio avviso, è inferiore a quella degli 'ori'. Ad esempio, non sono riuscito a far partire il controllore K1986BE1QI a una frequenza di 128 MHz senza aumentare il parametro della latenza flash. Nel contempo, la temperatura di questo controllore è salita a 40-50°C. Al contrario, il controllore 1986BE1T ('d'oro') è partito a 128 MHz senza ulteriori impostazioni e rimaneva freddo. È davvero buono.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Microcontrollore 'd'oro' 1986BE1T, (c) Milandr

Sono stato fortunato a trovare il microcontrollore in una custodia di plastica che può essere acquistato al dettaglio presso LDM Systems, mentre tutti i circuiti stampati sono disponibili online. È un peccato che sul sito la foto del controllore mostri una marcatura che indica che si tratta della revisione 4 del 2014, quindi con difetti. Ho pensato a lungo se acquistarlo o meno. Nel frattempo, sono passati diversi anni...

L'idea di creare una scheda di sviluppo non è mai svanita. Gradualmente ho definito tutti i requisiti e ho pensato a come disporli su un'unica scheda, affinché risultasse compatto e a costo contenuto. Contemporaneamente ho ordinato dai cinesi i componenti mancanti. Non avevo fretta: stavo facendo tutto per me. I fornitori cinesi sono noti per la loro disorganizzazione: ho dovuto ordinare le stesse cose in posti diversi per ottenere tutto ciò di cui avevo bisogno. Inoltre, parte dei chip di memoria si sono rivelati usati, evidentemente estratti da dispositivi rotti. Questo è stato un problema per me più tardi.

Acquistare il microcontrollore Milandr K1986ВЕ1QI (aeronautico) non è un compito semplice. Nello stesso negozio "Chip e Dip", nella sezione "Articoli su ordinazione", ho trovato solo K1986BE92QI a 740 rubli, ma non andava bene per me. L'unica alternativa era acquistare da LDM-Systems una revisione non recente a 2000 rubli. Poiché non sono riuscito a trovare un'alternativa, ho deciso di prendere quello che c'era. Con mia piacevole sorpresa, mi hanno venduto un controllore nuovo di zecca, produzione dicembre 2018, revisione 6+ (1820). E sul sito c'è ancora una vecchia foto, e al momento della scrittura dell'articolo, il controllore non è in stock...

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Microcontrollore K1986ВЕ1QI (aeronautico) in confezione tecnologica, (c) Foto dell'autore

Caratteristiche tecniche principali della mia scheda di sviluppo MDB1986 seguenti:

  • debugger-programmatore integrato, compatibile con J-Link e CMSIS-DAP;
  • memoria statica 4Mbit (256k x 16, 10 ns);
  • chip di memoria flash 64Mbit, Winbond 25Q64FVSIG;
  • ricevitore-trasmettitore per interfaccia RS-232 con linee RTS e CTS;
  • interfacce e connettori per Ethernet, USB, CAN;
  • controllore per display a 7 segmenti MAX7221;
  • connettore a pin per lavorare con MKIO (MIL_STD_1553) e ARINC429;
  • fototransistor Everlight PT17-21C;
  • cinque LED colorati, pulsante di reset e due pulsanti personalizzati;
  • alimentazione tramite porta USB a 5 volt;
  • dimensioni della scheda stampata 100 x 80 mm

Mi piacevano le schede della serie STM-Discovery perché hanno un programmatore-debugger integrato – ST-Link. Il ST-Link originale funziona solo con i controller della STMicroelectronics, ma un paio di anni fa è stata data la possibilità di aggiornare il firmware nel ST-Link e ottenere il SEGGER J-Link OB (on-board) Debugger. Legalmente, c'è una restrizione sull'uso di questo debugger solo con le schede STMicroelectronics, ma in realtà le possibilità non sono limitate. Pertanto, avendo il J-Link OB, è possibile avere un programmatore-debugger integrato sulla scheda di debug. Vorrei sottolineare che nei prodotti

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
microcontrollori STM32F103C8T6, veri e non molto (c) Foto dell'autore

Quindi, era necessario acquistare un STM32F103C8T6 originale, poiché i firmware originali non avrebbero funzionato correttamente con un clone. Avevo dei dubbi su questo e ho deciso di provare a lavorare con il controller CS32F103C8T6 della società cinese CKS. Non ho nulla da dire sul controller stesso, ma il firmware originale ST-Link non ha funzionato. J-Link ha funzionato parzialmente: il dispositivo USB è stato riconosciuto, ma il programmatore non ha eseguito le sue funzioni e ricordava continuamente che era "defective".

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Errore durante il funzionamento del debugger su un controller non originale

Non mi sono fermato lì e ho scritto prima un firmware per far lampeggiare un LED, poi ho implementato la richiesta IDCODE secondo il protocollo JTAG. Il programmatore ST-Link, che avevo sulla scheda Discovery, e il programma ST-Link Utility hanno programmato senza problemi il CS32F103C8T6. Alla fine ho potuto confermare che la mia scheda funziona. Con mia gioia, il controller target K1986BE1QI (aeronautico) ha restituito vigorosamente il suo IDCODE sulla linea TDO.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Oscillogramma della linea di segnale TDO con la risposta codificata dell'IDCODE, (c) Foto dell'autore

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Ecco che è stato utile il port SWD per il debug del debugger stesso e la verifica dell'IDCODE

Rimaneva l'opzione con il debugger CMSIS-DAP (Debug Access Port). Creare un progetto dalle sorgenti ARM non è un compito semplice, ho preso un progetto da X893, e poi ho provato anche DAP42. Sfortunatamente, Keil uVision si è bloccato e non voleva lavorare con loro. Alla fine ho sostituito il chip del debugger con l'originale STM32F103C8T6 e non sono più tornato su questa questione.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Funzionamento riuscito del debugger integrato J-Link STLink V2

Quando tutti i componenti chiave della futura scheda di debug erano disponibili, sono andato su Eagle CAD e ho scoperto che non erano presenti nella libreria dei componenti. Non c'era altra scelta: ho dovuto disegnarli da solo. Nel contempo, ho creato le posizioni per la memoria, il connettore HanRun per Ethernet e ho aggiunto cornici per resistori e condensatori. Il file del progetto e la libreria dei componenti possono essere trovati sul mio GitHub.

Schema elettrico della scheda di debug MDB1986Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)

La scheda è alimentata da una sorgente di corrente continua da 5 volt, ottenuta tramite una porta USB. Ci sono due porte USB Type-B sulla scheda. Una è per il programmatori, l'altra per il controllore K1986BE1QI. La scheda può lavorare con qualsiasi di queste fonti o con entrambe contemporaneamente. La regolazione della carico più semplice e la protezione delle linee di alimentazione sono realizzate con diodi Schottky, come mostrato nello schema D2 e D3 (SS24). Si possono vedere anche i fusibili autoripristinanti F1 e F2 da 500mA. Le linee di segnale della porta USB sono protette da un'assemblaggio di diodi USBLC6-2SC6.

Il schema del debugger-programmatore ST-Link è ben noto e può essere trovato nella documentazione delle schede STM32-Discovery e in altre fonti. Per il flashing iniziale del clone ST-Link/J-Link-OB/DAP (a scelta) ho estratto le linee SWDIO (PA13), SWCLK (PA14), GND. Molti usano la UART per il flashing e sono costretti a muovere i jumper BOOT. Ma per me è più comodo usare SWD, poiché questo protocollo consente di fare debugging.

Quasi tutti i componenti della scheda sono alimentati a 3.3 volt, provenienti dal regolatore di tensione AMS1117-3.3. Per ridurre le interferenze elettromagnetiche e i picchi di corrente vengono utilizzati filtri LC composti da condensatori e induttori della serie BLM31PG.

Merita una menzione separata il driver del display a 7 segmenti MAX7221. Secondo le specifiche, l'alimentazione raccomandata è compresa tra 4 e 5.5 volt, e il livello del segnale alto (bit logico uno) deve essere di almeno 3.5V (0.7 x VCC) a 5V. Per il controllore K1986BE1QI (aeronautico), il livello di logico uno corrisponde a tensioni tra 2.8 e 3.3V. È evidente la non corrispondenza dei livelli dei segnali, che possono compromettere il normale funzionamento. Ho deciso di alimentare il MAX7221 con 4V e ridurre i livelli di segnale a 2.8V (0.7 x 4 = 2.8). Per questo scopo, un diodo D4 (RS1A o FR103) è stato inserito in serie nel circuito di alimentazione del driver. In totale, la caduta di tensione è di 0.9V (diodo Schottky 0.3V e diodo 0.6V), e funziona tutto.

La maggior parte delle porte del microcontrollore K1986ВЕ1QI (avia) è compatibile con segnali fino a 5V. Pertanto, non ci sono problemi nell'utilizzo del transceiver CAN MCP2551, che funziona anch'esso a 5V. Come ricevitore e trasmettitore RS-232, nel circuito è indicato il chip MAX3232, ma in realtà ho utilizzato lo SN65C3232D della Texas Instruments, poiché funziona a 3.3V e offre una velocità fino a 1Mbit/s.

Sulla scheda sono presenti 4 oscilatori a quarzo – uno per il debugger (8MHz) e tre per il microcontrollore K1986ВЕ1QI (avia) con frequenze di 32.768kHz, 16MHz e 25MHz. Questi sono componenti necessari, poiché i parametri del generatore RC integrato variano da 6 a 10 MHz. La frequenza di 25MHz è necessaria per il funzionamento del controller Ethernet integrato. Sul sito di Milandr (forse per errore) è indicato che nella custodia plastica non è presente l'Ethernet. Ma ci baseremo sulla specifica e sui fatti.

Un importante stimolo per la creazione della mia scheda di debug è stata la possibilità di lavorare con il bus di sistema esterno EBC (controllore del bus esterno), che in sostanza è una porta parallela. Il microcontrollore K1986ВЕ1QI (avia) consente di connettersi e lavorare con chip di memoria esterni e dispositivi periferici, come ADC, FPGA, ecc. Le capacità del bus di sistema esterno sono piuttosto ampie: è possibile lavorare con RAM statiche a 8 bit, 16 bit e 32 bit, ROM e NAND Flash. Per la lettura/scrittura di dati a 32 bit, il controller è in grado di eseguire automaticamente 2 operazioni corrispondenti per chip a 16 bit, e 4 operazioni per quelli a 8 bit. È evidente che l'operazione di input/output a 32 bit sarà eseguita più velocemente con un bus dati a 32 bit. Tra gli svantaggi si può menzionare la necessità di gestire dati a 32 bit nel programma, mentre sulla scheda sarà necessario stendere 32 piste.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Chip di RAM statica, usati (indovina quale ha un difetto)

Una soluzione equilibrata è l'uso di chip di memoria a 16 bit. Ho a disposizione chip della Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Certamente, la "Milandr" ha i suoi chip di memoria statica serie 1645РУ, ma sono troppo costosi e non disponibili. Come alternativa ci sono i Samsung K6R4016V1D compatibili. Ho già accennato al fatto che i chip erano usati e l'unità che ho installato inizialmente ha dato problemi e valori caotici sulla quindicesima linea di dati. Ci sono voluti diversi giorni per identificare gli errori hardware, e c'è stata una grande soddisfazione quando ho sostituito il chip difettoso con uno funzionante. In ogni caso, la velocità di accesso alla memoria esterna lascia a desiderare.

Bus esterno e modalità StandAloneIl microcontrollore К1986ВЕ1QI (aviazione) ha una modalità StandAlone unica, progettata per l'accesso diretto all'esterno ai controller Ethernet e MKIO (MIL_STD_1553) tramite il bus esterno, mentre il core è in stato di reset, cioè non è in uso. Questa modalità è utile per i processori e le FPGA che non dispongono di Ethernet e/o MKIO.
Lo schema di collegamento è il seguente:

  • bus dati MCU(D0-D15) => SRAM(I/O0-I/O15),
  • bus indirizzi MCU(A1-A18) => SRAM(A0-A17),
  • controllo MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • SRAM(UB,LB) sono collegati o pull-down a terra tramite una resistenza.

La linea CE è pull-up a alimentazione tramite una resistenza, i pin per la selezione del byte MCU(BE0-BE3) non vengono utilizzati. Sotto un spoiler, fornisco il codice di inizializzazione delle porte e del controller del bus esterno.

Inizializzazione delle porte e del controller EBC (external bus controller)

void SRAM_Init (void)
{
	EBC_InitTypeDef          EBC_InitStruct = { 0 };
	EBC_MemRegionInitTypeDef EBC_MemRegionInitStruct = { 0 };
	PORT_InitTypeDef         initStruct = { 0 };

	RST_CLK_PCLKcmd (RST_CLK_PCLK_EBC, ENABLE);

	PORT_StructInit (&initStruct);
	//--------------------------------------------//
	// DATI PA0..PA15 (D0..D15)                   //
	//--------------------------------------------//
	initStruct.PORT_MODE      = PORT_MODE_DIGITAL;
	initStruct.PORT_PD_SHM    = PORT_PD_SHM_ON;
	initStruct.PORT_SPEED     = PORT_SPEED_FAST;
	initStruct.PORT_FUNC      = PORT_FUNC_MAIN;
	initStruct.PORT_Pin       = PORT_Pin_All;
	PORT_Init (MDR_PORTA, &initStruct);	
	//--------------------------------------------//
	// Indirizzo PF3-PF15 (A0..A12), A0 - non usato. //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_ALTER;
	initStruct.PORT_Pin       = PORT_Pin_4  | PORT_Pin_5  |
	                            PORT_Pin_6  | PORT_Pin_7  |
	                            PORT_Pin_8  | PORT_Pin_9  |
								PORT_Pin_10 | PORT_Pin_11 |
	                            PORT_Pin_12 | PORT_Pin_13 |
								PORT_Pin_14 | PORT_Pin_15;
	PORT_Init (MDR_PORTF, &initStruct);	
	//--------------------------------------------//
	// Indirizzo PD3..PD0 (A13..A16)                //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_OVERRID;
	initStruct.PORT_Pin       = PORT_Pin_0 | PORT_Pin_1 |
	                            PORT_Pin_2 | PORT_Pin_3;
	PORT_Init (MDR_PORTD, &initStruct);	
	//--------------------------------------------//
	// Indirizzo PE3, PE4 (A17, A18)                //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_ALTER;
	initStruct.PORT_Pin       = PORT_Pin_3 | PORT_Pin_4;
	PORT_Init (MDR_PORTE, &initStruct);	
	//--------------------------------------------//
	// Controllo PC0,PC1 (nWE,nOE)                  //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_MAIN;
	initStruct.PORT_Pin       = PORT_Pin_0 | PORT_Pin_1;
	PORT_Init (MDR_PORTC, &initStruct);	
	//--------------------------------------------//
	// Controllo PC2 (nCE)                          //
	//--------------------------------------------//
	initStruct.PORT_PD        = PORT_PD_DRIVER;
	initStruct.PORT_OE        = PORT_OE_OUT;
	initStruct.PORT_FUNC      = PORT_FUNC_PORT;
	initStruct.PORT_Pin       = MDB_SRAM_CE;
	PORT_Init (MDR_PORTC, &initStruct);	

	//--------------------------------------------//
	// Inizializza il controller EBC                   //
	//--------------------------------------------//
	EBC_DeInit();
	EBC_StructInit(&EBC_InitStruct);
	EBC_InitStruct.EBC_Mode             = EBC_MODE_RAM;
	EBC_InitStruct.EBC_WaitState        = EBC_WAIT_STATE_3HCLK;
	EBC_InitStruct.EBC_DataAlignment    = EBC_EBC_DATA_ALIGNMENT_16;
	EBC_Init(&EBC_InitStruct);
	
	EBC_MemRegionStructInit(&EBC_MemRegionInitStruct);
	EBC_MemRegionInitStruct.WS_Active   = 2;
	EBC_MemRegionInitStruct.WS_Setup    = EBC_WS_SETUP_CYCLE_1HCLK;
	EBC_MemRegionInitStruct.WS_Hold     = EBC_WS_HOLD_CYCLE_1HCLK;
	EBC_MemRegionInitStruct.Enable_Tune = ENABLE;
	EBC_MemRegionInit (&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000);
	EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE);

	// Accendi RAM (nCE)
	PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE);
}

Il microcontrollore in package LQFP-144 e la memoria in package TSOP-44 hanno molti pin collegati e occupano molto spazio sulla scheda. Avendo alle spalle esperienza nella risoluzione di problemi di ottimizzazione in economia, mi è apparso chiaro che fosse necessario posizionare prima queste microchip sulla scheda. In diverse fonti ho trovato recensioni lusinghiere su CAD TopoR (Router Topologico). Ho scaricato la versione di prova e sono riuscito a esportare il mio progetto da Eagle CAD solo dopo aver rimosso quasi tutti i componenti. Purtroppo, anche 10 elementi, il programma TopoR non mi ha aiutato a posizionarli sulla scheda. Inizialmente, tutti i componenti erano stati collocati in un angolo, per poi essere disposti lungo il bordo. Questa disposizione non mi ha soddisfatto, e ho impiegato molto tempo per eseguire la tracciatura della scheda manualmente nell'ambiente abituale di Eagle CAD.

Un elemento importante della scheda è la serigrafia. Sulla scheda di prova devono esserci non solo le etichette per i componenti elettronici, ma anche tutti i connettori devono essere contrassegnati. Sul retro della scheda ho posizionato tabelle di riferimento con le funzioni delle porte del controllore (principale, alternativa, ridefinita, effettiva). Ho ordinato la produzione delle schede in Cina presso una nota azienda, PCBWay. Non voglio lodarli, perché la qualità è buona. Possono fare meglio, con tolleranze minori, ma a pagamento separato.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
Schede stampate MDB1986, (c) Foto dell'autore

Ho dovuto saldare i componenti "alla meno peggio" con un saldatore da 40 watt e stagno ПОС-61, perché saldo raramente, 1-2 volte all'anno, e la pasta di saldatura si era seccata. Ho dovuto anche cambiare il controllore cinese CS32F103 con un originale STM32F103, e poi sostituire anche la memoria. In generale, ora sono completamente soddisfatto del risultato, anche se non ho ancora testato il funzionamento di RS-232 e CAN.

Sviluppo di una scheda di debug per K1986ВЕ1QI (avionica)
La scheda di prova MDB1986 in funzione — illumina e riscalda, (c) Foto dell'autore

Sul sito "Milandra" è possibile trovare abbastanza materiali didattici per studiare i controllori serie 1986BE9 (nucleo Cortex-M3), ma per il microcontrollore K1986ВЕ1QI (aviazione) non vedo nulla. Dopo aver esaminato i materiali pubblicati lì, le guide e i laboratori per le Università, sono felice che si stiano formando specialisti in tutto il paese per lavorare con i controllori russi. La maggior parte dei materiali didattici è preparata per lavorare con le porte di input/output, i timer, ADC, DAC, SPI, UART. Vengono utilizzati vari ambienti di sviluppo IDE (Keil, IAR, CodeMaster). In alcuni casi si programma utilizzando i registri CMSIS, in altri si utilizza la libreria MDR. È necessario menzionare la risorsa Start Milandr, che contiene numerosi articoli di programmatori pratici. E, naturalmente, non bisogna dimenticare il forum di Milandr.

Duma di MilandrLa microelettronica in Russia si sta sviluppando, e in questo processo l'azienda «Milandr» gioca un ruolo importante. Comparsono nuovi microcontrollori interessanti, come il 1986ВЕ81Т e «Eletrosila» con interfacce SpaceWire e MКIO (simile a quello in 1986BE1 e, forse, con gli stessi problemi), e così via. Ma agli studenti semplici, ai docenti e agli ingegneri civili non è realistico acquistare tali chip. Ciò significa che la comunità degli ingegneri non potrà identificare rapidamente gli errori e i problemi di questo chip. Mi sembra che inizialmente sia necessario produrre chip in un involucro di plastica, distribuirli tra tutte le persone interessate, e solo dopo una prova (lat. approbatio — approvazione, riconoscimento) da parte degli specialisti si può preparare una revisione in un involucro metallico-ceramico con protezioni contro tutti i terribili fattori. Spero che nel prossimo futuro ci delizieranno con nuovi progetti annunciati nelle fiere.
La scheda di_debug che ho progettato può essere riprodotta, modificata e utilizzata nel processo didattico da chiunque. In primo luogo, ho realizzato la scheda per me stesso, ma è venuta così bene che ho deciso di condividerla con tutti.

K1986ВЕ1QI (aviazione) è un controllore molto interessante con interfacce uniche, che può essere utilizzato nelle Università per l'insegnamento agli studenti. Penso che dopo aver corretto gli errori individuati nel controllore e dopo aver superato i test di certificazione, il controllore volerà in senso letterale!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster