fix lunch params etc.
This commit is contained in:
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -171,7 +171,9 @@
|
||||
"at_surf_f437_board_sdram.h": "c",
|
||||
"fs_types.h": "c",
|
||||
"u_rpc.h": "c",
|
||||
"u_env.h": "c"
|
||||
"u_env.h": "c",
|
||||
"u_app_loader.h": "c",
|
||||
"crt_arch_init.h": "c"
|
||||
},
|
||||
"cortex-debug.showRTOS": false,
|
||||
"cortex-debug.variableUseNaturalFormat": true,
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
message("========use armv7_8.cmake")
|
||||
|
||||
set(CMAKE_C_FLAGS "-mcpu=${CONFIG_ARCH} -Ofast -g3 -mfloat-abi=${CONFIG_FLOAT_TYPE} -mthumb -D=MKRTOS \
|
||||
set(CMAKE_C_FLAGS "-mcpu=${CONFIG_ARCH} -O0 -g3 -mfloat-abi=${CONFIG_FLOAT_TYPE} -mthumb -DMKRTOS \
|
||||
-std=gnu11 -ffunction-sections -fdata-sections -fno-builtin -u=_printf_float \
|
||||
-nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker -mthumb-interwork \
|
||||
-nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker \
|
||||
-fno-stack-protector -Wl,--gc-sections -D__ARM_ARCH_7M__ \
|
||||
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h \
|
||||
" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-mcpu=${CONFIG_ARCH} -Ofast -g3 -mfloat-abi=${CONFIG_FLOAT_TYPE} -mthumb -D=MKRTOS -std=c++11 \
|
||||
set(CMAKE_CXX_FLAGS "-mcpu=${CONFIG_ARCH} -Ofast -g3 -mfloat-abi=${CONFIG_FLOAT_TYPE} -mthumb -DMKRTOS -std=c++11 \
|
||||
-fmessage-length=0 -Xlinker --print-map -Wall -W -fno-stack-protector -g \
|
||||
-u=_printf_float -D__ARM_ARCH_7M__ -mthumb-interwork \
|
||||
-u=_printf_float -D__ARM_ARCH_7M__ \
|
||||
-ffunction-sections -fdata-sections -fno-builtin -nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker \
|
||||
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h \
|
||||
" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_ASM_FLAGS "-mcpu=${CONFIG_ARCH} -Ofast -g3 -mfloat-abi=${CONFIG_FLOAT_TYPE} -mthumb -D=MKRTOS \
|
||||
-u=_printf_float -std=gnu11 -ffunction-sections -fdata-sections -fno-builtin -mthumb-interwork \
|
||||
set(CMAKE_ASM_FLAGS "-mcpu=${CONFIG_ARCH} -Ofast -g3 -mfloat-abi=${CONFIG_FLOAT_TYPE} -mthumb -DMKRTOS \
|
||||
-u=_printf_float -std=gnu11 -ffunction-sections -fdata-sections -fno-builtin \
|
||||
-nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker -fno-stack-protector -D__ARM_ARCH_7M__ \
|
||||
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h \
|
||||
" CACHE STRING "" FORCE)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
ENTRY(Reset_Handler)
|
||||
_estack = 0x20000000 + 0x800000;
|
||||
_estack = 0x20000000 + 0x2000000;
|
||||
_Min_Heap_Size = 0;
|
||||
_Min_Stack_Size = 0x300;
|
||||
MEMORY
|
||||
{
|
||||
RAM (xrw) : ORIGIN = 0x20000000 + 0x800000 - 0x4000, LENGTH = 0x4000 - 0x300
|
||||
RAM (xrw) : ORIGIN = 0x20000000 + 0x2000000 - 0x4000, LENGTH = 0x4000 - 0x300
|
||||
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 0x2000
|
||||
}
|
||||
SECTIONS
|
||||
|
||||
@@ -6,7 +6,7 @@ CONFIG_KNL_INFO=y
|
||||
CONFIG_SYS_TEXT_ADDR=0x8000000
|
||||
CONFIG_SYS_TEXT_SIZE=0x800000
|
||||
CONFIG_SYS_DATA_ADDR=0x20000000
|
||||
CONFIG_SYS_DATA_SIZE=0x800000
|
||||
CONFIG_SYS_DATA_SIZE=0x2000000
|
||||
CONFIG_BOOTSTRAP_TEXT_SIZE=0x2000
|
||||
CONFIG_DTBO_TEXT_SIZE=0x1000
|
||||
CONFIG_KNL_TEXT_SIZE=0x30000
|
||||
@@ -37,77 +37,6 @@ CONFIG_SIG_THREAD_STACK_SIZE=512
|
||||
CONFIG_SIG_THREAD_PRIO=3
|
||||
# end of Sys util config
|
||||
|
||||
#
|
||||
# DFS: device virtual file system
|
||||
#
|
||||
CONFIG_RT_USING_DFS=y
|
||||
CONFIG_DFS_USING_POSIX=y
|
||||
CONFIG_DFS_USING_WORKDIR=y
|
||||
# CONFIG_RT_USING_DFS_MNTTABLE is not set
|
||||
CONFIG_DFS_FD_MAX=16
|
||||
CONFIG_RT_USING_DFS_V1=y
|
||||
# CONFIG_RT_USING_DFS_V2 is not set
|
||||
CONFIG_DFS_FILESYSTEMS_MAX=4
|
||||
CONFIG_DFS_FILESYSTEM_TYPES_MAX=4
|
||||
# CONFIG_RT_USING_DFS_ELMFAT is not set
|
||||
CONFIG_RT_USING_DFS_DEVFS=y
|
||||
# CONFIG_RT_USING_DFS_ROMFS is not set
|
||||
# CONFIG_RT_USING_DFS_CROMFS is not set
|
||||
# CONFIG_RT_USING_DFS_RAMFS is not set
|
||||
# CONFIG_RT_USING_DFS_TMPFS is not set
|
||||
# CONFIG_RT_USING_DFS_MQUEUE is not set
|
||||
# end of DFS: device virtual file system
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
# CONFIG_RT_USING_DM is not set
|
||||
CONFIG_RT_USING_DEVICE_IPC=y
|
||||
CONFIG_RT_UNAMED_PIPE_NUMBER=64
|
||||
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
|
||||
CONFIG_RT_USING_SERIAL=y
|
||||
CONFIG_RT_USING_SERIAL_V1=y
|
||||
# CONFIG_RT_USING_SERIAL_V2 is not set
|
||||
CONFIG_RT_SERIAL_USING_DMA=y
|
||||
CONFIG_RT_SERIAL_RB_BUFSZ=64
|
||||
# CONFIG_RT_USING_CAN is not set
|
||||
# CONFIG_RT_USING_HWTIMER is not set
|
||||
# CONFIG_RT_USING_CPUTIME is not set
|
||||
# CONFIG_RT_USING_I2C is not set
|
||||
# CONFIG_RT_USING_PHY is not set
|
||||
CONFIG_RT_USING_PIN=y
|
||||
# CONFIG_RT_USING_ADC is not set
|
||||
# CONFIG_RT_USING_DAC is not set
|
||||
# CONFIG_RT_USING_NULL is not set
|
||||
# CONFIG_RT_USING_ZERO is not set
|
||||
# CONFIG_RT_USING_RANDOM is not set
|
||||
# CONFIG_RT_USING_PWM is not set
|
||||
# CONFIG_RT_USING_MTD_NOR is not set
|
||||
# CONFIG_RT_USING_MTD_NAND is not set
|
||||
# CONFIG_RT_USING_PM is not set
|
||||
# CONFIG_RT_USING_RTC is not set
|
||||
# CONFIG_RT_USING_SDIO is not set
|
||||
# CONFIG_RT_USING_SPI is not set
|
||||
# CONFIG_RT_USING_WDT is not set
|
||||
# CONFIG_RT_USING_AUDIO is not set
|
||||
# CONFIG_RT_USING_SENSOR is not set
|
||||
# CONFIG_RT_USING_TOUCH is not set
|
||||
# CONFIG_RT_USING_LCD is not set
|
||||
# CONFIG_RT_USING_HWCRYPTO is not set
|
||||
# CONFIG_RT_USING_PULSE_ENCODER is not set
|
||||
# CONFIG_RT_USING_INPUT_CAPTURE is not set
|
||||
# CONFIG_RT_USING_DEV_BUS is not set
|
||||
# CONFIG_RT_USING_WIFI is not set
|
||||
# CONFIG_RT_USING_VIRTIO is not set
|
||||
|
||||
#
|
||||
# Using USB
|
||||
#
|
||||
# CONFIG_RT_USING_USB_HOST is not set
|
||||
# CONFIG_RT_USING_USB_DEVICE is not set
|
||||
# end of Using USB
|
||||
# end of Device Drivers
|
||||
|
||||
CONFIG_CPU_TYPE="stm32f2"
|
||||
CONFIG_RTT_DIR="./"
|
||||
CONFIG_ARCH="cortex-m3"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
ENTRY(Reset_Handler)
|
||||
MEMORY
|
||||
{
|
||||
RAM (arw) : ORIGIN = 0x20000000, LENGTH = 0x800000
|
||||
RAM (arw) : ORIGIN = 0x20000000, LENGTH = 0x2000000
|
||||
FLASH (arx) : ORIGIN = 0x8000000 + 0x2000 + 0x1000, LENGTH = 0x30000
|
||||
}
|
||||
SECTIONS
|
||||
|
||||
@@ -125,7 +125,8 @@ static void uart_hardware_flow_rts(USART_TypeDef *USARTx, uint16_t flow)
|
||||
USARTx->CR3 = (uint16_t)tmpreg;
|
||||
}
|
||||
static uart_t uart = {
|
||||
.baud = 115200};
|
||||
.baud = 115200,
|
||||
};
|
||||
|
||||
uart_t *uart_get_global(void)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
printk("\n%s:%d %s\n", __FILE__, __LINE__, #cond); \
|
||||
dumpstack(); \
|
||||
mm_trace(); \
|
||||
sys_reset(); \
|
||||
/*sys_reset();*/ \
|
||||
while (1) \
|
||||
; \
|
||||
} \
|
||||
|
||||
@@ -7,8 +7,8 @@ if (${ARCH_NAME} STREQUAL "armv7_8m")
|
||||
add_subdirectory(mr)
|
||||
# add_subdirectory(at_device)
|
||||
elseif(${CONFIG_ARCH} STREQUAL "aarch64")
|
||||
add_subdirectory(mkrtos-musl)
|
||||
endif()
|
||||
add_subdirectory(mkrtos-musl)
|
||||
add_subdirectory(sys)
|
||||
add_subdirectory(sys_util)
|
||||
add_subdirectory(util)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "u_sleep.h"
|
||||
static Shell shell;
|
||||
static ShellFs shellFs;
|
||||
static char shellBuffer[256];
|
||||
static char shellBuffer[512];
|
||||
// static char shellPathBuffer[128] = "/";
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w -D_XOPEN_SOURCE=700 ")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -w -D_XOPEN_SOURCE=700 ")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -w -D_XOPEN_SOURCE=700 -Wa,-mimplicit-it=thumb ")
|
||||
|
||||
file(GLOB_RECURSE deps
|
||||
src/*.C
|
||||
|
||||
@@ -7,15 +7,15 @@ _longjmp:
|
||||
longjmp:
|
||||
mov ip,r0
|
||||
movs r0,r1
|
||||
it eq
|
||||
moveq r0,#1
|
||||
ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp}
|
||||
ldmia ip!, {r2,lr}
|
||||
mov sp,r2
|
||||
|
||||
adr r1,1f
|
||||
ldr r2,1f
|
||||
ldr r1,[r1,r2]
|
||||
//adr r1,1f
|
||||
//ldr r2,1f
|
||||
//ldr r1,[r1,r2]
|
||||
mov r1, #0
|
||||
|
||||
#if __ARM_ARCH < 8
|
||||
tst r1,#0x260
|
||||
@@ -23,12 +23,12 @@ longjmp:
|
||||
// HWCAP_ARM_FPA
|
||||
tst r1,#0x20
|
||||
beq 2f
|
||||
// ldc p2, cr4, [ip], #48
|
||||
ldc p2, cr4, [ip], #48
|
||||
#endif
|
||||
2: tst r1,#0x40
|
||||
beq 2f
|
||||
// .fpu vfp
|
||||
// vldmia ip!, {d8-d15}
|
||||
.fpu vfp
|
||||
vldmia ip!, {d8-d15}
|
||||
.fpu softvfp
|
||||
.eabi_attribute 10, 0
|
||||
.eabi_attribute 27, 0
|
||||
@@ -36,12 +36,12 @@ longjmp:
|
||||
// HWCAP_ARM_IWMMXT
|
||||
2: tst r1,#0x200
|
||||
beq 3f
|
||||
// ldcl p1, cr10, [ip], #8
|
||||
// ldcl p1, cr11, [ip], #8
|
||||
// ldcl p1, cr12, [ip], #8
|
||||
// ldcl p1, cr13, [ip], #8
|
||||
// ldcl p1, cr14, [ip], #8
|
||||
// ldcl p1, cr15, [ip], #8
|
||||
ldcl p1, cr10, [ip], #8
|
||||
ldcl p1, cr11, [ip], #8
|
||||
ldcl p1, cr12, [ip], #8
|
||||
ldcl p1, cr13, [ip], #8
|
||||
ldcl p1, cr14, [ip], #8
|
||||
ldcl p1, cr15, [ip], #8
|
||||
#endif
|
||||
2:
|
||||
3: bx lr
|
||||
|
||||
@@ -14,9 +14,10 @@ setjmp:
|
||||
stmia ip!,{r2,lr}
|
||||
mov r0,#0
|
||||
|
||||
adr r1,1f
|
||||
ldr r2,1f
|
||||
ldr r1,[r1,r2]
|
||||
//adr r1,1f
|
||||
//ldr r2,1f
|
||||
//ldr r1,[r1,r2]
|
||||
mov r1, #0
|
||||
|
||||
#if __ARM_ARCH < 8
|
||||
tst r1,#0x260
|
||||
@@ -24,12 +25,12 @@ setjmp:
|
||||
// HWCAP_ARM_FPA
|
||||
tst r1,#0x20
|
||||
beq 2f
|
||||
// stc p2, cr4, [ip], #48
|
||||
stc p2, cr4, [ip], #48
|
||||
#endif
|
||||
2: tst r1,#0x40
|
||||
beq 2f
|
||||
// .fpu vfp
|
||||
// vstmia ip!, {d8-d15}
|
||||
.fpu vfp
|
||||
vstmia ip!, {d8-d15}
|
||||
.fpu softvfp
|
||||
.eabi_attribute 10, 0
|
||||
.eabi_attribute 27, 0
|
||||
@@ -37,12 +38,12 @@ setjmp:
|
||||
// HWCAP_ARM_IWMMXT
|
||||
2: tst r1,#0x200
|
||||
beq 3f
|
||||
// stcl p1, cr10, [ip], #8
|
||||
// stcl p1, cr11, [ip], #8
|
||||
// stcl p1, cr12, [ip], #8
|
||||
// stcl p1, cr13, [ip], #8
|
||||
// stcl p1, cr14, [ip], #8
|
||||
// stcl p1, cr15, [ip], #8
|
||||
stcl p1, cr10, [ip], #8
|
||||
stcl p1, cr11, [ip], #8
|
||||
stcl p1, cr12, [ip], #8
|
||||
stcl p1, cr13, [ip], #8
|
||||
stcl p1, cr14, [ip], #8
|
||||
stcl p1, cr15, [ip], #8
|
||||
#endif
|
||||
2:
|
||||
3: bx lr
|
||||
|
||||
@@ -24,7 +24,11 @@ sd_t fs_open(const char *path, int flags, int mode)
|
||||
|
||||
if (ret < 0)
|
||||
{
|
||||
return ret;
|
||||
ret = ns_query(path, &hd, 0x0);
|
||||
if (ret < 0)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
rpc_ref_file_array_t rpc_path = {
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "cpiofs.h"
|
||||
#include "u_env.h"
|
||||
#include "u_sys.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <elf.h>
|
||||
@@ -125,6 +126,10 @@ int app_load(const char *name, uenv_t *cur_env, pid_t *pid,
|
||||
{
|
||||
return -ENOENT;
|
||||
}
|
||||
// for (int i = 0; i < arg_cn; i++)
|
||||
// {
|
||||
// printf("argv[%d]:%s\n", i, argv[i]);
|
||||
// }
|
||||
int type;
|
||||
umword_t addr;
|
||||
int ret = cpio_find_file((umword_t)sys_info.bootfs_start_addr, (umword_t)(-1), name, NULL, &type, &addr);
|
||||
@@ -254,28 +259,26 @@ int app_load(const char *name, uenv_t *cur_env, pid_t *pid,
|
||||
.rev2 = HANDLER_INVALID,
|
||||
};
|
||||
umword_t *app_env;
|
||||
char *cp_args;
|
||||
char *cp_envp;
|
||||
char *cp_args[8/*FIXME:*/];
|
||||
char *cp_envp[8];
|
||||
size_t params_envp_len = 0;
|
||||
|
||||
app_env = app_stack_push_array(hd_task, &usp_top, (uint8_t *)(&uenv), sizeof(uenv));
|
||||
for (int i = 0; i < arg_cn; i++)
|
||||
{
|
||||
cp_args = app_stack_push_str(hd_task, &usp_top, argv[i]);
|
||||
if ((ALIGN(strlen(argv[i]) + 1, sizeof(void *)) / sizeof(void *)) % 2)
|
||||
{
|
||||
app_stack_push_umword(hd_task, &usp_top, 0);
|
||||
}
|
||||
printf("app_load 1 cp_args:%p\n", cp_args);
|
||||
cp_args[i] = app_stack_push_str(hd_task, &usp_top, argv[i]);
|
||||
params_envp_len += ALIGN(strlen(argv[i]) + 1, sizeof(void *));
|
||||
printf("app_load 1 cp_args:%p\n", cp_args[i]);
|
||||
}
|
||||
for (int i = 0; i < envp_cn; i++)
|
||||
{
|
||||
cp_envp = app_stack_push_str(hd_task, &usp_top, envp[i]);
|
||||
if ((ALIGN(strlen(argv[i]) + 1, sizeof(void *)) / sizeof(void *)) % 2)
|
||||
{
|
||||
app_stack_push_umword(hd_task, &usp_top, 0);
|
||||
}
|
||||
cp_envp[i] = app_stack_push_str(hd_task, &usp_top, envp[i]);
|
||||
params_envp_len += ALIGN(strlen(argv[i]) + 1, sizeof(void *));
|
||||
}
|
||||
if ((umword_t)usp_top & 0x7UL)
|
||||
{
|
||||
usp_top = (umword_t *)((umword_t)usp_top & ~0x7UL);
|
||||
}
|
||||
|
||||
app_stack_push_umword(hd_task, &usp_top, 0);
|
||||
if ((arg_cn + envp_cn) & 0x1) // 参数是奇数是,多添加一个
|
||||
{
|
||||
@@ -289,31 +292,15 @@ int app_load(const char *name, uenv_t *cur_env, pid_t *pid,
|
||||
app_stack_push_umword(hd_task, &usp_top, (umword_t)AT_PAGESZ);
|
||||
|
||||
app_stack_push_umword(hd_task, &usp_top, 0);
|
||||
for (int i = 0; i < envp_cn; i++)
|
||||
for (int i = envp_cn - 1; i >= 0; i--)
|
||||
{
|
||||
app_stack_push_umword(hd_task, &usp_top, (umword_t)cp_envp);
|
||||
cp_envp += ALIGN(strlen(envp[i]), sizeof(void *));
|
||||
if ((ALIGN(strlen(envp[i]) + 1, sizeof(void *)) / sizeof(void *)) % 2)
|
||||
{
|
||||
cp_envp += sizeof(void *);
|
||||
}
|
||||
app_stack_push_umword(hd_task, &usp_top, (umword_t)cp_envp[i]);
|
||||
}
|
||||
if (arg_cn)
|
||||
app_stack_push_umword(hd_task, &usp_top, 0);
|
||||
for (int i = arg_cn - 1; i >= 0; i--)
|
||||
{
|
||||
app_stack_push_umword(hd_task, &usp_top, 0);
|
||||
for (int i = 0; i < arg_cn; i++)
|
||||
{
|
||||
if (i != 0)
|
||||
{
|
||||
if ((ALIGN(strlen(argv[i]) + 1, sizeof(void *)) / sizeof(void *)) % 2)
|
||||
{
|
||||
cp_args += sizeof(void *);
|
||||
}
|
||||
}
|
||||
printf("app_load 2 cp_args:%p\n", cp_args);
|
||||
app_stack_push_umword(hd_task, &usp_top, (umword_t)cp_args);
|
||||
cp_args += ALIGN(strlen(argv[i]) + 1, sizeof(void *));
|
||||
}
|
||||
printf("app_load 2 cp_args:%p\n", cp_args[i]);
|
||||
app_stack_push_umword(hd_task, &usp_top, (umword_t)cp_args[i]);
|
||||
}
|
||||
app_stack_push_umword(hd_task, &usp_top, arg_cn);
|
||||
|
||||
|
||||
@@ -2,5 +2,5 @@ cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
|
||||
add_subdirectory(cpiofs)
|
||||
# add_subdirectory(fatfs)
|
||||
add_subdirectory(fatfs)
|
||||
# add_subdirectory(lxext4)
|
||||
|
||||
@@ -66,8 +66,8 @@ add_custom_target(
|
||||
${CMAKE_SIZE} fatfs.elf
|
||||
COMMAND
|
||||
mkdir -p ${CMAKE_SOURCE_DIR}/build/output/cpio
|
||||
# COMMAND
|
||||
# cp fatfs.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/fatfs
|
||||
COMMAND
|
||||
cp fatfs.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/fatfs
|
||||
COMMAND
|
||||
cp fatfs.elf ${CMAKE_SOURCE_DIR}/build/output/cpio/fatfs.elf
|
||||
)
|
||||
|
||||
@@ -3,13 +3,22 @@
|
||||
#include "u_rpc_svr.h"
|
||||
#include "u_prot.h"
|
||||
#include "u_env.h"
|
||||
#include "u_drv.h"
|
||||
#include "cons_cli.h"
|
||||
#include "fs_rpc.h"
|
||||
#include <ff.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <u_fast_ipc.h>
|
||||
#define STACK_COM_ITME_SIZE (2048)
|
||||
ATTR_ALIGN(8)
|
||||
uint8_t stack_coms[STACK_COM_ITME_SIZE];
|
||||
uint8_t msg_buf_coms[MSG_BUG_LEN];
|
||||
void fast_ipc_init(void)
|
||||
{
|
||||
u_fast_ipc_init(stack_coms, msg_buf_coms, 1, STACK_COM_ITME_SIZE);
|
||||
}
|
||||
|
||||
static FATFS fs;
|
||||
static MKFS_PARM defopt = {FM_ANY, 0, 0, 0};
|
||||
|
||||
@@ -17,6 +26,7 @@ int main(int args, char *argv[])
|
||||
{
|
||||
obj_handler_t hd;
|
||||
int ret;
|
||||
fast_ipc_init();
|
||||
|
||||
ret = rpc_meta_init(THREAD_MAIN, &hd);
|
||||
assert(ret >= 0);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#define STACK_SIZE (2 * 1024) //(1024 + 256)
|
||||
#else
|
||||
#define HEAP_SIZE (2 * 1024)
|
||||
#define STACK_SIZE (4 * 1024) //(1024 + 256)
|
||||
#define STACK_SIZE (3 * 1024) //(1024 + 256)
|
||||
#endif
|
||||
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
#include <u_hd_man.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define CMD_LEN 64 //!< 命令行最大长度
|
||||
#define CMD_PARAMS_CN 8 //!< 参数个数
|
||||
#define CMD_PARAMS_ITEM_LEN 16 //!< 每个参数的最大长度
|
||||
#include <parse_cfg.h>
|
||||
static char cmd_line[CMD_LEN]; //!< 命令行
|
||||
static char cmd_params[CMD_PARAMS_CN][CMD_PARAMS_ITEM_LEN]; //!< 参数数组
|
||||
static int cmd_params_off[CMD_PARAMS_CN]; //!< 参数偏移量
|
||||
@@ -79,6 +77,8 @@ static int parse_cfg_cmd_line(void)
|
||||
{
|
||||
cmd_line[i] = 0;
|
||||
mem_block = atol(&cmd_line[i + 1]); // 获取应用使用的内存块
|
||||
cmd_params_num--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return mem_block;
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
*/
|
||||
|
||||
#include <u_env.h>
|
||||
|
||||
#define CMD_LEN 64 //!< 命令行最大长度
|
||||
#define CMD_PARAMS_CN 8 //!< 参数个数
|
||||
#define CMD_PARAMS_ITEM_LEN 16 //!< 每个参数的最大长度
|
||||
void parse_cfg_init(void);
|
||||
int parse_cfg(const char *parse_cfg_file_name, uenv_t *env);
|
||||
|
||||
@@ -18,10 +18,12 @@
|
||||
#include "u_hd_man.h"
|
||||
#include "u_sig.h"
|
||||
#include "pm.h"
|
||||
#include "parse_cfg.h"
|
||||
#include <errno.h>
|
||||
#include <malloc.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
static pm_t pm;
|
||||
|
||||
void pm_init(void)
|
||||
@@ -210,13 +212,27 @@ int pm_rpc_run_app(const char *path, int flags, char *params, int params_len)
|
||||
pid_t pid;
|
||||
int ret;
|
||||
printf("pm run %s.\n", path);
|
||||
char *args[] = {
|
||||
char *args[CMD_PARAMS_CN] = {
|
||||
(char *)path,
|
||||
NULL, /*TODO:支持传递参数*/
|
||||
};
|
||||
obj_handler_t sem;
|
||||
int i;
|
||||
int j = 0;
|
||||
|
||||
ret = app_load(path, u_get_global_env(), &pid, args, 1, NULL, 0, &sem, 0);
|
||||
for (i = 1; *params && i < CMD_PARAMS_CN; i++)
|
||||
{
|
||||
if (j >= params_len)
|
||||
{
|
||||
break;
|
||||
}
|
||||
args[i] = params;
|
||||
printf("params[%d]: %s\n", i, params);
|
||||
j += strlen(params) + 1;
|
||||
params += strlen(params) + 1;
|
||||
}
|
||||
|
||||
ret = app_load(path, u_get_global_env(), &pid, args, i,
|
||||
NULL, 0, &sem, 0);
|
||||
if (ret > 0)
|
||||
{
|
||||
if (!(flags & PM_APP_BG_RUN))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include <u_util.h>
|
||||
#if !IS_ENABLED(CONFIG_MMU)
|
||||
#define HEAP_SIZE 32 * 1024
|
||||
#define STACK_SIZE (3 * 1024)
|
||||
#define HEAP_SIZE 16 * 1024
|
||||
#define STACK_SIZE (2 * 1024)
|
||||
|
||||
#if defined(__CC_ARM)
|
||||
#define HEAP_ATTR SECTION("HEAP") __attribute__((zero_init))
|
||||
|
||||
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
add_subdirectory(coremark)
|
||||
add_subdirectory(tinycc-arm-thumb)
|
||||
add_subdirectory(app_test)
|
||||
add_subdirectory(test)
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_BOARD_NAME})
|
||||
add_subdirectory(${CONFIG_BOARD_NAME})
|
||||
endif()
|
||||
|
||||
@@ -7,12 +7,12 @@ file(
|
||||
)
|
||||
|
||||
add_executable(
|
||||
app_test.elf
|
||||
tst.elf
|
||||
${deps}
|
||||
${START_SRC}
|
||||
)
|
||||
target_link_libraries(
|
||||
app_test.elf
|
||||
tst.elf
|
||||
PUBLIC
|
||||
-Bstatic
|
||||
${LIBC_NAME}
|
||||
@@ -26,7 +26,7 @@ target_link_libraries(
|
||||
${GCC_LIB_PATH}/libgcc.a
|
||||
)
|
||||
target_include_directories(
|
||||
app_test.elf
|
||||
tst.elf
|
||||
PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_svr/inc
|
||||
@@ -38,31 +38,31 @@ target_include_directories(
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_user/user/drv/lib/mk_display
|
||||
)
|
||||
add_dependencies(
|
||||
app_test.elf
|
||||
tst.elf
|
||||
${START_LIB}
|
||||
sys
|
||||
sys_util
|
||||
)
|
||||
set_target_properties(
|
||||
app_test.elf PROPERTIES LINK_FLAGS
|
||||
tst.elf PROPERTIES LINK_FLAGS
|
||||
"-T ${CMAKE_CURRENT_LIST_DIR}/${ARCH_NAME}/link.lds ${CORTEX_M_LINK_FLAGS} --gc-section -no-dynamic-linker "
|
||||
#--no-warn-rwx-segments
|
||||
)
|
||||
add_custom_target(
|
||||
app_test_dump ALL
|
||||
tst_dump ALL
|
||||
COMMAND
|
||||
${CMAKE_OBJDUMP} -s -S app_test.elf > ${CMAKE_SOURCE_DIR}/build/output/app_test.S
|
||||
${CMAKE_OBJDUMP} -s -S tst.elf > ${CMAKE_SOURCE_DIR}/build/output/tst.S
|
||||
COMMAND
|
||||
${CMAKE_READELF} -a app_test.elf > ${CMAKE_SOURCE_DIR}/build/output/app_test.txt
|
||||
${CMAKE_READELF} -a tst.elf > ${CMAKE_SOURCE_DIR}/build/output/tst.txt
|
||||
COMMAND
|
||||
${CMAKE_OBJCOPY} -O binary -S app_test.elf app_test.bin
|
||||
${CMAKE_OBJCOPY} -O binary -S tst.elf tst.bin
|
||||
COMMAND
|
||||
${CMAKE_SIZE} app_test.elf
|
||||
${CMAKE_SIZE} tst.elf
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy app_test.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/app_test
|
||||
${CMAKE_COMMAND} -E copy tst.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/tst
|
||||
COMMAND
|
||||
cp app_test.elf ${CMAKE_SOURCE_DIR}/build/output/app_test.elf
|
||||
cp tst.elf ${CMAKE_SOURCE_DIR}/build/output/tst.elf
|
||||
)
|
||||
|
||||
add_dependencies(app_test_dump app_test.elf)
|
||||
add_dependencies(tst_dump tst.elf)
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
printf("%s init..\n", argv[0]);
|
||||
for (int i = 0; i < argc; i++)
|
||||
{
|
||||
printf("argv[%d]: %s\n", i, argv[i]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -76,6 +76,8 @@ add_custom_target(
|
||||
${CMAKE_SIZE} tcc.elf
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy tcc.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/tcc
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy tcc.elf ${CMAKE_SOURCE_DIR}/build/output/tcc.elf
|
||||
|
||||
)
|
||||
if ((DEFINED CONFIG_ELF_LAUNCH) AND (CONFIG_ELF_LAUNCH STREQUAL "y"))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
#define HEAP_SIZE 1024*1024*3
|
||||
#define STACK_SIZE 8192
|
||||
#define HEAP_SIZE (1024*1024*8)
|
||||
#define STACK_SIZE (8192)
|
||||
|
||||
#if defined(__CC_ARM)
|
||||
#define HEAP_ATTR SECTION("HEAP") __attribute__((zero_init))
|
||||
|
||||
@@ -255,11 +255,11 @@ char *fake_argv[] = {
|
||||
"-nostdinc",
|
||||
"-nostdlib",
|
||||
"-c",
|
||||
"/mnt/1.c",
|
||||
"/bin/1.c",
|
||||
"-o",
|
||||
"/mnt/a.out"
|
||||
};
|
||||
|
||||
//tcc -nostdinc -nostdlib -c /bin/1.c -o /mnt/a.out
|
||||
int main(int argc0, char **argv0)
|
||||
{
|
||||
TCCState *s, *s1;
|
||||
@@ -270,9 +270,13 @@ int main(int argc0, char **argv0)
|
||||
char **argv;
|
||||
FILE *ppfp = stdout;
|
||||
|
||||
for(int i=0;i<argc0;i++)
|
||||
{
|
||||
printf("%s \n", argv0[i]);
|
||||
}
|
||||
printf("\n");
|
||||
redo:
|
||||
// argc = argc0, argv = argv0;
|
||||
argc = 7, argv = fake_argv;
|
||||
argc = argc0, argv = argv0;
|
||||
s = s1 = tcc_new();
|
||||
opt = tcc_parse_args(s, &argc, &argv, 1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user