giovedì 28 febbraio 2019

AC6 System Workbench per Debian 9

ed alla fine sono riuscito ad avere una IDE per STM32 funzionante su Debian 9

Per l'installazione l'utente deve poter essere nei sudoers

Il problema era piuttosto semplice alla fine e viene dopo l'installazione. Una volta installato System Workbench con l'installer la compilazione del programma funziona in modo corretto ma viene generato un errore da GDB

la soluzione e' installare libncurses e creare un link simbolico tra la versione 6 32bit e la versione 5 (non disponibile nel repository...basta il symlink)

root@debian:/usr/lib/i386-linux-gnu# ln -s libncurses.so.6 libncurses.so.5






User Button su STM32 Nucleo 64 con AC6 System Workbench

Ripartendo da questo post qui si studia l'interazione con lo User Button della STM32F446RE





Se l'utente preme lo User Button viene cambiato lo stato del led LD2



-------------------------------------------------------------
 while (1)
  {
  if (!HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)) {
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  }
  HAL_Delay(100);
  /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
-------------------------------------------------------------

mercoledì 27 febbraio 2019

Raspberry e Windows 10

E' di qualche giorno fa la notizia di poter installare Windows 10 (versione ARM) su Raspberry...in realta' gia' qualche anno fa Microsoft aveva rilasciato una versione di Windows per Raspeberry ma si trattava di una versione priva di desktop ed indirizzata all'IoT



Il progetto si trova a questo indirizzo http://jhanc.altervista.org/jargon/Intro.html ma diciamo che le cose sono partite subito un po' male ...l'installer non voleva saperne di funzionare


Dopo un po' di lettura del forum degli sviluppatori in cui venivano descritti errori e rimedi l'installazione e' andata a buon fine




ma il problema principale e' che la Raspberry con il solo desktop di Windows 10 e' sempre in picco con il processore sopra al 90% se non al 100%. Il sistema quindi non risponde ai comandi (se non molto lentamente). Non oso pensare quando l'utente inizia a fare girare un applicativo


In conclusione un progetto interessante ma piu' una curiosita' che non uno strumento da utilizzare 

Blink Led su STM32 Nucleo 64 con AC6 System Workbench

Non riuscendo ad installare una IDE funzionante su Linux sono passato a Windows e le cose sono migliorate (anche se non e' una passeggiata)

In questo esempio viene mostrato come lanciare un programma per far lampeggiare il led su una scheda STM32F446RE Nucleo 64 utilizzando STM32CubeMX per impostare il progetto di base, AC6 SystemWorkbench per compilare e debuggare il codice



Si installa la IDE AC6 System Workbench con la toolchain GCC da http://www.openstm32.org/HomePage. Si tratta di una versione di Eclipse con i plugin gia' installati e con GCC, GDB per Arm ed i driver STLink inclusi




In seguito  si crea un nuovo progetto in STM32CubeMX
Si seleziona Start my project from STBoard, nella finestra di ricerca si digita Nucleo e si seleziona NUCLEO-F446RE. Nel caso in cui il firmware della scheda non sia mai utilizzato si dovra' scaricare (e' un pacchetto corposo)

Si fa doppio clic sulla foto della scheda e si risponde yes ad Initialize all peripherals.
Si va in Project Manager, si sceglie un nome per il progetto e nella ToolChain/IDE si indica SW4STM32.


