Issue compiling uTasker for FRDM-K66F

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Issue compiling uTasker for FRDM-K66F

Jump to solution
721 Views
zgife
Contributor I

Every time I try to build uTasker for the FRDM-K66F Simulator in visual studio 2015 it gives me the following error 

1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6055): error C2065: 'DMUX_UART0_RX_CHANNEL': undeclared identifier
1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6057): error C2065: 'DMUX_UART1_RX_CHANNEL': undeclared identifier
1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6060): error C2065: 'DMUX_UART2_RX_CHANNEL': undeclared identifier
1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6063): error C2065: 'DMUX_UART3_RX_CHANNEL': undeclared identifier
1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6066): error C2065: 'DMUX_UART4_RX_CHANNEL': undeclared identifier
1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6071): error C2065: 'DMUX_UART5_RX_CHANNEL': undeclared identifier
1>x:\utasker\utasker-git-kinetis\hardware\kinetis\kinetissim.c(6054): error C2099: initializer is not a constant

I have verified that the config.h has only the FRDM-K66F selected and can't seem to find any issues, this is a fresh clone of the uTasker Git repo aswell

Labels (1)
0 Kudos
1 Solution
600 Views
mjbcswitzerland
Specialist V

Hi Zachary

Sorry about this - I recently added additional checking of the correct use of DMAMUX channels when using DMA and UARTs/LPUARTs and I missed defines for devices with 5 UARTs and 1 LPUART (which the K66 has).

You can fix it by finding the following list in the file in question and adding the
#elif UARTS_AVAILABLE == 5 set as below.

        #if UARTS_AVAILABLE == 0
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART3_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART4_RX)
        #elif UARTS_AVAILABLE == 1
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART2_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART3_RX)
        #elif UARTS_AVAILABLE == 2
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART2_RX)
        #elif UARTS_AVAILABLE == 3
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
        #elif UARTS_AVAILABLE == 4
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART3_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
        #elif UARTS_AVAILABLE == 5
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART3_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART4_RX)
            #define DMUX_UART5_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
        #endif
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Also, if you want to use Ethernet (#define ETH_INTERFACE) comment out
#define LAN8740_PHY
at line 931 in config.h
so that it works with the PHY on the board (the KSZ8081RMA).
The option to use a LAN8740 PHY was added for a special case and shouldn't be enabled for the standard FRDM-K66F.

The corrections are checked in if you would prefer to pull them from the repository.

Generally, in case of such an issue due to new code it is possible to switch the checked out version to any of the check-ins to wind back to a functional version - or use the GIT log to see what has been changed.

Regards

Mark

View solution in original post

0 Kudos
1 Reply
601 Views
mjbcswitzerland
Specialist V

Hi Zachary

Sorry about this - I recently added additional checking of the correct use of DMAMUX channels when using DMA and UARTs/LPUARTs and I missed defines for devices with 5 UARTs and 1 LPUART (which the K66 has).

You can fix it by finding the following list in the file in question and adding the
#elif UARTS_AVAILABLE == 5 set as below.

        #if UARTS_AVAILABLE == 0
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART3_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART4_RX)
        #elif UARTS_AVAILABLE == 1
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART2_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART3_RX)
        #elif UARTS_AVAILABLE == 2
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART2_RX)
        #elif UARTS_AVAILABLE == 3
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART1_RX)
        #elif UARTS_AVAILABLE == 4
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART3_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
        #elif UARTS_AVAILABLE == 5
            #define DMUX_UART0_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART0_RX)
            #define DMUX_UART1_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART1_RX)
            #define DMUX_UART2_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART2_RX)
            #define DMUX_UART3_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART3_RX)
            #define DMUX_UART4_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_UART4_RX)
            #define DMUX_UART5_RX_CHANNEL (DMAMUX0_CHCFG_SOURCE_LPUART0_RX)
        #endif
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Also, if you want to use Ethernet (#define ETH_INTERFACE) comment out
#define LAN8740_PHY
at line 931 in config.h
so that it works with the PHY on the board (the KSZ8081RMA).
The option to use a LAN8740 PHY was added for a special case and shouldn't be enabled for the standard FRDM-K66F.

The corrections are checked in if you would prefer to pull them from the repository.

Generally, in case of such an issue due to new code it is possible to switch the checked out version to any of the check-ins to wind back to a functional version - or use the GIT log to see what has been changed.

Regards

Mark

0 Kudos