From 8cdbfdfe5cc9fb99fdd0f6e83802aa90abd31dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B8=96=E4=BA=89?= Date: Wed, 20 Jul 2022 13:59:20 +0800 Subject: [PATCH 1/4] [bsp/d1-allwinner-nezha] add compile tools script --- bsp/d1-allwinner-nezha/smart-env.bat | 9 + bsp/d1-allwinner-nezha/smart-env.sh | 60 ++++++ bsp/d1-allwinner-nezha/tools/ci.py | 181 ++++++++++++++++++ bsp/d1-allwinner-nezha/tools/get_toolchain.py | 59 ++++++ 4 files changed, 309 insertions(+) create mode 100644 bsp/d1-allwinner-nezha/smart-env.bat create mode 100644 bsp/d1-allwinner-nezha/smart-env.sh create mode 100644 bsp/d1-allwinner-nezha/tools/ci.py create mode 100644 bsp/d1-allwinner-nezha/tools/get_toolchain.py diff --git a/bsp/d1-allwinner-nezha/smart-env.bat b/bsp/d1-allwinner-nezha/smart-env.bat new file mode 100644 index 0000000000..ab4019e3fc --- /dev/null +++ b/bsp/d1-allwinner-nezha/smart-env.bat @@ -0,0 +1,9 @@ +set RTT_CC=gcc +set RTT_EXEC_PATH=%cd%\tools\gnu_gcc\riscv64-linux-musleabi_for_i686-w64-mingw32\bin +set RTT_CC_PREFIX=riscv64-unknown-linux-musl- +@set PATH=%RTT_EXEC_PATH%;%ENV_ROOT%\tools\gnu_gcc\arm_gcc\mingw\bin;%PATH% + +@echo "Arch : riscv64" +@echo "CC : %RTT_CC%" +@echo "PREFIX : %RTT_CC_PREFIX%" +@echo "EXEC_PATH : %RTT_EXEC_PATH%" diff --git a/bsp/d1-allwinner-nezha/smart-env.sh b/bsp/d1-allwinner-nezha/smart-env.sh new file mode 100644 index 0000000000..4ca58dd7a5 --- /dev/null +++ b/bsp/d1-allwinner-nezha/smart-env.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# usage: +# source smart-env.sh [arch] +# example: source smart-env.sh # arm +# example: source smart-env.sh aarch64 # aarch64 + +# supported arch list +supported_arch="arm aarch64 riscv64 i386" + +def_arch="unknown" + +# find arch in arch list +if [ -z $1 ] +then + def_arch="arm" # default arch is arm +else + for arch in $supported_arch + do + if [ $arch = $1 ] + then + def_arch=$arch + break + fi + done +fi + +# set env +case $def_arch in + "arm") + export RTT_CC=gcc + export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin + export RTT_CC_PREFIX=arm-linux-musleabi- + ;; + "aarch64") + export RTT_CC=gcc + export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin + export RTT_CC_PREFIX=aarch64-linux-musleabi- + ;; + "riscv64") + export RTT_CC=gcc + export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin + export RTT_CC_PREFIX=riscv64-unknown-linux-musl- + ;; + "i386") + export RTT_CC=gcc + export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/i386-linux-musleabi_for_x86_64-pc-linux-gnu/bin + export RTT_CC_PREFIX=i386-unknown-linux-musl- + ;; + *) echo "unknown arch!" + return 1 +esac + +# export RTT_EXEC_PATH +export PATH=$PATH:$RTT_EXEC_PATH + +echo "Arch => ${def_arch}" +echo "CC => ${RTT_CC}" +echo "PREFIX => ${RTT_CC_PREFIX}" +echo "EXEC_PATH => ${RTT_EXEC_PATH}" \ No newline at end of file diff --git a/bsp/d1-allwinner-nezha/tools/ci.py b/bsp/d1-allwinner-nezha/tools/ci.py new file mode 100644 index 0000000000..5eb6f10297 --- /dev/null +++ b/bsp/d1-allwinner-nezha/tools/ci.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# +# Copyright (c) 2022, RT-Thread Development Team +# +# SPDX-License-Identifier: GPL-2.0 +# +# Change Logs: +# Date Author Notes +# 2022-02-1 Bernard The first version +# + +import os +import sys +import shutil +import platform +import requests +import time +import zipfile + +class CI: + def downloadFile(self, name, url): + headers = {'Proxy-Connection':'keep-alive'} + r = requests.get(url, stream=True, headers=headers) + length = float(r.headers['content-length']) + f = open(name, 'wb') + count = 0 + count_tmp = 0 + time1 = time.time() + for chunk in r.iter_content(chunk_size = 512): + if chunk: + f.write(chunk) + count += len(chunk) + if time.time() - time1 > 2: + p = count / length * 100 + speed = (count - count_tmp) / 1024 / 1024 / 2 + count_tmp = count + print(name + ': ' + '{:.2f}'.format(p) + '%') + time1 = time.time() + print(name + ': 100%') + f.close() + + def extractZipFile(self, zfile, folder): + # self.delTree(folder) + if not os.path.exists(folder): + os.makedirs(folder) + if platform.system() == 'Windows': + zip_file = zipfile.ZipFile(zfile) + zip_list = zip_file.namelist() + for item in zip_list: + print(item) + zip_file.extract(item, folder) + zip_file.close() + elif platform.system() == 'Linux': + + if zfile.endswith('tar.gz'): + os.system('tar zxvf %s -C %s' % (zfile, folder)) + elif zfile.endswith('tar.bz2'): + os.system('tar jxvf %s -C %s' % (zfile, folder)) + elif zfile.endswith('.zip'): + os.system('unzip %s -d %s' % (zfile, folder)) + + return + + def zipFolder(self, folder, zfile): + zip_filename = os.path.join(folder) + zip = zipfile.ZipFile(zfile, 'w', compression=zipfile.ZIP_BZIP2) + pre_len = len(os.path.dirname(folder)) + + for parent, dirnames, filenames in os.walk(folder): + for filename in filenames: + pathfile = os.path.join(parent, filename) + arcname = pathfile[pre_len:].strip(os.path.sep) + zip.write(pathfile, arcname) + + zip.close() + return + + def touchDir(self, d): + if not os.path.exists(d): + os.makedirs(d) + + def gitUpdate(self, url, folder, branch = 'master'): + cwd = os.getcwd() + + if os.path.exists(folder): + os.chdir(folder) + os.system('git pull origin') + if branch != 'master': + os.system('git checkout -b %s origin/%s' % (branch, branch)) + os.system('git submodule init') + os.system('git submodule update') + else: + os.system('git clone %s %s' % (url, folder)) + os.chdir(folder) + os.system('git submodule init') + os.system('git submodule update') + + os.chdir(cwd) + + def installEnv(self, folder): + env_path = folder + + cwd = os.getcwd() + os.chdir(env_path) + + self.touchDir(os.path.join(env_path, 'local_pkgs')) + self.touchDir(os.path.join(env_path, 'packages')) + self.touchDir(os.path.join(env_path, 'tools')) + + self.gitUpdate('https://gitee.com/RT-Thread-Mirror/env.git', 'tools/script') + self.gitUpdate('https://gitee.com/RT-Thread-Mirror/packages.git', 'packages/packages') + + kconfig = open(os.path.join(env_path, 'packages', 'Kconfig'), 'w') + kconfig.write('source "$PKGS_DIR/packages/Kconfig"') + kconfig.close() + + os.chdir(cwd) + + return + + def pkgsUpdate(self, env_folder): + self.touchDir(env_folder) + self.installEnv(env_folder) + + os.environ['PKGS_DIR'] = env_folder + os.system('python %s package --update' % (os.path.join(env_folder, 'tools', 'script', 'env.py'))) + + return + + def delTree(self, folder): + if os.path.exists(folder): + shutil.rmtree(folder) + + def delFile(self, file): + if os.path.exists(file): + os.remove(file) + + def appendFile(self, srcFile, otherFile): + f = open(otherFile, 'r') + s = f.read() + f.close() + + f = open(srcFile, 'a') + f.write(s) + f.close() + + def copyTree(self, srcTree, dstTree): + if os.path.exists(dstTree): + shutil.rmtree(dstTree) + shutil.copytree(srcTree, dstTree) + + def run(self, cmds): + cwd = os.getcwd() + + cmds = cmds.split('\n') + for item in cmds: + item = item.lstrip() + if item == '': + continue + + if item[0] == '-': + os.system(item[1:].lstrip()) + + # keep current directory + os.chdir(cwd) + return + +if __name__ == '__main__': + ci = CI() + env_folder = os.path.abspath(os.path.join('.', 'env_test')) + + # ci.pkgsUpdate(env_folder) + cmds = ''' + # test + - dir + - dir tools + ''' + + ci.run(cmds) diff --git a/bsp/d1-allwinner-nezha/tools/get_toolchain.py b/bsp/d1-allwinner-nezha/tools/get_toolchain.py new file mode 100644 index 0000000000..91456f37e1 --- /dev/null +++ b/bsp/d1-allwinner-nezha/tools/get_toolchain.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# +# Copyright (c) 2022, RT-Thread Development Team +# +# SPDX-License-Identifier: GPL-2.0 +# +# Change Logs: +# Date Author Notes +# 2022-02-1 Bernard The first version +# + +import os +import sys +import platform + +from ci import CI + +toolchains_config = { + 'arm': + { + 'Linux': 'arm-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2', + 'Windows': 'arm-linux-musleabi_for_i686-w64-mingw32_latest.zip' + }, + 'aarch64': + { + 'Linux' : 'aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2', + 'Windows' : 'aarch64-linux-musleabi_for_i686-w64-mingw32_latest.zip' + }, + 'riscv64': + { + 'Linux': 'riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2', + 'Windows': 'riscv64-linux-musleabi_for_i686-w64-mingw32_latest.zip' + } +} + +if __name__ == '__main__': + # download toolchain + if len(sys.argv) > 1: + target = sys.argv[1] + else: + target = 'arm' + + ci = CI() + toolchain_path = os.path.join(os.path.abspath('.'), 'gnu_gcc') + + platform = platform.system() + + try: + zfile = toolchains_config[target][platform] + URL = 'http://117.143.63.254:9012/www/rt-smart/' + zfile + except: + print('not found target') + exit(0) + + ci.downloadFile(zfile, URL) + ci.extractZipFile(zfile, toolchain_path) + ci.delFile(zfile) -- Gitee From 683f7d5d39c567008382427ca7d434261baf5214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B8=96=E4=BA=89?= Date: Wed, 20 Jul 2022 14:43:23 +0800 Subject: [PATCH 2/4] update readme.md --- bsp/d1-allwinner-nezha/README.md | 89 ++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/bsp/d1-allwinner-nezha/README.md b/bsp/d1-allwinner-nezha/README.md index 660e3d7bb6..cd210dd321 100644 --- a/bsp/d1-allwinner-nezha/README.md +++ b/bsp/d1-allwinner-nezha/README.md @@ -1 +1,90 @@ # RT-Thread全志D1移植 + +全志 d1-allwinner-nezha 属于 riscv64 平台 + +## 编译环境搭建 + +- 拉取 RT-Thread 的代码仓库 `git clone https://gitee.com/zhangsz0516/rt-thread.git` + +- 切换到 rt-smart 分支 `git checkout -b rt-smart origin/rt-smart` + +### windows 环境 + +- 打开 RT-Thread ENV 工具 + +- 进入bsp目录 `bsp/d1-allwinner-nezha` + +- 进入 tools 目录 `cd tools` + +- 拉取 `riscv64`平台的编译工具 `python get_toolchain.py riscv64` + +- 返回 bsp 目录 `cd ..` + +- 设置环境变量 `./smart-env.bat` + +### ubuntu 环境 + +- 打开 ubuntu shell 终端 + +- 进入bsp目录 `bsp/d1-allwinner-nezha` + +- 进入 tools 目录 `cd tools` + +- 拉取 `riscv64`平台的编译工具 `python get_toolchain.py riscv64` + +- 返回 bsp 目录 `cd ..` + +- 设置环境变量 `./smart-env.sh` + +### 编译环境验证 + +- 输入:`riscv64-unknown-linux-musl-gcc -v` + +## 开发与编译 + +- windows 下使用RT-Thread ENV 工具, `menuconfig` 配置工程,`scons` 编译工程 + +- ubuntu 下 使用shell 终端: `scons --menuconfig` 配置工程, `scons` 编译工程 + + +## 下载验证 + +- 编译完后,通过:mkimage 生成 img 镜像文件,这个img 镜像文件可以使用 U-boot 引导启动 + +- 启动方式一般有:SD卡启动、NandFlash启动、网络引导启动 + +- windows 下使用全志的:`AllwinnertechPhoeniSuitRelease20201225` + +- 可以使用 xfel 工具进行烧写NandFlash + +## 运行效果 + +```c +## Booting kernel from Legacy Image at 45000000 ... + Image Name: + Image Type: RISC-V Linux Kernel Image (uncompressed) + Data Size: 249576 Bytes = 243.7 KiB + Load Address: 45000000 + Entry Point: 45000000 + Verifying Checksum ... OK +[01.861] +Starting kernel ... +heap: [0x45077bb0 - 0x48277bb0] + \ | / +- RT - Thread Smart Operating System + / | \ 5.0.0 build Jun 18 2022 + 2006 - 2020 Copyright by rt-thread team +file system initialization done! +Hello RISC-V +msh /> + +``` + +## 参考文档 + +- [https://club.rt-thread.org/ask/article/389ac36250b57737.html](https://club.rt-thread.org/ask/article/389ac36250b57737.html) + + + + + -- Gitee From 985a85919bb168f59122fea89c3be44c413e46af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B8=96=E4=BA=89?= Date: Wed, 20 Jul 2022 14:57:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/d1-allwinner-nezha/.config | 95 +++++++++++++++++----- bsp/d1-allwinner-nezha/rtconfig.h | 11 +++ components/lwp/arch/risc-v/rv64/lwp_arch.h | 5 ++ libcpu/risc-v/t-head/c906/cpuport.c | 5 ++ libcpu/risc-v/t-head/c906/mmu.c | 28 +++++++ 5 files changed, 123 insertions(+), 21 deletions(-) diff --git a/bsp/d1-allwinner-nezha/.config b/bsp/d1-allwinner-nezha/.config index 7b3b8988fa..f974e2c874 100644 --- a/bsp/d1-allwinner-nezha/.config +++ b/bsp/d1-allwinner-nezha/.config @@ -63,6 +63,7 @@ CONFIG_RT_USING_HEAP=y # CONFIG_RT_USING_DEVICE=y # CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_DM is not set # CONFIG_RT_USING_INTERRUPT_INFO is not set CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=256 @@ -71,6 +72,7 @@ CONFIG_RT_VER_NUM=0x50000 CONFIG_ARCH_CPU_64BIT=y CONFIG_RT_USING_CACHE=y # CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set # CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set CONFIG_ARCH_MM_MMU=y CONFIG_RT_USING_USERSPACE=y @@ -149,24 +151,29 @@ CONFIG_RT_USING_TTY=y 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_NULL=y +CONFIG_RT_USING_ZERO=y +CONFIG_RT_USING_RANDOM=y # 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_FDT is not set +CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set +# CONFIG_RT_USING_SOFT_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_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set # # Using USB @@ -241,6 +248,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # # IoT - internet of things # +# CONFIG_PKG_USING_LWIP is not set # CONFIG_PKG_USING_LORAWAN_DRIVER is not set # CONFIG_PKG_USING_PAHOMQTT is not set # CONFIG_PKG_USING_UMQTT is not set @@ -251,12 +259,8 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_KAWAII_MQTT is not set # CONFIG_PKG_USING_BC28_MQTT is not set # CONFIG_PKG_USING_WEBTERMINAL is not set -# CONFIG_PKG_USING_CJSON is not set -# CONFIG_PKG_USING_JSMN is not set # CONFIG_PKG_USING_LIBMODBUS is not set # CONFIG_PKG_USING_FREEMODBUS is not set -# CONFIG_PKG_USING_LJSON is not set -# CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set # @@ -294,7 +298,10 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_JIOT-C-SDK is not set # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set # CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set # CONFIG_PKG_USING_OTA_DOWNLOADER is not set # CONFIG_PKG_USING_IPMSG is not set # CONFIG_PKG_USING_LSSDP is not set @@ -308,16 +315,13 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_ABUP_FOTA is not set # CONFIG_PKG_USING_LIBCURL2RTT is not set # CONFIG_PKG_USING_CAPNP is not set -# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set # CONFIG_PKG_USING_AGILE_TELNET is not set # CONFIG_PKG_USING_NMEALIB is not set -# CONFIG_PKG_USING_AGILE_JSMN is not set # CONFIG_PKG_USING_PDULIB is not set # CONFIG_PKG_USING_BTSTACK is not set # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set # CONFIG_PKG_USING_WAYZ_IOTKIT is not set # CONFIG_PKG_USING_MAVLINK is not set -# CONFIG_PKG_USING_RAPIDJSON is not set # CONFIG_PKG_USING_BSAL is not set # CONFIG_PKG_USING_AGILE_MODBUS is not set # CONFIG_PKG_USING_AGILE_FTP is not set @@ -328,12 +332,15 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set # CONFIG_PKG_USING_HM is not set # CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set # # security packages # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -341,10 +348,29 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # # language packages # + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_LUATOS_SOC is not set # CONFIG_PKG_USING_LUA is not set # CONFIG_PKG_USING_JERRYSCRIPT is not set # CONFIG_PKG_USING_MICROPYTHON is not set # CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set # # multimedia packages @@ -356,6 +382,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -381,6 +408,11 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # # CONFIG_PKG_USING_PAINTERENGINE is not set # CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # tools packages @@ -391,7 +423,6 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SYSTEMVIEW is not set # CONFIG_PKG_USING_SEGGER_RTT is not set # CONFIG_PKG_USING_RDB is not set -# CONFIG_PKG_USING_QRCODE is not set # CONFIG_PKG_USING_ULOG_EASYFLASH is not set # CONFIG_PKG_USING_ULOG_FILE is not set # CONFIG_PKG_USING_LOGMGR is not set @@ -424,6 +455,11 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SOLAR_TERMS is not set # CONFIG_PKG_USING_GAN_ZHI is not set # CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set # # system packages @@ -447,6 +483,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -458,12 +495,11 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_UC_CLK is not set # CONFIG_PKG_USING_UC_COMMON is not set # CONFIG_PKG_USING_UC_MODBUS is not set -# CONFIG_RT_USING_ARDUINO is not set -# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_RTDUINO is not set # CONFIG_PKG_USING_CAIRO is not set # CONFIG_PKG_USING_PIXMAN is not set # CONFIG_PKG_USING_PARTITION is not set -# CONFIG_PKG_USING_FAL is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set # CONFIG_PKG_USING_FLASHDB is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -487,10 +523,12 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_TLSF is not set # CONFIG_PKG_USING_EVENT_RECORDER is not set # CONFIG_PKG_USING_ARM_2D is not set -# CONFIG_PKG_USING_WCWIDTH is not set # CONFIG_PKG_USING_MCUBOOT is not set # CONFIG_PKG_USING_TINYUSB is not set -# CONFIG_PKG_USING_USB_STACK is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set # # peripheral libraries and drivers @@ -499,8 +537,10 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_REALTEK_AMEBA is not set # CONFIG_PKG_USING_SHT2X is not set # CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_ADT74XX is not set # CONFIG_PKG_USING_AS7341 is not set # CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_RTT_ESP_IDF is not set # CONFIG_PKG_USING_ICM20608 is not set # CONFIG_PKG_USING_BUTTON is not set # CONFIG_PKG_USING_PCF8574 is not set @@ -514,6 +554,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_WM_LIBRARIES is not set # CONFIG_PKG_USING_KENDRYTE_SDK is not set # CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set # CONFIG_PKG_USING_AGILE_BUTTON is not set # CONFIG_PKG_USING_AGILE_LED is not set # CONFIG_PKG_USING_AT24CXX is not set @@ -548,6 +589,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SSD1306 is not set # CONFIG_PKG_USING_QKEY is not set # CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set # CONFIG_PKG_USING_NES is not set # CONFIG_PKG_USING_VIRTUAL_SENSOR is not set # CONFIG_PKG_USING_VDEVICE is not set @@ -565,9 +607,12 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_BLUETRUM_SDK is not set # CONFIG_PKG_USING_MISAKA_AT24CXX is not set # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set # CONFIG_PKG_USING_BL_MCU_SDK is not set # CONFIG_PKG_USING_SOFT_SERIAL is not set # CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_RFM300 is not set # # AI packages @@ -586,6 +631,10 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # miscellaneous packages # +# +# project laboratory +# + # # samples: kernel and components samples # @@ -606,6 +655,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SNAKE is not set # CONFIG_PKG_USING_TETRIS is not set # CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set # CONFIG_PKG_USING_LIBCSV is not set # CONFIG_PKG_USING_OPTPARSE is not set # CONFIG_PKG_USING_FASTLZ is not set @@ -617,6 +667,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set # CONFIG_PKG_USING_DSTR is not set # CONFIG_PKG_USING_TINYFRAME is not set # CONFIG_PKG_USING_KENDRYTE_DEMO is not set @@ -627,14 +678,16 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_VI is not set # CONFIG_PKG_USING_KI is not set # CONFIG_PKG_USING_ARMv7M_DWT is not set -# CONFIG_PKG_USING_VT100 is not set # CONFIG_PKG_USING_UKAL is not set # CONFIG_PKG_USING_CRCLIB is not set # CONFIG_PKG_USING_LWGPS is not set # CONFIG_PKG_USING_STATE_MACHINE is not set -# CONFIG_PKG_USING_MCURSES is not set -# CONFIG_PKG_USING_COWSAY is not set -# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set CONFIG_BOARD_allwinnerd1=y CONFIG_ENABLE_FPU=y # CONFIG_RT_USING_USERSPACE_32BIT_LIMIT is not set diff --git a/bsp/d1-allwinner-nezha/rtconfig.h b/bsp/d1-allwinner-nezha/rtconfig.h index fc8b52ace3..1086c5bc3b 100644 --- a/bsp/d1-allwinner-nezha/rtconfig.h +++ b/bsp/d1-allwinner-nezha/rtconfig.h @@ -101,6 +101,10 @@ #define RT_SERIAL_RB_BUFSZ 64 #define RT_USING_TTY #define RT_USING_PIN +#define RT_USING_NULL +#define RT_USING_ZERO +#define RT_USING_RANDOM +#define RT_USING_RTC /* Using USB */ @@ -160,6 +164,11 @@ /* language packages */ +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + /* multimedia packages */ @@ -197,6 +206,8 @@ /* miscellaneous packages */ +/* project laboratory */ + /* samples: kernel and components samples */ diff --git a/components/lwp/arch/risc-v/rv64/lwp_arch.h b/components/lwp/arch/risc-v/rv64/lwp_arch.h index e6d09285ab..66ee0d3434 100644 --- a/components/lwp/arch/risc-v/rv64/lwp_arch.h +++ b/components/lwp/arch/risc-v/rv64/lwp_arch.h @@ -54,6 +54,11 @@ rt_inline unsigned long ffz(unsigned long x) return __builtin_ffs(~x) - 1; } +rt_inline void icache_invalid_all(void) +{ + //TODO: +} + #ifdef __cplusplus } #endif diff --git a/libcpu/risc-v/t-head/c906/cpuport.c b/libcpu/risc-v/t-head/c906/cpuport.c index 8cfe0c44e5..81c224e97e 100644 --- a/libcpu/risc-v/t-head/c906/cpuport.c +++ b/libcpu/risc-v/t-head/c906/cpuport.c @@ -120,3 +120,8 @@ int rt_hw_cpu_id(void) { return 0; /* d1 has one core */ } + +void set_process_id(int pid) +{ + //TODO +} diff --git a/libcpu/risc-v/t-head/c906/mmu.c b/libcpu/risc-v/t-head/c906/mmu.c index 9bcaade31c..744ae75a9b 100644 --- a/libcpu/risc-v/t-head/c906/mmu.c +++ b/libcpu/risc-v/t-head/c906/mmu.c @@ -22,6 +22,34 @@ void *current_mmu_table = RT_NULL; +static rt_mutex_t mm_lock; + +void rt_mm_lock(void) +{ + if (rt_thread_self()) + { + if (!mm_lock) + { + mm_lock = rt_mutex_create("mm_lock", RT_IPC_FLAG_FIFO); + } + if (mm_lock) + { + rt_mutex_take(mm_lock, RT_WAITING_FOREVER); + } + } +} + +void rt_mm_unlock(void) +{ + if (rt_thread_self()) + { + if (mm_lock) + { + rt_mutex_release(mm_lock); + } + } +} + static void rt_hw_cpu_tlb_invalidate() { rt_size_t satpv = read_csr(satp); -- Gitee From 6535d3ef45066c08e09e30ed28bc1d6e63600f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B8=96=E4=BA=89?= Date: Wed, 20 Jul 2022 15:00:52 +0800 Subject: [PATCH 4/4] =?UTF-8?q?windows=20=E4=B8=8B=20mkimage=20=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/d1-allwinner-nezha/.gitignore | 1 + bsp/d1-allwinner-nezha/generateimg.bat | 1 + bsp/d1-allwinner-nezha/smart-env.bat | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 bsp/d1-allwinner-nezha/generateimg.bat diff --git a/bsp/d1-allwinner-nezha/.gitignore b/bsp/d1-allwinner-nezha/.gitignore index 530a897fce..d212d4770b 100644 --- a/bsp/d1-allwinner-nezha/.gitignore +++ b/bsp/d1-allwinner-nezha/.gitignore @@ -1,6 +1,7 @@ __pycache__/ rtthread.bin rtthread.elf +rtthread.img *.map build/ .sconsign.dblite diff --git a/bsp/d1-allwinner-nezha/generateimg.bat b/bsp/d1-allwinner-nezha/generateimg.bat new file mode 100644 index 0000000000..f605f82927 --- /dev/null +++ b/bsp/d1-allwinner-nezha/generateimg.bat @@ -0,0 +1 @@ +mkimage -A riscv -O linux -T kernel -C none -a 0x45000000 -e 0x45000000 -d rtthread.bin rtthread.img \ No newline at end of file diff --git a/bsp/d1-allwinner-nezha/smart-env.bat b/bsp/d1-allwinner-nezha/smart-env.bat index ab4019e3fc..1b940b8e95 100644 --- a/bsp/d1-allwinner-nezha/smart-env.bat +++ b/bsp/d1-allwinner-nezha/smart-env.bat @@ -1,7 +1,8 @@ set RTT_CC=gcc set RTT_EXEC_PATH=%cd%\tools\gnu_gcc\riscv64-linux-musleabi_for_i686-w64-mingw32\bin set RTT_CC_PREFIX=riscv64-unknown-linux-musl- -@set PATH=%RTT_EXEC_PATH%;%ENV_ROOT%\tools\gnu_gcc\arm_gcc\mingw\bin;%PATH% +set RTT_TOOLS_PATH=%cd%\tools +@set PATH=%RTT_EXEC_PATH%;%RTT_TOOLS_PATH%;%ENV_ROOT%\tools\gnu_gcc\arm_gcc\mingw\bin;%PATH% @echo "Arch : riscv64" @echo "CC : %RTT_CC%" -- Gitee