Issue compiling uTasker for FRDM-K66F

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Issue compiling uTasker for FRDM-K66F

跳至解决方案
1,279 次查看
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

标签 (1)
0 项奖励
回复
1 解答
1,158 次查看
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 项奖励
回复
1 回复
1,159 次查看
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 项奖励
回复