Hi
Which version of the project are you using?
CooCox hasn't been used for some time due to the fact that the IDE doesn't really exist any more. I have V2.0.5 still installed and can build the project for Kinetis parts if I change iic_drv.c to i2c_drv.c in the project files.
fnUpTime() is in the file time_keeper.c -if you have an old version it may be that timer_keeper.c hasn't been added to the CooCox project setup and you can do this by adding the file (that should exist in the /uTasker folder to the CooCox CoIDE project files.
In the lasted uTaskerV1.4 project configuration the target NUCLEO_F746ZG has been foreseen but hasn't been configured - STM32F746G_DISCO can be used but has only basic support at the HW library level but utFAt and the SD card HW interface is available.
There was no STM32F746G_DISCO target for the serial loader but new targets can be quite easy added if there is a reference target in the main (uTaskerV1.4) project. For example, i just added the target to my version as follows:
1. Add the new target in config.h
#define STM32F746G_DISCO // evaluation board with STM32F746NGH6
2. Add its main properties in the same file:
#elif defined STM32F746G_DISCO
#define TARGET_HW "STM32F746-Discovery"
#define _STM32F7XX
#define _STM32F746
#define OUR_HEAP_SIZE (HEAP_REQUIREMENTS)((24 * 1024) * MEM_FACTOR) // we have the LAN buffers in HEAP and big RX/TX
3. Add a processor configuration in app_hw_stm32.h
#elif defined STM32F746G_DISCO // STM32F746NGH6 (216MHz)
#define CRYSTAL_FREQ 25000000
//#define DISABLE_PLL // run from clock source directly
//#define USE_HSI_CLOCK // use internal HSI clock source
#define PLL_INPUT_DIV 25 // 2..64 - should set the input to pll in the range 1..2MHz (with preference near to 2MHz)
#define PLL_VCO_MUL 336 // 64 ..432 where VCO must be 64..432MHz
#define PLL_POST_DIVIDE 2 // post divide VCO by 2, 4, 6, or 8 to get the system clock speed
#define PIN_COUNT PIN_COUNT_216_PIN
#define PACKAGE_TYPE PACKAGE_BGA
#define SIZE_OF_RAM (320 * 1024) // 320k SRAM (DTCM + SRAM1 + SRAM2)
#define SIZE_OF_FLASH (1024 * 1024) // 1M FLASH
#define SUPPLY_VOLTAGE SUPPLY_2_7__3_6 // power supply is in the range 2.7V..3.6V
#define PCLK1_DIVIDE 4
#define PCLK2_DIVIDE 2
#define HCLK_DIVIDE 1
4. Add the board configuration too:
#elif defined STM32F746G_DISCO
#define USER_KEY_BUTTON PORTI_BIT11
#define LED1 PORTI_BIT1 // green LED
#define LED2 PORTI_BIT2 // no further LEDs available on the board
#define LED3 PORTI_BIT3
#define LED4 PORTI_BIT4
#define BLINK_LED LED1
#define INIT_WATCHDOG_LED() _CONFIG_PORT_OUTPUT(I, BLINK_LED, (OUTPUT_SLOW | OUTPUT_PUSH_PULL))
#define TOGGLE_WATCHDOG_LED() _TOGGLE_PORT(I, BLINK_LED) // blink the LED, if set as output
#define INIT_WATCHDOG_DISABLE()
#define WATCHDOG_DISABLE() 0
#define FORCE_BOOT() (_READ_PORT_MASK(I, (USER_KEY_BUTTON))) // hold user key at reset to force boot loader mode
// LEDs
//
// '0' '1' input state center (x, y) 0 = circle, radius, controlling port, controlling pin
#define KEYPAD_LED_DEFINITIONS {RGB(50, 50, 50), RGB(0, 255, 0), 0, {14, 163, 27, 168}, _PORTI, LED1}
#define BUTTON_KEY_DEFINITIONS {_PORTI, USER_KEY_BUTTON, {16, 235, 31, 250}}
#define KEYPAD "../../uTaskerV1.4/Simulator/KeyPads/STM32F746-DISC.bmp"
// Power down the USB controller and disable interrupts before jumping to the application
//
#define RESET_PERIPHERALS() IRQ0_31_CER = 0xffffffff; \
IRQ32_63_CER = 0xffffffff; \
IRQ64_95_CER = 0xffffffff; \
IRQ0_31_CPR = 0xffffffff; \
IRQ32_63_CPR = 0xffffffff; \
IRQ64_95_CPR = 0xffffffff; \
POWER_DOWN(AHB2, RCC_AHB2ENR_OTGFSEN); \
POWER_DOWN(APB2, RCC_APB2ENR_SYSCFGEN); \
SDIO_POWER = SDIO_POWER_POWER_OFF;
5. For SD card operation share the setup with other boards alreadiy using the SD card controller:
#if defined STM3240G_EVAL || defined ST_MB997A_DISCOVERY || defined STM32F746G_DISCO
#define SD_CONTROLLER_AVAILABLE // use SDIO rather than SPI (necessary on STM3240G-EVAL board)
Regards
Mark