Written by Javier
Objetivos
Conocer qué es NutOS
Saber cómo implementar el sistema NutOS utilizando un procesador soft-core NIOS II
Observar en la práctica el funcionamiento del sistema NutOS utilizando la placa DE0 NANO SOC
¿Qué es NutOS?
Nut/OS es una implementación Open Source de un sistema operativo en tiempo real. Fácilmente configurable y está optimizado para el funcionamiento en micro-controladores de 8 y 32 bits. Esta Open source incluye una suite de protocolos TCP/IP llamada Nut/Net con la que el procesador NIOS II no tiene compatibilidad.
Notas a tener en cuenta antes de iniciar
Debe cerciorarse que en hardware diseñado en la práctica NIOS II el puerto que se nombra como uart en el Qsys, debe re-nombrarse como uart_0, y su conexión externa como uart0, con el fin de que en pasos futuros pasos no se presenten errores.
Desarrollo e implementación de NutOS utilizando el procesador soft-core NIOS II
Tal y como se realizó en la práctica de NIOS II, se implementa el código software perteneciente a este. El único cambio que debe realizarse es el nombre del CLK, que debe ser sys_clk_timer
Se da click en Project > Properties
Inmediatamente se despliega la siguiente pantalla, donde inicialmente aparece marcada la opción Support C++, se quita su selección y se da click en OK.
Nota: Cuando se desarrolla la practica NIOS II software se debe cerciorar que estén conectados los puestos adecuados, de lo contrario deberá hacer click derecho en la carpeta bsp del proyecto NIOS II > BSP editor
Luego se procede a hacer click derecho en la carpeta bsp del proyecto, a seleccionar la opción Clean Project, acto seguido se procede a generar un BSP, tal y como se muestra en la imagen
Inmediatamente después, se da click derecho en la carpeta principal del proyecto, se selecciona la opción Clean Project, luego de esto se selecciona la opción Built Project
Todo lo que se ha realizado hasta ahora, se hace con el fin de evitar posibles errores debido al cambio de nombre del CLK.
Nota: El nombre del CLK se debe cambiar a sys_clk_timer para que exista compatibilidad con todo lo que se desarrolla a a lo largo de este documento.
Una vez terminado el proceso que se realiza al dar click Biuld Project, no deben generarse ningún tipo de errores
Ahora se procede a crear la Librería NutOS, dando click en File > New > Nios II Library.
Se despliega inmediatamente una ventana, en la cual, en el campo Project Name se escribirá "nutos_v4103_de0_nano" este será el nombre de la librería.
Nota: Se selecciona el nombre "nutos_v4103_de0_nano" debido a que es una librería basada en NutOS 4.10.3 para la placa DE0 NANO SOC y su uso no es de carácter obligatorio.
Adicionalmente marcamos la opción Make library depend on a BSP y dando click en el botón Browse Project List... procederemos a buscar el el proyecto con el cuál se está trabajando.
Como paso final se da click en el botón Finish de la ventana Nios II Library.
A continuación, la ventana se debe ver de la siguiente manera, si se despliega la carpeta BSP del proyecto. Se puede observar que una carpeta con el nombre de la librería fue creada
En la carpeta de la librería se deben pegar los archivos que se encuentran dentro del paquete nios_nutos_tut_2.zip. Una vez descargados, se descomprimen, se copian, se dirigen a Eclipse, se da click derecho sobe la carpeta de la librería y se selecciona la opción Paste, esto hará que estos archivos sean anexados a la carpeta
Si se despliega la carpeta de la librería se deberían ver los archivos ya en la lista
Existe la posibilidad de tener un error al agregar ciertos archivos y/o carpetas en la librería del proyecto. Para evitar que esto pueda suceder se da click derecho > Refresh en el documento Makefile e inmediatamente se da doble click al mismo. Se despliega el código fuente que está en este archivo; allí se debe buscar LIB_INCLUDE_DIRS (se encuentra cerca de la línea de código 337). Una vez encontrado el código, se le agregan los comandos "nut/cfg_include" y "nut/include". Una vez hecho esto, debe quedar de la siguiente manera.
Una vez hecho lo anterior, se procede a buscar, dentro de Makefile el comando LIB_INC_DIRS (Se encuentra cerca a la línea de código 428).Una vez encontrado se procede a cambiar el orden de los comandos ALT_INCLUDE_DIRS y LIB_INCLUDE_DIRS, es decir, ALT_INCLUDE_DIRS pasa a ocupar la posición que ocupa LIB_INCLUDE_DIRS y viscevesa.
Cuando se hayan completados los pasos anteriores, se procede a guardar y cerrar el código fuente de Makefile.
Lo siguiente que se realiza es seleccionar la carpeta nutos_v4103_de0_nano y dar click en Project > Properties
Se expande una nueva ventana, en la que se despliega C/C++ General y se selecciona Parths and Symbols. Una vez seleccionado, se da click en la pestaña Symbols
En la ventana que se despliega en el paso anterior, se proceden a agregar dos símbolos para el indexador de Eclipse; estos son "__NIOS2__" y "ALTERA_DE0_NANO". Todo se hace dando click en el botón Add... después de lo cuál se desplegará una ventada donde se procederá a dar nombre al símbolo que se va a agregar, y a seleccionar las opciones Add to all configurations y Add to all languages, para finalizar dando click en OK. Los pasos anteriormente descritos se debe hacer para agregar ambos símbolos.
Nota: Al escribir el símbolo __NIOS2__ se colocan dos llíneas "_" antes y después de la palabra NIOS2.
Al realizar los pasos anteriores, los símbolos aparecen de la siguiente manera.
Ahora se selecciona el menú Nios II Librarie Properties y en el campo Definied symbols se escribe -DALTERA_DE0_NANO y se da click en OK.
El programa despliega una ventana preguntando si desea hacer rebuild para aplicar lo hecho anteriormente. Se da click en el botón Yes.
Una vez terminado rebuild se procede a hacer build en la librería; para eso se da click en la carpeta nutos_v4103_de0_nano, en la ventana principal del proyecto y se da click en Project > Build Project. El proceso debe compilarse sin ningún tipo de errores.
El siguiente paso es construir la aplicación. Se debe dirigir a File > New > Nios II Application and BSP from Template
Se despliega un menú en el cuál es importante seleccionar Blank Project y buscar el archivo .SOPCINFO del hardware del NIOS que se está utilizando
Al ir a buscar el archivo .SOPCINFO del proyecto, se despliega una ventana donde, generalmente, el archivo buscado aparecerá en la parte inferior, se selecciona y se da click en Abrir.
Se despliega la ventana anterior a este paso, donde se procede a desmarcar la opción Use default location y se procede a buscar la carpeta software del proyecto.
Una vez allí se crea una carpeta con el nombre que le vaya a dar a la aplicación (en este caso se eligió httpd_simple_de0_nano) y se da click en Aceptar.
Se da click en Next. Automáticamente se despliega una ventana donde se selecciona la opción Select an existing BSP project from your workspace y se selecciona la carpeta BSP del proyecto y se da click en Finish.
Al ir a Project Explorer se observa la aparición de la carpeta httpd_simple_de0_nano y de sus respectivos archivos internos.
A continuación se descarga el archivo nios_nutos_tut_3.zip dentro del cuál se encuentra una carpeta llamada src, la cual se procede a descomprimir.
Nota: si al abrir el archivo .zip puede usar la carpeta normalmente, se recomienda copiar src y pegar en otro sitio antes de seguir al siguiente paso. En este caso se pegó en el escritorio
Esta carpeta se copia y pega en httpd_simple_de0_nano
Una vez hecho el paso anterior, se debe ver de la siguiente manera
Se da click derecho sobre la carpeta httpd_simple_de0_nano y se selecciona la opción Refresh. Luego abre el archivo Makefile y se busca el comando APP_INCLUDE_DIRS donde se va a cambiar el orden de los comandos ALT_INC_DIRS y APP_INCLUDE_DIRS.
Pasa de quedar así
A quedar así
Después de este cambio se guarda. Se selecciona la carpeta httpd_simple_de0_nano y se va a Project > Properties
Se despliega una ventana en donde se elige C/C++ General > Paths and Symbols
Se procede a agregar __NIOS2__ y ALTERA_DE0_NANO.
Se marcan las mismas opciones para a ambos symbols
Se da click en la opción Nios II Application Properties y en el campo Defined symbols se escribe -DALTERA_DE0_NANO
Antes de dar click en OK, se debe asegurar que el campo Configuration tenga la opción default [active]. Una vez esté seleccionada sí se procede a dar click en OK.
Se vuelve a acceder a la opción Properties de la carpeta de la aplicación.
Una vez se abre la ventana se dirige a la opción Nios II Application Properties >Nios II Application Path donde se procederá a dar click en el botón Add... perteneciente al campo Library projects.
Se selecciona la carpeta de la librería que se creó en pasos anteriores, que en este ejemplo se llama nutos_v4103_de0_nano
Se desplegará una ventana con un mensaje donde se pregunta que si desea convertir de path a relative path, se da click en Yes.
Debe quedar de la forma como se muestra en la siguiente imagen. Después se da click en Add... del campo Application include directories
Se busca en la carpeta de la librería creada la carpeta nut. La dirección para este ejemplo es nutos_v4103_de0_nano> nut. Dentro de esta se encuentran varias carpetas, de las cuales se van a incluir cfg_inlude e include
Una vez agregadas, las carpetas se deben ver de la siguiente manera; de ser así, se da click en OK.