Si apre in progetto e nel ciclo while (1) riga 99 si inserisce il codice. I progetti creati con STNM32CubeMX sono generati con le librerie HAL (un layer di astrazione sull'hardware...ci sono commenti discordanti sull'utilizzo di questo sistema)
---------------------------------------------------------
  while (1)
  {
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  HAL_Delay(500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
---------------------------------------------------------

da STM32CubeMX si vede che la porta GPIO a cui e' collegato al porta denominata LD2_GPIO con il nome del pin denominato LD2_Pin
Il comando TooglePin cambia semplicemente lo stato del Pin (se e' attivo lo disattiva e l'ovvio contrario)

Si fa collega la scheda alla porta USB ed abbbiamo il programma in funzione, L'aspetto piu' interessante e' il fatto di poter eseguire un debug step by step del codice

Per concludere segnalo che il codice di base di STM32CubeMX abilita la porta seriale UART2. Per inviare messaggi sulla porta seriale via USB e' sufficiente

---------------------------------------------------------
char *msg = "Test\n\r";
HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFFFF);
---------------------------------------------------------

I parametri sono di default 115200 8N1 ma si possono modificare nella funzione MX_USART2_UART_Init contenuta in main.c

martedì 26 febbraio 2019

MBed IDE per STM32 Nucleo STM32F446RET6

Lo ammetto, per ora non sono riuscito ad installare una IDE locale per sviluppare su STM32 su Linux. Sono arrivato a compilare il codice con AC6 System  Workbench ma non riesco a fare il debug per problemi con libopencm3 ed il server stlink



Usando l'IDE online per MbedOS le cose sono decisamente piu' lineari anche perche' il codice e' astratto dall'hardware

Per iniziare il progetto si deve prima selezionare l'hardware in uso



Successivamente si puo' usare un codice di esempio oppure scrivere da zero


Al momento della compilazione viene scaricato un file .bin

Per caricare il file .bin sulla scheda si usa il software StLink traminte il comando

st-flash write programma.bin 0x8000000

La scheda che ho usato (la STM32F446RET6) ha un ST-LINKV2  debugger integrato per cui e' sufficiente collegare la  porta USB

venerdì 22 febbraio 2019

Olivetti M24 incontra monitor LCD VGA

Quando usavo quotidianamente l'Olivetti M24 (primi anni 90) il problema piu' sensibile era quello di avere una scheda grafica con risoluzione CGA ed una risoluzione di 640 pixels ma solo a due colori....in un mondo di VGA era un dettaglio non d poco



Solo in questi giorni ho scoperto che e' possibile montare una scheda VGA sugli slot VGA (disattivando la scheda grafica nativa) agendo sui microswitch e addirittuta e' possibile usare un comune monitor VGA usando la scheda grafica interna. Lo schema delle connessioni e' il seguente



Questo ' il connettore con un DB 25 femmina ed un connettore VGA (rispetto allo schema Olivetti dove e' presente un D15 con due file di pin ho usato un DSUB DB15 a 3 file di pin perche' e' lo standard dei monitor VGA ormai da molti anni...la numerazione risulta identica)


Con mia grande sorpresa ha funzionato alla prima nonostante il monitor continuasse a lamentare un fuori frequenza

martedì 19 febbraio 2019

Gnome Boxes e risoluzione schermo Windows Host

Visto che non ho piu' voglia di litigare con Virtualbox su Debian 9 ho provato a migrare su Gnome Boxes  per le cose piu' semplici

Il livello di configurazione e' molto meno dettagliato rispetto a Virtualbox ed e' abbastanza spiazzante il modo per manadare ad alta risoluzione lo schermo



Una volta installata la macchina virtuale Windows, si devono scaricare, da dentro la macchina virtuale) da https://www.spice-space.org/download.html gli spice tools (il corrispettivo delle Guest Additions di VirtualBox) per Windows e sembra non accadere niente.

Al riavvio della macchina virtuale la risoluzione non e' cambiata e non e' scalata con due bande nere ai lati. Cliccando destro sul Desktop di Windows/Impostazione Schermo si puo' cambiare la risoluzione dello schermo. In pratica la risoluzione non viene in automatico scalata come avviene in Virtualbox ma la si deve impostare in modo manuale

Ollama e Jetson Nano 4G

Ancora nel tentativo di utilizzare in modo serio la Jetson Nano ho provato ad usarla per Ollama seguendo le istruzioni da https://dev.to/aje...