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
Solved! Go to Solution.
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
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