forked from xuos/xiuos
add armv8 compile suppout to lwip
This commit is contained in:
parent
525e02c275
commit
dca029936f
|
@ -43,9 +43,9 @@ INC_DIR = -I$(KERNEL_ROOT)/services/shell/letter-shell \
|
||||||
-I$(KERNEL_ROOT)/services/app
|
-I$(KERNEL_ROOT)/services/app
|
||||||
|
|
||||||
ifeq ($(BOARD), imx6q-sabrelite)
|
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
|
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
|
endif
|
||||||
../tools/mkfs/mkfs ./fs.img $^
|
../tools/mkfs/mkfs ./fs.img $^
|
||||||
@mv $(filter-out readme.txt, $^) bin
|
@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}
|
@${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs}
|
||||||
@${objdump} -S $@ > $@.asm
|
@${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
|
# 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}
|
# @${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs}
|
||||||
@${objdump} -S $@ > $@.asm
|
# @${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
|
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}
|
@${ld} ${user_ldflags} -e main -o $@ $^ ${board_specs}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
SRC_DIR := hal
|
SRC_DIR :=
|
||||||
|
|
||||||
include $(KERNEL_ROOT)/compiler.mk
|
include $(KERNEL_ROOT)/compiler.mk
|
|
@ -1,23 +1,28 @@
|
||||||
ifeq ($(BOARD), imx6q-sabrelite)
|
ifeq ($(BOARD), imx6q-sabrelite)
|
||||||
toolchain ?= arm-none-eabi-
|
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
|
endif
|
||||||
|
|
||||||
ifeq ($(BOARD), zynq7000-zc702)
|
ifeq ($(BOARD), zynq7000-zc702)
|
||||||
toolchain ?= arm-xilinx-eabi-
|
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
|
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
|
cc = ${toolchain}gcc
|
||||||
ld = ${toolchain}g++
|
ld = ${toolchain}g++
|
||||||
objdump = ${toolchain}objdump
|
objdump = ${toolchain}objdump
|
||||||
user_ldflags = -N -Ttext 0
|
c_useropts = -O2
|
||||||
|
|
||||||
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 = -O0
|
c_useropts = -O0
|
||||||
|
|
||||||
INC_DIR = -I$(KERNEL_ROOT)/services/app \
|
INC_DIR = -I$(KERNEL_ROOT)/services/app \
|
||||||
|
|
|
@ -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 */
|
/* Get the pointer on the ith member of the Rx Desc list */
|
||||||
desc = rxDescs + i;
|
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->des1 = 0;
|
||||||
desc->des2 = 0;
|
desc->des2 = 0;
|
||||||
desc->des3 = GMAC_DESC3_OWN | GMAC_DESC3_BUF1V | GMAC_DESC3_IOC;
|
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 |= (rxFifosz << DMA_CH0_RX_CONTROL_RBSZ_SHIFT) & DMA_CH0_RX_CONTROL_RBSZ_MASK;
|
||||||
value = value | (8 << DMA_CH0_RX_CONTROL_RXPBL_SHIFT);
|
value = value | (8 << DMA_CH0_RX_CONTROL_RXPBL_SHIFT);
|
||||||
WRITE_REG(pGMAC->pReg->DMA_CH0_RX_CONTROL, value);
|
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,
|
WRITE_REG(pGMAC->pReg->DMA_CH0_RXDESC_TAIL_POINTER,
|
||||||
(uint32_t)(pGMAC->rxDescs + pGMAC->rxSize));
|
(uint64_t)(pGMAC->rxDescs + pGMAC->rxSize));
|
||||||
|
|
||||||
/* init tx chan */
|
/* init tx chan */
|
||||||
value = READ_REG(pGMAC->pReg->DMA_CH0_TX_CONTROL);
|
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;
|
value |= DMA_CH0_TX_CONTROL_OSF;
|
||||||
WRITE_REG(pGMAC->pReg->DMA_CH0_TX_CONTROL, value);
|
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_LIST_ADDRESS, (uint64_t)pGMAC->txDescs);
|
||||||
WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_TAIL_POINTER, (uint32_t)pGMAC->txDescs);
|
WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_TAIL_POINTER, (uint64_t)pGMAC->txDescs);
|
||||||
|
|
||||||
HAL_GMAC_WriteHWAddr(pGMAC, addr);
|
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->txDescIdx %= pGMAC->txSize;
|
pGMAC->txDescIdx %= pGMAC->txSize;
|
||||||
|
|
||||||
desc->des0 = (uint32_t)packet;
|
desc->des0 = (uint64_t)packet;
|
||||||
desc->des1 = 0;
|
desc->des1 = 0;
|
||||||
desc->des2 = length;
|
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;
|
desc->des3 = GMAC_DESC3_OWN | GMAC_DESC3_FD | GMAC_DESC3_LD;
|
||||||
|
|
||||||
WRITE_REG(pGMAC->pReg->DMA_CH0_TXDESC_TAIL_POINTER,
|
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++) {
|
for (i = 0; i < 1000000; i++) {
|
||||||
if (!(desc->des3 & GMAC_DESC3_OWN)) {
|
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 */
|
/* Get the pointer on the ith member of the Tx Desc list */
|
||||||
desc = pGMAC->rxDescs + pGMAC->rxDescIdx;
|
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));
|
HAL_GMAC_MAX_PACKET_SIZE));
|
||||||
desc->des1 = 0;
|
desc->des1 = 0;
|
||||||
desc->des2 = 0;
|
desc->des2 = 0;
|
||||||
desc->des3 = GMAC_DESC3_OWN | GMAC_DESC3_BUF1V | GMAC_DESC3_IOC;
|
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->rxDescIdx %= pGMAC->rxSize;
|
pGMAC->rxDescIdx %= pGMAC->rxSize;
|
||||||
|
|
|
@ -105,7 +105,6 @@ static uint8_t dstAddr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||||
#if defined(HAL_GMAC_MODULE_ENABLED) && defined(SOC_RK3568)
|
#if defined(HAL_GMAC_MODULE_ENABLED) && defined(SOC_RK3568)
|
||||||
static struct GMAC_ETH_CONFIG ethConfigTable[] =
|
static struct GMAC_ETH_CONFIG ethConfigTable[] =
|
||||||
{
|
{
|
||||||
#ifdef HAL_GMAC0
|
|
||||||
{
|
{
|
||||||
.halDev = &g_gmac0Dev,
|
.halDev = &g_gmac0Dev,
|
||||||
.mode = PHY_INTERFACE_MODE_RGMII,
|
.mode = PHY_INTERFACE_MODE_RGMII,
|
||||||
|
@ -121,7 +120,6 @@ static struct GMAC_ETH_CONFIG ethConfigTable[] =
|
||||||
.txDelay = 0x3C,
|
.txDelay = 0x3C,
|
||||||
.rxDelay = 0x2f,
|
.rxDelay = 0x2f,
|
||||||
},
|
},
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAL_GMAC1
|
#ifdef HAL_GMAC1
|
||||||
{
|
{
|
||||||
|
@ -143,46 +141,9 @@ static struct GMAC_ETH_CONFIG ethConfigTable[] =
|
||||||
};
|
};
|
||||||
#endif
|
#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
|
#endif
|
||||||
|
|
||||||
/********************* Private Function Definition ***************************/
|
/********************* Private Function Definition ***************************/
|
||||||
|
@ -226,7 +187,7 @@ static void print_desc(struct GMAC_HANDLE *pGMAC)
|
||||||
for (nIndex = 0; nIndex < pGMAC->rxSize; nIndex++) {
|
for (nIndex = 0; nIndex < pGMAC->rxSize; nIndex++) {
|
||||||
desc = pGMAC->rxDescs + nIndex;
|
desc = pGMAC->rxDescs + nIndex;
|
||||||
printf("rx_desc[%d]@0x%08lx={0x%lx, 0x%lx, 0x%lx, 0x%lx};\n",
|
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++) {
|
for (nIndex = 0; nIndex < pGMAC->txSize; nIndex++) {
|
||||||
desc = pGMAC->txDescs + nIndex;
|
desc = pGMAC->txDescs + nIndex;
|
||||||
printf("tx_desc[%d]@0x%08lx={0x%lx, 0x%lx, 0x%lx, 0x%lx};\n",
|
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;
|
int status;
|
||||||
|
|
||||||
status = HAL_GMAC_MDIOWrite(pGMAC, pGMAC->phyConfig.phyAddress, phyReg, data);
|
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);
|
ptr = malloc(align_size);
|
||||||
if (ptr != NULL) {
|
if (ptr != NULL) {
|
||||||
/* the allocated memory block is aligned */
|
/* the allocated memory block is aligned */
|
||||||
if (((uint32_t)ptr & (align - 1)) == 0) {
|
if (((uint64_t)ptr & (align - 1)) == 0) {
|
||||||
align_ptr = (void *)((uint32_t)ptr + align);
|
align_ptr = (void *)((uint64_t)ptr + align);
|
||||||
} else {
|
} 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 */
|
/* 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;
|
ptr = align_ptr;
|
||||||
}
|
}
|
||||||
|
@ -496,7 +457,7 @@ static void free_align(void *ptr)
|
||||||
{
|
{
|
||||||
void *real_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);
|
free(real_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -534,7 +495,7 @@ static HAL_Status GMAC_Send_Test(struct GMAC_ETH_CONFIG *eth, struct GMAC_HANDLE
|
||||||
/* dump packages */
|
/* dump packages */
|
||||||
Dump_Hex("Tx", ptr, len);
|
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);
|
status = HAL_GMAC_Send(pGMAC, ptr, len);
|
||||||
if (status) {
|
if (status) {
|
||||||
printf("GMAC send failed: %d\n", 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) {
|
if (size > 0 && ptr) {
|
||||||
/* dump packages */
|
/* dump packages */
|
||||||
Dump_Hex("Rx", ptr, size);
|
Dump_Hex("Rx", ptr, size);
|
||||||
HAL_DCACHE_InvalidateByRange((uint32_t)ptr, size);
|
HAL_DCACHE_InvalidateByRange((uint64_t)ptr, size);
|
||||||
HAL_GMAC_CleanRX(pGMAC);
|
HAL_GMAC_CleanRX(pGMAC);
|
||||||
} else {
|
} else {
|
||||||
printf("GMAC recv failed: %ld\n", size);
|
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->txDescs, 0, GMAC_DESC_TX_SIZE);
|
||||||
|
|
||||||
memset(eth->rxBuff, 0, GMAC_RX_BUFFER_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);
|
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_DMARxDescInit(pGMAC, eth->rxDescs, eth->rxBuff, GMAC_DESCRIPTORS_RX);
|
||||||
HAL_GMAC_DMATxDescInit(pGMAC, eth->txDescs, eth->txBuff, GMAC_DESCRIPTORS_TX);
|
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();
|
GMAC0_Iomux_Config();
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -727,7 +688,7 @@ static void GMAC_Iomux_Config(uint8_t id)
|
||||||
|
|
||||||
/*************************** GMAC TEST MAIN ****************************/
|
/*************************** GMAC TEST MAIN ****************************/
|
||||||
|
|
||||||
void main() {
|
int main() {
|
||||||
struct GMAC_ETH_CONFIG *eth;
|
struct GMAC_ETH_CONFIG *eth;
|
||||||
struct GMAC_HANDLE *pGMAC;
|
struct GMAC_HANDLE *pGMAC;
|
||||||
int32_t bus, num = 0, i;
|
int32_t bus, num = 0, i;
|
||||||
|
@ -743,7 +704,7 @@ void main() {
|
||||||
if (eth) {
|
if (eth) {
|
||||||
pGMAC = ð->instance;
|
pGMAC = ð->instance;
|
||||||
} else {
|
} else {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ionmux */
|
/* ionmux */
|
||||||
|
@ -790,5 +751,6 @@ void main() {
|
||||||
free_align(eth->txBuff);
|
free_align(eth->txBuff);
|
||||||
free_align(eth->rxBuff);
|
free_align(eth->rxBuff);
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,20 +52,12 @@ __STATIC_FORCEINLINE void __set_ACTLR(uint32_t actlr)
|
||||||
/** \brief Get CPACR
|
/** \brief Get CPACR
|
||||||
\return Coprocessor Access Control register value
|
\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
|
/** \brief Set CPACR
|
||||||
\param [in] cpacr Coprocessor Access Control value to set
|
\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
|
/** \brief Get DFSR
|
||||||
\return Data Fault Status Register value
|
\return Data Fault Status Register value
|
||||||
|
|
|
@ -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 = -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
|
#cflags = -Wall -g -std=c11
|
||||||
endif
|
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
|
cc = ${toolchain}gcc
|
||||||
ld = ${toolchain}g++
|
ld = ${toolchain}g++
|
||||||
objdump = ${toolchain}objdump
|
objdump = ${toolchain}objdump
|
||||||
|
|
||||||
c_useropts = -O2
|
c_useropts = -O2
|
||||||
|
|
||||||
INC_DIR = -I$(KERNEL_ROOT)/services/net/libnet \
|
INC_DIR = -I$(KERNEL_ROOT)/services/net/libnet \
|
||||||
|
|
|
@ -10,6 +10,14 @@ cflags = -std=c11 -march=armv7-a -mtune=cortex-a9 -nostdlib -nodefaultlibs -mflo
|
||||||
board_specs = stub.o
|
board_specs = stub.o
|
||||||
#cflags = -Wall -g -std=c11
|
#cflags = -Wall -g -std=c11
|
||||||
endif
|
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
|
cc = ${toolchain}gcc
|
||||||
ld = ${toolchain}g++
|
ld = ${toolchain}g++
|
||||||
objdump = ${toolchain}objdump
|
objdump = ${toolchain}objdump
|
||||||
|
|
Loading…
Reference in New Issue