Você está na página 1de 6

Nuttx - stm32f4discovery

CÓDIGO-FONTE

https://bitbucket.org/patacongo/nuttx
http://sourceforge.net/projects/nuttx/files/

SITE DO PROJETO

http://www.nuttx.org/doku.php?id=nuttx

USER GUIDE

http://www.nuttx.org/doku.php?id=documentation:userguide

1 - Compilando e testando o nuttx para a plataforma stm32f4discovery


REFERENCIAS

1 - ​Compilandoe testando o nuttx para


a plataforma stm32f4discovery
1.1 - Criando diretorio para o src do nuttx

fadriano@felipe-pos:~$ mkdir nuttx && cd nuttx

1.2 - Toolchain para compilar o nuttx

O toolchain para compilar o nuttx pode ser obtido do projeto GCC ARM Embedded neste
link ​https://launchpad.net/gcc-arm-embedded​.

Pode também ser obtido baixando via wget:


$ wget
https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q2-update/+download/
gcc-arm-none-eabi-4_9-2015q2-20150609-linux.tar.bz2

extraindo e exportando para o PATH:

$ tar xfv gcc-arm-none-eabi-4_9-2015q2-20150609-linux.tar.bz2


$ export PATH=~/nuttx/gcc-arm-none-eabi-4_9-2015q2/bin/:$PATH

Para testar:

$ arm-none-eabi-gcc -v

No caso do ubuntu o toolchain baixado não funcionou, mas isto não é o problema o arm-gcc
pode ser baixado pelo apt-get como neste link:
https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded


sudo apt-get update
sudo apt-get install gcc-arm-none-eabi

1.3 - Baixando os fontes do nuttx

Para baixar os fontes pode ser utilizado o git:

$ git clone https://bitbucket.org/patacongo/nuttx.git

no mesmo diretorio em que o nuttx foi clonado (não dentro do fonte) clone também as
aplicacoes adicionais para o nuttx:

$ git clone https://bitbucket.org/nuttx/apps.git

Agora entre no source do nuttx e digite os seguintes comandos para atualizar o repositorio

$ git submodule init


$ git submodule update

1.4 - Kconfig-frontends para o nuttx

Para configurar o nuttx é preciso utilizar o make menuconfig. Entretanto ele não é um
pacote padrao do sistema operacional no caso o UBUNTU.
As ferramentas de desenvolvimetno padrão eu não testei se funcionão, mas eu o kconfig
disponivel no site do nuttx: https://github.com/projectara/nuttx/tree/master/misc/tools
. Lá é possível encontrar também informaçoes sobre como compilar a ferramenta.
Aqui também é possível obter informações relevantes:
http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig

O kconfig frontends foi baixado deste site


9http://ymorin.is-a-geek.org/projects/kconfig-frontends), na sessão get the sources:
http://ymorin.is-a-geek.org/download/kconfig-frontends/

Para compilar o kconfig-frontends é preciso da biblioteca libncurses5-dev e também do a


do pacote autoconf

sudo apt-get install libncurses5-dev autoconf gperf lex flex bison

Depois disto é só entrar no diretorio do source do kconfig-frontends e executar o


./configure:

$ ./configure
$ make
$ sudo make install

Após isto a ferramenta estará disponivel para ser utilizada, caso não seja possivel utiliza-la
instale suas bibliotecas estaticamente.

1.5 - Configurando o nuttx para o stm32f4discovery

O nuttx está disponicel para uma grande quantidade de plataformas como pode ser visto
dentro do diretorio configs/ dentro do src do nuttx:

