update home and merge licheepi4a changes
3
.gitignore
vendored
@@ -4,4 +4,5 @@ temp
|
||||
.vscode
|
||||
.ipynb_checkpoints
|
||||
.qiniu_pythonsdk_hostscache.json
|
||||
*.temp
|
||||
*.temp
|
||||
*.mo
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"items": [
|
||||
{
|
||||
"label": "Products",
|
||||
"url": "/#products",
|
||||
"url": "/hardware/en/",
|
||||
"position": "left"
|
||||
},
|
||||
{
|
||||
@@ -184,7 +184,7 @@
|
||||
"teedoc-plugin-ad-hint": {
|
||||
"config": {
|
||||
"type": "hint",
|
||||
"label": "☆",
|
||||
"label": "NEW",
|
||||
"content": "New MaixHub online, online annotation, one-key to deploy, better experience, support Maix-I, Maix-II, mobile phone, web, <a href='https://maixhub.com'>Go!</a></br>Latest open source project <a href='https://github.com/sipeed/TinyMaix'>TinyMaix</a>, model infer runtime runs on any MCU, even runs on 2KiB RAM chip",
|
||||
"show_after_s": 432000,
|
||||
"date": "2022-06-01 14:00"
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
"items": [
|
||||
{
|
||||
"label": "产品",
|
||||
"url": "/#products",
|
||||
"url": "/hardware/zh/",
|
||||
"position": "left"
|
||||
},
|
||||
{
|
||||
"label": "软件文档",
|
||||
"desc": "软件项目或者通用的软件文档和教程",
|
||||
"label": "开源软件",
|
||||
"desc": "开源软件项目或者通用的软件文档和教程",
|
||||
"position": "left",
|
||||
"type": "list",
|
||||
"items": [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Sipeed Hardware
|
||||
keywords: Sipeed, Hardware, Sipeed, Hardware specifications, Documentation, Downloaden, Deeplearning, Artificial Intelligence, K210
|
||||
desc: Sipeed hardware documentation website
|
||||
layout: redirect
|
||||
redirect_url: /
|
||||
---
|
||||
|
||||
> Updating, [Chinese site](https://wiki.sipeed.com/hardware/zh/index.html) is the latest one.
|
||||
|
||||
@@ -172,7 +172,7 @@ W: GPG error: http://archive.ubuntu.com trusty-updates Release: The following si
|
||||
|
||||
You can try the following command to fix it:
|
||||
```shell
|
||||
sudo apt-key adv --keyserver keyring.debian.org --recv-keys 'Replace the key value after NO_PUBKEY in the error message here'
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 'Replace the key value after NO_PUBKEY in the error message here'
|
||||
# or
|
||||
gpg --keyserver keyserver.ubuntu.com --recv-keys 'Replace the key value after NO_PUBKEY in the error message here'
|
||||
```
|
||||
@@ -374,7 +374,7 @@ sipeed@lpi4a:~$ cat /etc/fstab
|
||||
`/dev/mmcblk1p1: UUID="033173ff-b3ab-494c-ab14-4dcd656a9214" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8e4e28df-01"`
|
||||
|
||||
|
||||
### VNC Remote Desktop
|
||||
## VNC Remote Desktop
|
||||
|
||||
Install the required packages and remote desktop using the lightweight Xfce desktop environment.
|
||||
```shell
|
||||
|
||||
@@ -195,6 +195,201 @@ gpiochip0: GPIOs 504-511, parent: i2c/0-0018, 0-0018, can sleep: IO expend 1
|
||||
gpio-511 ( |aon:soc_cam2_avdd25_) out lo
|
||||
``` -->
|
||||
|
||||
## Use of gpiod library
|
||||
|
||||
The GPiod library is a library that can call GPIO in the same user space, making it convenient for users to operate GPIO in applications.
|
||||
Firstly, install and deploy the GPIO library:
|
||||
|
||||
```shell
|
||||
sudo apt install wget
|
||||
wget https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/snapshot/libgpiod-2.0.tar.gz
|
||||
|
||||
tar zxvf libgpiod-2.0.tar.gz
|
||||
|
||||
cd libgpiod-2.0
|
||||
sudo apt-get install build-essential pkg-config m4 automake autoconf libtool autoconf-archive
|
||||
sudo apt install gcc g++
|
||||
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
|
||||
#Deploy the relevant files of the library to the project folder: -- The path after prefix should be changed to the path where the project is located for future operations
|
||||
./autogen.sh --enable-tools=yes --prefix=/home/sipeed/mylib_local
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
如果执行:./autogen.sh --enable-tools=yes --prefix=/home/sipeed/mylib_local 出现以下错误:
|
||||
|
||||
```shell
|
||||
aclocal: warning: couldn't open directory 'm4': No such file or directory
|
||||
#You can execute the following commands
|
||||
mkdir m4
|
||||
./autogen.sh --enable-tools=yes --prefix=/home/sipeed/mylib_local
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
Start operating GPIO:
|
||||
|
||||
```shell
|
||||
sudo vim gpio.c
|
||||
|
||||
#The content of gpio. c is as follows:
|
||||
|
||||
#include<stdio.h>
|
||||
#include<unistd.h>
|
||||
#include<gpiod.h>
|
||||
|
||||
#define PIN_IO1_3 3
|
||||
#define PIN_IO1_4 4
|
||||
#define PIN_IO1_5 5
|
||||
|
||||
int main() {
|
||||
struct gpiod_chip *gchip;
|
||||
struct gpiod_line_info *glinein, *glineout;
|
||||
struct gpiod_line_settings *gline_settings_in, *gline_settings_out;
|
||||
struct gpiod_line_config *gline_config_in, *gline_config_out;
|
||||
struct gpiod_request_config *gline_request_config_in, *gline_request_config_out;
|
||||
struct gpiod_line_request *gline_request_in, *gline_request_out;
|
||||
int offset_in[1] = {PIN_IO1_5};
|
||||
int offset_out[2] = {PIN_IO1_3, PIN_IO1_4};
|
||||
int value;
|
||||
|
||||
if ((gchip=gpiod_chip_open("/dev/gpiochip4")) == NULL) {
|
||||
perror("gpiod_chip_open");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
gline_settings_in = gpiod_line_settings_new();
|
||||
if ((value=gpiod_line_settings_set_direction(gline_settings_in, GPIOD_LINE_DIRECTION_INPUT)) != 0) {
|
||||
perror("gpiod_line_settings_set_direction");
|
||||
}
|
||||
|
||||
gline_config_in = gpiod_line_config_new();
|
||||
value=gpiod_line_config_add_line_settings(gline_config_in, offset_in, 1, gline_settings_in);
|
||||
gline_request_config_in = gpiod_request_config_new();
|
||||
gline_request_in = gpiod_chip_request_lines(gchip, gline_request_config_in, gline_config_in);
|
||||
|
||||
|
||||
|
||||
|
||||
value=gpiod_line_request_get_value(gline_request_in, PIN_IO1_5);
|
||||
printf("IO1-5 = %d\n", value);
|
||||
|
||||
|
||||
|
||||
|
||||
gline_settings_out = gpiod_line_settings_new();
|
||||
if (gpiod_line_settings_set_direction(gline_settings_out, GPIOD_LINE_DIRECTION_OUTPUT) != 0) {
|
||||
perror("gpiod_line_settings_set_direction");
|
||||
}
|
||||
gline_config_out = gpiod_line_config_new();
|
||||
|
||||
gpiod_line_config_add_line_settings(gline_config_out, offset_out, 2, gline_settings_out);
|
||||
gline_request_config_out = gpiod_request_config_new();
|
||||
gline_request_out = gpiod_chip_request_lines(gchip, gline_request_config_out, gline_config_out);
|
||||
|
||||
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_3, 1);
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_4, 0);
|
||||
|
||||
printf("IO1-3 = 1, IO1-4 = 0\n");
|
||||
sleep(1);
|
||||
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
|
||||
|
||||
value=gpiod_line_request_get_value(gline_request_in, PIN_IO1_5);
|
||||
printf("IO1-5 = %d\n", value);
|
||||
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_3, 0);
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_4, 1);
|
||||
|
||||
printf("IO1-3 = 0, IO1-4 = 1\n");
|
||||
sleep(1);
|
||||
|
||||
|
||||
|
||||
value=gpiod_line_request_get_value(gline_request_in, PIN_IO1_5);
|
||||
printf("IO1-5 = %d\n", value);
|
||||
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_3, 1);
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_4, 0);
|
||||
|
||||
printf("IO1-3 = 1, IO1-4 = 0\n");
|
||||
sleep(1);
|
||||
|
||||
}
|
||||
|
||||
gpiod_chip_close(gchip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Save and compile
|
||||
|
||||
```shell
|
||||
gcc -I/home/sipeed/mylib_local/include -L/home/sipeed/mylib_local/lib -o gpio gpio.c -lgpiod
|
||||
|
||||
```
|
||||
Some device permissions need to be granted before execution
|
||||
|
||||
```shell
|
||||
export LD_LIBRARY_PATH=/home/sipeed/mylib_local/lib:$LD_LIBRARY_PATH
|
||||
export PATH=/home/sipeed/mylib_local/bin:$PATH
|
||||
sudo chmod o+rw /dev/gpiochip4
|
||||
sudo chmod o+rw /dev/spidev2.0
|
||||
|
||||
#It can be directly executed in an. sh file
|
||||
|
||||
```
|
||||
|
||||
Run program:
|
||||
|
||||
```shell
|
||||
|
||||
./gpio
|
||||
|
||||
```
|
||||
|
||||
|
||||
The console output is as follows:
|
||||
|
||||
```shell
|
||||
|
||||
sipeed@lpi4a:~/gpio$ ./gpio
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
|
||||
```
|
||||
|
||||
|
||||
## UART
|
||||
|
||||
### System Serial Port
|
||||
@@ -304,7 +499,61 @@ sipeed@lpi4a:~$ ls /dev/spidev2.0
|
||||
/dev/spidev2.0
|
||||
```
|
||||
|
||||
TODO
|
||||
### Start
|
||||
|
||||
Pay attention to the IO drive capability. Licheepi4A requires an external level conversion chip and uses TXS10108E for its own use
|
||||
|
||||
All programs of this routine are compiled on the board. If cross coding is necessary, the tool chain can be replaced during compilation.
|
||||
|
||||
The GPIO operation of the following routine is based on the GPIOD library above.
|
||||
|
||||
#### 1.Download the source code
|
||||
|
||||
```shell
|
||||
git clone https://github.com/fffdee/ST7735_for_Licheepi4A.git
|
||||
```
|
||||
#### 2.Building the GPIOD library
|
||||
|
||||
Dependencies required for installation:
|
||||
|
||||
```shell
|
||||
sudo apt-get install build-essential pkg-config m4 automake autoconf libtool autoconf-archive
|
||||
sudo apt install gcc g++ gpiod cmake
|
||||
```
|
||||
|
||||
Install the GPIOD library (the source file is already installed, and the library path needs to be changed. Please refer to the following steps):
|
||||
|
||||
```shell
|
||||
tar zxvf libgpiod-2.0.tar.gz
|
||||
cd libgpiod-2.0
|
||||
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
|
||||
|
||||
#Deploy the relevant files of the library to the project folder: -- The path after prefix should be changed to the path where the project is located for future operations
|
||||
./autogen.sh --enable-tools=yes --prefix=/home/sipeed/TFT_demo/
|
||||
make
|
||||
sudo make install
|
||||
#Installation completed
|
||||
```
|
||||
|
||||
#### 3.Compile and Run
|
||||
|
||||
```shell
|
||||
|
||||
cd TFT_demo
|
||||
cmake .
|
||||
make -j4
|
||||
|
||||
#授予设备权限,每次开机执行一次即可
|
||||
. exec.sh
|
||||
./tft_demo
|
||||
```
|
||||
|
||||
#### Renderings
|
||||
|
||||

|
||||
|
||||
## USB
|
||||
|
||||
|
||||
@@ -735,6 +735,237 @@ The result is the `result.png` file, and the image from the above prompt is as f
|
||||
|
||||

|
||||
|
||||
|
||||
## PSP Simulator
|
||||
|
||||
|
||||
[Project address](https://github.com/hrydgard/ppsspp)
|
||||
|
||||
This example runs the PSP simulator on LPi4A through this project.
|
||||
|
||||
Firstly, we need to build PPSSPP:
|
||||
|
||||
```shell
|
||||
#Install the required packages first
|
||||
sudo apt install build-essential cmake libgl1-mesa-dev libsdl2-dev libvulkan-dev mesa-common-dev libglu1-mesa-dev libsdl2-dev libcurl4-openssl-dev
|
||||
git clone --recurse-submodules https://github.com/hrydgard/ppsspp.git
|
||||
cd ppsspp
|
||||
git submodule update --init --recursive
|
||||
git pull --rebase https://github.com/hrydgard/ppsspp.git
|
||||
cmake .
|
||||
make -j4
|
||||
|
||||
```
|
||||
Compilation may take some time, and successful compilation occurs when the following output occurs:
|
||||
|
||||
```shell
|
||||
sipeed@lpi4a:~/ppsspp$ make -j4
|
||||
[ 0%] Built target unix_based_hardware_detection
|
||||
[ 0%] Built target utils
|
||||
[ 0%] Built target gason
|
||||
[ 1%] Built target snappy
|
||||
[ 1%] Built target cityhash
|
||||
[ 1%] Built target vma
|
||||
[ 2%] Built target png17
|
||||
[ 3%] Built target udis86
|
||||
[ 3%] Built target basis_universal
|
||||
[ 16%] Built target libzip
|
||||
[ 16%] Built target glew
|
||||
[ 16%] Built target sfmt19937
|
||||
[ 17%] Built target kirk
|
||||
[ 18%] Built target xbrz
|
||||
[ 18%] Built target xxhash
|
||||
[ 19%] Generating something_that_never_exists
|
||||
[ 21%] Built target miniupnpc
|
||||
[ 25%] Built target libzstd_static
|
||||
-- Could NOT find Git (missing: GIT_EXECUTABLE)
|
||||
CMake Warning at git-version.cmake:16 (message):
|
||||
git not found, unable to include version.
|
||||
|
||||
|
||||
[ 25%] Built target GitVersion
|
||||
[ 25%] Built target GenericCodeGen
|
||||
[ 25%] Built target OGLCompiler
|
||||
[ 25%] Built target OSDependent
|
||||
[ 31%] Built target armips
|
||||
[ 31%] Built target spirv-cross-core
|
||||
[ 34%] Built target rcheevos
|
||||
[ 35%] Built target cpu_features
|
||||
[ 35%] Built target discord-rpc
|
||||
[ 36%] Built target spirv-cross-glsl
|
||||
[ 41%] Built target MachineIndependent
|
||||
[ 41%] Built target spirv-cross-cpp
|
||||
[ 41%] Built target spirv-cross-msl
|
||||
[ 41%] Built target spirv-cross-hlsl
|
||||
[ 41%] Built target glslang
|
||||
[ 42%] Built target SPIRV
|
||||
[ 58%] Built target Common
|
||||
[ 59%] Built target native
|
||||
[ 95%] Built target Core
|
||||
[100%] Built target PPSSPPSDL
|
||||
|
||||
```
|
||||
|
||||
After installation, you can try running it (in root mode):
|
||||
|
||||
```shell
|
||||
./PPSSPPSDL
|
||||
```
|
||||
As shown in the figure:
|
||||
|
||||

|
||||
|
||||
Game download:
|
||||
|
||||
[PSP game Download](https://playdreamcreate.com/)
|
||||
|
||||
Download completed:
|
||||
|
||||
We only need to use the EBOOT.PBP file in the compressed package
|
||||
|
||||
1. If using a graphical interface, extract directly
|
||||
|
||||
2. If using the command line, you need to change the compressed package to a zip suffix before decompressing it
|
||||
|
||||
```shell
|
||||
|
||||
Mv [compressed package name] [compressed package name]. zip
|
||||
|
||||
Unzip [compressed package name]. zip
|
||||
|
||||
```
|
||||
|
||||
Start the game: Open EBOOT.PBP under the PPSSPPSDL command
|
||||
|
||||
```shell
|
||||
./PPSSPPSDL ./game/01/EBOOT.PBP
|
||||
```
|
||||
|
||||
The operation effect is shown in the figure:
|
||||
|
||||

|
||||

|
||||
|
||||
## use of opencv
|
||||
|
||||
First, install the dependencies and the Python 3 environment
|
||||
|
||||
```shell
|
||||
sudo apt install python3 python3-pip
|
||||
sudo apt install python3-opencv
|
||||
sudo apt install libqt5gui5-gles
|
||||
```
|
||||
OpenCV reads image demo:
|
||||
|
||||
|
||||
```shell
|
||||
#!/bin/bash
|
||||
import cv2
|
||||
|
||||
img2 = cv2.imread('aContour.jpg', cv2.IMREAD_UNCHANGED)
|
||||
cv2.namedWindow('show_img', 0) # 定义窗口名称,三个函数(namedWindow、 resizeWindow、 imshow)中窗口名称要一致
|
||||
cv2.resizeWindow('show_img', 736, 416)
|
||||
cv2.imshow("show_img",img2)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
cv2.destroyWindow("show_img")
|
||||
|
||||
```
|
||||
Run program:
|
||||
|
||||
```shell
|
||||
python3 show_pic.py
|
||||
```
|
||||
Running results:
|
||||
|
||||

|
||||
|
||||
PIL numpy opencv comprehensive test demo:
|
||||
|
||||
```shell
|
||||
#!/bin/bash
|
||||
from typing import List, Any, Tuple
|
||||
import matplotlib.pyplot as plt
|
||||
import cv2
|
||||
|
||||
import numpy as np
|
||||
from PIL import Image
|
||||
from PIL import ImageFilter
|
||||
|
||||
im = Image.open('a.jpg')
|
||||
om = im.filter(ImageFilter.CONTOUR)
|
||||
om.save('aContour.jpg')
|
||||
|
||||
b = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
|
||||
g = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
|
||||
r = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
|
||||
print(b)
|
||||
|
||||
img=np.empty([20,30,3],dtype=np.uint8)
|
||||
bgr=()
|
||||
rowlist=[]
|
||||
collist: List[List[Tuple[Any, Any, Any]]]=[]
|
||||
for row in range(200):
|
||||
rowlist=[]
|
||||
for col in range(300):
|
||||
bgr=(r[row][col],g[row][col],b[row][col])
|
||||
rowlist.append(bgr)
|
||||
collist.append(rowlist)
|
||||
|
||||
img=np.asarray(collist)
|
||||
|
||||
img2 = cv2.imread('aContour.jpg', cv2.IMREAD_UNCHANGED)
|
||||
cv2.namedWindow('show_img', 0)
|
||||
cv2.resizeWindow('show_img', 736, 416)
|
||||
cv2.imshow("show_img",img2)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
cv2.destroyWindow("show_img")
|
||||
|
||||
```
|
||||
## Use of ncnn
|
||||
|
||||
Firstly, the Git source code and installation related dependency libraries
|
||||
|
||||
|
||||
```shell
|
||||
git clone https://github.com/Tencent/ncnn.git
|
||||
cd ncnn
|
||||
git submodule update --init
|
||||
|
||||
sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev
|
||||
|
||||
```
|
||||
Compile source code
|
||||
|
||||
```shell
|
||||
cd ncnn
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
|
||||
make -j$(nproc)
|
||||
```
|
||||
|
||||
Download the relevant model files and parameters, and place them in the same folder as the executable file:
|
||||
|
||||
[Download](https://github.com/nihui/ncnn-assets)
|
||||
|
||||
```shell
|
||||
~/ncnn/build/example
|
||||
```
|
||||

|
||||
|
||||
execute
|
||||
|
||||
```shell
|
||||
./nanodet/ a.jpg
|
||||
```
|
||||
|
||||
Running results
|
||||
|
||||

|
||||

|
||||
|
||||
## Other
|
||||
|
||||
Contributions are welcome~ You can get ¥5~150 ($1~20) coupon if your contribution is accepted!
|
||||
@@ -48,7 +48,7 @@ Correct operation validated. See README.md for run and reporting rules.
|
||||
CoreMark 1.0 : 9175.077154 / GCC13.1.0 -O2 -DPERFORMANCE_RUN=1 -lrt -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-im / Heap
|
||||
```
|
||||
|
||||
Test results (1.85GHz) using the public toolchain, GCC version `10.4.0`:
|
||||
Test results (1.85GHz) using the Thead toolchain, GCC version `10.4.0`:
|
||||
|
||||
```txt
|
||||
2K performance run parameters for coremark.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Sipeed 开源产品速览
|
||||
keywords: Sipeed, Hardware, 矽速, 硬件资料, 文档, 资料下载, 深度学习, 人工智能, K210
|
||||
desc: 矽速科技的开源软硬件 WIKI 资料站
|
||||
layout: redirect
|
||||
redirect_url: /
|
||||
---
|
||||
|
||||
## 总览
|
||||
|
||||
@@ -173,7 +173,13 @@ Readme and image download link: [Click me](https://github.com/aiminickwong/liche
|
||||
Readme link: [Click me](https://github.com/aiminickwong/licheepi4a-images)
|
||||
[openKylin V1.0 Download address](https://www.openkylin.top/downloads/index-cn.html)
|
||||
|
||||
### armbian (unofficial)
|
||||
### armbian (official, use RV64GC toolchain)
|
||||
|
||||

|
||||
|
||||
Project address: [Click me](https://github.com/armbian/build)
|
||||
|
||||
### armbian (unofficial, use T-Head optimized toolchain)
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -177,7 +177,7 @@ W: GPG error: http://archive.ubuntu.com trusty-updates Release: The following si
|
||||
```shell
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys '替换成报错中的NO_PUBKEY 后面的key值'
|
||||
# 或使用
|
||||
gpg --keyserver keyring.debian.org --recv-keys '替换成报错中的NO_PUBKEY 后面的key值'
|
||||
gpg --keyserver keyserver.ubuntu.com --recv-keys '替换成报错中的NO_PUBKEY 后面的key值'
|
||||
```
|
||||
|
||||
## SSH
|
||||
@@ -376,7 +376,7 @@ sipeed@lpi4a:~$ cat /etc/fstab
|
||||
/dev/mmcblk1p1 也可使用磁盘 UUID,即写成 UUID=xxxx-xxx 的形式,UUID 可以使用`sudo blkid`查看:
|
||||
`/dev/mmcblk1p1: UUID="033173ff-b3ab-494c-ab14-4dcd656a9214" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8e4e28df-01"`
|
||||
|
||||
### VNC远程桌面
|
||||
## VNC远程桌面
|
||||
|
||||
安装需要的软件包,远程桌面使用轻量化的 Xfce 桌面环境。
|
||||
```shell
|
||||
@@ -458,7 +458,7 @@ vncserver -localhost no
|
||||

|
||||
|
||||
|
||||
### btop
|
||||
## btop
|
||||
|
||||
btop 是一个兼顾美观与实用性的资源监视器,显示处理器、内存、磁盘、网络和进程的使用情况和统计信息。
|
||||
|
||||
|
||||
@@ -194,6 +194,195 @@ gpiochip0: GPIOs 504-511, parent: i2c/0-0018, 0-0018, can sleep: IO expend 1
|
||||
gpio-510 ( |aon:soc_cam2_dovdd18) out lo
|
||||
gpio-511 ( |aon:soc_cam2_avdd25_) out lo
|
||||
``` -->
|
||||
## gpiod库的使用
|
||||
gpiod库是一个可以在同户空间调用GPIO的库,方便用户在应用程序中对GPIO进行操作。
|
||||
首先安装和部署GPIO库:
|
||||
```shell
|
||||
sudo apt install wget
|
||||
wget https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/snapshot/libgpiod-2.0.tar.gz
|
||||
|
||||
tar zxvf libgpiod-2.0.tar.gz
|
||||
|
||||
cd libgpiod-2.0
|
||||
sudo apt-get install build-essential pkg-config m4 automake autoconf libtool autoconf-archive
|
||||
sudo apt install gcc g++
|
||||
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
|
||||
#部署库的相关文件到项目文件夹:--prefix后面的路径要换成自己项目所在的路径,方便后续操作
|
||||
./autogen.sh --enable-tools=yes --prefix=/home/sipeed/mylib_local
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
如果执行:./autogen.sh --enable-tools=yes --prefix=/home/sipeed/mylib_local 出现以下错误:
|
||||
|
||||
```shell
|
||||
aclocal: warning: couldn't open directory 'm4': No such file or directory
|
||||
#可以执行以下命令
|
||||
mkdir m4
|
||||
./autogen.sh --enable-tools=yes --prefix=/home/sipeed/mylib_local
|
||||
make
|
||||
make install
|
||||
```
|
||||
开始操作GPIO:
|
||||
```shell
|
||||
sudo vim gpio.c
|
||||
|
||||
#gpio.c的内容如下:
|
||||
|
||||
#include<stdio.h>
|
||||
#include<unistd.h>
|
||||
#include<gpiod.h>
|
||||
|
||||
#define PIN_IO1_3 3
|
||||
#define PIN_IO1_4 4
|
||||
#define PIN_IO1_5 5
|
||||
|
||||
int main() {
|
||||
struct gpiod_chip *gchip;
|
||||
struct gpiod_line_info *glinein, *glineout;
|
||||
struct gpiod_line_settings *gline_settings_in, *gline_settings_out;
|
||||
struct gpiod_line_config *gline_config_in, *gline_config_out;
|
||||
struct gpiod_request_config *gline_request_config_in, *gline_request_config_out;
|
||||
struct gpiod_line_request *gline_request_in, *gline_request_out;
|
||||
int offset_in[1] = {PIN_IO1_5};
|
||||
int offset_out[2] = {PIN_IO1_3, PIN_IO1_4};
|
||||
int value;
|
||||
|
||||
if ((gchip=gpiod_chip_open("/dev/gpiochip4")) == NULL) {
|
||||
perror("gpiod_chip_open");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
gline_settings_in = gpiod_line_settings_new();
|
||||
if ((value=gpiod_line_settings_set_direction(gline_settings_in, GPIOD_LINE_DIRECTION_INPUT)) != 0) {
|
||||
perror("gpiod_line_settings_set_direction");
|
||||
}
|
||||
|
||||
gline_config_in = gpiod_line_config_new();
|
||||
value=gpiod_line_config_add_line_settings(gline_config_in, offset_in, 1, gline_settings_in);
|
||||
gline_request_config_in = gpiod_request_config_new();
|
||||
gline_request_in = gpiod_chip_request_lines(gchip, gline_request_config_in, gline_config_in);
|
||||
|
||||
|
||||
|
||||
|
||||
value=gpiod_line_request_get_value(gline_request_in, PIN_IO1_5);
|
||||
printf("IO1-5 = %d\n", value);
|
||||
|
||||
|
||||
|
||||
|
||||
gline_settings_out = gpiod_line_settings_new();
|
||||
if (gpiod_line_settings_set_direction(gline_settings_out, GPIOD_LINE_DIRECTION_OUTPUT) != 0) {
|
||||
perror("gpiod_line_settings_set_direction");
|
||||
}
|
||||
gline_config_out = gpiod_line_config_new();
|
||||
|
||||
gpiod_line_config_add_line_settings(gline_config_out, offset_out, 2, gline_settings_out);
|
||||
gline_request_config_out = gpiod_request_config_new();
|
||||
gline_request_out = gpiod_chip_request_lines(gchip, gline_request_config_out, gline_config_out);
|
||||
|
||||
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_3, 1);
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_4, 0);
|
||||
|
||||
printf("IO1-3 = 1, IO1-4 = 0\n");
|
||||
sleep(1);
|
||||
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
|
||||
|
||||
value=gpiod_line_request_get_value(gline_request_in, PIN_IO1_5);
|
||||
printf("IO1-5 = %d\n", value);
|
||||
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_3, 0);
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_4, 1);
|
||||
|
||||
printf("IO1-3 = 0, IO1-4 = 1\n");
|
||||
sleep(1);
|
||||
|
||||
|
||||
|
||||
value=gpiod_line_request_get_value(gline_request_in, PIN_IO1_5);
|
||||
printf("IO1-5 = %d\n", value);
|
||||
|
||||
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_3, 1);
|
||||
value=gpiod_line_request_set_value(gline_request_out, PIN_IO1_4, 0);
|
||||
|
||||
printf("IO1-3 = 1, IO1-4 = 0\n");
|
||||
sleep(1);
|
||||
|
||||
}
|
||||
|
||||
gpiod_chip_close(gchip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
保存,进行编译
|
||||
|
||||
```shell
|
||||
gcc -I/home/sipeed/mylib_local/include -L/home/sipeed/mylib_local/lib -o gpio gpio.c -lgpiod
|
||||
|
||||
```
|
||||
执行前需要给一些设备权限
|
||||
|
||||
```shell
|
||||
export LD_LIBRARY_PATH=/home/sipeed/mylib_local/lib:$LD_LIBRARY_PATH
|
||||
export PATH=/home/sipeed/mylib_local/bin:$PATH
|
||||
sudo chmod o+rw /dev/gpiochip4
|
||||
sudo chmod o+rw /dev/spidev2.0
|
||||
|
||||
#可以直接放在一个.sh文件里面执行
|
||||
|
||||
```
|
||||
|
||||
运行程序:
|
||||
|
||||
```shell
|
||||
|
||||
./gpio
|
||||
|
||||
```
|
||||
|
||||
控制台输出如下:
|
||||
|
||||
```shell
|
||||
|
||||
sipeed@lpi4a:~/gpio$ ./gpio
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
IO1-5 = 1
|
||||
IO1-3 = 1, IO1-4 = 0
|
||||
IO1-5 = 1
|
||||
IO1-3 = 0, IO1-4 = 1
|
||||
|
||||
```
|
||||
|
||||
|
||||
## UART
|
||||
|
||||
@@ -304,7 +493,54 @@ sipeed@lpi4a:~$ ls /dev/spidev2.0
|
||||
/dev/spidev2.0
|
||||
```
|
||||
|
||||
TODO
|
||||
|
||||
### 开始
|
||||
|
||||
注意IO驱动能力,Licheepi4A需要外置电平转化芯片,自用TXS0108E)
|
||||
该例程所有程序均在板子上编译,如有需要交叉编,在编译的时候更换工具链即可。
|
||||
以下例程的GPIO操作基于上面的GPIOD库。
|
||||
|
||||
#### 1.下载源码
|
||||
|
||||
```shell
|
||||
git clone https://github.com/fffdee/ST7735_for_Licheepi4A.git
|
||||
```
|
||||
#### 2. 构建GPIOD库
|
||||
安装所需要的依赖:
|
||||
```shell
|
||||
sudo apt-get install build-essential pkg-config m4 automake autoconf libtool autoconf-archive
|
||||
sudo apt install gcc g++ gpiod cmake
|
||||
```
|
||||
安装GPIOD库(源文件已安装,需要更改库路径参考以下操作):
|
||||
```shell
|
||||
tar zxvf libgpiod-2.0.tar.gz
|
||||
cd libgpiod-2.0
|
||||
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
|
||||
#部署库的相关文件到项目文件夹:--prefix后面的路径要换成自己项目所在的路径,方便后续操作
|
||||
./autogen.sh --enable-tools=yes --prefix=/home/sipeed/TFT_demo/
|
||||
make
|
||||
sudo make install
|
||||
#安装完毕
|
||||
```
|
||||
|
||||
#### 3.编译以及运行
|
||||
```shell
|
||||
|
||||
cd TFT_demo
|
||||
cmake .
|
||||
make -j4
|
||||
|
||||
#授予设备权限,每次开机执行一次即可
|
||||
. exec.sh
|
||||
./tft_demo
|
||||
```
|
||||
|
||||
### 效果图
|
||||
|
||||

|
||||
|
||||
## USB
|
||||
|
||||
|
||||
@@ -786,7 +786,210 @@ steps: 10
|
||||

|
||||
|
||||
|
||||
##PSP模拟器
|
||||
|
||||
[项目地址](https://github.com/hrydgard/ppsspp)
|
||||
|
||||
本示例通过这个项目在 LPi4A 上运行 PSP模拟器。
|
||||
|
||||
首先,我们需要构建 PPSSPP:
|
||||
```shell
|
||||
#先安装所需要的包
|
||||
sudo apt install build-essential cmake libgl1-mesa-dev libsdl2-dev libvulkan-dev mesa-common-dev libglu1-mesa-dev libsdl2-dev libcurl4-openssl-dev
|
||||
git clone --recurse-submodules https://github.com/hrydgard/ppsspp.git
|
||||
cd ppsspp
|
||||
git submodule update --init --recursive
|
||||
git pull --rebase https://github.com/hrydgard/ppsspp.git
|
||||
cmake .
|
||||
make -j4
|
||||
|
||||
```
|
||||
编译可能需要一段时间,出现以下输出时,编译成功:
|
||||
```shell
|
||||
sipeed@lpi4a:~/ppsspp$ make -j4
|
||||
[ 0%] Built target unix_based_hardware_detection
|
||||
[ 0%] Built target utils
|
||||
[ 0%] Built target gason
|
||||
[ 1%] Built target snappy
|
||||
[ 1%] Built target cityhash
|
||||
[ 1%] Built target vma
|
||||
[ 2%] Built target png17
|
||||
[ 3%] Built target udis86
|
||||
[ 3%] Built target basis_universal
|
||||
[ 16%] Built target libzip
|
||||
[ 16%] Built target glew
|
||||
[ 16%] Built target sfmt19937
|
||||
[ 17%] Built target kirk
|
||||
[ 18%] Built target xbrz
|
||||
[ 18%] Built target xxhash
|
||||
[ 19%] Generating something_that_never_exists
|
||||
[ 21%] Built target miniupnpc
|
||||
[ 25%] Built target libzstd_static
|
||||
-- Could NOT find Git (missing: GIT_EXECUTABLE)
|
||||
CMake Warning at git-version.cmake:16 (message):
|
||||
git not found, unable to include version.
|
||||
|
||||
|
||||
[ 25%] Built target GitVersion
|
||||
[ 25%] Built target GenericCodeGen
|
||||
[ 25%] Built target OGLCompiler
|
||||
[ 25%] Built target OSDependent
|
||||
[ 31%] Built target armips
|
||||
[ 31%] Built target spirv-cross-core
|
||||
[ 34%] Built target rcheevos
|
||||
[ 35%] Built target cpu_features
|
||||
[ 35%] Built target discord-rpc
|
||||
[ 36%] Built target spirv-cross-glsl
|
||||
[ 41%] Built target MachineIndependent
|
||||
[ 41%] Built target spirv-cross-cpp
|
||||
[ 41%] Built target spirv-cross-msl
|
||||
[ 41%] Built target spirv-cross-hlsl
|
||||
[ 41%] Built target glslang
|
||||
[ 42%] Built target SPIRV
|
||||
[ 58%] Built target Common
|
||||
[ 59%] Built target native
|
||||
[ 95%] Built target Core
|
||||
[100%] Built target PPSSPPSDL
|
||||
|
||||
```
|
||||
安装完之后可以试运行一下(root模式下):
|
||||
```shell
|
||||
./PPSSPPSDL
|
||||
```
|
||||
如图:
|
||||

|
||||
|
||||
游戏下载:
|
||||
[psp游戏下载](https://playdreamcreate.com/)
|
||||
|
||||
下载完成:
|
||||
我们只需要用到压缩包里的EBOOT.PBP文件
|
||||
1.如果是使用图形界面则直接解压
|
||||
2.如果使用命令行的话,需要将压缩包改成zip后缀再进行解压
|
||||
```shell
|
||||
mv [压缩包名] [压缩包名].zip
|
||||
unzip [压缩包名].zip
|
||||
```
|
||||
|
||||
开始游戏:在PPSSPPSDL命令下打开EBOOT.PBP即可
|
||||
```shell
|
||||
./PPSSPPSDL ./game/01/EBOOT.PBP
|
||||
```
|
||||
|
||||
运行效果如图:
|
||||

|
||||

|
||||
|
||||
## opencv 的使用
|
||||
首先安装依赖,以及python3环境
|
||||
```shell
|
||||
sudo apt install python3 python3-pip
|
||||
sudo apt install python3-opencv
|
||||
sudo apt install libqt5gui5-gles
|
||||
```
|
||||
opencv读取图片demo:
|
||||
|
||||
```shell
|
||||
#!/bin/bash
|
||||
import cv2
|
||||
|
||||
img2 = cv2.imread('aContour.jpg', cv2.IMREAD_UNCHANGED)
|
||||
cv2.namedWindow('show_img', 0) # 定义窗口名称,三个函数(namedWindow、 resizeWindow、 imshow)中窗口名称要一致
|
||||
cv2.resizeWindow('show_img', 736, 416)
|
||||
cv2.imshow("show_img",img2)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
cv2.destroyWindow("show_img")
|
||||
|
||||
```
|
||||
运行程序:
|
||||
```shell
|
||||
python3 show_pic.py
|
||||
```
|
||||
运行结果:
|
||||
|
||||

|
||||
|
||||
PIL-numpy-opencv 综合测试demo:
|
||||
|
||||
```shell
|
||||
#!/bin/bash
|
||||
from typing import List, Any, Tuple
|
||||
import matplotlib.pyplot as plt
|
||||
import cv2
|
||||
|
||||
import numpy as np
|
||||
from PIL import Image
|
||||
from PIL import ImageFilter
|
||||
|
||||
im = Image.open('a.jpg')
|
||||
om = im.filter(ImageFilter.CONTOUR)
|
||||
om.save('aContour.jpg')
|
||||
|
||||
b = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
|
||||
g = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
|
||||
r = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
|
||||
print(b)
|
||||
|
||||
img=np.empty([20,30,3],dtype=np.uint8)
|
||||
bgr=()
|
||||
rowlist=[]
|
||||
collist: List[List[Tuple[Any, Any, Any]]]=[]
|
||||
for row in range(200):
|
||||
rowlist=[]
|
||||
for col in range(300):
|
||||
bgr=(r[row][col],g[row][col],b[row][col])
|
||||
rowlist.append(bgr)
|
||||
collist.append(rowlist)
|
||||
|
||||
img=np.asarray(collist)
|
||||
|
||||
img2 = cv2.imread('aContour.jpg', cv2.IMREAD_UNCHANGED)
|
||||
cv2.namedWindow('show_img', 0)
|
||||
cv2.resizeWindow('show_img', 736, 416)
|
||||
cv2.imshow("show_img",img2)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
cv2.destroyWindow("show_img")
|
||||
|
||||
```
|
||||
## ncnn 的使用
|
||||
|
||||
首先,git源码和安装相关的依赖库
|
||||
|
||||
```shell
|
||||
git clone https://github.com/Tencent/ncnn.git
|
||||
cd ncnn
|
||||
git submodule update --init
|
||||
|
||||
sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev libqt5gui5-gles
|
||||
|
||||
```
|
||||
编译源码
|
||||
|
||||
```shell
|
||||
cd ncnn
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
|
||||
make -j$(nproc)
|
||||
```
|
||||
|
||||
下载相关的模型文件以及参数,将它们放在与可执行文件同个文件夹下
|
||||
[下载链接](https://github.com/nihui/ncnn-assets)
|
||||
```shell
|
||||
~/ncnn/build/example
|
||||
```
|
||||

|
||||
|
||||
执行
|
||||
```shell
|
||||
./nanodet/ a.jpg
|
||||
```
|
||||
运行结果
|
||||

|
||||

|
||||
|
||||
## 其它
|
||||
|
||||
欢迎投稿~ 投稿接受后可得¥5~150($1~20)优惠券!
|
||||
欢迎投稿~ 投稿接受后可得¥5~150($1~20)优惠券!
|
||||
|
||||
@@ -42,7 +42,7 @@ Correct operation validated. See README.md for run and reporting rules.
|
||||
CoreMark 1.0 : 9175.077154 / GCC13.1.0 -O2 -DPERFORMANCE_RUN=1 -lrt -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-im / Heap
|
||||
```
|
||||
|
||||
使用公版工具链,GCC 版本为`10.4.0`的测试结果(1.85GHz):
|
||||
使用平头哥专用工具链,GCC 版本为`10.4.0`的测试结果(1.85GHz):
|
||||
|
||||
```txt
|
||||
2K performance run parameters for coremark.
|
||||
|
||||
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 475 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 308 KiB |
BIN
docs/hardware/zh/lichee/th1520/lpi4a/assets/application/psp1.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 527 KiB |
|
After Width: | Height: | Size: 574 KiB |
|
After Width: | Height: | Size: 802 KiB |
1920
layout/home.html
4
layout/i18n_babel.cfg
Normal file
@@ -0,0 +1,4 @@
|
||||
[python: **.py]
|
||||
|
||||
[jinja2: **.html]
|
||||
extensions=jinja2.ext.i18n
|
||||
1
layout/i18n_locales.cfg
Normal file
@@ -0,0 +1 @@
|
||||
locales=["zh", "en"]
|
||||
192
layout/licheepi.html
Normal file
@@ -0,0 +1,192 @@
|
||||
<!-- 修改后保存一下 include 这个文件的 html 模板就会渲染 -->
|
||||
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<h2 class="text-2xl font-bold my-8 block_simple">{{_('Linux SBC 系列')}}</h2>
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<div class="cards">
|
||||
<!-- cards -->
|
||||
<div class="card" v-for="item in data_lichee.cards">
|
||||
<img class="card_img" :src="item.img" />
|
||||
<h3 class="card_title" class="text-lg">{[item.title]}</h3>
|
||||
<div class="card_brief">{[item.brief]}</div>
|
||||
<div class="card_btns">
|
||||
<a
|
||||
v-for="btn in item.btns"
|
||||
:href="btn.link"
|
||||
:target="btn.new_tab ? '_blank' : '_self'"
|
||||
>{[btn.label]}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!-- cards end -->
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center mt-10 mb-5">
|
||||
<!-- a table to compare upper products' parameters -->
|
||||
<h3 class="text-2xl font-bold my-8">{{_('Lichee SBC 系列产品参数对比')}}</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{_('参数')}}</th>
|
||||
<th>LicheePi 4A</th>
|
||||
<th>LicheeRV</th>
|
||||
<th>LicheePi Zero</th>
|
||||
<th>LicheePi Nano</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{_('处理器')}}</td>
|
||||
<td>TH1520: 4xC910@1.85GHz RV64GCV</td>
|
||||
<td>D1: C906@1.0GHz</td>
|
||||
<td>V3S: Cortex-A7@1.2GHz</td>
|
||||
<td>F1C100s: ARM9@408MHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('内存')}}</td>
|
||||
<td>8GB/16GB 64bits LPDDR4X</td>
|
||||
<td>512MB/1GB DDR3, 792MHz</td>
|
||||
<td>64MB DDR2</td>
|
||||
<td>32MB DDR</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('储存')}}</td>
|
||||
<td>{{_('预留')}} EMMC/TF {{_('卡')}}</td>
|
||||
<td>{{_('预留')}} SD-NAND/TF {{_('卡')}}</td>
|
||||
<td>{{_('预留')}} SOP8 SPI Flash/TF {{_('卡')}}</td>
|
||||
<td>{{_('板载')}} 16MB NOR Flash, TF {{_('卡')}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('GPU和显示')}}</td>
|
||||
<td>
|
||||
IMG BXM-4-64,<br />OpenCL 1.1/1.2/2.0<br />OpenGL ES
|
||||
3.0/3.1/3.2<br />Vulkan 1.1/1.2,<br />HDMI2.0/4-lane MIPI DSI ·
|
||||
Android NN HAL
|
||||
</td>
|
||||
<td>{{_('无')}} GPU, MIPI 4-lane MIPI DSI/ RGB888/MCUI80/SPI</td>
|
||||
<td>{{_('无')}} GPU, 40P RGB LCD</td>
|
||||
<td>{{_('无')}} GPU, 40P RGB LCD</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('编解码器')}}</td>
|
||||
<td>
|
||||
H.265 4K@40FPS/H.264 4K@40FPS/VP9/8/7/6/AVS/AVS+/AVS2.0/VC1/MPEG4
|
||||
{{_('解码')}}<br />H.264 4K@40FPS/H.265 4K@40FPS {{_('编码')}}
|
||||
</td>
|
||||
<td>
|
||||
H.264 1080p@30FPS/MJPEG 1080@30FPS {{_('解码')}}<br />1080p@40FPS/1080p@30FPS+VGA@30FPS
|
||||
H.264 {{_('编码')}}
|
||||
</td>
|
||||
<td>
|
||||
H.264 1280x720@30FPS/MPEG1/2/4 1280x720@30FPS {{_('解码')}}<br />MJPEG
|
||||
1280x720@30FPS/JPEG 8192x8192 {{_('编码')}}
|
||||
</td>
|
||||
<td>
|
||||
H.264 1280x720@30FPS {{_('解码')}}<br />MPEG1/2/4 1280x720@30FPS {{_('解码')}}<br />MJPEG
|
||||
1280x720@30 FPS {{_('解码')}}<br />JPEG 8192x8192 {{_('编码')}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('操作系统')}}</td>
|
||||
<td>{{_('主线')}} Linux/Android/Deepin/Ubuntu/OpenWrt etc.</td>
|
||||
<td>Tina Linux/Debian/Ubuntu/RTOS</td>
|
||||
<td>Linux</td>
|
||||
<td>4.19 {{_('主线')}} Linux/3.10 BSP Linux/Xboot/RT-Thread</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NPU</td>
|
||||
<td>4Tops@INT8 1GHz</td>
|
||||
<td>{{_('无')}}</td>
|
||||
<td>{{_('无')}}</td>
|
||||
<td>{{_('无')}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('典型外设')}}</td>
|
||||
<td>
|
||||
USB3.0x4/UART/I2C/SPI/PWM/GPIO/ADC<br />2x2-lane MIPI CSI/1x4-lane
|
||||
MIPI CSI/1000M Ethx2
|
||||
</td>
|
||||
<td>OTG USB/UART/I2C/SPI/PWM/GPIO/TWI/ADC</td>
|
||||
<td>
|
||||
OTG USBx1/UARTx3/SPIx1/PWMx2/<br />GPIO/LRADCx1/SDIOx2/TWI/I2Cx2/100M
|
||||
Eth+EPHY/MIPI CSIx1
|
||||
</td>
|
||||
<td>
|
||||
OTG USBx1/UARTx3/SPIx2/PWMx2/<br />GPIO/LRADCx1/SDIO/TWIx3/TV out
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script lang="ts">
|
||||
const data_lichee = {
|
||||
cards: [
|
||||
{
|
||||
img: "/static/home/licheepi4a.jpg",
|
||||
title: "LicheePi 4A",
|
||||
brief: "{{_('高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/lichee/th1520/lpi4a/1_intro.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=715508771884",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/static/image/licheeRV_dock.jpg",
|
||||
title: "LicheeRV",
|
||||
brief: "{{_('高集成度入门级 RISC-V Linux 开发板')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/lichee/RV/Dock.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w21412213-24984936557.39.5a6752b1QHS1PQ&id=666274331852",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/static/home/lichee_zero.jpg",
|
||||
title: "LicheePi Zero",
|
||||
brief: "Cortex-A7 {{_('迷你')}} Linux {{_('开发板')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/lichee/Zero/Zero.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-24984936573.16.49e92935JOImvv&id=585033586770",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/static/home/lichee_nano.jpg",
|
||||
title: "LicheePi Nano",
|
||||
brief: "ARM9 {{_('迷你')}} Linux {{_('开发板')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/lichee/Nano/Nano.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-24984936573.14.49e92935JOImvv&id=584657396198",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
</script>
|
||||
249
layout/locales/en/LC_MESSAGES/messages.po
Normal file
@@ -0,0 +1,249 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: home.html:95
|
||||
msgid "/static/home/licheepi4a_post.jpg"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:98 home.html:111 home.html:124 home.html:137 licheepi.html:132
|
||||
#: licheepi.html:148 licheepi.html:164 licheepi.html:180 maix.html:110
|
||||
#: maix.html:127 maix.html:143 maixsense.html:40 maixsense.html:56 tang.html:40
|
||||
#: tang.html:56 tang.html:72 tang.html:88
|
||||
msgid "文档"
|
||||
msgstr "Documentation"
|
||||
|
||||
#: home.html:102 home.html:115 home.html:128 home.html:141 licheepi.html:136
|
||||
#: licheepi.html:152 licheepi.html:168 licheepi.html:184 maix.html:114
|
||||
#: maix.html:131 maix.html:147 maixsense.html:44 maixsense.html:60 tang.html:44
|
||||
#: tang.html:60 tang.html:76 tang.html:92
|
||||
msgid "购买"
|
||||
msgstr "Buy"
|
||||
|
||||
#: home.html:150
|
||||
msgid "分享广场"
|
||||
msgstr "Share Center"
|
||||
|
||||
#: home.html:154
|
||||
msgid "MaixHub 官网"
|
||||
msgstr "MaixHub"
|
||||
|
||||
#: home.html:164
|
||||
msgid "产品动态"
|
||||
msgstr "Product News"
|
||||
|
||||
#: home.html:168
|
||||
msgid "Maix AI 视觉"
|
||||
msgstr "Maix AI Vision"
|
||||
|
||||
#: home.html:180
|
||||
msgid "MaixSense 传感器"
|
||||
msgstr "MaixSense Sensor"
|
||||
|
||||
#: home.html:184
|
||||
msgid "其它"
|
||||
msgstr "Others"
|
||||
|
||||
#: licheepi.html:4
|
||||
msgid "Linux SBC 系列"
|
||||
msgstr "Linux SBC Series"
|
||||
|
||||
#: licheepi.html:25
|
||||
msgid "Lichee SBC 系列产品参数对比"
|
||||
msgstr "Lichee SBC Series Product Comparison"
|
||||
|
||||
#: licheepi.html:29 maix.html:29
|
||||
msgid "参数"
|
||||
msgstr "Parameter"
|
||||
|
||||
#: licheepi.html:38 maix.html:38
|
||||
msgid "处理器"
|
||||
msgstr "CPU"
|
||||
|
||||
#: licheepi.html:45 maix.html:45
|
||||
msgid "内存"
|
||||
msgstr "memory"
|
||||
|
||||
#: licheepi.html:52 maix.html:59
|
||||
msgid "储存"
|
||||
msgstr "storage"
|
||||
|
||||
#: licheepi.html:53 licheepi.html:54 licheepi.html:55
|
||||
msgid "预留"
|
||||
msgstr "reserved"
|
||||
|
||||
#: licheepi.html:53 licheepi.html:54 licheepi.html:55 licheepi.html:56
|
||||
#: maix.html:60 maix.html:61 maix.html:62 maix.html:63
|
||||
msgid "卡"
|
||||
msgstr "card"
|
||||
|
||||
#: licheepi.html:56 maix.html:60 maix.html:61
|
||||
msgid "板载"
|
||||
msgstr "onboard"
|
||||
|
||||
#: licheepi.html:59
|
||||
msgid "GPU和显示"
|
||||
msgstr "GPU and display"
|
||||
|
||||
#: licheepi.html:65 licheepi.html:66 licheepi.html:67 licheepi.html:98
|
||||
#: licheepi.html:99 licheepi.html:100
|
||||
msgid "无"
|
||||
msgstr "no"
|
||||
|
||||
#: licheepi.html:70
|
||||
msgid "编解码器"
|
||||
msgstr "codec"
|
||||
|
||||
#: licheepi.html:73 licheepi.html:76 licheepi.html:80 licheepi.html:84
|
||||
#: licheepi.html:85
|
||||
msgid "解码"
|
||||
msgstr "decode"
|
||||
|
||||
#: licheepi.html:73 licheepi.html:77 licheepi.html:81 licheepi.html:85
|
||||
msgid "编码"
|
||||
msgstr "encode"
|
||||
|
||||
#: licheepi.html:89 maix.html:73
|
||||
msgid "操作系统"
|
||||
msgstr "operating system"
|
||||
|
||||
#: licheepi.html:90 licheepi.html:93
|
||||
msgid "主线"
|
||||
msgstr "mainline"
|
||||
|
||||
#: licheepi.html:103 maix.html:80
|
||||
msgid "典型外设"
|
||||
msgstr "typical peripherals"
|
||||
|
||||
#: licheepi.html:129
|
||||
msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑"
|
||||
msgstr "High performance RISC-V@1.85GHz x4 development board/tablet/laptop"
|
||||
|
||||
#: licheepi.html:145
|
||||
msgid "高集成度入门级 RISC-V Linux 开发板"
|
||||
msgstr "Highly integrated entry-level RISC-V Linux development board"
|
||||
|
||||
#: licheepi.html:161 licheepi.html:177
|
||||
msgid "迷你"
|
||||
msgstr "mini"
|
||||
|
||||
#: licheepi.html:161 licheepi.html:177
|
||||
msgid "开发板"
|
||||
msgstr "dev board"
|
||||
|
||||
#: maix.html:4
|
||||
msgid "Maix AI 视觉系列"
|
||||
msgstr "Maix AI Vision"
|
||||
|
||||
#: maix.html:25
|
||||
msgid "Maix 系列产品参数对比"
|
||||
msgstr "Maix Series Product Comparison"
|
||||
|
||||
#: maix.html:39
|
||||
msgid "双核"
|
||||
msgstr "Dual core"
|
||||
|
||||
#: maix.html:39
|
||||
msgid "位"
|
||||
msgstr "bit"
|
||||
|
||||
#: maix.html:53 maix.html:54
|
||||
msgid "支持有限"
|
||||
msgstr "limited support"
|
||||
|
||||
#: maix.html:53 maix.html:54
|
||||
msgid "算子"
|
||||
msgstr "operations"
|
||||
|
||||
#: maix.html:55 maix.html:56
|
||||
msgid "支持常用"
|
||||
msgstr "support common"
|
||||
|
||||
#: maix.html:55 maix.html:56
|
||||
msgid "模型"
|
||||
msgstr "model"
|
||||
|
||||
#: maix.html:56
|
||||
msgid "和"
|
||||
msgstr "and"
|
||||
|
||||
#: maix.html:60
|
||||
msgid "支持"
|
||||
msgstr "support"
|
||||
|
||||
#: maix.html:61 maix.html:62 maix.html:63
|
||||
msgid "或者"
|
||||
msgstr "or"
|
||||
|
||||
#: maix.html:66
|
||||
msgid "软件支持"
|
||||
msgstr "software support"
|
||||
|
||||
#: maix.html:90 maix.html:91 maix.html:92 maix.html:93
|
||||
msgid "支持度"
|
||||
msgstr "support"
|
||||
|
||||
#: maix.html:90 maix.html:92 maix.html:93
|
||||
msgid "良"
|
||||
msgstr "ok"
|
||||
|
||||
#: maix.html:91
|
||||
msgid "优"
|
||||
msgstr "good"
|
||||
|
||||
#: maix.html:107
|
||||
msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用"
|
||||
msgstr ""
|
||||
"MCU with hardware AI acceleration, combined with easy-to-use software to "
|
||||
"quickly land low-cost AI applications"
|
||||
|
||||
#: maix.html:124
|
||||
msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配"
|
||||
msgstr ""
|
||||
"Hardware AI acceleration + Linux + easy-to-use software, education, "
|
||||
"industrial vision, smart home scene"
|
||||
|
||||
#: maix.html:140
|
||||
msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC"
|
||||
msgstr ""
|
||||
"3.6Tops AI ISP, low-light night vision, a large number of common AI model"
|
||||
" support, security smart IPC"
|
||||
|
||||
#: maix.html:156
|
||||
msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持"
|
||||
msgstr ""
|
||||
"10Tops AI computing power, 32 channels of 1080p HD AI video surveillance,"
|
||||
" AI large model support"
|
||||
|
||||
#: maix.html:159
|
||||
msgid "了解更多"
|
||||
msgstr "Learn more"
|
||||
|
||||
#: maixsense.html:4
|
||||
msgid "MaixSense 传感器模组系列"
|
||||
msgstr "MaixSense Sensor Module"
|
||||
|
||||
#: maixsense.html:37
|
||||
msgid "深度传感器模组"
|
||||
msgstr "Depth Sensor Module"
|
||||
|
||||
#: maixsense.html:53
|
||||
msgid "深度摄像头模组"
|
||||
msgstr "Depth Camera Module"
|
||||
|
||||
#: others.html:5
|
||||
msgid "其它未列出的产品请进入"
|
||||
msgstr "For other products not listed, please enter"
|
||||
|
||||
#: others.html:5
|
||||
msgid "产品文档"
|
||||
msgstr "Product documentation"
|
||||
|
||||
#: others.html:5
|
||||
msgid "在左侧目录查找"
|
||||
msgstr "Find in the left menu"
|
||||
|
||||
#: tang.html:4
|
||||
msgid "Tang FPGA 系列"
|
||||
msgstr "Tang FPGA Series"
|
||||
|
||||
241
layout/locales/messages.pot
Normal file
@@ -0,0 +1,241 @@
|
||||
#: home.html:3
|
||||
msgid "翻译内容"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:95
|
||||
msgid "/static/home/licheepi4a_post.jpg"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:98 home.html:111 home.html:124 home.html:137 licheepi.html:132
|
||||
#: licheepi.html:148 licheepi.html:164 licheepi.html:180 maix.html:110
|
||||
#: maix.html:127 maix.html:143 maixsense.html:40 maixsense.html:56 tang.html:40
|
||||
#: tang.html:56 tang.html:72 tang.html:88
|
||||
msgid "文档"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:102 home.html:115 home.html:128 home.html:141 licheepi.html:136
|
||||
#: licheepi.html:152 licheepi.html:168 licheepi.html:184 maix.html:114
|
||||
#: maix.html:131 maix.html:147 maixsense.html:44 maixsense.html:60 tang.html:44
|
||||
#: tang.html:60 tang.html:76 tang.html:92
|
||||
msgid "购买"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:150
|
||||
msgid "分享广场"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:154
|
||||
msgid "MaixHub 官网"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:164
|
||||
msgid "产品动态"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:168
|
||||
msgid "Maix AI 视觉"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:180
|
||||
msgid "MaixSense 传感器"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:184
|
||||
msgid "其它"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:4
|
||||
msgid "Linux SBC 系列"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:25
|
||||
msgid "Lichee SBC 系列产品参数对比"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:29 maix.html:29
|
||||
msgid "参数"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:38 maix.html:38
|
||||
msgid "处理器"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:45 maix.html:45
|
||||
msgid "内存"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:52 maix.html:59
|
||||
msgid "储存"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:53 licheepi.html:54 licheepi.html:55
|
||||
msgid "预留"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:53 licheepi.html:54 licheepi.html:55 licheepi.html:56
|
||||
#: maix.html:60 maix.html:61 maix.html:62 maix.html:63
|
||||
msgid "卡"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:56 maix.html:60 maix.html:61
|
||||
msgid "板载"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:59
|
||||
msgid "GPU和显示"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:65 licheepi.html:66 licheepi.html:67 licheepi.html:98
|
||||
#: licheepi.html:99 licheepi.html:100
|
||||
msgid "无"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:70
|
||||
msgid "编解码器"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:73 licheepi.html:76 licheepi.html:80 licheepi.html:84
|
||||
#: licheepi.html:85
|
||||
msgid "解码"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:73 licheepi.html:77 licheepi.html:81 licheepi.html:85
|
||||
msgid "编码"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:89 maix.html:73
|
||||
msgid "操作系统"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:90 licheepi.html:93
|
||||
msgid "主线"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:103 maix.html:80
|
||||
msgid "典型外设"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:129
|
||||
msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:145
|
||||
msgid "高集成度入门级 RISC-V Linux 开发板"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:161 licheepi.html:177
|
||||
msgid "迷你"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:161 licheepi.html:177
|
||||
msgid "开发板"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:4
|
||||
msgid "Maix AI 视觉系列"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:25
|
||||
msgid "Maix 系列产品参数对比"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:39
|
||||
msgid "双核"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:39
|
||||
msgid "位"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:53 maix.html:54
|
||||
msgid "支持有限"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:53 maix.html:54
|
||||
msgid "算子"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:55 maix.html:56
|
||||
msgid "支持常用"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:55 maix.html:56
|
||||
msgid "模型"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:56
|
||||
msgid "和"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:60
|
||||
msgid "支持"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:61 maix.html:62 maix.html:63
|
||||
msgid "或者"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:66
|
||||
msgid "软件支持"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:90 maix.html:91 maix.html:92 maix.html:93
|
||||
msgid "支持度"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:90 maix.html:92 maix.html:93
|
||||
msgid "良"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:91
|
||||
msgid "优"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:107
|
||||
msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:124
|
||||
msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:140
|
||||
msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:156
|
||||
msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:159
|
||||
msgid "了解更多"
|
||||
msgstr ""
|
||||
|
||||
#: maixsense.html:4
|
||||
msgid "MaixSense 传感器模组系列"
|
||||
msgstr ""
|
||||
|
||||
#: maixsense.html:37
|
||||
msgid "深度传感器模组"
|
||||
msgstr ""
|
||||
|
||||
#: maixsense.html:53
|
||||
msgid "深度摄像头模组"
|
||||
msgstr ""
|
||||
|
||||
#: others.html:5
|
||||
msgid "其它未列出的产品请进入"
|
||||
msgstr ""
|
||||
|
||||
#: others.html:5
|
||||
msgid "产品文档"
|
||||
msgstr ""
|
||||
|
||||
#: others.html:5
|
||||
msgid "在左侧目录查找"
|
||||
msgstr ""
|
||||
|
||||
#: tang.html:4
|
||||
msgid "Tang FPGA 系列"
|
||||
msgstr ""
|
||||
|
||||
241
layout/locales/zh/LC_MESSAGES/messages.po
Normal file
@@ -0,0 +1,241 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: home.html:95
|
||||
msgid "/static/home/licheepi4a_post.jpg"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:98 home.html:111 home.html:124 home.html:137 licheepi.html:132
|
||||
#: licheepi.html:148 licheepi.html:164 licheepi.html:180 maix.html:110
|
||||
#: maix.html:127 maix.html:143 maixsense.html:40 maixsense.html:56 tang.html:40
|
||||
#: tang.html:56 tang.html:72 tang.html:88
|
||||
msgid "文档"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:102 home.html:115 home.html:128 home.html:141 licheepi.html:136
|
||||
#: licheepi.html:152 licheepi.html:168 licheepi.html:184 maix.html:114
|
||||
#: maix.html:131 maix.html:147 maixsense.html:44 maixsense.html:60 tang.html:44
|
||||
#: tang.html:60 tang.html:76 tang.html:92
|
||||
msgid "购买"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:150
|
||||
msgid "分享广场"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:154
|
||||
msgid "MaixHub 官网"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:164
|
||||
msgid "产品动态"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:168
|
||||
msgid "Maix AI 视觉"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:180
|
||||
msgid "MaixSense 传感器"
|
||||
msgstr ""
|
||||
|
||||
#: home.html:184
|
||||
msgid "其它"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:4
|
||||
msgid "Linux SBC 系列"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:25
|
||||
msgid "Lichee SBC 系列产品参数对比"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:29 maix.html:29
|
||||
msgid "参数"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:38 maix.html:38
|
||||
msgid "处理器"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:45 maix.html:45
|
||||
msgid "内存"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:52 maix.html:59
|
||||
msgid "储存"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:53 licheepi.html:54 licheepi.html:55
|
||||
msgid "预留"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:53 licheepi.html:54 licheepi.html:55 licheepi.html:56
|
||||
#: maix.html:60 maix.html:61 maix.html:62 maix.html:63
|
||||
msgid "卡"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:56 maix.html:60 maix.html:61
|
||||
msgid "板载"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:59
|
||||
msgid "GPU和显示"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:65 licheepi.html:66 licheepi.html:67 licheepi.html:98
|
||||
#: licheepi.html:99 licheepi.html:100
|
||||
msgid "无"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:70
|
||||
msgid "编解码器"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:73 licheepi.html:76 licheepi.html:80 licheepi.html:84
|
||||
#: licheepi.html:85
|
||||
msgid "解码"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:73 licheepi.html:77 licheepi.html:81 licheepi.html:85
|
||||
msgid "编码"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:89 maix.html:73
|
||||
msgid "操作系统"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:90 licheepi.html:93
|
||||
msgid "主线"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:103 maix.html:80
|
||||
msgid "典型外设"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:129
|
||||
msgid "高性能 RISC-V@1.85GHz x4 开发板/平板/笔记本电脑"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:145
|
||||
msgid "高集成度入门级 RISC-V Linux 开发板"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:161 licheepi.html:177
|
||||
msgid "迷你"
|
||||
msgstr ""
|
||||
|
||||
#: licheepi.html:161 licheepi.html:177
|
||||
msgid "开发板"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:4
|
||||
msgid "Maix AI 视觉系列"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:25
|
||||
msgid "Maix 系列产品参数对比"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:39
|
||||
msgid "双核"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:39
|
||||
msgid "位"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:53 maix.html:54
|
||||
msgid "支持有限"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:53 maix.html:54
|
||||
msgid "算子"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:55 maix.html:56
|
||||
msgid "支持常用"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:55 maix.html:56
|
||||
msgid "模型"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:56
|
||||
msgid "和"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:60
|
||||
msgid "支持"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:61 maix.html:62 maix.html:63
|
||||
msgid "或者"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:66
|
||||
msgid "软件支持"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:90 maix.html:91 maix.html:92 maix.html:93
|
||||
msgid "支持度"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:90 maix.html:92 maix.html:93
|
||||
msgid "良"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:91
|
||||
msgid "优"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:107
|
||||
msgid "带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:124
|
||||
msgid "硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:140
|
||||
msgid "3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:156
|
||||
msgid "10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持"
|
||||
msgstr ""
|
||||
|
||||
#: maix.html:159
|
||||
msgid "了解更多"
|
||||
msgstr ""
|
||||
|
||||
#: maixsense.html:4
|
||||
msgid "MaixSense 传感器模组系列"
|
||||
msgstr ""
|
||||
|
||||
#: maixsense.html:37
|
||||
msgid "深度传感器模组"
|
||||
msgstr ""
|
||||
|
||||
#: maixsense.html:53
|
||||
msgid "深度摄像头模组"
|
||||
msgstr ""
|
||||
|
||||
#: others.html:5
|
||||
msgid "其它未列出的产品请进入"
|
||||
msgstr ""
|
||||
|
||||
#: others.html:5
|
||||
msgid "产品文档"
|
||||
msgstr ""
|
||||
|
||||
#: others.html:5
|
||||
msgid "在左侧目录查找"
|
||||
msgstr ""
|
||||
|
||||
#: tang.html:4
|
||||
msgid "Tang FPGA 系列"
|
||||
msgstr ""
|
||||
|
||||
167
layout/maix.html
Normal file
@@ -0,0 +1,167 @@
|
||||
<!-- 修改后保存一下 include 这个文件的 html 模板就会渲染 -->
|
||||
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<h2 class="text-2xl font-bold my-8 block_simple">{{_('Maix AI 视觉系列')}}</h2>
|
||||
<div class="flex flex-col justify-center">
|
||||
<div class="cards">
|
||||
<!-- cards -->
|
||||
<div class="card" v-for="item in data_maix.cards">
|
||||
<img class="card_img" :src="item.img" />
|
||||
<h3 class="card_title" class="text-lg">{[item.title]}</h3>
|
||||
<div class="card_brief">{[item.brief]}</div>
|
||||
<div class="card_btns">
|
||||
<a
|
||||
v-for="btn in item.btns"
|
||||
:href="btn.link"
|
||||
:target="btn.new_tab ? '_blank' : '_self'"
|
||||
>{[btn.label]}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!-- cards end -->
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center mt-10 mb-5">
|
||||
<!-- a table to compare upper products' parameters -->
|
||||
<h3 class="text-2xl font-bold my-8">{{_('Maix 系列产品参数对比')}}</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{_('参数')}}</th>
|
||||
<th>Maix-I</th>
|
||||
<th>Maix-II</th>
|
||||
<th>Maix-III</th>
|
||||
<th>Maix-IV</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{_('处理器')}}</td>
|
||||
<td>K210: {{_('双核')}} 64 {{_('位')}} RISC-V@400MHz</td>
|
||||
<td>V831: Cortex-A7@800MHz</td>
|
||||
<td>AX620A: Cortex-A7x4@1.0GHz</td>
|
||||
<td>AX650N: Cortex-A55x8@1.7GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('内存')}}</td>
|
||||
<td>SIP 8MB SRAM</td>
|
||||
<td>SIP 64MB DDR2</td>
|
||||
<td>2GB LPDDR4X 3733MHz</td>
|
||||
<td>8GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NPU</td>
|
||||
<td>0.25Tops@INT8,{{_('支持有限')}} CNN {{_('算子')}}</td>
|
||||
<td>0.2Tops@INT8,{{_('支持有限')}} CNN {{_('算子')}}</td>
|
||||
<td>3.6Tops@INT8,{{_('支持常用')}} CNN {{_('模型')}}</td>
|
||||
<td>10Tops@INT8,{{_('支持常用')}} CNN {{_('和')}} transformer {{_('模型')}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('储存')}}</td>
|
||||
<td>{{_('板载')}} 16MB Flash,{{_('支持')}} SPI TF {{_('卡')}}</td>
|
||||
<td>{{_('板载')}} Flash {{_('或者')}} TF {{_('卡')}}</td>
|
||||
<td>EMMC {{_('或者')}} TF {{_('卡')}}</td>
|
||||
<td>EMMC {{_('或者')}} TF {{_('卡')}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('软件支持')}}</td>
|
||||
<td>CSDK, MaixPy</td>
|
||||
<td>CSDK, MaixPy3</td>
|
||||
<td>CSDK</td>
|
||||
<td>CSDK</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('操作系统')}}</td>
|
||||
<td>RTOS</td>
|
||||
<td>Tina Linux</td>
|
||||
<td>Linux</td>
|
||||
<td>Linux</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{_('典型外设')}}</td>
|
||||
<td>UART/I2C/SPI/PWM/FPIOA/GPIO/FFT/I2S</td>
|
||||
<td>USB/UART/I2C/SPI/<br />PWM/GPIO/ADC</td>
|
||||
<td>USB/UART/I2C/SPI/<br />PWM/GPIO/ADC</td>
|
||||
<td>USB/UART/I2C/SPI/<br />PWM/GPIO/ADC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://maixhub.com" target="_blank">MaixHub</a>
|
||||
</td>
|
||||
<td>{{_('支持度')}}:{{_('良')}}</td>
|
||||
<td>{{_('支持度')}}:{{_('优')}}</td>
|
||||
<td>{{_('支持度')}}:{{_('良')}}</td>
|
||||
<td>{{_('支持度')}}:{{_('良')}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script lang="ts">
|
||||
const data_maix = {
|
||||
cards: [
|
||||
{
|
||||
img: "/static/home/maixbit.jpg",
|
||||
title: "Maix-I (K210)",
|
||||
brief: "{{_('带硬件 AI 加速的 MCU,配合易用的软件快速落地低成本 AI 应用')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/maix/maixpy_develop_kit_board/maix_bit.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=586580351110",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/static/home/m2dock.jpg",
|
||||
title: "Maix-II (V831)",
|
||||
brief:
|
||||
"{{_('硬件 AI 加速 + Linux + 易用的软件,教育、工业视觉、智能家居场景绝配')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/m2dock",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?spm=a230r.1.14.13.681570a1SllT5M&id=635874427363&ns=1&abbucket=16#detail",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/static/home/m3axpi.jpg",
|
||||
title: "Maix-III (AXeraPi)",
|
||||
brief: "{{_('3.6Tops AI ISP,微光夜视,大量常见 AI 模型支持,安防智能 IPC')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/m3axpi",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=682169792430",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/static/home/m4ndock.jpg",
|
||||
title: "Maix-IV (AXeraPi-Pro)",
|
||||
brief: "{{_('10Tops AI 算力,32 路 1080p 高清 AI 视频监控,AI 大模型支持')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('了解更多')}}",
|
||||
link: "https://sipeed.com/m4ndock",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
</script>
|
||||
68
layout/maixsense.html
Normal file
@@ -0,0 +1,68 @@
|
||||
<!-- 修改后保存一下 include 这个文件的 html 模板(比如home.html)就会渲染 -->
|
||||
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<h2 class="text-2xl font-bold my-8 block_simple">{{_('MaixSense 传感器模组系列')}}</h2>
|
||||
<div class="flex flex-col justify-center">
|
||||
<div class="cards">
|
||||
<!-- cards -->
|
||||
<div class="card" v-for="item in data_maixsense.cards">
|
||||
<div class="img_wrapper">
|
||||
<img class="card_img" :src="item.img" />
|
||||
</div>
|
||||
<h3 class="card_title" class="text-lg">{[item.title]}</h3>
|
||||
<div class="card_brief">{[item.brief]}</div>
|
||||
<div class="card_btns">
|
||||
<a
|
||||
v-for="btn in item.btns"
|
||||
:href="btn.link"
|
||||
:target="btn.new_tab ? '_blank' : '_self'"
|
||||
>{[btn.label]}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!-- cards end -->
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center mt-10 mb-5">
|
||||
<!-- a table to compare upper products' parameters -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script lang="ts">
|
||||
const data_maixsense = {
|
||||
cards: [
|
||||
{
|
||||
img: "/hardware/zh/maixsense/assets/me_small.jpg",
|
||||
title: "MaixSense A010",
|
||||
brief: "100x100 3D TOF {{_('深度传感器模组')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/maixsense/index.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=684566484141",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/hardware/zh/maixsense/assets/me_big.jpg",
|
||||
title: "MaixSense A075v",
|
||||
brief: "RGB 3D TOF {{_('深度摄像头模组')}}",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/maixsense/index.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=684566484141",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
</script>
|
||||
11
layout/others.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- 修改后保存一下 include 这个文件的 html 模板就会渲染 -->
|
||||
|
||||
<div class="w-full h-full flex justify-center items-center">
|
||||
<div class="text-xl block_simple">
|
||||
{{_('其它未列出的产品请进入')}}<a href="/hardware/zh/">{{_('产品文档')}}</a>{{_('在左侧目录查找')}}。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script lang="ts">
|
||||
const data_others = {};
|
||||
</script>
|
||||
286
layout/style.html
Normal file
100
layout/tang.html
Normal file
@@ -0,0 +1,100 @@
|
||||
<!-- 修改后保存一下 include 这个文件的 html 模板(比如home.html)就会渲染 -->
|
||||
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<h2 class="text-2xl font-bold my-8 block_simple">{{_('Tang FPGA 系列')}}</h2>
|
||||
<div class="flex flex-col justify-center">
|
||||
<div class="cards">
|
||||
<!-- cards -->
|
||||
<div class="card" v-for="item in data_tang.cards">
|
||||
<div class="img_wrapper">
|
||||
<img class="card_img" :src="item.img" />
|
||||
</div>
|
||||
<h3 class="card_title" class="text-lg">{[item.title]}</h3>
|
||||
<div class="card_brief">{[item.brief]}</div>
|
||||
<div class="card_btns">
|
||||
<a
|
||||
v-for="btn in item.btns"
|
||||
:href="btn.link"
|
||||
:target="btn.new_tab ? '_blank' : '_self'"
|
||||
>{[btn.label]}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!-- cards end -->
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center mt-10 mb-5">
|
||||
<!-- a table to compare upper products' parameters -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script lang="ts">
|
||||
const data_tang = {
|
||||
cards: [
|
||||
{
|
||||
img: "/hardware/assets/Tang/Nano_4K/Nano_4K.png",
|
||||
title: "Tang Nano 4K",
|
||||
brief: "",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/tang/Tang-Nano-4K/Nano-4K.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=661994055100",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/hardware/assets/Tang/Nano-9K/9K.png",
|
||||
title: "Tang Nano 9K",
|
||||
brief: "",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/tang/Tang-Nano-9K/Nano-9K.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=666055424174",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/hardware/zh/tang/tang-nano-20k/assets/nano_20k/tang_nano_20k_3920_top.png",
|
||||
title: "Tang Nano 20K",
|
||||
brief: "",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/nano20k",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=717932028073",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
img: "/hardware/zh/tang/tang-primer-20k/assets/dock-up.png",
|
||||
title: "Tang Primer 20K",
|
||||
brief: "",
|
||||
btns: [
|
||||
{
|
||||
label: "{{_('文档')}}",
|
||||
link: "/hardware/zh/tang/tang-primer-20k/primer-20k.html",
|
||||
},
|
||||
{
|
||||
label: "{{_('购买')}}",
|
||||
link: "https://item.taobao.com/item.htm?id=680099020807",
|
||||
new_tab: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
</script>
|
||||
13
layout/trans_finish.py
Normal file
@@ -0,0 +1,13 @@
|
||||
#!python
|
||||
|
||||
import os
|
||||
|
||||
with open("locales.cfg") as f:
|
||||
exec(f.read())
|
||||
|
||||
print(f"== translate locales: {locales} ==")
|
||||
|
||||
for locale in locales:
|
||||
print(f"-- generate {locale} mo file from po files")
|
||||
os.system(f"pybabel compile -d locales -l {locale}")
|
||||
|
||||
24
layout/trans_prepare.py
Normal file
@@ -0,0 +1,24 @@
|
||||
#!python
|
||||
import os
|
||||
|
||||
with open("locales.cfg") as f:
|
||||
exec(f.read())
|
||||
|
||||
print(f"== translate locales: {locales} ==")
|
||||
|
||||
print("-- extract keys from files")
|
||||
if not os.path.exists("locales"):
|
||||
os.makedirs("locales")
|
||||
os.system("pybabel extract -F babel.cfg -o locales/messages.pot ./")
|
||||
|
||||
|
||||
for locale in locales:
|
||||
print(f"-- generate {locale} po files from pot files")
|
||||
if os.path.exists(f'locales/{locale}/LC_MESSAGES/messages.po'):
|
||||
print("-- file already exits, only update")
|
||||
os.system(f"pybabel update -i locales/messages.pot -d locales -l {locale}")
|
||||
else:
|
||||
print("-- file not exits, now create")
|
||||
os.system(f"pybabel init -i locales/messages.pot -d locales -l {locale}")
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
"config": {
|
||||
"dark": true,
|
||||
"env":{
|
||||
"main_color": "#FF6B63"
|
||||
"main_color": "#c62828"
|
||||
},
|
||||
"code_highlight_css": "/static/css/prism.css",
|
||||
"code_highlight_js": "/static/js/prism.js"
|
||||
@@ -130,7 +130,7 @@
|
||||
"config": {
|
||||
"search_hint": "Search",
|
||||
"env":{
|
||||
"main_color": "#FF6B63",
|
||||
"main_color": "#c62828",
|
||||
"main_color_dark": "#923732",
|
||||
"hint_shadow_color": "rgba(146, 55, 50, 0.38)"
|
||||
}
|
||||
@@ -157,7 +157,7 @@
|
||||
"repo": "sipeed_wiki",
|
||||
"owner": "sipeed",
|
||||
"admin": ["Neutree", "wonderfullook"],
|
||||
"main_color": "#FF6B63",
|
||||
"main_color": "#c62828",
|
||||
"second_color": "#e25d55",
|
||||
"adminAutoCreate": false
|
||||
}
|
||||
@@ -167,7 +167,7 @@
|
||||
"from": "pypi",
|
||||
"config": {
|
||||
"type": "hint",
|
||||
"label": "☆",
|
||||
"label": "NEW",
|
||||
"content": "无需本地 GPU 环境,云端免费一键 AI 模型训练、部署,快来<a href='https://maixhub.com'>MaixHub </a>体验!<br>和大家分享你的<a href='https://maixhub.com/share'>项目</a>和<a href='https://maixhub.com/share'>开发经验</a>吧!新分享广场上线,管理员真金白银打赏中,在线等!",
|
||||
"show_after_s": 432000,
|
||||
"date": "2022-06-01 14:00"
|
||||
@@ -183,8 +183,8 @@
|
||||
"/static/js/custom.js"
|
||||
],
|
||||
"env":{
|
||||
"main_color": "#FF6B63",
|
||||
"second_color": "#e25d55"
|
||||
"main_color": "#b71c1c",
|
||||
"second_color": "#b71c1c"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,495 +1,177 @@
|
||||
#content_body iframe {
|
||||
width: 43vw;
|
||||
height: 34vw;
|
||||
min-width: 90%;
|
||||
width: 43vw;
|
||||
height: 34vw;
|
||||
min-width: 90%;
|
||||
}
|
||||
#page_footer {
|
||||
margin-top: 0;
|
||||
}
|
||||
#home #navbar {
|
||||
background: #fbfbfb;
|
||||
box-shadow: 0px 0px 5px 0px #dfecf7;
|
||||
}
|
||||
#home .dark #navbar {
|
||||
box-shadow: 0px 0px 5px 0px #000000;
|
||||
background: #212121;
|
||||
}
|
||||
#home #page_wrapper {
|
||||
background: #fbfbfb;
|
||||
}
|
||||
#home #page_content h1, #home #page_content h2, #home #page_content h3 {
|
||||
font-size: revert;
|
||||
}
|
||||
#home #page_content h3 {
|
||||
margin-top: 0.2em;
|
||||
}
|
||||
#home #products .product_body > ul > li.category h3 {
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
#home #page_content > div {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin: auto;
|
||||
}
|
||||
#home #page_content ul {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
justify-content: left;
|
||||
padding: 0;
|
||||
}
|
||||
#home #page_content #products > ul {
|
||||
justify-content: center;
|
||||
}
|
||||
#home #page_content li {
|
||||
list-style: none;
|
||||
text-align: start;
|
||||
}
|
||||
#home #products > ul > li {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
background-size: cover;
|
||||
background-color: white;
|
||||
color: #c8cad4;
|
||||
margin: 2em;
|
||||
padding: 0;
|
||||
background: #fff;
|
||||
color: #dbdeec;
|
||||
box-shadow: 0px 14px 55px rgb(60 0 189 / 15%);
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
transition: 0.4s;
|
||||
}
|
||||
#home #products > ul > li:hover {
|
||||
box-shadow: 0px 14px 55px rgb(60 0 189 / 24%);
|
||||
-webkit-transform: scale(1.005);
|
||||
transform: scale(1.005);
|
||||
}
|
||||
#home #products > ul > li .video_wrapper,
|
||||
#home #products > ul > li > img {
|
||||
flex-grow: 1;
|
||||
max-width: 400px;
|
||||
align-self: center;
|
||||
object-fit: cover;
|
||||
}
|
||||
#home #products > ul > li .video_player {
|
||||
max-width: 400px;
|
||||
}
|
||||
#home #products > ul > li .video_wrapper {
|
||||
position: relative;
|
||||
}
|
||||
#home #products > ul > li .play_mask {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-image: url("/static/image/play.svg");
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
#home #products .product_info {
|
||||
min-height: 260px;
|
||||
background-color: #263238;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
flex-grow: 1;
|
||||
}
|
||||
#home #products .product_head {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-evenly;
|
||||
width: 100%;
|
||||
text-align: start;
|
||||
}
|
||||
#home #products .product_head_content {
|
||||
padding: 0 1em;
|
||||
}
|
||||
#home #products .product_body {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
/* border-top: 1px solid #152127; */
|
||||
width: 100%;
|
||||
}
|
||||
#home #products .product_body_single {
|
||||
flex-direction: column;
|
||||
}
|
||||
#home #products .product_body > ul {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: start;
|
||||
}
|
||||
#home #products .product_body > ul > li {
|
||||
transition: 0.4s;
|
||||
border: 1px solid #263238;
|
||||
background-color: #152127;
|
||||
padding: 0 1em;
|
||||
position: relative;
|
||||
}
|
||||
#home #products .product_body > ul > li .new {
|
||||
background-image: url("/static/image/new.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
width: 3em;
|
||||
height: 3em;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
filter: drop-shadow(-4px 4px 6px black);
|
||||
}
|
||||
#home #products .product_body > ul > li .new_with_info {
|
||||
background-image: url("/static/image/new.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
width: 3em;
|
||||
height: 3em;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
cursor: pointer;
|
||||
filter: drop-shadow(-4px 4px 6px black);
|
||||
}
|
||||
#home #products .product_body > ul > li .new_info {
|
||||
display: none;
|
||||
}
|
||||
#home #products .product_body > ul > li:hover {
|
||||
background-color: #000f15;
|
||||
}
|
||||
#home #products .product_body > ul > li.category {
|
||||
background-color: revert;
|
||||
padding-left: 1em;
|
||||
color: #93989a;
|
||||
}
|
||||
#home #products .product_body .left {
|
||||
color: #dbdeec;
|
||||
flex-grow: 1;
|
||||
}
|
||||
#home #products .product_body .right {
|
||||
color: #dbdeec;
|
||||
flex-grow: 1;
|
||||
}
|
||||
#home #products .product_body .left_lable, #home #products .product_body .right_lable {
|
||||
text-align: left;
|
||||
}
|
||||
#home .product_body a:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
#home .product_body .title {
|
||||
color: #9cbdd8;
|
||||
}
|
||||
#home .product_body .brief {
|
||||
color: #93989a;
|
||||
}
|
||||
#home #msg {
|
||||
display: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background-color: rgb(0, 0, 0, 0.72);
|
||||
color: #dbdeec;
|
||||
z-index: 99;
|
||||
}
|
||||
#home #msg_mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
#home #msg_content_wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
}
|
||||
#home #msg_content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
padding: 1em;
|
||||
background-color: #263238;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0px 0px 10px 0px #000000;
|
||||
min-width: 50%;
|
||||
min-height: 30%;
|
||||
z-index: 199;
|
||||
}
|
||||
#home #msg_close {
|
||||
position: absolute;
|
||||
top: 1em;
|
||||
right: 1em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
border-radius: 100%;
|
||||
background-color: #cf3d3d;
|
||||
margin-top: 0;
|
||||
}
|
||||
#big_btn_wrapper {
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
margin: 5em 1em;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
margin: 5em 1em;
|
||||
}
|
||||
#wiki_home .big_btn a {
|
||||
padding: 2em;
|
||||
background-color: #f7f7f9;
|
||||
font-size: 1.3em;
|
||||
border-radius: 10px;
|
||||
transition: 0.4s;
|
||||
display: flex;
|
||||
#sidebar .active > a,
|
||||
#navbar .active > a,
|
||||
#navbar .active_parent > a {
|
||||
font-weight: 600;
|
||||
color: #c62828;
|
||||
}
|
||||
#wiki_home .big_btn a:hover {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
.dark #wiki_home .big_btn a {
|
||||
background-color: #2d2d2d;
|
||||
}
|
||||
.dark #wiki_home .big_btn a:hover {
|
||||
background-color: #1f1f1f;
|
||||
}
|
||||
#sidebar .active > a, #navbar .active > a, #navbar .active_parent > a {
|
||||
background-color: #ff6b63;
|
||||
color: #ffffff;
|
||||
}
|
||||
#sidebar li > a:hover, #sidebar li.active_parent > a:hover, #navbar li > a:hover, #navbar .sub_items > a:hover {
|
||||
background-color: #ff6b63;
|
||||
color: #ffffff;
|
||||
#sidebar li > a:hover,
|
||||
#sidebar li.active_parent > a:hover,
|
||||
#navbar li > a:hover,
|
||||
#navbar .sub_items > a:hover {
|
||||
}
|
||||
|
||||
#sidebar > ul > li > ul > li {
|
||||
border-left: 0.1em solid #24292e38;
|
||||
}
|
||||
#sidebar > ul > li > ul > li > ul > li {
|
||||
border-left: 0.1em solid #24292e6e;
|
||||
}
|
||||
#sidebar > ul > li > ul > li > ul > li > ul > li {
|
||||
border-left: 0.1em solid #24292eb3;
|
||||
}
|
||||
#sidebar > ul > li > ul > li > ul > li > ul > li > ul > li {
|
||||
border-left: 0.1em solid #24292e;
|
||||
}
|
||||
#sidebar > ul > li > ul > li > ul > li > ul > li > ul > li > ul > li {
|
||||
border-left: 0.1em solid #24292e;
|
||||
#sidebar > ul > li > ul > li,
|
||||
#sidebar > ul > li > ul > li > ul > li{
|
||||
border-left: 0.1em solid #24292e38;
|
||||
}
|
||||
blockquote {
|
||||
border-left: 4px solid #ff6b63;
|
||||
border-left: 4px solid #ff6b63;
|
||||
}
|
||||
.title_pic {
|
||||
padding-top: 30px;
|
||||
padding-bottom: 30px;
|
||||
text-align: center;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo_maixpy {
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.logo_maixpy img {
|
||||
height: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
.logo_sipeed img {
|
||||
height: 43px;
|
||||
height: 43px;
|
||||
}
|
||||
.logo_mpy img {
|
||||
height: 45px;
|
||||
height: 45px;
|
||||
}
|
||||
.limit_width {
|
||||
min-width: 65px;
|
||||
display: inline-block;
|
||||
min-width: 65px;
|
||||
display: inline-block;
|
||||
}
|
||||
.grove_pic img{
|
||||
height: 500px;
|
||||
.grove_pic img {
|
||||
height: 500px;
|
||||
}
|
||||
.center_table {
|
||||
display: table;
|
||||
display: table;
|
||||
}
|
||||
th {
|
||||
background-color: #ff6b63;
|
||||
border: 2px solid #d8524b;
|
||||
background-color: #ff6b63;
|
||||
border: 2px solid #d8524b;
|
||||
}
|
||||
#navbar .site_logo {
|
||||
height: 2em;
|
||||
height: 2em;
|
||||
}
|
||||
|
||||
#navbar h2 {
|
||||
padding-left: 2px;
|
||||
color: #616161;
|
||||
font-weight: 500;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
#wiki_home body:before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
z-index: -1;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #d8edff;
|
||||
background-size: 100% 100%;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
#wiki_home body::after {
|
||||
content: '';
|
||||
position: fixed;
|
||||
z-index: -1;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 13em;
|
||||
left: 0;
|
||||
background: url(/static/image/bg2.png) center 0 no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
#wiki_home #page_content {
|
||||
width: 100%;
|
||||
flex-grow: 1;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
#wiki_home #page_content a {
|
||||
margin: 0.5em;
|
||||
}
|
||||
#wiki_home #page_content a:hover, #store a:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
#wiki_home #page_content a > img {
|
||||
padding: 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
#wiki_home #page_content a > img {
|
||||
box-shadow: 0px 0px 7px 1px #bbdfff;
|
||||
}
|
||||
#wiki_home #page_content a:hover > img {
|
||||
box-shadow: 8px 9px 15px 1px #81a1bf;
|
||||
transition: 0.4s;
|
||||
#home #themes {
|
||||
height: 2em;
|
||||
}
|
||||
#store a > img {
|
||||
height: 40px;
|
||||
transition:height 0.4s;
|
||||
-moz-transition:height 0.4s; /* Firefox 4 */
|
||||
-webkit-transition:height 0.4s; /* Safari and Chrome */
|
||||
-o-transition:height 0.4s; /* Opera */
|
||||
height: 40px;
|
||||
transition: height 0.4s;
|
||||
-moz-transition: height 0.4s; /* Firefox 4 */
|
||||
-webkit-transition: height 0.4s; /* Safari and Chrome */
|
||||
-o-transition: height 0.4s; /* Opera */
|
||||
}
|
||||
#store a:hover > img {
|
||||
height: 50px;
|
||||
}
|
||||
#wiki_home h1 {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
#wiki_home #search {
|
||||
background-color: #6391ed;
|
||||
}
|
||||
#wiki_home #search .placeholder {
|
||||
color: #ffffff;
|
||||
}
|
||||
#wiki_home body.dark:before {
|
||||
background-color: transparent
|
||||
}
|
||||
#wiki_home .dark #page_content a > img {
|
||||
box-shadow: 0px 0px 10px 0px #000000;
|
||||
}
|
||||
#wiki_home .dark #page_content a:hover > img {
|
||||
box-shadow: 0px 0 15px 5px #ffffff;
|
||||
}
|
||||
#wiki_home .dark #navbar {
|
||||
background: #1b1b1b;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
#navbar #navbar_items {
|
||||
flex-direction: row;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#page_content > div {
|
||||
text-align: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#editPage {
|
||||
position: relative;
|
||||
position: relative;
|
||||
}
|
||||
#source_link {
|
||||
position: relative;
|
||||
position: relative;
|
||||
}
|
||||
#editPageHelp {
|
||||
top: 3em;
|
||||
background: white;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: end;
|
||||
box-shadow: 1px 1px 17px 0px #e9e9e9;
|
||||
border-radius: 0.5em;
|
||||
padding: 1em;
|
||||
top: 3em;
|
||||
background: white;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: end;
|
||||
box-shadow: 1px 1px 17px 0px #e9e9e9;
|
||||
border-radius: 0.5em;
|
||||
padding: 1em;
|
||||
}
|
||||
.dark #editPageHelp {
|
||||
background: #212121;
|
||||
box-shadow: 1px 1px 17px 0px black;
|
||||
background: #212121;
|
||||
box-shadow: 1px 1px 17px 0px black;
|
||||
}
|
||||
#source_link {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: end;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: end;
|
||||
}
|
||||
#source_link > a {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
.faq table {
|
||||
display: table;
|
||||
display: table;
|
||||
}
|
||||
|
||||
#navbar #new_feature_btn > a {
|
||||
padding: 0.5em;
|
||||
font-size: 0.6em;
|
||||
}
|
||||
|
||||
/* home */
|
||||
#home #page_content > div {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
/* home end */
|
||||
|
||||
@media screen and (max-width: 1000px) {
|
||||
#navbar #navbar_items {
|
||||
flex-direction: column;
|
||||
align-items: start;
|
||||
}
|
||||
#navbar #navbar_items > div:last-child {
|
||||
align-self: end;
|
||||
}
|
||||
#navbar {
|
||||
align-items: self-start;
|
||||
}
|
||||
#navbar h2 {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
#navbar #navbar_items > div:last-child ul {
|
||||
margin: 0 0;
|
||||
}
|
||||
#navbar #navbar_items > div ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#navbar #navbar_items {
|
||||
flex-direction: column;
|
||||
align-items: start;
|
||||
}
|
||||
#navbar #navbar_items > div:last-child {
|
||||
align-self: end;
|
||||
}
|
||||
#navbar {
|
||||
align-items: self-start;
|
||||
}
|
||||
#navbar h2 {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
#navbar #navbar_items > div:last-child ul {
|
||||
margin: 0 0;
|
||||
}
|
||||
#navbar #navbar_items > div ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
#big_btn_wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
#big_btn_wrapper > div {
|
||||
margin: 2em 0;
|
||||
}
|
||||
#footer_top > ul {
|
||||
margin: 0 0;
|
||||
}
|
||||
#wiki_home p {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
#wiki_home #page_content a:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
#navbar #navbar_items {
|
||||
display: none;
|
||||
}
|
||||
#home #products > ul > li {
|
||||
flex-direction: column;
|
||||
}
|
||||
#home #page_content li {
|
||||
text-align: center;
|
||||
}
|
||||
#home #products .product_body {
|
||||
flex-direction: column;
|
||||
}
|
||||
#big_btn_wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
#big_btn_wrapper > div {
|
||||
margin: 2em 0;
|
||||
}
|
||||
#footer_top > ul {
|
||||
margin: 0 0;
|
||||
}
|
||||
#navbar #navbar_items {
|
||||
display: none;
|
||||
}
|
||||
#home #page_content > div {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* PrismJS 1.29.0
|
||||
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+bash+c+cpp+cmake+coffeescript+docker+go+ini+java+json+json5+kotlin+latex+less+lua+makefile+markdown+markup-templating+objectivec+php+powershell+python+jsx+tsx+ruby+rust+sass+scss+shell-session+sql+swift+textile+typescript+verilog+yaml&plugins=line-numbers+highlight-keywords+toolbar+copy-to-clipboard+match-braces */
|
||||
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+bash+c+cpp+cmake+coffeescript+docker+go+ini+java+json+json5+kotlin+latex+less+lua+makefile+markdown+markup-templating+objectivec+php+powershell+python+jsx+tsx+ruby+rust+sass+scss+shell-session+sql+swift+textile+typescript+verilog+vhdl+yaml&plugins=line-numbers+highlight-keywords+toolbar+copy-to-clipboard+match-braces */
|
||||
code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}
|
||||
pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}
|
||||
div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}
|
||||
|
||||
63
static/css/tailwind.css
Normal file
BIN
static/home/lichee_nano.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
static/home/lichee_zero.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
static/home/licheepi4a.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
static/home/m2dock.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
static/home/m3axpi.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
static/home/m4ndock.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
static/home/maixbit.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
static/image/maixhub_banner.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
@@ -1 +1,3 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1691466197207" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17714" xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="18"><path d="M512.926476 85.333333a194.998857 194.998857 0 0 1 194.998857 194.998857V365.714286H755.809524v-121.904762h29.598476a73.142857 73.142857 0 0 1 72.94781 67.730286l37.91238 512A73.142857 73.142857 0 0 1 823.344762 902.095238H200.655238a73.142857 73.142857 0 0 1-72.923428-78.555428l37.91238-512A73.142857 73.142857 0 0 1 238.592 243.809524h29.574095L268.190476 365.714286h49.737143v-85.382096a194.998857 194.998857 0 0 1 188.928-194.901333l6.070857-0.097524z m134.095238 426.666667c-48.90819 137.728-224.304762 137.728-259.267047 3.047619L316.952381 533.430857c53.686857 206.677333 326.656 206.677333 398.994286 3.047619L647.021714 512z m-134.095238-353.52381a121.904762 121.904762 0 0 0-116.297143 85.333334h232.594286a121.904762 121.904762 0 0 0-116.297143-85.333334z" p-id="17715" fill="#8a8a8a"></path></svg>
|
||||
<svg width="33" height="30" viewBox="0 0 33 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.655 27.31C13.655 27.7601 13.5215 28.2001 13.2715 28.5744C13.0214 28.9486 12.6659 29.2403 12.2501 29.4126C11.8342 29.5848 11.3766 29.6299 10.9352 29.5421C10.4937 29.4543 10.0882 29.2375 9.76991 28.9193C9.45163 28.601 9.23488 28.1955 9.14706 27.754C9.05925 27.3125 9.10432 26.8549 9.27657 26.4391C9.44882 26.0232 9.74052 25.6678 10.1148 25.4177C10.489 25.1676 10.929 25.0342 11.3792 25.0342C11.9828 25.0342 12.5616 25.2739 12.9884 25.7007C13.4152 26.1275 13.655 26.7064 13.655 27.31ZM26.1721 25.0342C25.722 25.0342 25.282 25.1676 24.9077 25.4177C24.5334 25.6678 24.2417 26.0232 24.0695 26.4391C23.8972 26.8549 23.8522 27.3125 23.94 27.754C24.0278 28.1955 24.2445 28.601 24.5628 28.9193C24.8811 29.2375 25.2866 29.4543 25.7281 29.5421C26.1696 29.6299 26.6272 29.5848 27.043 29.4126C27.4589 29.2403 27.8143 28.9486 28.0644 28.5744C28.3144 28.2001 28.4479 27.7601 28.4479 27.31C28.4479 26.7064 28.2081 26.1275 27.7813 25.7007C27.3545 25.2739 26.7757 25.0342 26.1721 25.0342ZM32.9498 7.16176L28.8917 20.3488C28.6791 21.0478 28.2469 21.6598 27.6592 22.0938C27.0714 22.5279 26.3594 22.7609 25.6287 22.7583H11.9581C11.217 22.7556 10.4967 22.5128 9.90515 22.0663C9.31359 21.6199 8.88256 20.9939 8.67661 20.2819L3.53039 2.27583H1.13792C0.836122 2.27583 0.546689 2.15595 0.333288 1.94254C0.119887 1.72914 0 1.43971 0 1.13792C0 0.836122 0.119887 0.546689 0.333288 0.333288C0.546689 0.119887 0.836122 0 1.13792 0H3.53039C4.02454 0.00163924 4.50487 0.163274 4.89949 0.460711C5.29411 0.758147 5.58178 1.17539 5.71945 1.64998L6.87302 5.68958H31.8617C32.0397 5.68952 32.2153 5.73124 32.3743 5.81141C32.5334 5.89157 32.6713 6.00793 32.7772 6.15113C32.883 6.29433 32.9538 6.46037 32.9838 6.6359C33.0137 6.81143 33.0021 6.99155 32.9498 7.16176ZM30.3212 7.96542H7.52305L10.8643 19.6575C10.9322 19.8952 11.0757 20.1042 11.2731 20.2531C11.4704 20.4019 11.7109 20.4825 11.9581 20.4825H25.6287C25.8722 20.4826 26.1093 20.4046 26.3052 20.2599C26.501 20.1153 26.6453 19.9116 26.7169 19.6788L30.3212 7.96542Z" fill="#8a8a8a"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.1 KiB |