Practica #5 Nios II- parte 2

for more visit: www.fpgalover.com

If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.

Written by: Holguer A Becerra

Requerimientos:

En esta practica usted aprenderá a programar el procesador Nios II que usted describió por medio del Qsys en la parte 1 de esta practica.

Siga las instrucciones paso a paso y no se salte ninguno

    • Abra el "Nios Software Build Tools" como administrador

    • Aparecerá una ventana llamada "Workspace Laucher" cambie el Workspace al nombre de ''FPGAs''

    • Ahora saldrá una ventana de trabajo vacía como la que se muestra a continuación:

    • Vaya al menú File->New->''Nios II Application and BSP From Template''

    • Aparece una ventana de donde se puede seleccionar un ''Target Hardware information'', ''SOPC information File name'', seleccione el del proyecto que se genero en la parte 1 de esta practica, ademas en la CPU name selecciona ''cpu'', como nombre del proyecto pone ''mi_primer_soft_nios'' y como plantilla selecciona ''Hello World''.

    • Una vez dado Finish, en la parte inferior en ''console'' aparece el progreso de creación del proyecto y luego usted vera en la parte izquierda de la ventana del Eclipse, dos carpetas nuevas una llamada ''mi_primer_soft_nios'' y otra ''mi_primer_soft_nios'_bsp'

      • 'mi_primer_soft_nios''

        • Se contiene el software que donde usted escribira el codigo que quiere que el procesador ejecute.

      • 'mi_primer_soft_nios'_bsp'

        • Se contiene los drivers del HAL del sistema Nios II que controla los perifericos conectados a la CPU.

    • Expanda la carpeta "mi_primer_soft_nios", ubíquese en el archivo "hello_world.c" y ábralo.

    • En el encontrara un pequeño código en C muy básico el cual es el programa principal que se encarga de enviar por medio del comando "printf" un mensaje de bienvenida diciendo "Hola Mundo" por medio del puerto "JTAG UART" ó cable de programación de acceso al Nios.

    • Vamos a compilar el proyecto para poder programar el procesador que describimos por medio del Qsys, para esto ubíquese en la carpeta "mi_primer_soft_nios" con clic derecho y busque la opción "Build Project"

En ese momento aparece una ventana en donde se empezara a construir el proyecto.

    • una vez construido el proyecto en la parte inferior en la consola deberá salir un mensaje el cual indica que la construcción fue completada satisfactoriamente.

Info: (mi_primer_soft_nios.elf) 32 KBytes program size (code + initialized data).

Info: 32735 KBytes free for stack + heap.

Info: Creating mi_primer_soft_nios.objdump

nios2-elf-objdump --disassemble --syms --all-header --source mi_primer_soft_nios.elf >mi_primer_soft_nios.objdump

[mi_primer_soft_nios build complete]

    • Ahora vamos a programar el procesador!!!, pero primero tenemos que programar sobre la FPGA la descripción de Hardware del mismo y como siguiente programar el software sobre el hardware que esta conteniendo la FPGA.

    • Primer vamos al Menu Nios II-->Quartus II Programmer, abrimos el programador y se programa sobre la FPGA el archivo ".sof" que contiene el procesador del sistema.

  • Ahora volvemos a la ventana del "Eclipse" y nos ubicamos sobre la carpeta "mi_primer_soft_nios" y buscamos la opción "Debug->Debug Configurations.." y aparece una ventana que tiene una pestaña llamada "Target Connection" y se debe seleccionar "USB Blaster local host" y se oprime el botón "Apply" y luego el botón "Close".

    • Ahora volvemos a la ventana del "Eclipse" y nos ubicamos sobre la carpeta "mi_primer_soft_nios" y buscamos la opción "Debug->Nios II Hardware"

    • Seguido de esto aparecera una ventana que preguntara si usted quiere cambiar la perspectiva del Eclipse, se oprime en yes y luego cambiara la ventana donde aparecera la barra de DEBUG que servirá para seguir paso a paso lo que hace el procesador Nios II en modo de búsqueda de errores DEBUG, en este caso se oprime en "Play" y en la consola inferior aparecerá un mensaje "hello world"

Ahora oprima el botón de stop y finalice el DEBUG,

  • Ahora vaya al menu Window->Open Perspective-> Nios II y selecciónelo para cambiar la forma de la ventana y modifique el código de archivo "hello_world.c"

    • Ubíquese sobre la carpeta "mi_primer_soft_nios" y con el clic derecho selecciones "Clean", luego seleccione "Build".

    • Una vez construido de nuevo el proyecto seccione "Debug->Nios II Hardware", ejecutelo y cambie la perspectiva a DEBUG.

se se da cuenta aparen a mano derecha el nombre de las variables que se declararon y sus valores iniciales...

  • Ahora vamos a ver el comportamiento de las variables y del sistema utilizando la barra de DEBUG oprimiendo el boton "Step into"

    • oprima repetidas veces el botón "Step into" ó "Step over" y verifique lo que hace el programa paso a paso, ademas de esto observe el comportamiento de los LEDs y varié los SW, verifique el valor de las variables "led_val" y "sw_val"

    • Una vez usted entienda el proceso que hace el programa que esta corriendo el procesador Nios II, usted puede experimentar cambiando el código y verificando el comportamiento de nuevo con el DEBUG.

Preguntas:

    • ¿Que hace la función "IOWR" y "IORD"?.

    • ¿Que hace "usleep"?.

    • ¿Que es LED_BASE y SW_BASE? ==> mire en la carpeta "mi_primer_soft_nios" el archivo "system.h".

    • ¿Que diferencia tiene "RUN-> Nios II Hardware" y "DEBUG-> Nios II Hardware"?.

    • ¿Se podría poner hardware fuera del Nios II que funcione en paralelo con el procesador o en conjunto?.

Ahora:

Glosario:

¿Hardware y Software No-Volatil DE0-NANO?

  • Programe el .sof de su proyecto Nios II.

  • Vaya al menu Nios II-> Flash Programmer, ejecute, luego vaya a File->New..., selecciones la casilla "Get flash programmer system details from SOPC information file", seleccione el generado por su proyecto Qsys ".sopcinfo", oprima "ok" y por ultimo seleccione los archivos .elf(Software) y .sof(Hardware) del proyecto.

  • por ultimo Oprima "Start"

  • Una vez programa la Memoria EPCS, apague y reinicie la DE0-NANO, Enhorabuena tu FPGA cargara el hardware y el software automática, ideal para proyectos en los cuales necesitemos armar un producto final sin necesidad de volver a programar la DE0-NANO.

    • PD: Este método no solo sirve para NIOS, sirve para todos los diseños que tengamos, en el caso quiera programar un .sof que no contenga NIOS II, programe por medio del .sof que contiene el Nios, el .sof(hardware) que desea que la FPGA cargue al iniciar la DE0-NANO.

Para las DE0-NANO con memoria EPCS de referencias nuevas como SPANSION deben agregar el parche de la siguiente forma que poder programar de forma no volatil:

for more visit: www.fpgalover.com

If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.