diff --git a/mkrtos_script/build_at32f437.sh b/mkrtos_script/build_at32f437.sh index 7d34b2514..67fc277e1 100755 --- a/mkrtos_script/build_at32f437.sh +++ b/mkrtos_script/build_at32f437.sh @@ -1,11 +1,12 @@ #!/bin/bash -# export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/bin/ -# export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/armv7e-m/fpu +# linux build +export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/bin/ +export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/armv7e-m/fpu # mac compile -export TOOLCHAIN=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ -export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard +# export TOOLCHAIN=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ +# export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard # windows compile # export TOOLCHAIN=/d/GNUArmEmbeddedToolchain/102021.10/bin/ @@ -14,6 +15,7 @@ export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/ar # export TOOLCHAIN=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ # export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp +# linux build # export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ # export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard diff --git a/mkrtos_script/build_f2.sh b/mkrtos_script/build_f2.sh index f68144664..1feb3dbc4 100755 --- a/mkrtos_script/build_f2.sh +++ b/mkrtos_script/build_f2.sh @@ -1,13 +1,13 @@ #!/bin/bash -export TOOLCHAIN=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ -export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp +# export TOOLCHAIN=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ +# export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp # export TOOLCHAIN=/d/GNUArmEmbeddedToolchain/102021.10/bin/ # export TOOLCHAIN_LIB=/d/GNUArmEmbeddedToolchain/102021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp -# export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/bin/ -# export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/armv7-m/ +export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/bin/ +export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/armv7-m/ # export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ # export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp diff --git a/mkrtos_tool/kconfig/__pycache__/kconfigfunctions.cpython-38.pyc b/mkrtos_tool/kconfig/__pycache__/kconfigfunctions.cpython-38.pyc index 0a08ee6c5..6fd7df0a4 100644 Binary files a/mkrtos_tool/kconfig/__pycache__/kconfigfunctions.cpython-38.pyc and b/mkrtos_tool/kconfig/__pycache__/kconfigfunctions.cpython-38.pyc differ diff --git a/mkrtos_tool/kconfig/__pycache__/kconfiglib.cpython-38.pyc b/mkrtos_tool/kconfig/__pycache__/kconfiglib.cpython-38.pyc index d0cb14dd1..4e23e594f 100644 Binary files a/mkrtos_tool/kconfig/__pycache__/kconfiglib.cpython-38.pyc and b/mkrtos_tool/kconfig/__pycache__/kconfiglib.cpython-38.pyc differ diff --git a/mkrtos_user/user/app/ATSURFF437/3d_test/3DTest.c b/mkrtos_user/user/app/ATSURFF437/3d_test/3DTest.c index f0c2bb4e8..79d277ed5 100644 --- a/mkrtos_user/user/app/ATSURFF437/3d_test/3DTest.c +++ b/mkrtos_user/user/app/ATSURFF437/3d_test/3DTest.c @@ -424,7 +424,8 @@ int fastCos(int i) * */ -const int16_t numVerts1 = 8; +// const int16_t numVerts1 = 8; +#define numVerts1 8 const int16_t verts1[] = { -100, -100, -100, // 0 100, -100, -100, // 1 @@ -436,7 +437,8 @@ const int16_t verts1[] = { -100, 100, 100, // 7 }; -const int16_t numQuads1 = 6; +// const int16_t numQuads1 = 6; +#define numQuads1 6 const int16_t quads1[] = { 0, 1, 2, 3, // front 7, 6, 5, 4, // back diff --git a/mkrtos_user/user/app/ATSURFF437/nes_simulator/infoNES/K6502_rw.h b/mkrtos_user/user/app/ATSURFF437/nes_simulator/infoNES/K6502_rw.h index c29598b7d..6c0b992e3 100644 --- a/mkrtos_user/user/app/ATSURFF437/nes_simulator/infoNES/K6502_rw.h +++ b/mkrtos_user/user/app/ATSURFF437/nes_simulator/infoNES/K6502_rw.h @@ -16,7 +16,7 @@ #include "InfoNES.h" #include "InfoNES_System.h" -#include "infones_mapper.h" +// #include "infones_mapper.h" #include "InfoNES_pAPU.h" #ifdef __cplusplus diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/CMakeLists.txt b/mkrtos_user/user/drv/ATSURFF437/pin/CMakeLists.txt index 47f8db6ed..9a92fd3bb 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/CMakeLists.txt +++ b/mkrtos_user/user/drv/ATSURFF437/pin/CMakeLists.txt @@ -22,6 +22,9 @@ target_link_libraries( PUBLIC -Bstatic ${LIBC_NAME} + mk_drv + mk_pin + mk_char --whole-archive ${START_LIB} libc_be @@ -29,7 +32,6 @@ target_link_libraries( sys_util sys_svr --no-whole-archive - fdt ${GCC_LIB_PATH}/libgcc.a ) target_include_directories( @@ -46,13 +48,17 @@ target_include_directories( ${CMAKE_SOURCE_DIR}/mkrtos_bsp/AT32/AT32F435_437_Firmware_Library_V2.2.0/middlewares/i2c_application_library ${CMAKE_CURRENT_SOURCE_DIR}/ - ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/libfdt/lib/contrib + + ${CMAKE_SOURCE_DIR}/mkrtos_user/user/drv/lib/mk_pin ) add_dependencies( pin.elf ${START_LIB} sys sys_util + mk_char + mk_drv + mk_pin ) set_target_properties( pin.elf PROPERTIES LINK_FLAGS diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/fs_rpc.c b/mkrtos_user/user/drv/ATSURFF437/pin/fs_rpc.c index 3c483fea3..4aa2ac94a 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/fs_rpc.c +++ b/mkrtos_user/user/drv/ATSURFF437/pin/fs_rpc.c @@ -118,9 +118,9 @@ int fs_svr_open(const char *path, int flags, int mode) printf("[pin] not dev %s.\n", path); return -ENODEV; } - if (char_dev->ops->mk_pin_drv_open) + if (char_dev->ops->open) { - ret = char_dev->ops->mk_pin_drv_open(char_dev->dev); + ret = char_dev->ops->open(char_dev->dev); } if (ret < 0) { @@ -132,9 +132,9 @@ int fs_svr_open(const char *path, int flags, int mode) if (!fdp) { printf("[pin] not fd %s.\n", path); - if (char_dev->ops->mk_pin_drv_release) + if (char_dev->ops->release) { - char_dev->ops->mk_pin_drv_release(char_dev->dev); + char_dev->ops->release(char_dev->dev); } return -ENOMEM; } @@ -169,16 +169,19 @@ int fs_svr_read(int fd, void *buf, size_t len) mk_char_dev_t *char_dev; char_dev = fdp->ptr_dev; - if (!char_dev->ops->mk_pin_drv_ioctl) + if (!char_dev->ops->ioctl) { return -EACCES; } - char_dev->ops->mk_pin_drv_ioctl(char_dev->dev, MK_PIN_SET_OP_PIN, fdp->offset); - if (!char_dev->ops->mk_pin_drv_read) + ret = char_dev->ops->ioctl(char_dev->dev, MK_PIN_SET_OP_PIN, fdp->offset); + if (ret < 0) { + return ret; + } + if (!char_dev->ops->read) { return -EACCES; } - ret = char_dev->ops->mk_pin_drv_read(char_dev->dev, buf, len); + ret = char_dev->ops->read(char_dev->dev, buf, len); if (ret > 0) { fdp->offset += ret; @@ -201,16 +204,16 @@ int fs_svr_write(int fd, void *buf, size_t len) mk_char_dev_t *char_dev; char_dev = fdp->ptr_dev; - if (!char_dev->ops->mk_pin_drv_ioctl) + if (!char_dev->ops->ioctl) { return -EACCES; } - char_dev->ops->mk_pin_drv_ioctl(char_dev->dev, MK_PIN_SET_OP_PIN, fdp->offset); - if (!char_dev->ops->mk_pin_drv_write) + char_dev->ops->ioctl(char_dev->dev, MK_PIN_SET_OP_PIN, fdp->offset); + if (!char_dev->ops->write) { return -EACCES; } - ret = char_dev->ops->mk_pin_drv_write(char_dev->dev, buf, len); + ret = char_dev->ops->write(char_dev->dev, buf, len); if (ret > 0) { fdp->offset += ret; @@ -231,9 +234,9 @@ void fs_svr_close(int fd) mk_char_dev_t *char_dev; char_dev = fdp->ptr_dev; - if (char_dev->ops->mk_pin_drv_release) + if (char_dev->ops->release) { - char_dev->ops->mk_pin_drv_release(char_dev->dev); + char_dev->ops->release(char_dev->dev); } } else @@ -346,9 +349,9 @@ int fs_svr_ioctl(int fd, int req, void *arg) } mk_char_dev_t *char_dev = file->ptr_dev; - if (char_dev->ops->mk_pin_drv_ioctl) + if (char_dev->ops->ioctl) { - ret = char_dev->ops->mk_pin_drv_ioctl(char_dev->dev, req, (umword_t)arg); + ret = char_dev->ops->ioctl(char_dev->dev, req, (umword_t)arg); } return ret; } diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/main.c b/mkrtos_user/user/drv/ATSURFF437/pin/main.c index 89c1f2a54..8c27ab1d5 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/main.c +++ b/mkrtos_user/user/drv/ATSURFF437/pin/main.c @@ -12,19 +12,19 @@ #include "ns_cli.h" #include #include +#include "mk_pin_drv_impl.h" int main(int argc, char *argv[]) { obj_handler_t hd; int ret; - printf("pin init..\n"); + printf("%s init..\n", argv[0]); #if 1 thread_run(-1, 3); #endif mk_drv_init(); mk_dev_init(); - extern void drv_pin_init(void); drv_pin_init(); dtb_parse_init(); diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_dtb_parse.h b/mkrtos_user/user/drv/ATSURFF437/pin/mk_dtb_parse.h deleted file mode 100644 index 32f07a76e..000000000 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_dtb_parse.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - - -int dtb_parse_init(void); diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.c b/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.c index 7a1be88a4..5c558f8e1 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.c +++ b/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.c @@ -8,6 +8,7 @@ #include #include "mk_drv.h" #include "mk_pin_drv.h" +#include "mk_dtb_parse.h" #include #include #include "at32f435_437_gpio.h" @@ -208,51 +209,7 @@ static int pin_write(mk_pin_t *pin, int number, uint8_t value) return 0; } -static int dev_regs_map(mk_dev_t *dev, void *fdt) -{ - const umword_t *reg_raw; - int len; - msg_tag_t tag; - reg_raw = fdt_getprop(dev->dtb, dev->dtb_offset, - "regs", &len); - if (!reg_raw) - { - return -ENODEV; - } - if (len < sizeof(void *) * 2) - { - return -ENODEV; - } - - /*寄存器两个一组*/ - for (int i = 0; i < len / sizeof(void *); i += 2) - { - addr_t vaddr; - uint32_t reg[2]; - - reg[0] = fdt32_to_cpu((fdt32_t)reg_raw[i]); - reg[1] = fdt32_to_cpu((fdt32_t)reg_raw[i + 1]); - - printf("reg:0x%x size:0x%x\n", reg[0], reg[1]); - tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0), - reg[1], reg[0], &vaddr); - if (msg_tag_get_val(tag) < 0) - { - if (i == 0) - { - printf("periph mem alloc failed..\n"); - return msg_tag_get_val(tag); - } - else - { - printf("periph mem alloc failed. success:%d\n", i / 2); - return i / 2; - } - } - } - return 0; -} static mk_pin_ops_t pin_ops = { .drv_pin_configure = pin_configure, diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.h b/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.h index 45dcbb04b..815412347 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.h +++ b/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv_impl.h @@ -1,3 +1,3 @@ #pragma once - +void drv_pin_init(void); diff --git a/mkrtos_user/user/drv/CMakeLists.txt b/mkrtos_user/user/drv/CMakeLists.txt index 948a34261..2666ee3be 100644 --- a/mkrtos_user/user/drv/CMakeLists.txt +++ b/mkrtos_user/user/drv/CMakeLists.txt @@ -3,5 +3,5 @@ cmake_minimum_required(VERSION 3.13) # if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_BOARD_NAME}) # add_subdirectory(${CONFIG_BOARD_NAME}) # endif() - add_subdirectory(ATSURFF437) +add_subdirectory(lib) diff --git a/mkrtos_user/user/drv/lib/CMakeLists.txt b/mkrtos_user/user/drv/lib/CMakeLists.txt new file mode 100644 index 000000000..db3d33d62 --- /dev/null +++ b/mkrtos_user/user/drv/lib/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.13) + +add_subdirectory(mk_drv) +add_subdirectory(mk_pin) +add_subdirectory(mk_char) diff --git a/mkrtos_user/user/drv/lib/mk_char/CMakeLists.txt b/mkrtos_user/user/drv/lib/mk_char/CMakeLists.txt new file mode 100644 index 000000000..ca7062942 --- /dev/null +++ b/mkrtos_user/user/drv/lib/mk_char/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.13) + + +file(GLOB_RECURSE deps *.c *.S) +add_library( + mk_char + STATIC + ${deps} +) +add_dependencies( + mk_char + fdt + sys + sys_util + sys_svr +) +target_include_directories( + mk_char + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/../mk_drv + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc/${ARCH_NAME} + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_svr/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/util/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/libfdt/lib/contrib +) diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_char_dev.c b/mkrtos_user/user/drv/lib/mk_char/mk_char_dev.c similarity index 100% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_char_dev.c rename to mkrtos_user/user/drv/lib/mk_char/mk_char_dev.c diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_char_dev.h b/mkrtos_user/user/drv/lib/mk_char/mk_char_dev.h similarity index 68% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_char_dev.h rename to mkrtos_user/user/drv/lib/mk_char/mk_char_dev.h index 287a5a173..9ea13899f 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_char_dev.h +++ b/mkrtos_user/user/drv/lib/mk_char/mk_char_dev.h @@ -6,11 +6,11 @@ typedef struct mk_file_ops { - int (*mk_pin_drv_open)(mk_dev_t *dev); - int (*mk_pin_drv_write)(mk_dev_t *dev, void *buf, size_t size); - int (*mk_pin_drv_read)(mk_dev_t *dev, void *buf, size_t size); - int (*mk_pin_drv_ioctl)(mk_dev_t *dev, int cmd, umword_t args); - int (*mk_pin_drv_release)(mk_dev_t *dev); + int (*open)(mk_dev_t *dev); + int (*write)(mk_dev_t *dev, void *buf, size_t size); + int (*read)(mk_dev_t *dev, void *buf, size_t size); + int (*ioctl)(mk_dev_t *dev, int cmd, umword_t args); + int (*release)(mk_dev_t *dev); } mk_file_ops_t; typedef struct mk_char_dev diff --git a/mkrtos_user/user/drv/lib/mk_drv/CMakeLists.txt b/mkrtos_user/user/drv/lib/mk_drv/CMakeLists.txt new file mode 100644 index 000000000..119b06a93 --- /dev/null +++ b/mkrtos_user/user/drv/lib/mk_drv/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.13) + + +file(GLOB_RECURSE deps *.c *.S) +add_library( + mk_drv + STATIC + ${deps} +) +target_link_libraries( + mk_drv + PRIVATE + fdt + sys + sys_util + sys_svr +) +add_dependencies( + mk_drv + fdt + sys + sys_util + sys_svr +) +target_include_directories( + mk_drv + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_SOURCE_DIR}/mkrtos_user/user/drv/lib/mk_char + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc/${ARCH_NAME} + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_svr/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/util/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/libfdt/lib/contrib +) diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_dev.c b/mkrtos_user/user/drv/lib/mk_drv/mk_dev.c similarity index 100% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_dev.c rename to mkrtos_user/user/drv/lib/mk_drv/mk_dev.c diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_dev.h b/mkrtos_user/user/drv/lib/mk_drv/mk_dev.h similarity index 100% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_dev.h rename to mkrtos_user/user/drv/lib/mk_drv/mk_dev.h diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_drv.c b/mkrtos_user/user/drv/lib/mk_drv/mk_drv.c similarity index 100% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_drv.c rename to mkrtos_user/user/drv/lib/mk_drv/mk_drv.c diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_drv.h b/mkrtos_user/user/drv/lib/mk_drv/mk_drv.h similarity index 100% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_drv.h rename to mkrtos_user/user/drv/lib/mk_drv/mk_drv.h diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_dtb_parse.c b/mkrtos_user/user/drv/lib/mk_drv/mk_dtb_parse.c similarity index 62% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_dtb_parse.c rename to mkrtos_user/user/drv/lib/mk_drv/mk_dtb_parse.c index 4f78ee3d7..5bd09a2b5 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_dtb_parse.c +++ b/mkrtos_user/user/drv/lib/mk_drv/mk_dtb_parse.c @@ -8,6 +8,7 @@ #include #include #include +#include typedef struct hook_mach_info { int node_offset; @@ -37,7 +38,51 @@ static int dd_hook_mach(mk_drv_t *drv, const char *dev_name, void *data) } return ret; } +int dev_regs_map(mk_dev_t *dev, void *fdt) +{ + const umword_t *reg_raw; + int len; + msg_tag_t tag; + reg_raw = fdt_getprop(dev->dtb, dev->dtb_offset, + "regs", &len); + if (!reg_raw) + { + return -ENODEV; + } + if (len < sizeof(void *) * 2) + { + return -ENODEV; + } + + /*寄存器两个一组*/ + for (int i = 0; i < len / sizeof(void *); i += 2) + { + addr_t vaddr; + uint32_t reg[2]; + + reg[0] = fdt32_to_cpu((fdt32_t)reg_raw[i]); + reg[1] = fdt32_to_cpu((fdt32_t)reg_raw[i + 1]); + + printf("reg:0x%x size:0x%x\n", reg[0], reg[1]); + tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, 0, 0), + reg[1], reg[0], &vaddr); + if (msg_tag_get_val(tag) < 0) + { + if (i == 0) + { + printf("periph mem alloc failed..\n"); + return msg_tag_get_val(tag); + } + else + { + printf("periph mem alloc failed. success:%d\n", i / 2); + return i / 2; + } + } + } + return 0; +} int dtb_parse_init(void) { printf("init dts parsing.\n"); diff --git a/mkrtos_user/user/drv/lib/mk_drv/mk_dtb_parse.h b/mkrtos_user/user/drv/lib/mk_drv/mk_dtb_parse.h new file mode 100644 index 000000000..7c4cf02f3 --- /dev/null +++ b/mkrtos_user/user/drv/lib/mk_drv/mk_dtb_parse.h @@ -0,0 +1,6 @@ +#pragma once + +#include "mk_dev.h" + +int dev_regs_map(mk_dev_t *dev, void *fdt); +int dtb_parse_init(void); diff --git a/mkrtos_user/user/drv/lib/mk_pin/CMakeLists.txt b/mkrtos_user/user/drv/lib/mk_pin/CMakeLists.txt new file mode 100644 index 000000000..9bba5518b --- /dev/null +++ b/mkrtos_user/user/drv/lib/mk_pin/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.13) + + +file(GLOB_RECURSE deps *.c *.S) +add_library( + mk_pin + STATIC + ${deps} +) +target_link_libraries( + mk_pin + PRIVATE + fdt + sys + sys_util + sys_svr + mk_drv +) +add_dependencies( + mk_pin + fdt + sys + sys_util + sys_svr + mk_drv +) +target_include_directories( + mk_pin + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/../mk_drv + ${CMAKE_SOURCE_DIR}/mkrtos_user/user/drv/lib/mk_char + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys/inc/${ARCH_NAME} + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_svr/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/util/inc + ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/libfdt/lib/contrib +) diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv.c b/mkrtos_user/user/drv/lib/mk_pin/mk_pin_drv.c similarity index 94% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv.c rename to mkrtos_user/user/drv/lib/mk_pin/mk_pin_drv.c index 943abc1ac..56e8a5c90 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv.c +++ b/mkrtos_user/user/drv/lib/mk_pin/mk_pin_drv.c @@ -141,11 +141,11 @@ static int mk_pin_drv_ioctl(mk_dev_t *pin, int cmd, umword_t args) return 0; } static mk_file_ops_t file_ops = { - .mk_pin_drv_open = NULL, - .mk_pin_drv_write = mk_pin_drv_write, - .mk_pin_drv_read = mk_pin_drv_read, - .mk_pin_drv_ioctl = mk_pin_drv_ioctl, - .mk_pin_drv_release = NULL, + .open = NULL, + .write = mk_pin_drv_write, + .read = mk_pin_drv_read, + .ioctl = mk_pin_drv_ioctl, + .release = NULL, }; int mk_pin_register(mk_dev_t *dev, mk_pin_dev_t *pin_drv) diff --git a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv.h b/mkrtos_user/user/drv/lib/mk_pin/mk_pin_drv.h similarity index 99% rename from mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv.h rename to mkrtos_user/user/drv/lib/mk_pin/mk_pin_drv.h index 6473fa3b3..e63007241 100644 --- a/mkrtos_user/user/drv/ATSURFF437/pin/mk_pin_drv.h +++ b/mkrtos_user/user/drv/lib/mk_pin/mk_pin_drv.h @@ -3,6 +3,7 @@ #include #include "mk_drv.h" #include "mk_dev.h" + #define MK_PIN_MAX_NUM (16 * 8) typedef struct mk_pin