diff --git a/Ubiquitous/XiZi_AIoT/services/app/Makefile b/Ubiquitous/XiZi_AIoT/services/app/Makefile index ba504d2ca..650748f2d 100644 --- a/Ubiquitous/XiZi_AIoT/services/app/Makefile +++ b/Ubiquitous/XiZi_AIoT/services/app/Makefile @@ -43,9 +43,9 @@ INC_DIR = -I$(KERNEL_ROOT)/services/shell/letter-shell \ -I$(KERNEL_ROOT)/services/app ifeq ($(BOARD), imx6q-sabrelite) -all: init test_fault simple_client simple_server shell fs_server semaphore_server test_semaphore test_ipc_null test_thread test_irq_hdlr test_irq_block test_irq_send eth_driver epit_server test_net lwip ethernet readme.txt | bin +all: init test_fault simple_client simple_server shell fs_server semaphore_server test_semaphore test_ipc_null test_thread test_irq_hdlr test_irq_block test_irq_send eth_driver epit_server test_net lwip readme.txt | bin else -all: init test_fault simple_client simple_server shell fs_server semaphore_server test_ipc_null test_thread test_semaphore readme.txt | bin +all: init test_fault simple_client simple_server shell fs_server semaphore_server test_ipc_null test_thread test_semaphore test_net lwip readme.txt | bin endif ../tools/mkfs/mkfs ./fs.img $^ @mv $(filter-out readme.txt, $^) bin @@ -64,9 +64,9 @@ eth_driver: enet_drv.o enet_test.o board_network.o enet_iomux_config.o imx6dq_gp @${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs} @${objdump} -S $@ > $@.asm -ethernet: test_gmac.o hal_gmac.o hal_gmac_3568.o hal_base.o hal_bsp.o hal_pinctrl_v2.o hal_cru.o hal_cache.o hal_gpio.o hal_timer.o hal_cru_rk3568.o system_rk3568.o hal_debug.o libserial.o printf.o libmem.o usyscall.o arch_usyscall.o session.o libipc.o - @${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs} - @${objdump} -S $@ > $@.asm +# ethernet: test_gmac.o hal_gmac.o hal_gmac_3568.o hal_base.o hal_bsp.o hal_pinctrl_v2.o hal_cru.o hal_cache.o hal_gpio.o hal_timer.o hal_cru_rk3568.o system_rk3568.o hal_debug.o libserial.o printf.o libmem.o usyscall.o arch_usyscall.o session.o libipc.o +# @${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs} +# @${objdump} -S $@ > $@.asm epit_server: timer.o epit.o ccm_pll.o usyscall.o arch_usyscall.o libserial.o printf.o libipc.o session.o @${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs} diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/Makefile b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/Makefile index 2c285fffa..01dfbf56d 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/Makefile +++ b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/Makefile @@ -1,4 +1,4 @@ -SRC_DIR := hal +SRC_DIR := include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/Makefile b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/Makefile index 8a19c2829..f90e91017 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/Makefile +++ b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/Makefile @@ -1,23 +1,28 @@ ifeq ($(BOARD), imx6q-sabrelite) toolchain ?= arm-none-eabi- +user_ldflags = --specs=nosys.specs -Wl,-Map=user.map,-cref -N +cflags = -std=c11 -O2 -march=armv7-a -mtune=cortex-a9 -nostdlib -nodefaultlibs -mfloat-abi=soft -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie endif + ifeq ($(BOARD), zynq7000-zc702) toolchain ?= arm-xilinx-eabi- +user_ldflags = -Wl,--start-group,-lgcc,-lc,--end-group -N +cflags = -std=c11 -O2 -march=armv7-a -mtune=cortex-a9 -nostdlib -nodefaultlibs -mfloat-abi=soft -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie +board_specs = stub.o +#cflags = -Wall -g -std=c11 endif + +ifeq ($(BOARD), ok1028a-c) +toolchain ?= aarch64-none-elf- +user_ldflags = -N -Ttext 0 +cflags = -g -std=c11 -mtune=cortex-a72 -nostdlib -nodefaultlibs -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -fno-omit-frame-pointer -fno-stack-protector -fno-pie +board_specs = stub.o +endif + cc = ${toolchain}gcc ld = ${toolchain}g++ objdump = ${toolchain}objdump -user_ldflags = -N -Ttext 0 - -cflags = -std=c11 -g -march=armv7-a -mtune=cortex-a9 \ - -Wno-unused -Wno-format -fno-common -ffreestanding -fno-builtin -static \ - -Wno-unaligned-access -fdce -Wall -Werror -Wno-uninitialized -Wno-strict-aliasing -fdiagnostics-show-option \ - -mapcs -marm -mfpu=neon -ftree-vectorize -fno-math-errno -funsafe-math-optimizations -fno-signed-zeros -mfloat-abi=softfp \ - -fno-omit-frame-pointer -fno-stack-protector -fno-pie - -# cflags = -std=c11 -march=armv7-a -mtune=cortex-a9 -nostdlib -nodefaultlibs -mfloat-abi=soft -fno-pic \ -# -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie - +c_useropts = -O2 c_useropts = -O0 INC_DIR = -I$(KERNEL_ROOT)/services/app \ diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/hal_gmac.c b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/hal_gmac.c index 1d8cb32a7..ccd9c5dac 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/hal_gmac.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/hal_gmac.c @@ -1577,7 +1577,7 @@ HAL_Status HAL_GMAC_DMARxDescInit(struct GMAC_HANDLE *pGMAC, /* Get the pointer on the ith member of the Rx Desc list */ desc = rxDescs + i; - desc->des0 = (uint32_t)(rxBuff + i * HAL_GMAC_MAX_PACKET_SIZE); + desc->des0 = (uint64_t)(rxBuff + i * HAL_GMAC_MAX_PACKET_SIZE); desc->des1 = 0; desc->des2 = 0; desc->des3 = GMAC_DESC3_OWN | GMAC_DESC3_BUF1V | GMAC_DESC3_IOC; @@ -1787,9 +1787,9 @@ HAL_Status HAL_GMAC_Start(struct GMAC_HANDLE *pGMAC, uint8_t *addr) value |= (rxFifosz << DMA_CH0_RX_CONTROL_RBSZ_SHIFT) & DMA_CH0_RX_CONTROL_RBSZ_MASK; value = value | (8 << DMA_CH0_RX_CONTROL_RXPBL_SHIFT); WRITE_REG(pGMAC->pReg->DMA_CH0_RX_CONTROL, value); - WRITE_REG(pGMAC->pReg->DMA_CH0_RXDESC_LIST_ADDRESS, (uint32_t)pGMAC->rxDescs); + WRITE_REG(pGMAC->pReg->DMA_CH0_RXDESC_LIST_ADDRESS, (uint64_t)pGMAC->rxDescs); WRITE_REG(pGMAC->pReg->DMA_CH0_RXDESC_TAIL_POINTER, - (uint32_t)(pGMAC->rxDescs + pGMAC->rxSize)); + (uint64_t)(pGMAC->rxDescs + pGMAC->rxSize)); /* init tx chan */ value = READ_REG(pGMAC->pReg->DMA_CH0_TX_CONTROL); @@ -1797,8 +1797,8 @@ HAL_Status HAL_GMAC_Start(struct GMAC_HANDLE *pGMAC, uint8_t *addr) value |= DMA_CH0_TX_CONTROL_OSF; WRITE_REG(pGMAC->pReg->DMA_CH0_TX_CONTROL, value); - WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_LIST_ADDRESS, (uint32_t)pGMAC->txDescs); - WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_TAIL_POINTER, (uint32_t)pGMAC->txDescs); + WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_LIST_ADDRESS, (uint64_t)pGMAC->txDescs); + WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_TAIL_POINTER, (uint64_t)pGMAC->txDescs); HAL_GMAC_WriteHWAddr(pGMAC, addr); @@ -1978,7 +1978,7 @@ HAL_Status HAL_GMAC_Send(struct GMAC_HANDLE *pGMAC, void *packet, pGMAC->txDescIdx++; pGMAC->txDescIdx %= pGMAC->txSize; - desc->des0 = (uint32_t)packet; + desc->des0 = (uint64_t)packet; desc->des1 = 0; desc->des2 = length; /* @@ -1988,7 +1988,7 @@ HAL_Status HAL_GMAC_Send(struct GMAC_HANDLE *pGMAC, void *packet, desc->des3 = GMAC_DESC3_OWN | GMAC_DESC3_FD | GMAC_DESC3_LD; WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_TAIL_POINTER, - (uint32_t)(pGMAC->txDescs + pGMAC->txDescIdx)); + (uint64_t)(pGMAC->txDescs + pGMAC->txDescIdx)); for (i = 0; i < 1000000; i++) { if (!(desc->des3 & GMAC_DESC3_OWN)) { @@ -2078,12 +2078,12 @@ void HAL_GMAC_CleanRX(struct GMAC_HANDLE *pGMAC) /* Get the pointer on the ith member of the Tx Desc list */ desc = pGMAC->rxDescs + pGMAC->rxDescIdx; - desc->des0 = (uint32_t)(pGMAC->rxBuf + (pGMAC->rxDescIdx * + desc->des0 = (uint64_t)(pGMAC->rxBuf + (pGMAC->rxDescIdx * HAL_GMAC_MAX_PACKET_SIZE)); desc->des1 = 0; desc->des2 = 0; desc->des3 = GMAC_DESC3_OWN | GMAC_DESC3_BUF1V | GMAC_DESC3_IOC; - WRITE_REG(pGMAC->pReg->DMA_CH0_RXDESC_TAIL_POINTER, (uint32_t)desc); + WRITE_REG(pGMAC->pReg->DMA_CH0_RXDESC_TAIL_POINTER, (uint64_t)desc); pGMAC->rxDescIdx++; pGMAC->rxDescIdx %= pGMAC->rxSize; diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/test_gmac.c b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/test_gmac.c index 5baf84ae9..5bc8be88a 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/test_gmac.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/hal/test_gmac.c @@ -105,7 +105,6 @@ static uint8_t dstAddr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; #if defined(HAL_GMAC_MODULE_ENABLED) && defined(SOC_RK3568) static struct GMAC_ETH_CONFIG ethConfigTable[] = { -#ifdef HAL_GMAC0 { .halDev = &g_gmac0Dev, .mode = PHY_INTERFACE_MODE_RGMII, @@ -121,7 +120,6 @@ static struct GMAC_ETH_CONFIG ethConfigTable[] = .txDelay = 0x3C, .rxDelay = 0x2f, }, -#endif #ifdef HAL_GMAC1 { @@ -143,46 +141,9 @@ static struct GMAC_ETH_CONFIG ethConfigTable[] = }; #endif -#if defined(HAL_GMAC1000_MODULE_ENABLED) && defined(SOC_RK3358) -static struct GMAC_ETH_CONFIG ethConfigTable[] = -{ -#ifdef HAL_GMAC0 - { - .halDev = &g_gmacDev, - .mode = PHY_INTERFACE_MODE_RMII, - .maxSpeed = 100, - .speed = 100, - .phyAddr = 0, - .extClk = false, - .resetGpioBank = GPIO2, - .resetGpioNum = GPIO_PIN_B5, - .resetDelayMs = { 0, 50, 50 }, - }, -#endif -}; -#endif -#if defined(HAL_GMAC1000_MODULE_ENABLED) && defined(SOC_RK3308) -static struct GMAC_ETH_CONFIG ethConfigTable[] = -{ -#ifdef HAL_GMAC0 - { - .halDev = &g_gmac0Dev, - .mode = PHY_INTERFACE_MODE_RMII, - .maxSpeed = 100, - .speed = 100, - .phyAddr = 0, - - .extClk = true, - - .resetGpioBank = GPIO4, - .resetGpioNum = GPIO_PIN_C0, - .resetDelayMs = { 0, 50, 50 }, - }, -#endif -}; #endif /********************* Private Function Definition ***************************/ @@ -226,7 +187,7 @@ static void print_desc(struct GMAC_HANDLE *pGMAC) for (nIndex = 0; nIndex < pGMAC->rxSize; nIndex++) { desc = pGMAC->rxDescs + nIndex; printf("rx_desc[%d]@0x%08lx={0x%lx, 0x%lx, 0x%lx, 0x%lx};\n", - nIndex, (uint32_t)desc, desc->des0, desc->des1, desc->des2, desc->des3); + nIndex, (uint64_t)desc, desc->des0, desc->des1, desc->des2, desc->des3); } } @@ -235,7 +196,7 @@ static void print_desc(struct GMAC_HANDLE *pGMAC) for (nIndex = 0; nIndex < pGMAC->txSize; nIndex++) { desc = pGMAC->txDescs + nIndex; printf("tx_desc[%d]@0x%08lx={0x%lx, 0x%lx, 0x%lx, 0x%lx};\n", - nIndex, (uint32_t)desc, desc->des0, desc->des1, desc->des2, desc->des3); + nIndex, (uint64_t)desc, desc->des0, desc->des1, desc->des2, desc->des3); } } } @@ -274,9 +235,9 @@ static void PHY_Read(struct GMAC_HANDLE *pGMAC, uint32_t phyReg) } } -static void PHY_Write(uint32_t phyReg, uint32_t data) +static void PHY_Write(struct GMAC_HANDLE *pGMAC, uint32_t phyReg, uint32_t data) { - struct GMAC_HANDLE *pGMAC; + // struct GMAC_HANDLE *pGMAC; int status; status = HAL_GMAC_MDIOWrite(pGMAC, pGMAC->phyConfig.phyAddress, phyReg, data); @@ -477,14 +438,14 @@ static void *malloc_align(size_t size, size_t align) ptr = malloc(align_size); if (ptr != NULL) { /* the allocated memory block is aligned */ - if (((uint32_t)ptr & (align - 1)) == 0) { - align_ptr = (void *)((uint32_t)ptr + align); + if (((uint64_t)ptr & (align - 1)) == 0) { + align_ptr = (void *)((uint64_t)ptr + align); } else { - align_ptr = (void *)(((uint32_t)ptr + (align - 1)) & ~(align - 1)); + align_ptr = (void *)(((uint64_t)ptr + (align - 1)) & ~(align - 1)); } /* set the pointer before alignment pointer to the real pointer */ - *((uint32_t *)((uint32_t)align_ptr - sizeof(void *))) = (uint32_t)ptr; + *((uint64_t *)((uint64_t)align_ptr - sizeof(void *))) = (uint64_t)ptr; ptr = align_ptr; } @@ -496,7 +457,7 @@ static void free_align(void *ptr) { void *real_ptr; - real_ptr = (void *)*(uint32_t *)((uint32_t)ptr - sizeof(void *)); + real_ptr = (void *)*(uint64_t *)((uint64_t)ptr - sizeof(void *)); free(real_ptr); } @@ -534,7 +495,7 @@ static HAL_Status GMAC_Send_Test(struct GMAC_ETH_CONFIG *eth, struct GMAC_HANDLE /* dump packages */ Dump_Hex("Tx", ptr, len); - HAL_DCACHE_CleanByRange((uint32_t)ptr, len); + HAL_DCACHE_CleanByRange((uint64_t)ptr, len); status = HAL_GMAC_Send(pGMAC, ptr, len); if (status) { printf("GMAC send failed: %d\n", status); @@ -559,7 +520,7 @@ static uint16_t GMAC_Recv_Test(struct GMAC_HANDLE *pGMAC) if (size > 0 && ptr) { /* dump packages */ Dump_Hex("Rx", ptr, size); - HAL_DCACHE_InvalidateByRange((uint32_t)ptr, size); + HAL_DCACHE_InvalidateByRange((uint64_t)ptr, size); HAL_GMAC_CleanRX(pGMAC); } else { printf("GMAC recv failed: %ld\n", size); @@ -590,10 +551,10 @@ static HAL_Status GMAC_Memory_Init(struct GMAC_ETH_CONFIG *eth, struct GMAC_HAND memset(eth->txDescs, 0, GMAC_DESC_TX_SIZE); memset(eth->rxBuff, 0, GMAC_RX_BUFFER_SIZE); - HAL_DCACHE_InvalidateByRange((uint32_t)eth->rxBuff, GMAC_RX_BUFFER_SIZE); + HAL_DCACHE_InvalidateByRange((uint64_t)eth->rxBuff, GMAC_RX_BUFFER_SIZE); memset(eth->txBuff, 0, GMAC_TX_BUFFER_SIZE); - HAL_DCACHE_CleanByRange((uint32_t)eth->txBuff, GMAC_TX_BUFFER_SIZE); + HAL_DCACHE_CleanByRange((uint64_t)eth->txBuff, GMAC_TX_BUFFER_SIZE); HAL_GMAC_DMARxDescInit(pGMAC, eth->rxDescs, eth->rxBuff, GMAC_DESCRIPTORS_RX); HAL_GMAC_DMATxDescInit(pGMAC, eth->txDescs, eth->txBuff, GMAC_DESCRIPTORS_TX); @@ -719,7 +680,7 @@ static void GMAC_Iomux_Config(uint8_t id) GMAC0_Iomux_Config(); // } } -#endif + @@ -727,7 +688,7 @@ static void GMAC_Iomux_Config(uint8_t id) /*************************** GMAC TEST MAIN ****************************/ -void main() { +int main() { struct GMAC_ETH_CONFIG *eth; struct GMAC_HANDLE *pGMAC; int32_t bus, num = 0, i; @@ -743,7 +704,7 @@ void main() { if (eth) { pGMAC = ð->instance; } else { - return; + return -1; } /* ionmux */ @@ -790,5 +751,6 @@ void main() { free_align(eth->txBuff); free_align(eth->rxBuff); } + return 0; } diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/include/cmsis_cp15.h b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/include/cmsis_cp15.h index 891bec2ae..f52f7b2d4 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/include/cmsis_cp15.h +++ b/Ubiquitous/XiZi_AIoT/services/drivers/rk-3568/include/cmsis_cp15.h @@ -52,20 +52,12 @@ __STATIC_FORCEINLINE void __set_ACTLR(uint32_t actlr) /** \brief Get CPACR \return Coprocessor Access Control register value */ -__STATIC_FORCEINLINE uint32_t __get_CPACR(void) -{ - uint32_t result; - __get_CP(15, 0, result, 1, 0, 2); - return result; -} + /** \brief Set CPACR \param [in] cpacr Coprocessor Access Control value to set */ -__STATIC_FORCEINLINE void __set_CPACR(uint32_t cpacr) -{ - __set_CP(15, 0, cpacr, 1, 0, 2); -} + /** \brief Get DFSR \return Data Fault Status Register value diff --git a/Ubiquitous/XiZi_AIoT/services/net/libnet/Makefile b/Ubiquitous/XiZi_AIoT/services/net/libnet/Makefile index 31e958b8d..2d82f5957 100644 --- a/Ubiquitous/XiZi_AIoT/services/net/libnet/Makefile +++ b/Ubiquitous/XiZi_AIoT/services/net/libnet/Makefile @@ -9,10 +9,17 @@ user_ldflags = --start-group,-lgcc,-lc,--end-group cflags = -std=c11 -march=armv7-a -mtune=cortex-a9 -nostdlib -nodefaultlibs -mfloat-abi=soft -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie #cflags = -Wall -g -std=c11 endif + +ifeq ($(BOARD), ok1028a-c) +toolchain ?= aarch64-none-elf- +user_ldflags = -N -Ttext 0 +cflags = -Wall -g -std=c11 -mtune=cortex-a72 -nostdlib -nodefaultlibs -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie +board_specs = stub.o +endif + cc = ${toolchain}gcc ld = ${toolchain}g++ objdump = ${toolchain}objdump - c_useropts = -O2 INC_DIR = -I$(KERNEL_ROOT)/services/net/libnet \ diff --git a/Ubiquitous/XiZi_AIoT/services/net/net_server/lwip.mk b/Ubiquitous/XiZi_AIoT/services/net/net_server/lwip.mk index 035409694..df9b6bd6e 100644 --- a/Ubiquitous/XiZi_AIoT/services/net/net_server/lwip.mk +++ b/Ubiquitous/XiZi_AIoT/services/net/net_server/lwip.mk @@ -10,6 +10,14 @@ cflags = -std=c11 -march=armv7-a -mtune=cortex-a9 -nostdlib -nodefaultlibs -mflo board_specs = stub.o #cflags = -Wall -g -std=c11 endif + +ifeq ($(BOARD), ok1028a-c) +toolchain ?= aarch64-none-elf- +user_ldflags = -N -Ttext 0 +cflags = -Wall -g -std=c11 -mtune=cortex-a72 -nostdlib -nodefaultlibs -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -ggdb -Wno-unused -Werror -fno-omit-frame-pointer -fno-stack-protector -fno-pie +board_specs = $(KERNEL_ROOT)/services/app/stub.o +endif + cc = ${toolchain}gcc ld = ${toolchain}g++ objdump = ${toolchain}objdump