$ ls configs/
amber lm3s8962-ek olimex-stm32-p207 stm3210e-eval
arduino-due lm4f120-launchpad olimex-strp711 stm3220g-eval
avr32dev1 lpc4330-xplorer open1788 stm3240g-eval
boardctl.c lpc4357-evb p112 stm32f3discovery
c5471evm lpcxpresso-lpc1115 pcblogic-pic32mx stm32f429i-disco
cc3200-launchpad lpcxpresso-lpc1768 pcduino-a10 stm32f4discovery
cloudctrl Make.dep pic32mx7mmb stm32f746g-disco
compal_e86 Makefile pic32mx-starterkit stm32ldiscovery
compal_e88 maple pic32mz-starterkit stm32_tiny
compal_e99 mbed pirelli_dpl10 stm32vldiscovery
demo9s12ne64 mcu123-lpc214x qemu-i486 sure-pic32mx
dk-tm4c129x micropendous3 README.txt teensy-2.0
ea3131 mikroe-stm32f4 rgmp teensy-3.x
ea3152 mirtoo sam3u-ek teensy-lc
eagle100 moteino-mega sam4e-ek tm4c123g-launchpad
efm32-g8xx-stk mt-db-x3 sam4l-xplained tm4c1294-launchpad
efm32gg-stk3700 mx1ads sam4s-xplained twr-k60n512
ekk-lm3s9b96 ne64badge sam4s-xplained-pro ubw32
ez80f910200kitg ntosd-dm320 sama5d3x-ek us7032evb1
ez80f910200zco nucleo-f4x1re sama5d3-xplained
viewtool-stm32f107
fire-stm32v2 nucleus2g sama5d4-ek vsn
freedom-kl25z nutiny-nuc120 samd20-xplained xtrs
freedom-kl26z olimex-efm32g880f128-stk samd21-xplained
z16f2800100zcog
hymini-stm32v olimexino-stm32 saml21-xplained z80sim
Kconfig olimex-lpc1766stk samv71-xult z8encore000zco
kwikstik-k40 olimex-lpc2378 shenzhou z8f64200100kit
lincoln60 olimex-lpc-h3131 sim zkit-arm-1769
lm3s6432-s2e olimex-stm32-h405 skp16c26 zp214xpa
lm3s6965-ek olimex-stm32-p107 spark

Para configurar o Nuttx para uma plataforma de hardware, basta entrar no diretorio tools e
executar o script ​configure.sh​ para a plataforma desejada.

$ cd tools/
$ ./configure.sh stm32f4discovery/usbnsh

Ao exe​cu​tar o script ​configure.sh​, será cri​ado um arquivo chamado ​.con​fig​ com a


con​fig​u​ração do NuttX para a plataforma de hard​ware selecionada.

$ cat .config

1.6 - Compilando o nuttx

Para com​pi​lar o NuttX, basta exe​cu​tar o ​make:​

$ make

Ao final do processo de com​pi​lação, as ima​gens estarão disponíveis no diretório


raiz do código-fonte:

$ ls -l nuttx*
-rwxrwxr-x 1 sprado sprado 75682 Jul 21 17:29 nuttx
-rwxrwxr-x 1 sprado sprado 39264 Jul 21 17:29 nuttx.bin
-rwxrwxr-x 1 sprado sprado 105738 Jul 21 17:29 nuttx.srec

1.7 - gravando o código com o dfu-util

Para gravar o código na placa pode ser utilizado a ferramenta dfu-util.


$ sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D nuttx.bin
Para colocar a discovery em modo boot, conecte o cabo usb e procure o pino
com o nome BOOT0, coloque este pino em 3V e pressione o botão de reset. A
placa entrará em modo de boot. Para gravar com o dfu-util não se deve utilizar a
usb do st-link e sim a usb do micro que está proximo do conector de audio.

$ sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D nuttx.bin

Downloading to address = 0x08000000, size = 60776


Download [=========================] 100% 60776 bytes
Download done.
File downloaded successfully

1.7 - Testando o código

Para testar o código pode ser utilizado o ckermit para conectar na porta ttyACM0
enumerada pela discorvery quando o nuttx está rodado.

Baixando o ckermit no ubuntu:

$ sudo apt-get install ckermit

Conectando na porta ttyACM0 utilizando o nuttx:

Primeiro mude as permissões da porta /dev/ttyACM0

$ sudo chmod 666 /dev/ttyACM0


$ kermit -l /dev/ttyACM0

depois deste ultimo comando o programa kermit estaraá em execução então é só digitar a
letra ‘c’ e depois pressionar enter para escutar a porta:

C-Kermit > c + [ENTER]

caso necessário configure o carrier-watch como off:

C-Kermit > set carrier-watch off


C-Kermit > c

Posteriormente o c kermit abre uma interface para escutar a porta que foi aberta:

(/home/fadriano/embedded/OS/nuttx/src/nuttx/) C-Kermit>c
Connecting to /dev/ttyACM0, speed 9600
Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------

Pressione então entrer 3 vezes e o shell do nuttx (nsh) aparecerá:

[ENTER] + [ENTER] + [ENTER]

NuttShell (NSH)
nsh>

nsh> ls
/:
dev/
nsh>

nsh> help
help usage: help [-v] [<cmd>]

[ dd hexdump mh set usleep


? echo kill mv sh xd
break exec losetup mw sleep
cat exit ls ps test
cd false mb pwd true
cp free mkdir rm uname
cmp help mkfifo rmdir unset

Builtin Apps:
adc
buttons
hello

REFERENCIAS
http://sergioprado.org/o-sistema-operacional-de-tempo-real-nuttx/

Você também pode gostar