Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
20 years ago

remove HAL device drivers (preprocessor options)

Hello,

Is there a list anywhere of the available preprocessor options?

I need it because I want to remove some HAL drivers but need some others... For example, I want to access directly the UART peripheral registers but I need the LCD HAL driver.

On the SW Handbook, there is only the way to remove the HAL driver for the CFI_FLASH controller which is explained : We have to specify the option -DALT_NO_CFI_FLASH in the preprocessor options.

Is there an option like this one which removes the UART HAL driver ?

Is there another way to remove the UART HAL driver ?

Thank you for any help,

Jean LEE

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    One way to disable the UART driver is to add a file named 'altera_avalon_uart.h' to your system library project. This file should contain the following:

    #define ALTERA_AVALON_UART_INSTANCE(name, device)   # define ALTERA_AVALON_UART_INIT(name, device)  

    This will stop the HAL installing it's driver, and allow you to provide your own instead. If you want to initialise your driver before main(), you can use these macros - as described in the Nios II Software Developers' Handbook.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi,

    I tried and I think that I didn't all understood because the IDE doesn't seem to take my replacement in account.

    Well, a bit more explanation of what I am doing could be good :

    - I have a working project using HAL libraries which prints data coming from the UART to the LCD

    - I took the source of this project and try now to remove the UART HAL driver (for learning purpose) and replace it by my own HAL driver.

    - I've done what monkeyboy said before : I created an altera_avalon_uart.h in my project with the two lines.

    # ifndef __ALT_AVALON_UART_H__# define __ALT_AVALON_UART_H__

    # define ALTERA_AVALON_UART_INSTANCE(name, device) NULL# define ALTERA_AVALON_UART_INIT(name, device) NULL

    # endif //__ALT_AVALON_UART_H__

    - I created an empty altera_avalon_uart.c too and included "altera_avalon_uart.h" in my main.c file.

    After all of this, I thought that my project won't work anymore. But it stills compile well and runs on my NIOS II development kit Cyclone II.

    I don't really understand why.

    Can anybody explain me more in details the library substitution ?

    Do I have to create an alt_main() procedure ( I thought that it was not necesary) ?

    I already read the "Boot sequence an entry point" and "Paths to HAL library files" in the Nios II Software Developers' Handbook.

    Thank you for any help,

    Jean LEE
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi,

    I found my error :

    I put the altera_avalon_uart.h and altera_avalon_uart.c in my project directory but they must be placed in the System Library Project..

    Regards,

    Jean