diff --git a/i18n/ja/code.json b/i18n/ja/code.json
index 6c853257..b96c8549 100644
--- a/i18n/ja/code.json
+++ b/i18n/ja/code.json
@@ -726,7 +726,7 @@
"description": "mars info"
},
"mars.page.info10": {
- "message": "Raspberry pi 3Bケースに対応",
+ "message": "Raspberry Pi 3Bケースに対応",
"description": "mars info"
},
"mars.tech.info": {
@@ -958,39 +958,39 @@
"description": "cv1800b"
},
"homepage.corporations.Documentstitle": {
- "message": "Milk-V Documents",
+ "message": "Milk-Vドキュメント",
"description": "homepage documents"
},
"homepage.corporations.Documentswords": {
- "message": "View our documentation for technical support",
+ "message": "テクニカルサポートのために私達のドキュメントを見る",
"description": "homepage documents"
},
"homepage.corporations.CommunityBotton": {
- "message": "Milk-V Community",
+ "message": "Milk-Vコミュニティ",
"description": "Milk-V Community booton"
},
"homepage.corporations.WhyRVBotton": {
- "message": "Why RISC-V ?",
+ "message": "RISC-Vを選ぶ理由",
"description": "Why RISC-V ? booton"
},
"homepage.corporations.duo": {
- "message": "Dual cores up to 1GHz (optional RISC-V / ARM), up to 256MB of memory, and a 1TOPS@INT8 TPU. Capable of running both Linux and RTOS simultaneously, with rich I/O interfaces.",
+ "message": "最大1GHzのデュアルコア(RISC-V/ARM切り替え可)、最大256MBのメモリ、1TOPS@INT8のNPUを搭載。豊富なインターフェースでLinuxとRTOSを同時に実行可能です。",
"description": "duo description"
},
"homepage.corporations.duolearnmore": {
- "message": "Learn more",
+ "message": "もっと見る",
"description": "duo Learn more"
},
"homepage.corporations.duobuynow": {
- "message": "Buy Now",
+ "message": "購入",
"description": "duo buy"
},
"homepage.corporations.pioneer": {
- "message": "Milk-V Pioneer is a developer motherboard based on SOPHON SG2042 in a standard mATX form factor. It is the first choice for RISC-V developers and hardware pioneers to experience the cutting edge technology of RISC-V.",
+ "message": "Milk-V Pioneerは、標準的なmATXフォームファクターでSOPHON SG2042をベースにした開発者向けマザーボードです。RISC-V開発者やハードウェアパイオニアがRISC-Vの最先端技術を体験するための第一選択です。",
"description": "pioneer description"
},
"homepage.corporations.pioneerlearnmore": {
- "message": "Learn more",
+ "message": "もっと見る",
"description": "pioneer Learn more"
},
"homepage.corporations.pioneerbuynow": {
@@ -998,79 +998,79 @@
"description": "pioneer buy"
},
"homepage.corporations.marscm": {
- "message": "The Mars Compute Module is a System on Module (SoM) based on a the StarFive JH7110 System on Chip (SoC). ",
+ "message": "MarsコンピュートモジュールはStarFive JH7110 SoCを基に作られたSoMです。",
"description": "mars cm"
},
"homepage.corporations.mars": {
- "message": "Milk-V Mars is a high-performance RISC-V Single Board Computer (SBC) the size of a credit card, built on the StarFive JH7110. An RJ45 Ethernet port that supports PoE (Power over Ethernet), and an M.2 E-Key slot for a WIFI/BT module. It also includes a 4-lane MIPI CSI and a 2-lane MIPI CSI, along with a 40-pin GPIO. ",
+ "message": "Milk-V Marsは、クレジットカードサイズの高性能RISC-Vシングルボードコンピュータ(SBC)で、StarFive JH7110を基に作られています。PoE(Power over Ethernet)をサポートするRJ45イーサネットポートや、WIFI/BTモジュール用のM.2 E-Keyスロットが備わっています。また、4レーンのMIPI CSIと2レーンのMIPI CSI、さらに40ピンのGPIOも搭載しています。 ",
"description": "mars"
},
"homepage.corporations.marslearnmore": {
- "message": "Learn more",
+ "message": "もっと見る",
"description": "mars Learn more"
},
"homepage.corporations.marsbuynow": {
- "message": "Buy Now",
+ "message": "購入",
"description": "mars buy now"
},
"homepage.corporations.meles": {
- "message": "Milk-V Meles is a credit card-sized, single-board computer (SBC) based on the TH1520. It is powered by a Quad Core RISC-V 64GCV C910, capable of running up to 1.85GHz. This SBC is packed with rich interfaces and boasts powerful computing and AI capabilities, making it an ideal RISC-V intelligent hardware platform for hobbyists, makers, engineers, teachers, and students.",
+ "message": "Milk-V Melesは、TH1520を基にしたクレジットカードサイズのシングルボードコンピュータ(SBC)です。クアッドコアのRISC-V 64GCV C910を搭載し、最大1.85GHzで動作します。このSBCは豊富なインターフェースを備え、強力な計算能力とAI機能を誇り、愛好家、メイカー、エンジニア、教師、学生にとって理想的なRISC-Vインテリジェントハードウェアプラットフォームです。",
"description": "meles "
},
"homepage.corporations.melesbuynow": {
- "message": "Buy Now",
+ "message": "購入",
"description": "meles buy"
},
"homepage.corporations.meleslearnmore": {
- "message": "Learn more",
+ "message": "もっと見る",
"description": "meles learn more"
},
"homepage.corporations.vega": {
- "message": "Milk-V Vega is a compact and low-density box-style open-source 10 Gigabit network switch developed by Milk-V for the next generation of network architecture. It serves as a unified platform for various services such as broadband, voice, video, and surveillance.",
+ "message": "Milk-V Vegaは、次世代のネットワークアーキテクチャのためにMilk-Vが開発したコンパクトで低密度のボックス型オープンソース10ギガビットネットワークスイッチです。ブロードバンド、音声、ビデオ、監視などのさまざまなサービスを統合するプラットフォームとして機能します。",
"description": "vega "
},
"homepage.corporations.vegabuynow": {
- "message": "Buy Now",
+ "message": "購入",
"description": "vega buy"
},
"homepage.corporations.vegalearnmore": {
- "message": "Learn more",
+ "message": "もっと見る",
"description": "vega learn more"
},
"homepage.corporations.docslearnmore": {
- "message": "Learn more",
+ "message": "もっと見る",
"description": "docs learn more"
},
"homepage.corporations.joinus": {
- "message": "Join Us to Share More",
+ "message": "参加してシェアしよう",
"description": "Join Us to Share More"
},
"homepage.corporations.emailtitle_1": {
- "message": "Having questions?",
+ "message": "質問がありますか?",
"description": "Having questions?"
},
"homepage.corporations.emailtitle_2": {
- "message": "Get in touch with us to resolve!",
+ "message": "ご連絡ください。",
"description": "Get in touch with us to resolve!"
},
"homepage.corporations.salesdepartment": {
- "message": "Sales Department",
+ "message": "セールス部門",
"description": "Sales Department"
},
"homepage.corporations.devdepartment": {
- "message": "Development Department",
+ "message": "開発部門",
"description": "Development Department"
},
"homepage.corporations.customerdepartment": {
- "message": "Customer Support Department",
+ "message": "カスタマーサポート部門",
"description": "Customer Support Department"
},
"homepage.corporations.emailto": {
- "message": "This e-mail is to",
+ "message": "宛先",
"description": "This e-mail is to"
},
"homepage.corporations.emailmessage": {
- "message": "Message",
+ "message": "本文",
"description": "main message"
},
"homepage.corporations.companyname": {
@@ -1086,11 +1086,11 @@
"description": "footer company address"
},
"Send": {
- "message": "Send",
+ "message": "送信",
"description": "Send"
},
"Embracing": {
- "message": "Milk-VでRISC-Vをつくる",
+ "message": "Milk-VでRISC-Vを迎え入れる",
"description": " "
},
"overview": {
@@ -1126,7 +1126,7 @@
"description": " "
},
"ChoosingUs.item3.title": {
- "message": "あんしんのアフターサポート",
+ "message": "安心のアフターサポート",
"description": " "
},
"ChoosingUs.item1.info": {
@@ -1146,7 +1146,7 @@
"description": " "
},
"Startingfrom": {
- "message": "ここから始める",
+ "message": "開始価格",
"description": " "
},
"manykernels": {
@@ -1154,7 +1154,7 @@
"description": " "
},
"large": {
- "message": "ほかよりももっとパワフル。",
+ "message": "もっとパワフル。",
"description": " "
},
"DualCore": {
@@ -1182,7 +1182,7 @@
"description": " "
},
"Interfaces": {
- "message": "インターフェイスはRaspberry pi互換",
+ "message": "インターフェイスはRaspberry Pi互換",
"description": " "
},
"AUDIO": {
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/_category_.json
new file mode 100644
index 00000000..898927aa
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🍐 Duo",
+ "position": 1,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo",
+ "description": "Hello, I am Milk-V Duo"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/_category_.json
new file mode 100644
index 00000000..051767fe
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🖥️ App Development",
+ "position": 30,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo/app-dev",
+ "description": "Application Development"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/pinmux.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/pinmux.md
new file mode 100644
index 00000000..cb7f2e05
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/pinmux.md
@@ -0,0 +1,159 @@
+---
+sidebar_label: 'pinmux'
+sidebar_position: 05
+---
+
+Note that many pin functions of the Duo series are multiplexed. When using applications (such as wiringX, pinpong) to control the functions of each pin, it is important to confirm the current state of the pin to ensure it matches the desired functionality. If it doesn't, you can use the `duo-pinmux` command to switch it to the desired function.
+
+### The pin names for Duo and Duo256M
+
+For Duo pin multiplexing function, please refer to: [Duo GPIO Pinout](https://milkv.io/docs/duo/getting-started/duo#duo-gpio-pinout)
+
+For Duo256M pin multiplexing function, please refer to: [Duo256M GPIO Pinout](https://milkv.io/docs/duo/getting-started/duo256m#duo256m-gpio-pinout)
+
+
+
+| PIN NAME | Pin# | Pin# | PIN NAME |
+| -------- | :-----------------------------: | :------------------------------: | -------- |
+| GP0 |
1
|
40
| VBUS |
+| GP1 |
2
|
39
| VSYS |
+| GND |
3
|
38
| GND |
+| GP2 |
4
|
37
| 3V3_EN |
+| GP3 |
5
|
36
| 3V3(OUT) |
+| GP4 |
6
|
35
| |
+| GP5 |
7
|
34
| |
+| GND |
8
|
33
| GND |
+| GP6 |
9
|
32
| GP27 |
+| GP7 |
10
|
31
| GP26 |
+| GP8 |
11
|
30
| RUN |
+| GP9 |
12
|
29
| GP22 |
+| GND |
13
|
28
| GND |
+| GP10 |
14
|
27
| GP21 |
+| GP11 |
15
|
26
| GP20 |
+| GP12 |
16
|
25
| GP19 |
+| GP13 |
17
|
24
| GP18 |
+| GND |
18
|
23
| GND |
+| GP14 |
19
|
22
| GP17 |
+| GP15 |
20
|
21
| GP16 |
+| | | | |
+| GP25 |
LED
| | |
+
+
+
+### The pin names for DuoS
+
+For DuoS pin multiplexing function, please refer to: [DuoS GPIO Pinout](https://milkv.io/docs/duo/getting-started/duos#duos-gpio-pinout)
+
+#### Header J3
+
+GPIO on `Header J3` use 3.3V logic levels.
+
+
+
+| PIN NAME | PIN# | PIN# | PIN NAME |
+|:---------|:--------------------------------:|:-------------------------------:|:---------|
+| 3V3 |
1
|
2
| VSYS(5V) |
+| B20 |
3
|
4
| VSYS(5V) |
+| B21 |
5
|
6
| GND |
+| B18 |
7
|
8
| A16 |
+| GND\* |
9
|
10
| A17 |
+| B11 |
11
|
12
| B19 |
+| B12 |
13
|
14
| GND |
+| B22 |
15
|
16
| A20 |
+| 3V3 |
17
|
18
| A19 |
+| B13 |
19
|
20
| GND |
+| B14 |
21
|
22
| A18 |
+| B15 |
23
|
24
| B16 |
+| GND |
25
|
26
| A28 |
+
+
+
+*GND\*: Pin 9 is a low-level GPIO in the V1.1 version of the hardware, and is GND in the V1.2 version and later.*
+
+#### Header J4
+
+GPIO on `Header J4` use 1.8V logic levels.
+
+Most of the pins on this header have dedicated functions, such as MIPI DSI signals, Touch Screen signals, and audio signals. If there is no special requirement, it is not recommended to use the pins on this header as GPIO.
+
+
+
+| PIN NAME | PIN# | PIN# | PIN NAME |
+|----------|:-------------------------------:|:--------------------------------:|:------------|
+| VSYS(5V) |
52
|
51
| AUDIO_OUT_R |
+| B1 |
50
|
49
| AUDIO_OUT_L |
+| B2 |
48
|
47
| AUDIO_IN_R |
+| B3 |
46
|
45
| AUDIO_IN_L |
+| E2 |
44
|
43
| 3V3 |
+| E1 |
42
|
41
| C18 |
+| E0 |
40
|
39
| C19 |
+| GND |
38
|
37
| GND |
+| C20 |
36
|
35
| C16 |
+| C21 |
34
|
33
| C17 |
+| GND |
32
|
31
| GND |
+| C14 |
30
|
29
| C12 |
+| C15 |
28
|
27
| C13 |
+
+
+
+### Pin multiplexing configuration
+
+The following uses Duo as an example to introduce how to configure pin multiplexing.
+
+Executing the `duo-pinmux` command directly allows you to view the usage instructions
+```
+[root@milkv-duo]~# duo-pinmux
+pinmux for duo
+duo-pinmux -p <== List all pins
+duo-pinmux -l <== List all pins and its func
+duo-pinmux -r pin <== Get func from pin
+duo-pinmux -w pin/func <== Set func to pin
+```
+
+To check the multiplexing status of a specific pin, such as pin 1 on Duo, you need to know the name of that pin. As indicated in the diagram above, the name of pin 1 is `GP0`. To view its multiplexing status, use the command `duo-pinmux -r` followed by the pin name
+```
+[root@milkv-duo]~# duo-pinmux -r GP0
+GP0 function:
+[ ] JTAG_TDI
+[ ] UART1_TX
+[ ] UART2_TX
+[ ] GP0
+[v] IIC0_SCL
+[ ] WG0_D0
+[ ] DBG_10
+```
+You can see that the current function is `IIC0_SCL`, indicating it is configured as the SCL pin for I2C0. If you want to configure pin 1 as a GPIO, you can use the following command: `duo-pinmux -w pin_name/function`
+```
+duo-pinmux -w GP0/GP0
+```
+Now, check the multiplexing status of the pin again
+```
+[root@milkv-duo]~# duo-pinmux -r GP0
+GP0 function:
+[ ] JTAG_TDI
+[ ] UART1_TX
+[ ] UART2_TX
+[v] GP0
+[ ] IIC0_SCL
+[ ] WG0_D0
+[ ] DBG_10
+```
+You can see that it has been configured as `GP0` now
+
+Similarly, to configure pin 1 as the TX pin for UART1, you need to execute
+```
+duo-pinmux -w GP0/UART1_TX
+```
+Check the multiplexing status
+```
+[root@milkv-duo]~# duo-pinmux -r GP0
+GP0 function:
+[ ] JTAG_TDI
+[v] UART1_TX
+[ ] UART2_TX
+[ ] GP0
+[ ] IIC0_SCL
+[ ] WG0_D0
+[ ] DBG_10
+```
+It meets the expectation
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/pinpong.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/pinpong.md
new file mode 100644
index 00000000..be804beb
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/pinpong.md
@@ -0,0 +1,115 @@
+---
+sidebar_label: 'pinpong'
+sidebar_position: 20
+---
+
+# Introduction
+
+The pinpong library is an open-source python library that is based on the firmata protocol and utilizes micropython syntax. Its primary objective is to provide developers with a tool that allows them to directly control various open-source hardware control boards through Python code.
+
+# Usage
+
+## Pin numbers
+
+
+
+| pinpong | PIN NAME | Pin# | Pin# | PIN NAME | pinpong |
+| ------- | -------- | :-----------------------------: | :------------------------------: | -------- | ------- |
+| 0 | GP0 |
1
|
40
| VBUS | |
+| 1 | GP1 |
2
|
39
| VSYS | |
+| | GND |
3
|
38
| GND | |
+| 2 | GP2 |
4
|
37
| 3V3_EN | |
+| 3 | GP3 |
5
|
36
| 3V3(OUT) | |
+| 4 | GP4 |
6
|
35
| | |
+| 5 | GP5 |
7
|
34
| | |
+| | GND |
8
|
33
| GND | |
+| 6 | GP6 |
9
|
32
| GP27 | 27 |
+| 7 | GP7 |
10
|
31
| GP26 | 26 |
+| 8 | GP8 |
11
|
30
| RUN | |
+| 9 | GP9 |
12
|
29
| GP22 | 22 |
+| | GND |
13
|
28
| GND | |
+| 10 | GP10 |
14
|
27
| GP21 | 21 |
+| 11 | GP11 |
15
|
26
| GP20 | 20 |
+| 12 | GP12 |
16
|
25
| GP19 | 19 |
+| 13 | GP13 |
17
|
24
| GP18 | 18 |
+| | GND |
18
|
23
| GND | |
+| 14 | GP14 |
19
|
22
| GP17 | 17 |
+| 15 | GP15 |
20
|
21
| GP16 | 16 |
+| | | | | | |
+| 25 | GP25 |
LED
| | | |
+
+
+
+## Pinmux
+
+Many of Duo's pins have multipurpose functionality. When using pinpong library to control the functions of each pin, it is important to confirm the current state of the pin to ensure it matches the desired functionality. If it doesn't, you can use the `duo-pinmux` command to switch it to the desired function
+
+Please refer to the instructions: [pinmux](https://milkv.io/docs/duo/application-development/pinmux)
+
+## GPIO
+
+### Onboard LED blinking
+
+This is an example of making the Duo onboard LED blink. You can create a new `blink.py` file directly in Duo, or create it on your computer and then upload it to Duo via ssh.
+
+:::tip
+The Pin number of the LED is 25. If you use other pins to connect external LEDs, please refer to the table above for the Pin number.
+:::
+
+Contents of the `blink.py` file:
+```python
+# -*- coding: utf-8 -*-
+
+import time
+from pinpong.board import Board,Pin
+
+Board("MILKV-DUO").begin()
+
+led = Pin(Pin.D25, Pin.OUT)
+
+while True:
+ led.value(1)
+ print("1")
+ time.sleep(1)
+
+ led.value(0)
+ print("0")
+ time.sleep(1)
+```
+
+Execute the `python blink.py` command in Duo's terminal:
+```
+[root@milkv-duo]~# python blink.py
+milkv-duo
+
+ __________________________________________
+ | ____ _ ____ |
+ | / __ \(_)___ / __ \____ ____ ____ _ |
+ | / /_/ / / __ \/ /_/ / __ \/ __ \/ __ `/ |
+ | / ____/ / / / / ____/ /_/ / / / / /_/ / |
+ |/_/ /_/_/ /_/_/ \____/_/ /_/\__, / |
+ | v0.5.2 Designed by DFRobot /____/ |
+ |__________________________________________|
+
+1
+0
+1
+0
+```
+You will see the LED blinking at 1 second intervals.
+
+**Note**:
+To test the `blink.py` example, which involves LED blinking, you need to disable the script responsible for the automatic LED blinking on the default firmware of Duo. In the Duo terminal, execute the following command:
+```
+mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync
+```
+This command renames the LED blinking script. After restarting Duo, the LED will no longer blink.
+
+Once you have finished testing the `blink.py`, if you want to restore the LED blinking script, you can rename it back using the following command and then restart Duo:
+```
+mv /mnt/system/blink.sh_backup /mnt/system/blink.sh && sync
+```
+
+## Other examples
+
+Please refer to: [github](https://github.com/milkv-duo/duo-buildroot-sdk/tree/develop/buildroot-2021.05/package/python-pinpong/pinpong/examples/milkv-Duo)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/sensor-demo.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/sensor-demo.md
new file mode 100644
index 00000000..675124dc
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/sensor-demo.md
@@ -0,0 +1,524 @@
+---
+sidebar_label: 'Sensor Demo'
+sidebar_position: 40
+---
+# Sensor Demo
+## DHT22
+
+### Hardware Information
+
+#### Duo development board pin
+
+GitHub Link: https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-schematic-v1.2.pdf
+
+![](/docs/duo/sensor-demo/1.jpg)
+
+#### DHT22 Temperature and Humidity Sensor
+
+dfrobotwiki Link: https://wiki.dfrobot.com.cn/\_SKU_SEN0137\_%E9%AB%98%E7%B2%BE%E5%BA%A6DHT22%E6%B8%A9%E6%B9%BF%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8
+
+The DHT22 Temperature and Humidity Sensor is a versatile and cost-effective sensor used for measuring environmental temperature and humidity. It is based on digital signal output, providing high-precision measurements with a temperature resolution of 0.1 degrees Celsius and humidity resolution of 0.1%. The sensor uses a capacitive humidity sensing element and a thermistor to measure humidity and temperature, respectively. The DHT22 sensor also has relatively low power consumption and can operate within a voltage range of 3.3V to 5V, making it suitable for battery-powered projects. Additionally, the sensor offers long-term stability and high reliability, making it an ideal choice for various applications, including HVAC systems, weather stations, and indoor air quality monitoring systems.
+
+#### ensor Module
+
+The DHT22 module has a total of 3 pins, while the DHT22 bare sensor has 4 pins. When considering the module with three pins, two are power pins, and one is the data pin. For the 4-pin sensor, the additional pin is an NC (No Connection) pin with no specific function. The pinout for both the module and the sensor is as follows:
+![](/docs/duo/sensor-demo/DHT22_10.png)
+
+\- DATA: Data pin for 1-Wire communication.
+
+\- GND: Ground pin for the module.
+
+\- VCC: Power pin for the module.
+
+\- Not Used: This pin is not used in this sensor.
+
+#### HT22 Sensor Module Component Markings
+
+Apart from the sensor, the DHT22 module on the PCB includes only two components: a pull-up resistor and a decoupling capacitor. The component markings for the DHT22 module are as follows.
+
+![](/docs/duo/sensor-demo/DHT22_11.png)
+
+#### DHT22 Module Circuit Diagram
+
+The complete schematic diagram of the DHT22 Temperature and Humidity Sensor module is shown in the diagram below.
+
+![](/docs/duo/sensor-demo/DHT22_12.png)
+
+The schematic diagram of the DHT22 module is as shown above. As mentioned earlier, the board has only a few components. The VCC and GND pins are directly connected to the DHT22 sensor, and the pull-up resistor is connected to the DATA pin. Tantalum and multi-layer capacitors provide sufficient filtering. In some PCBs, you may find an LED indicator as a power indicator, but for most circuit boards, the LED is not present.
+
+#### Common Questions About DHT22 Sensor Module
+
+Q: In simple terms, what is DHT22?
+
+A: DHT22 is a more expensive version of the DHT11 sensor with better specifications. Its temperature measurement range is -40 to +125 degrees Celsius with an accuracy of ±0.5 degrees, while the DHT11 has a temperature range of 0 to 50 degrees Celsius with an accuracy of ±2 degrees.
+
+Q: Is DHT22 analog or digital?
+
+A: DHT-22 (also known as AM2302) is a digital output relative humidity and temperature sensor.
+
+Q: Is DHT22 waterproof?
+
+A: No, it is not waterproof.
+
+Q: What is the sampling rate of the DHT11 sensor?
+
+A: The sampling rate of the DHT22 is 1Hz.
+
+Q: What protocol does DHT22 use?
+
+A: The DHT22 sensor uses a proprietary single-wire communication protocol that sends and receives data through timed pulses.
+
+#### How does DHT22 work?
+
+If you are using an original DHT22 sensor, it contains an NTC thermistor and a sensor module. However, most sensors available in the market are non-original parts and contain a small sensor, as shown in the image below.
+
+![](/docs/duo/sensor-demo/DHT22_13.png)
+
+The humidity sensing element consists of a moisture-absorbing substrate sandwiched between two electrodes. As the substrate absorbs moisture, the resistance between the two electrodes decreases. The resistance change between the electrodes is proportional to the relative humidity. Higher relative humidity decreases the resistance between the electrodes, while lower relative humidity increases the resistance. This resistance change is measured by the onboard MCU's ADC and used to calculate relative humidity.
+
+![](/docs/duo/sensor-demo/DHT22_14.png)
+
+Each DHT22 component undergoes rigorous calibration in the laboratory, with extremely accurate humidity calibration. Calibration coefficients are stored as programs in OTP memory for use in the sensor's internal signal detection process.
+
+#### DHT22 Single-Wire Communication Protocol
+
+A single-wire communication protocol is used to communicate with the DHT22 and the microcontroller. Data sampling takes approximately 4 milliseconds to complete. The data consists of both decimal and integer parts and totals 40 bits in length, in MSB format. The data format is as follows: 8-bit integer RH data + 8-bit decimal RH data + 8-bit integer T data + 8-bit decimal T data + 8-bit checksum. If the data transmission is correct, the checksum should be the last 8 bits of "8-bit integer RH data + 8-bit decimal RH data + 8-bit integer T data + 8-bit decimal T data."
+
+When the MCU sends the start signal, the DHT changes from low-power mode to running mode and dumps all 40 bits of data to the microcontroller. The microcontroller reads the data and calculates temperature and humidity based on the binary data.
+
+![](/docs/duo/sensor-demo/DHT22_15.png)
+
+The image above shows how data communication works with the microcontroller and DHT22.
+
+#### Connecting to the Development Board
+
+DHT22: Red wire to 3V3 (OUT), black wire to ground, green wire to GPIOA15.
+
+The circuit diagram is as follows: The black circle represents the DHT22.
+
+![](/docs/duo/sensor-demo/5.jpg)
+
+DHT22 should be connected as follows:
+
+![](/docs/duo/sensor-demo/DHT22_16.jpg)
+
+### Example Code:
+GitHub link: https://github.com/milkv-duo/duo-examples
+
+**dht22.c:**
+```
+// Ref: https://github.com/technion/lol_dht22/blob/master/dht22.c
+#include
+#include
+#include
+#include
+#include
+#define MAXTIMINGS 85
+static int DHTPIN = 15;
+static int dht22_dat[5] = {0, 0, 0, 0, 0};
+static uint8_t sizecvt(const int read)
+{
+ /* digitalRead() and friends from wiringpi are defined as returning a value
+ < 256. However, they are returned as int() types. This is a safety function */
+
+ if (read > 255 || read < 0)
+ {
+ printf("Invalid data from wiringPi library\n");
+ exit(EXIT_FAILURE);
+ }
+ return (uint8_t)read;
+}
+
+static int read_dht22_dat()
+{
+ uint8_t laststate = HIGH;
+ uint8_t counter = 0;
+ uint8_t j = 0, i;
+
+ dht22_dat[0] = dht22_dat[1] = dht22_dat[2] = dht22_dat[3] = dht22_dat[4] = 0;
+
+ // pull pin down for 18 milliseconds
+ pinMode(DHTPIN, PINMODE_OUTPUT);
+ digitalWrite(DHTPIN, HIGH);
+ // delay(500);
+ delayMicroseconds(500000);
+ digitalWrite(DHTPIN, LOW);
+ // delay(20);
+ delayMicroseconds(20000);
+ // prepare to read the pin
+ pinMode(DHTPIN, PINMODE_INPUT);
+
+ // detect change and read data
+ for (i = 0; i < MAXTIMINGS; i++)
+ {
+ counter = 0;
+ while (sizecvt(digitalRead(DHTPIN)) == laststate)
+ {
+ counter++;
+ delayMicroseconds(2);
+ if (counter == 255)
+ {
+ break;
+ }
+ }
+ laststate = sizecvt(digitalRead(DHTPIN));
+
+ if (counter == 255)
+ break;
+
+ // ignore first 3 transitions
+ if ((i >= 4) && (i % 2 == 0))
+ {
+ // shove each bit into the storage bytes
+ dht22_dat[j / 8] <<= 1;
+ if (counter > 16)
+ dht22_dat[j / 8] |= 1;
+ j++;
+ }
+ }
+
+ // check we read 40 bits (8bit x 5 ) + verify checksum in the last byte
+ // print it out if data is good
+ if ((j >= 40) &&
+ (dht22_dat[4] == ((dht22_dat[0] + dht22_dat[1] + dht22_dat[2] + dht22_dat[3]) & 0xFF)))
+ {
+ float t, h;
+ h = (float)dht22_dat[0] * 256 + (float)dht22_dat[1];
+ h /= 10;
+ t = (float)(dht22_dat[2] & 0x7F) * 256 + (float)dht22_dat[3];
+ t /= 10.0;
+ if ((dht22_dat[2] & 0x80) != 0)
+ t *= -1;
+ printf("Humidity = %.2f %% Temperature = %.2f *C \n", h, t);
+ return 1;
+ }
+ else
+ {
+ printf("Data not good, skip\n");
+ return 0;
+ }
+}
+
+int main()
+{
+ // Duo: milkv_duo
+ // Duo256M: milkv_duo256m
+ // DuoS: milkv_duos
+ if (wiringXSetup("milkv_duo", NULL) == -1)
+ {
+ wiringXGC();
+ return -1;
+ }
+
+ if (wiringXValidGPIO(DHTPIN) != 0)
+ {
+ printf("Invalid GPIO %d\n", DHTPIN);
+ }
+
+ while (1)
+ {
+ read_dht22_dat();
+ delayMicroseconds(1500000);
+ }
+
+ return 0;
+}
+
+```
+
+**Makefile:**
+```
+TARGET=dht22
+
+ifeq (,$(TOOLCHAIN_PREFIX))
+$(error TOOLCHAIN_PREFIX is not set)
+endif
+
+ifeq (,$(CFLAGS))
+$(error CFLAGS is not set)
+endif
+
+ifeq (,$(LDFLAGS))
+$(error LDFLAGS is not set)
+endif
+
+CC = $(TOOLCHAIN_PREFIX)gcc
+CFLAGS += -I$(SYSROOT)/usr/include
+LDFLAGS += -L$(SYSROOT)/lib
+LDFLAGS += -L$(SYSROOT)/usr/lib
+LDFLAGS += -lwiringx
+
+SOURCE = $(wildcard *.c)
+OBJS = $(patsubst %.c,%.o,$(SOURCE))
+
+$(TARGET): $(OBJS)
+ $(CC) -o $@ $(OBJS) $(LDFLAGS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) -o $@ -c $<
+
+.PHONY: clean
+clean:
+ @rm *.o -rf
+ @rm $(OBJS) -rf
+ @rm $(TARGET)
+
+```
+### Build environment on Ubuntu20.04
+
+You can also use Ubuntu installed in a virtual machine, Ubuntu installed via WSL on Windows, or Ubuntu-based systems using Docker.
+
+- Install the tools that compile dependencies.
+ ```
+ sudo apt-get install wget git make
+ ```
+- Get example source code
+ ```
+ git clone https://github.com/milkv-duo/duo-examples.git
+ ```
+
+- Prepare compilation environment
+ ```
+ cd duo-examples
+ source envsetup.sh
+ ```
+ The first time you source it, the required SDK package will be automatically downloaded, which is approximately 180MB in size. Once downloaded, it will be automatically extracted to the `duo-examples` directory with the name `duo-sdk`. When source it next time, if the directory already exists, it will not be downloaded again.
+
+- Compile testing
+
+ Take hello-world as an example, enter the hello-world directory and execute make
+ ```
+ cd hello-world
+ make
+ ```
+ After the compilation is successful, send the generated `helloworld` executable program to the Duo device through the network port or the RNDIS network. For example, the RNDIS method supported by the [default firmware](https://github.com/milkv-duo/duo-buildroot-sdk/releases), Duo’s IP is 192.168.42.1, the user name is `root`, and the password is `milkv`
+ ```
+ scp helloworld root@192.168.42.1:/root/
+ ```
+ After sending successfully, run ./helloworld in the terminal logged in via ssh or serial port, and it will print `Hello, World!`
+ ```
+ [root@milkv]~# ./helloworld
+ Hello, World!
+ ```
+ **At this point, our compilation and development environment is ready for use.**
+### Operation Procedure
+
+![](/docs/duo/sensor-demo/DF9GMS_7.png)
+
+Next, compile it. Taking dht22 as an example, enter the directory of the example and simply execute make
+
+```
+cd dht22
+make it
+```
+Make an error report and source it. After compiling successfully, you will get the df9gms executable program. As shown in the figure below.
+
+![](/docs/duo/sensor-demo/DHT22_17.png)
+
+
+
+
+Then upload df9gms to the root path of the development board, and enter``` ./dht22``` to run it. The screenshot of successful running is shown below
+
+![](/docs/duo/sensor-demo/DHT22_18.png)
+
+## DF9GMS 180°
+
+### Hardware Information
+
+#### Duo development board pin
+
+GitHub:https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-schematic-v1.2.pdf
+
+![](/docs/duo/sensor-demo/1.jpg)
+
+#### DF9GMS 180°
+
+![](/docs/duo/sensor-demo/DF9GMS_2.png)
+
+Micro Servo DF9GMS from DFRobot, this servo features a high-strength ABS transparent case with internal high-precision nylon gear set, precision control circuit and high-end lightweight hollow cup motor, resulting in a weight of only 9g for this mini servo, while the output torque reaches an amazing 1.6kg/cm.
+
+Technical Specifications:
+Operating Voltage: 4.8V
+Torque: 1.6kg/cm (4.8V)
+Speed: 0.14 seconds/60 degrees (4.8V)
+Operating Temperature: -30 to +60 degrees Celsius
+Deadband Width: 0.5 milliseconds
+Physical Size: 23x12.2x29mm
+Weight: 9g
+
+#### Composition and Operating Principle of DF9GMS Micro Servo
+
+![](/docs/duo/sensor-demo/DF9GMS_3.png)
+
+#### Connection Diagram:
+• Hardware
+o 1 x Arduino UNO control board
+o 1 x DF9GMS micro servo
+o Several Dupont wires
+o Gray - GND, red - VCC, yellow - signal line
+
+![](/docs/duo/sensor-demo/DF9GMS_4.png)
+
+#### connected to the development board
+
+DF9GMS: red wire connected to VSYS, brown wire connected to ground, orange wire connected to GPIO19.
+Circuit diagram shown below: purple circle represents DF9GMS.
+
+![](/docs/duo/sensor-demo/5.jpg)
+
+DF9GMS should be connected as follows:
+
+![](/docs/duo/sensor-demo/DF9GMS_6.jpg)
+
+### Example Code:
+GitHub link: https://github.com/milkv-duo/duo-examples
+
+**df9gms.c:**
+```
+#include
+#include
+#include
+/*
+Duo
+------------------------------------------
+PWM operation at a fixed frequency clock of 100MHz, writing Period in units of nanoseconds.
+ DF9GMS 360-degree PWM Duty Cycle
+ ------------------------------------------
+ 0.4ms - 1.4ms CW deceleration
+ 1.5ms Stop
+ 1.6ms - 3ms CCW acceleration
+*/
+static int PWM_PIN = 4; // PWM5@GP4
+
+int main()
+{
+ long i;
+
+ // Duo: milkv_duo
+ // Duo256M: milkv_duo256m
+ // DuoS: milkv_duos
+ if(wiringXSetup("milkv_duo", NULL) == -1) {
+ wiringXGC();
+ return -1;
+ }
+
+ wiringXPWMSetPeriod(PWM_PIN, 20000000); // 20ms
+ wiringXPWMSetDuty(PWM_PIN, 1500000); // 1.5ms stop
+ wiringXPWMSetPolarity(PWM_PIN, 0); // 0-normal, 1-inversed
+ wiringXPWMEnable(PWM_PIN, 1); // 1-enable, 0-disable
+
+ delayMicroseconds(1000000); // 1s
+
+ for (i = 10000; i< 3000000; i += 10000) // 10 us
+ {
+ wiringXPWMSetDuty(PWM_PIN, i);
+ printf("Duty: %ld\n", i);
+ delayMicroseconds(50000); // 50ms
+ }
+
+ wiringXPWMSetDuty(PWM_PIN, 1500000); // 1.5ms stop
+
+ return 0;
+}
+
+```
+
+**Makefile:**
+
+```
+TARGET=df9gms
+
+ifeq (,$(TOOLCHAIN_PREFIX))
+$(error TOOLCHAIN_PREFIX is not set)
+endif
+
+ifeq (,$(CFLAGS))
+$(error CFLAGS is not set)
+endif
+
+ifeq (,$(LDFLAGS))
+$(error LDFLAGS is not set)
+endif
+
+CC = $(TOOLCHAIN_PREFIX)gcc
+
+CFLAGS += -I$(SYSROOT)/usr/include
+
+LDFLAGS += -L$(SYSROOT)/lib
+LDFLAGS += -L$(SYSROOT)/usr/lib
+LDFLAGS += -lwiringx
+
+SOURCE = $(wildcard *.c)
+OBJS = $(patsubst %.c,%.o,$(SOURCE))
+
+$(TARGET): $(OBJS)
+ $(CC) -o $@ $(OBJS) $(LDFLAGS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) -o $@ -c $<
+
+.PHONY: clean
+clean:
+ @rm *.o -rf
+ @rm $(OBJS) -rf
+ @rm $(TARGET)
+```
+
+### Build environment on Ubuntu20.04
+
+You can also use Ubuntu installed in a virtual machine, Ubuntu installed via WSL on Windows, or Ubuntu-based systems using Docker.
+
+- Install the tools that compile dependencies.
+ ```
+ sudo apt-get install wget git make
+ ```
+- Get example source code
+ ```
+ git clone https://github.com/milkv-duo/duo-examples.git
+ ```
+
+- Prepare compilation environment
+ ```
+ cd duo-examples
+ source envsetup.sh
+ ```
+ The first time you source it, the required SDK package will be automatically downloaded, which is approximately 180MB in size. Once downloaded, it will be automatically extracted to the `duo-examples` directory with the name `duo-sdk`. When source it next time, if the directory already exists, it will not be downloaded again.
+
+- Compile testing
+
+ Take hello-world as an example, enter the hello-world directory and execute make
+ ```
+ cd hello-world
+ make
+ ```
+ After the compilation is successful, send the generated `helloworld` executable program to the Duo device through the network port or the RNDIS network. For example, the RNDIS method supported by the [default firmware](https://github.com/milkv-duo/duo-buildroot-sdk/releases), Duo’s IP is 192.168.42.1, the user name is `root`, and the password is `milkv`
+ ```
+ scp helloworld root@192.168.42.1:/root/
+ ```
+ After sending successfully, run ./helloworld in the terminal logged in via ssh or serial port, and it will print `Hello, World!`
+ ```
+ [root@milkv]~# ./helloworld
+ Hello, World!
+ ```
+ **At this point, our compilation and development environment is ready for use.**
+
+### Operation Procedure
+
+![](/docs/duo/sensor-demo/DF9GMS_7.png)
+
+Next, compile it. Taking df9gms as an example, enter the directory of the example and simply execute make
+```
+cd df9gms
+make it
+```
+Make an error report and source it. After compiling successfully, you will get the df9gms executable program. As shown in the figure below.
+
+![](/docs/duo/sensor-demo/DF9GMS_8.png)
+
+
+
+Then upload df9gms to the root path of the development board, and enter ```./df9gms``` to run it. The screenshot of successful running is shown below
+
+![](/docs/duo/sensor-demo/DF9GMS_9.png)
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/_category_.json
new file mode 100644
index 00000000..123a33b1
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "TDL SDK",
+ "position": 20,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo/app-dev/tdl-sdk"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-face-detection.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-face-detection.md
new file mode 100644
index 00000000..b10f293e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-face-detection.md
@@ -0,0 +1,104 @@
+---
+sidebar_label: 'Face Detection'
+sidebar_position: 20
+---
+
+# Face Detection
+
+The test program will pull the camera data, add the face detection algorithm, and use tools such as VLC to pull the stream in real time to view the effect.
+
+### Compilation
+
+Face detection program source code location:
+
+- Duo:[sample_vi_fd.c](https://github.com/milkv-duo/cvitek-tdl-sdk-cv180x/blob/main/sample/cvi_tdl/sample_vi_fd.c)
+
+- Duo256M and DuoS:[sample_vi_fd.c](https://github.com/milkv-duo/cvitek-tdl-sdk-sg200x/blob/main/sample/cvi_tdl/sample_vi_fd.c)
+
+Refer to the method in the previous chapter [Introduction](https://milkv.io/docs/duo/application-development/tdl-sdk/tdl-sdk-introduction) to compile the sample program.
+
+### Send test program and model files to Duo
+
+- Refer to the method in the [Boot the Duo](https://milkv.io/docs/duo/getting-started/boot) chapter to install the system
+
+- Refer to the method in the [Camera](https://milkv.io/docs/duo/camera/gc2083) chapter to power on the Duo after connecting the camera
+
+Send the compiled `sample_vi_fd` to the Duo board through the `scp` command on your PC:
+
+```bash
+scp sample_vi_fd root@192.168.42.1:/root/
+```
+
+Also use scp to send the model file used for face detection in the `cvimodel` directory to the Duo board:
+
+Duo:
+```
+scrfd_480_270_int8.cvimodel
+```
+
+Duo256M and DuoS:
+```
+scrfd_768_432_int8_1x.cvimodel
+```
+
+### Run the example
+
+Log in to the Duo terminal through the serial port or [ssh](https://milkv.io/docs/duo/getting-started/setup#ssh).
+
+Add executable permissions to the test program in Duo's terminal
+
+```
+chmod +x sample_vi_fd
+```
+
+Execute the test program in Duo's terminal:
+
+Duo:
+```
+./sample_vi_fd scrfd_480_270_int8.cvimodel
+```
+
+Duo256M and DuoS:
+```
+./sample_vi_fd scrfd_768_432_int8_1x.cvimodel
+```
+
+The following information will be displayed in the Duo terminal:
+```
+Initialize RTSP
+rtsp://127.0.1.1/h264
+prio:0
+version: 1.4.0
+scrfd768432 Build at 2023-12-25 01:21:44 For platform cv181x
+Max SharedMem size:1658880
+```
+
+At this time, point the camera at the face, and the Duo terminal will print the number of faces detected by the camera in real time:
+```
+face count: 5
+face count: 6
+face count: 5
+face count: 4
+face count: 0
+face count: 1
+face count: 0
+```
+
+### Use VLC to pull streams on PC to view the effect
+
+Open `VLC media player`, click `Media` in the upper left corner, select `Open Network Stream`, and enter the URL.
+
+If you are using USB Net(RNDIS), the address is:
+```
+rtsp://192.168.42.1/h264
+```
+
+
+
+If you are using the network port on the IO-Board or the network port integrated on DuoS, the IP address in the URL needs to be replaced with the IP of the network port (you can use the `ifconfig` command in the Duo terminal to view).
+
+Click the `Show more options` option in the lower left corner, and you can set the `Caching` option to adjust the delay. The default is 1000 milliseconds, which is 1 second. When the network environment is good, such as in a LAN, you can turn it down to reduce latency. You can set it to 100 to 300. If the network environment is poor or the screen freezes, you can try to increase it.
+
+After configuring, click `Play` to view the face detection effect of the camera.
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-introduction.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-introduction.md
new file mode 100644
index 00000000..5101d156
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-introduction.md
@@ -0,0 +1,126 @@
+---
+sidebar_label: 'Introduction'
+sidebar_position: 10
+---
+
+# Introduction
+
+Cvitek provides TDL integration algorithms to reduce the time required for application development.
+
+This architecture realizes the algorithm required by TDL, including its pre and post processing, and provides a unified and convenient programming interface.
+
+At present, TDL SDK includes motion detection, face detection, face recognition, face tracking, pedestrian detection, semantic segmentation, license plate recognition, license plate detection, live recognition, IR live recognition, infant detection, cry detection, attitude detection, gesture detection, Gesture Recognition and other algorithms.
+
+## Documents
+
+
+
+
+ Chinese Version(中文版) |
+ 格式 |
+ English Version |
+ Format |
+
+
+
+
+ 深度学习SDK软件开发指南 |
+ html |
+ pdf |
+ TDL SDK Software Development Guide |
+ html |
+ pdf |
+
+
+ YOLO系列开发指南 |
+ html |
+ pdf |
+ YOLO Development Guide |
+ html |
+ pdf |
+
+
+
+
+## Compilation
+
+The TDL-SDK program needs to be cross-compiled in the Linux environment of the PC host, such as Ubuntu 22.04 system.
+
+1. Download toolchain
+
+ ```bash
+ wget https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz
+ ```
+
+ Extracting Toolchain:
+ ```bash
+ tar xvf host-tools.tar.gz
+ ```
+
+ Enter the toolchain directory and export the toolchain path to the environment variable:
+ ```bash
+ cd host-tools
+ export PATH=$PATH:$(pwd)/gcc/riscv64-linux-musl-x86_64/bin
+ ```
+
+ Verify that the toolchain is available:
+ ```
+ riscv64-unknown-linux-musl-gcc -v
+ ```
+ The version information of the cross-compilation tool chain can be displayed normally, that is, the toolchain is available:
+ ```
+ $ riscv64-unknown-linux-musl-gcc -v
+ Using built-in specs.
+ COLLECT_GCC=riscv64-unknown-linux-musl-gcc
+ ...
+ Thread model: posix
+ Supported LTO compression algorithms: zlib
+ gcc version 10.2.0 (Xuantie-900 linux-5.10.4 musl gcc Toolchain V2.6.1 B-20220906)
+ ```
+
+2. Compile cvitek-tdl-sdk
+
+ Download the TDL-SDK source code, the Duo and Duo256M/DuoS repositories are different:
+
+ - Duo:
+ ```bash
+ git clone https://github.com/milkv-duo/cvitek-tdl-sdk-cv180x.git
+ cd cvitek-tdl-sdk-cv180x
+ ```
+
+ - Duo256M 和 DuoS:
+ ```bash
+ git clone https://github.com/milkv-duo/cvitek-tdl-sdk-sg200x.git
+ cd cvitek-tdl-sdk-sg200x
+ ```
+
+ If the repositories code is updated, you can execute `git pull` in the code directory to pull the latest code, such as Duo256M and DuoS:
+ ```bash
+ cd cvitek-tdl-sdk-sg200x
+ git pull
+ ```
+ After pulling the latest code, continue compiling.
+
+ Compile samples:
+ ```
+ cd sample
+ ./compile_sample.sh
+ ```
+
+ The generated program is in the corresponding subdirectory in the sample directory. For example, the face detection example `sample_vi_fd` is located in
+ ```
+ cvi_tdl/sample_vi_fd
+ ```
+
+ Clean:
+ ```bash
+ ./compile_sample.sh clean
+ ```
+
+## Example description
+
+For detailed descriptions and running methods of each example, please refer to the following chapters.
+
+## Reference link
+
+[https://developer.sophgo.com/thread/556.html](https://developer.sophgo.com/thread/556.html)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-yolov5.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-yolov5.md
new file mode 100644
index 00000000..2bc1b2bd
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tdl-sdk/tdl-sdk-yolov5.md
@@ -0,0 +1,181 @@
+---
+sidebar_label: 'YOLOv5 Object Detection'
+sidebar_position: 21
+---
+
+# YOLOv5 Object Detection
+
+This program inference YOLOv5 model for object detection.
+
+## Cross-Compile YOLO Program for PC
+
+Duo256M YOLOv5 code location: [sample_yolov5.cpp](https://github.com/milkv-duo/cvitek-tdl-sdk-sg200x/blob/main/sample/cvi_yolo/sample_yolov5.cpp)
+
+### Compilation method
+
+Refer to the previous section [Introduction](https://milkv.io/zh/docs/duo/application-development/tdl-sdk/tdl-sdk-introduction) for compiling the sample program using the provided methods. After compilation is completed, the `sample_yolov5` program we need will be generated in the `sample/cvi_yolo/` directory.
+
+## Obtain cvimodel
+
+You can either download precompiled yolov5s INT8 symmetric or asymmetric quantized cvimodel models directly, or manually convert the models as described in [Model Compilation](#model-compilation).
+
+### Download Precompiled cvimodels
+
+- Duo256M
+ ```bash
+ # INT8 symmetric model
+ wget https://github.com/milkv-duo/cvitek-tdl-sdk-sg200x/raw/main/cvimodel/yolov5_cv181x_int8_sym.cvimodel
+ # INT8 asymmetric model (commented out as it is optional)
+ wget https://github.com/milkv-duo/cvitek-tdl-sdk-sg200x/raw/main/cvimodel/yolov5_cv181x_int8_asym.cvimodel
+ ```
+
+### Model Compilation
+
+#### Export yolov5s.onnx Model
+
+- First, clone the YOLOv5 official repository. The repository link is: [ultralytics/yolov5\: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite](https://github.com/ultralytics/yolov5)
+ ```bash
+ git clone https://github.com/ultralytics/yolov5.git
+ ```
+- Configure the working environment
+ ```bash
+ cd yolov5
+ pip3 install -r requirements.txt
+ pip3 install onnx
+ ```
+- Obtain the .pt format model for yolov5, for example, download the yolov5s model: [yolov5s](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt)
+ ```bash
+ wget https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt
+ ```
+- Copy cvitek-tdl-sdk-sg200x/sample/yolo_export/[yolov5_export.py](https://github.com/milkv-duo/cvitek-tdl-sdk-sg200x/blob/main/sample/yolo_export/yolov5_export.py) to the yolov5 repository directory.
+ Use yolov5_export.py to replace the forward function, allowing the RISC-V to handle post-processing and export the model in onnx format.
+ ```bash
+ python3 yolov5_export.py --weights ./yolov5s.pt --img-size 640 640
+ ```
+ Parameter explanation:
+ --weights: Path to the PyTorch model
+ --img-size: Input image size
+
+#### TPU-MLIR Model Conversion
+
+Please refer to [TPU-MLIR documentation](https://github.com/sophgo/tpu-mlir) to set up the TPU-MLIR working environment. For parameter details, see [TPU-MLIR documentation](https://github.com/sophgo/tpu-mlir).
+
+The specific implementation steps are divided into three parts:
+
+- `model_transform.py`: Converts the onnx model to the mlir intermediate format model.
+ onnx -> model_transform.py -> mlir
+
+- `run_calibration.py`: Generates the int8 quantization calibration table.
+ calibration_set -> run_calibration.py -> calibration_table
+
+- `model_deploy.py`: Generates the cvimodel for TPU inference using mlir and the int8 quantization table.
+ mlir + calibration_table ->model_deploy.py -> cvimodel
+
+##### onnx to MLIR
+
+```bash
+model_transform.py \
+--model_name yolov5s \
+--model_def yolov5s.onnx \
+--input_shapes [[1,3,640,640]] \
+--mean 0.0,0.0,0.0 \
+--scale 0.0039216,0.0039216,0.0039216 \
+--keep_aspect_ratio \
+--pixel_format rgb \
+--test_input ../image/dog.jpg \
+--test_result yolov5s_top_outputs.npz \
+--mlir yolov5s.mlir
+```
+
+After converting to the mlir file, a yolov5s_in_f32.npz file will be generated, which is the model's input file.
+
+##### MLIR to INT8 Model (Supports INT8 Quantization Only)
+
+Before quantizing to INT8 model, run calibration.py to get the calibration table. Prepare around 100~1000 images, in this case, 100 images from the COCO2017 dataset are used for demonstration.
+
+```bash
+run_calibration.py yolov5s.mlir \
+--dataset ../COCO2017 \
+--input_num 100 \
+-o yolov5s_cali_table
+```
+
+Then use the calibration table to generate the int8 symmetric cvimodel
+
+```bash
+model_deploy.py \
+--mlir yolov5s.mlir \
+--quant_input --quant_output \
+--quantize INT8 \
+--calibration_table yolov5s_cali_table \
+--processor cv181x \
+--test_input yolov5s_in_f32.npz \
+--test_reference yolov5s_top_outputs.npz \
+--tolerance 0.85,0.45 \
+--model yolov5_cv181x_int8_sym.cvimodel
+```
+
+After compilation, a file named yolov5_cv181x_int8_sym.cvimodel will be generated.
+
+*(Optional) Generate INT8 asymmetric cvimodel*
+
+```bash
+model_deploy.py \
+--mlir yolov5s.mlir \
+--quant_input --quant_output \
+--quantize INT8 --asymmetric \
+--calibration_table yolov5s_cali_table \
+--processor cv181x \
+--test_input yolov5s_in_f32.npz \
+--test_reference yolov5s_top_outputs.npz \
+--tolerance 0.85,0.45 \
+--model yolov5_cv181x_int8_asym.cvimodel
+```
+
+After compilation, a file named yolov5_cv181x_int8_asym.cvimodel will be generated.
+
+## Inference on the Board
+
+Copy the compiled [sample_yolov5](#cross-compile-yolo-program-for-pc), [cvimodel](#obtain-cvimodel), and the image to be inferred to the board, and then execute the binary program.
+```bash
+scp sample_yolov5 yolov5_cv181x_int8_asym.cvimodel 000000000113.jpg root@192.168.42.1:/root/
+```
+The image for inference is as follows:
+
+![duo-tdl-sdk-yolov5-detection.jpg](/docs/duo/tdl-sdk/duo-tdl-sdk-yolov5-detection.jpg)
+
+Run the command:
+
+```bash
+export LD_LIBRARY_PATH='/mnt/system/lib'
+./sample_yolov5 ./yolov5_cv181x_int8_asym.cvimodel 000000000113.jpg
+```
+
+result:
+```bash
+[root@milkv-duo]~/data/test_make# ./sample_yolov5 ./yolov5_cv181x_int8_asym.cvim
+odel 000000000113.jpg
+[ 5665.088539] vb has already inited, set_config cmd has no effect
+version: 1.4.0
+yolov5s Build at 2024-01-30 16:32:00 For platform cv181x
+Max SharedMem size:5734400
+model opened:./yolov5_cv181x_int8_asym.cvimodel
+detect res: 340.399902 96.056824 415.000000 423.052612 0.866147 0
+detect res: 149.599243 52.756699 344.154053 434.715759 0.864127 0
+detect res: 165.295807 434.305786 389.069794 546.548950 0.739044 55
+detect res: 5.554703 34.055344 161.554688 521.089905 0.718132 0
+detect res: 79.427734 458.260071 124.559998 515.725830 0.677201 41
+detect res: 256.286438 367.324158 303.713562 450.689941 0.598015 43
+detect res: 282.405457 93.188477 309.046570 121.621582 0.555912 41
+detect res: 281.694244 60.846092 309.968231 91.153908 0.520292 41
+```
+The program performs YOLOv5 model inference on the image, and the inference results are printed.
+The output interpretation is in the format `res: x y w h conf label`, representing the top-left coordinates `(x,y)` of the recognized result box, the width and height `(w,h)` of the recognized result box, the confidence `conf` of the recognized result, and the object label `label`.
+
+```bash
+# Referring to the COCO2017 label file
+0 person
+55 cake
+41 cup
+43 knife
+```
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/_category_.json
new file mode 100644
index 00000000..21f9fccf
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "TPU",
+ "position": 30,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo/app-dev/tpu"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-densenet.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-densenet.md
new file mode 100644
index 00000000..7b427e12
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-densenet.md
@@ -0,0 +1,194 @@
+---
+sidebar_label: 'Densenet Image Classification'
+sidebar_position: 39
+---
+
+# Image Classification Based on Densenet
+
+## 1. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 2. Prepare the working directory in Docker
+
+Create and enter the `densenet121` working directory, note that it is a directory at the same level as `tpu-mlir`.
+```
+# mkdir densenet121 && cd densenet121
+```
+
+Get the original model
+```
+# wget https://media.githubusercontent.com/media/onnx/models/main/validated/vision/classification/densenet-121/model/densenet-12.tar.gz
+```
+Extract `densenet-12.tar.gz`
+```
+# tar -zxvf densenet-12.tar.gz
+```
+After extraction is complete, the `densenet-12` folder will be generated in the current directory, which contains the `densenet-12.onnx` model file.
+
+Copy test image:
+```
+# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
+# cp -rf ${TPUC_ROOT}/regression/image/ .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 3. ONNX Model Conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+The steps for model conversion are as follows:
+- Convert ONNX model to MLIR
+- Generate calibration tables required for quantification
+- MLIR quantization into INT8 asymmetric cvimodel
+
+### ONNX model converted to MLIR
+
+The model in this example is RGB input, `mean` and `scale` are `123.675`,`116.28`,`103.53` and `0.0171`,`0.0175`,`0.0174` respectively.
+
+The command to convert an ONNX model to an MLIR model is as follows:
+```
+model_transform.py \
+ --model_name densenet121 \
+ --model_def ../densenet-12/densenet-12.onnx \
+ --test_input ../image/cat.jpg \
+ --input_shapes [[1,3,224,224]] \
+ --resize_dims 256,256 \
+ --mean 123.675,116.28,103.53 \
+ --scale 0.0171,0.0175,0.0174 \
+ --pixel_format rgb \
+ --test_result densenet121_top_outputs.npz \
+ --mlir densenet121.mlir
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_05.png)
+
+After converting to the MLIR model, a `densenet121.mlir` file will be generated, which is the MLIR model file. A `densenet121_in_f32.npz` file and a `densenet121_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_06.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Before converting to the INT8 model, you need to generate a calibration table. Here we use the existing 100 pictures from ILSVRC2012 as an example and execute the calibration command:
+```
+run_calibration.py densenet121.mlir \
+ --dataset ../ILSVRC2012 \
+ --input_num 100 \
+ -o densenet121_cali_table
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_07.png)
+
+After the operation is completed, the `densenet121_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_08.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+The command to convert MLIR model to INT8 model is as follows:
+```
+model_deploy.py \
+ --mlir densenet121.mlir \
+ --quantize INT8 \
+ --calibration_table densenet121_cali_table \
+ --chip cv180x \
+ --test_input ../image/cat.jpg \
+ --test_reference densenet121_top_outputs.npz \
+ --compare_all \
+ --fuse_preprocess \
+ --model densenet121_int8_fuse.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the fifth line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_09.png)
+
+After compilation is completed, the `densenet121_int8_fuse.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_10.png)
+
+## 4. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/densenet121/work/densenet121_int8_fuse.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Image Classification
+
+On the Duo board, perform Image Classification on the image
+
+![duo](/docs/duo/tpu/duo-tpu-cat.jpg)
+
+Image classification using `densenet121_int8_fuse.cvimodel` model:
+```
+./samples/bin/cvi_sample_classifier_fused_preprocess \
+ ./densenet121_int8_fuse.cvimodel \
+ ./samples/data/cat.jpg \
+ ./samples/data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-densenet_11.png)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-docker.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-docker.md
new file mode 100644
index 00000000..02403456
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-docker.md
@@ -0,0 +1,99 @@
+---
+sidebar_label: 'Docker dev environment'
+sidebar_position: 20
+---
+
+# Setting up Docker development environment
+
+## Docker installation
+
+In the windows environment, you can install `Docker Desktop for Windows`, Docker [download address](https://docs.docker.com/desktop/install/windows-install/)
+
+![duo](/docs/duo/tpu/duo-tpu-docker_01.png)
+
+Running Docker under Windows requires relevant dependencies, as shown in the figure, you need to use the WSL2 backend or Hyper-V backend as a running dependency.
+
+The enabling method for the Hyper-V backend is as follows:
+
+1. Control Panel - Programs and Features - Turn Windows features on or off
+2. Find `Hyper-V`, check `Hyper-V Management Tools` and `Hyper-V Platform`, click OK and wait for the system file configuration to be completed before restarting the computer.
+
+ ![duo](/docs/duo/tpu/duo-tpu-docker_02-en.png)
+
+Then you can install and download Docker Desktop for Windows, and make the appropriate check according to the selected backend in the installation guide.
+
+After the installation is complete, you need to restart your computer and then you can use Docker.
+
+## Pull the Docker image required for development
+
+Get the image file from Docker hub
+```
+docker pull sophgo/tpuc_dev:v3.1
+```
+
+```
+PS C:\Users\Carbon> docker pull sophgo/tpuc_dev:v3.1
+v3.1: Pulling from sophgo/tpuc_dev
+b237fe92c417: Pull complete
+db3c30810eab: Downloading 411.1MB/629.4MB
+2651dfd68288: Download complete
+db3c5981ae16: Download complete
+16098f82aa65: Download complete
+85e8821c88fd: Download complete
+d8a25a7307da: Download complete
+91fd425676de: Download complete
+b3ad6c6ed19d: Downloading 346.1MB/480.6MB
+ecaa420e1520: Download complete
+a570c4642598: Download complete
+2d76e68a7946: Download complete
+1df3b38113a9: Download complete
+4f4fb700ef54: Download complete
+f835d42d7adc: Download complete
+2b009425c205: Downloading 252.9MB/1.098GB
+```
+
+## Start Docker container
+
+```
+docker run --privileged --name -v /workspace -it sophgo/tpuc_dev:v3.1
+```
+`` is the container name defined by yourself, such as DuoTPU
+```
+docker run --privileged --name DuoTPU -v /workspace -it sophgo/tpuc_dev:v3.1
+```
+
+## Log in to the Docker container
+
+After starting the container, you will automatically log in to the terminal interface of the Docker window. If you need to open a new window, you can do it as follows
+
+Use the `docker ps` command to view the current Docker container list
+```
+PS C:\Users\Carbon\Duo-TPU> docker ps
+CONTAINER ID IMAGE COMMAND
+f3a060efb1d3 sophgo/tpuc_dev:v3.1 "/bin/bash"
+```
+
+Log in to the Docker container using the `CONTAINER ID`
+```
+docker exec -it f3a060efb1d3 /bin/bash
+```
+
+In Docker terminal, check whether the current directory is `/workspace`. If not, use the `cd` command to enter the directory.
+```
+# cd /workspace/
+```
+
+![duo](/docs/duo/tpu/duo-tpu-docker_03.png)
+
+
+## Get development kit and add environment variables
+
+Download the TPU-MLIR model conversion toolkit in the Docker terminal
+```
+git clone https://github.com/milkv-duo/tpu-mlir.git
+```
+
+In the Docker terminal, use the `source` command to add environment variables
+```
+# source ./tpu-mlir/envsetup.sh
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-googlenet.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-googlenet.md
new file mode 100644
index 00000000..0c24182f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-googlenet.md
@@ -0,0 +1,221 @@
+---
+sidebar_label: 'Googlenet Image Classification'
+sidebar_position: 37
+---
+
+# Image Classification Based on Googlenet
+
+## 1. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 2. Prepare the working directory in Docker
+
+Create and enter the `googlenet` working directory, note that it is a directory at the same level as `tpu-mlir`.
+```
+# mkdir googlenet && cd googlenet
+```
+
+Get the original model
+```
+wget https://media.githubusercontent.com/media/onnx/models/main/validated/vision/classification/inception_and_googlenet/googlenet/model/googlenet-12.onnx
+```
+
+Copy test image:
+```
+# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
+# cp -rf ${TPUC_ROOT}/regression/image/ .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 3. ONNX Model Conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+### ONNX model converted to MLIR
+
+The model in this example is RGB input, `mean` and `scale` are `123.675`,`116.28`,`103.53` and `0.0171`,`0.0175`,`0.0174` respectively. The model conversion command is as follows:
+```
+model_transform.py \
+ --model_name googlenet \
+ --model_def ../googlenet-12.onnx \
+ --test_input ../image/cat.jpg \
+ --input_shapes [[1,3,224,224]] \
+ --resize_dims 256,256 \
+ --mean 123.675,116.28,103.53 \
+ --scale 0.0171,0.0175,0.0174 \
+ --pixel_format rgb \
+ --test_result googlenet_top_outputs.npz \
+ --mlir googlenet.mlir
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_05.png)
+
+After converting to the MLIR model, a `googlenet.mlir` file will be generated, which is the MLIR model file. A `googlenet_in_f32.npz` file and a `googlenet_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_06.png)
+
+### MLIR to BF16 model
+
+The command to convert the MLIR model to the BF16 model is as follows:
+```
+model_deploy.py \
+ --mlir googlenet.mlir \
+ --quantize BF16 \
+ --chip cv180x \
+ --test_input googlenet_in_f32.npz \
+ --test_reference googlenet_top_outputs.npz \
+ --model googlenet_bf16.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the fourth line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_07.png)
+
+After compilation is completed, the `googlenet_bf16.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_08.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Run `run_calibration.py` to get the calibration table. The number of input data should be about 100~1000 pieces depending on the situation. Here we use the existing 100 images from ILSVRC2012 as an example and execute the calibration command:
+```
+run_calibration.py googlenet.mlir \
+ --dataset ../ILSVRC2012 \
+ --input_num 100 \
+ -o googlenet_cali_table
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_09.png)
+
+After the operation is completed, the `googlenet_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_10.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+The command to convert MLIR model to INT8 model is as follows:
+```
+model_deploy.py \
+ --mlir googlenet.mlir \
+ --quantize INT8 \
+ --calibration_table googlenet_cali_table \
+ --chip cv180x \
+ --test_input ../image/cat.jpg \
+ --test_reference googlenet_top_outputs.npz \
+ --compare_all \
+ --fuse_preprocess \
+ --model googlenet_int8_fuse.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the fifth line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_11.png)
+
+After compilation is completed, the `googlenet_int8_fuse.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_12.png)
+
+## 4. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/googlenet/work/googlenet_bf16.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+# scp /workspace/googlenet/work/googlenet_int8_fuse.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Image Classification
+
+On the Duo board, perform Image Classification on the image
+
+![duo](/docs/duo/tpu/duo-tpu-cat.jpg)
+
+Image classification using `googlenet_bf16.cvimodel` model
+```
+./samples/bin/cvi_sample_classifier_bf16 \
+ ./googlenet_bf16.cvimodel \
+ ./samples/data/cat.jpg \
+ ./samples/data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_13.png)
+
+Image classification using `googlenet_int8_fuse.cvimodel` model
+```
+./samples/bin/cvi_sample_classifier_fused_preprocess \
+ ./googlenet_int8_fuse.cvimodel \
+ ./samples/data/cat.jpg \
+ ./samples/data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-googlenet_14.png)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-introduction.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-introduction.md
new file mode 100644
index 00000000..01f773d7
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-introduction.md
@@ -0,0 +1,18 @@
+---
+sidebar_label: 'Introduction'
+sidebar_position: 10
+---
+
+# Introduction
+
+Duo’s CPU CV1800B integrates CVITEK TPU for intelligent detection.
+
+TPU is an AI acceleration engine for deep learning neural networks, which can be used to accelerate image classification, object detection, face detection and recognition, segmentation, LSTM, and more. The main function of TPU is to offload CPU work and accelerate computer vision and voice-related operations.
+
+CV1800B TPU supported models:
+
+![duo](/docs/duo/tpu/duo-cv1800b-tpu-model_202307.png)
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-mobilenetv2.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-mobilenetv2.md
new file mode 100644
index 00000000..8f0a8cb8
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-mobilenetv2.md
@@ -0,0 +1,206 @@
+---
+sidebar_label: 'MobileNetV2 Image Classification'
+sidebar_position: 35
+---
+
+# Image Classification Based on MobileNetV2
+
+## 1. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 2. Prepare the working directory in Docker
+
+Create and enter the `mobilenet_v2` working directory, note that it is a directory at the same level as `tpu-mlir`.
+```
+# mkdir mobilenet_v2 && cd mobilenet_v2
+```
+
+Download the MobileNet model from the official website:
+```
+git clone https://github.com/shicai/MobileNet-Caffe.git
+```
+
+Place the model files in the cloned `MobileNet-Caffe` directory and the image files in the `tpu-mlir` tool chain directory into the current directory.
+```
+# cp MobileNet-Caffe/mobilenet_v2_deploy.prototxt .
+# cp MobileNet-Caffe/mobilenet_v2.caffemodel .
+# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
+# cp -rf ${TPUC_ROOT}/regression/image/ .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 3. MobileNet-Caffe Model Conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+The steps for model conversion are as follows:
+- Convert Caffe model to MLIR
+- Generate calibration tables required for quantification
+- MLIR quantization into INT8 asymmetric cvimodel
+
+### Caffe model converted to MLIR
+
+The model input are pictures. Before converting the model, we need to understand the preprocessing of the model. If the model uses preprocessed npz files as input, there is no need to consider preprocessing. The preprocessing process is expressed as follows ($x$ represents the input): $$ y = (x-mean)\times scale $$
+
+The model in this example is BGR input, `mean` and `scale` are `103.94`, `116.78`, `123.68` and `0.017`, `0.017`, `0.017` respectively. The model conversion command is as follows:
+```
+model_transform.py \
+ --model_name mobilenet_v2 \
+ --model_def ../mobilenet_v2_deploy.prototxt \
+ --model_data ../mobilenet_v2.caffemodel \
+ --input_shapes [[1,3,224,224]] \
+ --resize_dims=256,256 \
+ --mean 103.94,116.78,123.68 \
+ --scale 0.017,0.017,0.017 \
+ --pixel_format bgr \
+ --test_input ../image/cat.jpg \
+ --test_result mobilenet_v2_top_outputs.npz \
+ --mlir mobilenet_v2.mlir
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_05.png)
+
+After converting to the MLIR model, a `mobilenet_v2.mlir` file will be generated, which is the MLIR model file. A `mobilenet_v2_in_f32.npz` file and a `mobilenet_v2_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_06.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Run `run_calibration.py` to get the calibration table. The number of input data should be about 100~1000 pieces depending on the situation. Here we use the existing 100 images from ILSVRC2012 as an example and execute the calibration command:
+
+```
+run_calibration.py mobilenet_v2.mlir \
+ --dataset ../ILSVRC2012 \
+ --input_num 100 \
+ -o mobilenet_v2_cali_table
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_07.png)
+
+After the operation is completed, the `mobilenet_v2_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_08.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+Use the `model_deploy.py` script parameter to use `asymmetric` for asymmetric quantization and convert the MLIR file into an INT8 asymmetric quantization model:
+```
+model_deploy.py \
+ --mlir mobilenet_v2.mlir \
+ --asymmetric \
+ --calibration_table mobilenet_v2_cali_table \
+ --fuse_preprocess \
+ --customization_format BGR_PLANAR \
+ --chip cv180x \
+ --quantize INT8 \
+ --test_input ../image/cat.jpg \
+ --model mobilenet_v2_int8_asym.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the seventh line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_09.png)
+
+After compilation is completed, the `mobilenet_v2_int8_asym.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_10.png)
+
+## 4. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/mobilenet_v2/work/mobilenet_v2_int8_asym.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Image Classification
+
+On the Duo board, perform Image Classification on the image
+
+![duo](/docs/duo/tpu/duo-tpu-cat.jpg)
+
+Enter the samples directory
+
+```
+# cd samples
+```
+
+View cvimodel info
+```
+./bin/cvi_sample_model_info ../mobilenet_v2_int8_asym.cvimodel
+```
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_11.png)
+
+Perform image classification test
+```
+./bin/cvi_sample_classifier_fused_preprocess \
+ ../mobilenet_v2_int8_asym.cvimodel \
+ ./data/cat.jpg \
+ ./data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-mobilenetv2_12.png)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-resnet18.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-resnet18.md
new file mode 100644
index 00000000..a695f6f5
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-resnet18.md
@@ -0,0 +1,194 @@
+---
+sidebar_label: 'Resnet18 Image Classification'
+sidebar_position: 40
+---
+
+# Image Classification Based on Resnet18
+
+## 1. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 2. Prepare the working directory in Docker
+
+Create and enter the `resnet18` working directory, note that it is a directory at the same level as `tpu-mlir`.
+```
+# mkdir resnet18 && cd resnet18
+```
+
+Get the original model
+```
+# wget https://github.com/onnx/models/raw/main/validated/vision/classification/resnet/model/resnet18-v1-7.tar.gz
+```
+Extract `resnet18-v1-7.tar.gz`
+```
+# tar -zxvf resnet18-v1-7.tar.gz
+```
+After extraction is complete, the `resnet18-v1-7` folder will be generated in the current directory, which contains the `resnet18-v1-7.onnx` model file.
+
+Copy test image:
+```
+# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
+# cp -rf ${TPUC_ROOT}/regression/image/ .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 3. ONNX Model Conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+The steps for model conversion are as follows:
+- Convert ONNX model to MLIR
+- Generate calibration tables required for quantification
+- MLIR quantization into INT8 asymmetric cvimodel
+
+### ONNX model converted to MLIR
+
+The model in this example is RGB input, `mean` and `scale` are `123.675`,`116.28`,`103.53` and `0.0171`,`0.0175`,`0.0174` respectively.
+
+The command to convert an ONNX model to an MLIR model is as follows:
+```
+model_transform.py \
+ --model_name resnet18 \
+ --model_def ../resnet18-v1-7/resnet18-v1-7.onnx \
+ --test_input ../image/cat.jpg \
+ --input_shapes [[1,3,224,224]] \
+ --resize_dims 256,256 \
+ --mean 123.675,116.28,103.53 \
+ --scale 0.0171,0.0175,0.0174 \
+ --pixel_format rgb \
+ --test_result resnet18_top_outputs.npz \
+ --mlir resnet18.mlir
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_05.png)
+
+After converting to the MLIR model, a `resnet18.mlir` file will be generated, which is the MLIR model file. A `resnet18_in_f32.npz` file and a `resnet18_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_06.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Before converting to the INT8 model, you need to generate a calibration table. Here we use the existing 100 pictures from ILSVRC2012 as an example and execute the calibration command:
+```
+run_calibration.py resnet18.mlir \
+ --dataset ../ILSVRC2012 \
+ --input_num 100 \
+ -o resnet18_cali_table
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_07.png)
+
+After the operation is completed, the `resnet18_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_08.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+The command to convert MLIR model to INT8 model is as follows:
+```
+model_deploy.py \
+ --mlir resnet18.mlir \
+ --quantize INT8 \
+ --calibration_table resnet18_cali_table \
+ --chip cv180x \
+ --test_input ../image/cat.jpg \
+ --test_reference resnet18_top_outputs.npz \
+ --compare_all \
+ --fuse_preprocess \
+ --model resnet18_int8_fuse.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the fifth line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_09.png)
+
+After compilation is completed, the `resnet18_int8_fuse.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_10.png)
+
+## 4. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/resnet18/work/resnet18_int8_fuse.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Image Classification
+
+On the Duo board, perform Image Classification on the image
+
+![duo](/docs/duo/tpu/duo-tpu-cat.jpg)
+
+Image classification using `resnet18_int8_fuse.cvimodel` model:
+```
+./samples/bin/cvi_sample_classifier_fused_preprocess \
+ ./resnet18_int8_fuse.cvimodel \
+ ./samples/data/cat.jpg \
+ ./samples/data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-resnet18_11.png)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-shufflenetv2.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-shufflenetv2.md
new file mode 100644
index 00000000..7505d14d
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-shufflenetv2.md
@@ -0,0 +1,219 @@
+---
+sidebar_label: 'ShuffleNetV2 Image Classification'
+sidebar_position: 36
+---
+
+# Image Classification Based on ShuffleNetV2
+
+## 1. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 2. Prepare the working directory in Docker
+
+Create and enter the `shufflenet_v2` working directory, note that it is a directory at the same level as `tpu-mlir`.
+```
+# mkdir shufflenet_v2 && cd shufflenet_v2
+```
+
+Copy test image:
+```
+# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
+# cp -rf ${TPUC_ROOT}/regression/image/ .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create a new `export.py` file and write the following code in the file:
+```
+import torch
+from torchvision.models.shufflenetv2 import shufflenet_v2_x1_0
+model = shufflenet_v2_x1_0(pretrained=True)
+model.eval()
+torch.jit.trace(model, torch.randn(1, 3, 640, 640)).save("./shufflenetv2_jit.pt")
+```
+
+Run the `export.py` file:
+```
+python export.py
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_05.png)
+
+The `shufflenetv2_jit.pt` file will be generated in the current directory, which is the required original model file.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 3. ShuffleNetV2-PyTorch Model Conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+The steps for model conversion are as follows:
+- Convert PyTorch model to MLIR
+- Generate calibration tables required for quantification
+- MLIR quantization into INT8 asymmetric cvimodel
+
+
+### PyTorch model converted to MLIR
+
+The model input are pictures. Before converting the model, we need to understand the preprocessing of the model. If the model uses preprocessed npz files as input, there is no need to consider preprocessing. The preprocessing process is expressed as follows ($x$ represents the input): $$ y = (x-mean)\times scale $$
+
+The model in this example is BGR input, `mean` and `scale` are `103.94`, `116.78`, `123.68` and `0.017`, `0.017`, `0.017` respectively. The model conversion command is as follows:
+```
+model_transform.py \
+ --model_name shufflenet_v2 \
+ --model_def ../shufflenetv2_jit.pt \
+ --input_shapes [[1,3,224,224]] \
+ --resize_dims=256,256 \
+ --mean 103.94,116.78,123.68 \
+ --scale 0.017,0.017,0.017 \
+ --pixel_format bgr \
+ --test_input ../image/cat.jpg \
+ --test_result shufflenet_v2_top_outputs.npz \
+ --mlir shufflenet_v2.mlir
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_06.png)
+
+After converting to the MLIR model, a `shufflenet_v2.mlir` file will be generated, which is the MLIR model file. A `shufflenet_v2_in_f32.npz` file and a `shufflenet_v2_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_07.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Run `run_calibration.py` to get the calibration table. The number of input data should be about 100~1000 pieces depending on the situation. Here we use the existing 100 images from ILSVRC2012 as an example and execute the calibration command:
+```
+run_calibration.py shufflenet_v2.mlir \
+ --dataset ../ILSVRC2012 \
+ --input_num 100 \
+ -o shufflenet_v2_cali_table
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_08.png)
+
+After the operation is completed, the `shufflenet_v2_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_09.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+Use the `model_deploy.py` script parameter to use `asymmetric` for asymmetric quantization and convert the MLIR file into an INT8 asymmetric quantization model:
+```
+model_deploy.py \
+ --mlir shufflenet_v2.mlir \
+ --asymmetric \
+ --calibration_table shufflenet_v2_cali_table \
+ --fuse_preprocess \
+ --customization_format BGR_PLANAR \
+ --chip cv180x \
+ --quantize INT8 \
+ --test_input ../image/cat.jpg \
+ --tolerance 0.96,0.72 \
+ --model shufflenet_v2_int8_asym.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the seventh line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_10.png)
+
+After compilation is completed, the `shufflenet_v2_int8_asym.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_11.png)
+
+## 4. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/shufflenet_v2/work/shufflenet_v2_int8_asym.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Image Classification
+
+On the Duo board, perform Image Classification on the image
+
+![duo](/docs/duo/tpu/duo-tpu-cat.jpg)
+
+Enter the samples directory
+
+```
+# cd samples
+```
+
+View cvimodel info
+```
+./bin/cvi_sample_model_info ../shufflenet_v2_int8_asym.cvimodel
+```
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_12.png)
+
+Perform image classification test
+```
+./bin/cvi_sample_classifier_fused_preprocess \
+ ../shufflenet_v2_int8_asym.cvimodel \
+ ./data/cat.jpg \
+ ./data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-shufflenetv2_13.png)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-squeezenet.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-squeezenet.md
new file mode 100644
index 00000000..9c8f05fa
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-squeezenet.md
@@ -0,0 +1,194 @@
+---
+sidebar_label: 'Squeezenet Image Classification'
+sidebar_position: 38
+---
+
+# Image Classification Based on Squeezenet
+
+## 1. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 2. Prepare the working directory in Docker
+
+Create and enter the `squeezenet1.1` working directory, note that it is a directory at the same level as `tpu-mlir`.
+```
+# mkdir squeezenet1.1 && cd squeezenet1.1
+```
+
+Get the original model
+```
+# wget https://media.githubusercontent.com/media/onnx/models/main/validated/vision/classification/squeezenet/model/squeezenet1.1-7.tar.gz
+```
+Extract `squeezenet1.1-7.tar.gz`
+```
+# tar -zxvf squeezenet1.1-7.tar.gz
+```
+After extraction is complete, the `squeezenet1.1` folder will be generated in the current directory, which contains the `squeezenet1.1.onnx` model file.
+
+Copy test image:
+```
+# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
+# cp -rf ${TPUC_ROOT}/regression/image/ .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 3. ONNX Model Conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+The steps for model conversion are as follows:
+- Convert ONNX model to MLIR
+- Generate calibration tables required for quantification
+- MLIR quantization into INT8 asymmetric cvimodel
+
+### ONNX model converted to MLIR
+
+The model in this example is RGB input, `mean` and `scale` are `123.675`,`116.28`,`103.53` and `0.0171`,`0.0175`,`0.0174` respectively.
+
+The command to convert an ONNX model to an MLIR model is as follows:
+```
+model_transform.py \
+ --model_name squeezenet1.1 \
+ --model_def ../squeezenet1.1/squeezenet1.1.onnx \
+ --test_input ../image/cat.jpg \
+ --input_shapes [[1,3,224,224]] \
+ --resize_dims 256,256 \
+ --mean 123.675,116.28,103.53 \
+ --scale 0.0171,0.0175,0.0174 \
+ --pixel_format rgb \
+ --test_result squeezenet1.1_top_outputs.npz \
+ --mlir squeezenet1.1.mlir
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_05.png)
+
+After converting to the MLIR model, a `squeezenet1.1.mlir` file will be generated, which is the MLIR model file. A `squeezenet1.1_in_f32.npz` file and a `squeezenet1.1_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_06.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Before converting to the INT8 model, you need to generate a calibration table. Here we use the existing 100 pictures from ILSVRC2012 as an example and execute the calibration command:
+```
+run_calibration.py squeezenet1.1.mlir \
+ --dataset ../ILSVRC2012 \
+ --input_num 100 \
+ -o squeezenet1.1_cali_table
+```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_07.png)
+
+After the operation is completed, the `squeezenet1.1_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_08.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+The command to convert MLIR model to INT8 model is as follows:
+```
+model_deploy.py \
+ --mlir squeezenet1.1.mlir \
+ --quantize INT8 \
+ --calibration_table squeezenet1.1_cali_table \
+ --chip cv180x \
+ --test_input ../image/cat.jpg \
+ --test_reference squeezenet1.1_top_outputs.npz \
+ --compare_all \
+ --fuse_preprocess \
+ --model squeezenet1.1_int8_fuse.cvimodel
+```
+
+:::tip
+If the development board you are using is not Duo, please replace the fifth line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_09.png)
+
+After compilation is completed, the `squeezenet1.1_int8_fuse.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_10.png)
+
+## 4. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/squeezenet1.1/work/squeezenet1.1_int8_fuse.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Image Classification
+
+On the Duo board, perform Image Classification on the image
+
+![duo](/docs/duo/tpu/duo-tpu-cat.jpg)
+
+Image classification using `squeezenet1.1_int8_fuse.cvimodel` model:
+```
+./samples/bin/cvi_sample_classifier_fused_preprocess \
+ ./squeezenet1.1_int8_fuse.cvimodel \
+ ./samples/data/cat.jpg \
+ ./samples/data/synset_words.txt
+```
+
+Example of successful classification results
+
+![duo](/docs/duo/tpu/duo-tpu-squeezenet_11.png)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-yolov5.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-yolov5.md
new file mode 100644
index 00000000..5f867340
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/tpu/tpu-yolov5.md
@@ -0,0 +1,321 @@
+---
+sidebar_label: 'YOLOv5 Object Detection'
+sidebar_position: 30
+---
+
+# Object Detection Based on YOLOv5
+
+## 1. Prepare original model files under windows
+
+### Prepare the YOLOv5 development kit and yolov5n.pt file
+
+Download the [YOLOv5 development toolkit](https://codeload.github.com/ultralytics/yolov5/zip/refs/heads/master) and the [yolov5n.pt](https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5n.pt) file. Once the download is complete, extract the toolkit and place the `yolov5n.pt` file in the `yolov5-master` directory.
+
+### Configure the conda environment
+
+[Anaconda](https://www.anaconda.com/) needs to be installed in advance.
+
+Open a new `Anaconda Prompt` terminal and execute `conda env list` to view the current environment.
+```
+(base) C:\Users\Carbon> conda env list
+# conda environments:
+#
+base * C:\Users\Carbon\anaconda3
+```
+
+Create a new conda virtual environment and install version 3.9.0 of python. `duotpu` is the name you chose.
+```
+(base) C:\Users\Carbon> conda create --name duotpu python=3.9.0
+```
+
+Check the current environment again after success.
+```
+(base) C:\Users\Carbon> conda env list
+# conda environments:
+#
+base * C:\Users\Carbon\anaconda3
+duotpu C:\Users\Carbon\anaconda3\envs\duotpu
+```
+
+Activate the newly installed 3.9.0 environment.
+```
+(base) C:\Users\Carbon> conda activate duotpu
+```
+
+Confirm that the activation is successful.
+```
+(duotpu) C:\Users\Carbon> conda env list
+# conda environments:
+#
+base C:\Users\Carbon\anaconda3
+duotpu * C:\Users\Carbon\anaconda3\envs\duotpu
+```
+
+Then, you can use the following command to install PyTorch version 1.12.1. Please choose the specific installation command based on your requirements. The subsequent process only requires the use of CPU.
+```
+# CUDA 10.2
+conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch
+
+# CUDA 11.3
+conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
+
+# CUDA 11.6
+conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch
+
+# CPU Only
+conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cpuonly -c pytorch
+```
+
+Then `cd` the terminal path to the `yolov5-master` path of the development kit and enter `pip install -r requirements.txt` to install other dependencies.
+```
+(duotpu) C:\Users\Carbon> cd Duo-TPU\yolov5-master
+
+(duotpu) C:\Users\Carbon\Duo-TPU\yolov5-master> pip install -r requirements.txt
+```
+
+### Generate original model file
+
+Create a new `main.py` file in the `yolov5-master` directory and write the following code in the file:
+```
+import torch
+from models.experimental import attempt_download
+model = torch.load(attempt_download("./yolov5n.pt"),
+map_location=torch.device('cpu'))['model'].float()
+model.eval()
+model.model[-1].export = True
+torch.jit.trace(model, torch.rand(1, 3, 640, 640), strict=False).save('./yolov5n_jit.pt')
+```
+
+Then find the `yolov5-master/models/yolo.py` file, comment the code from lines 99 to 115, and add the code `return x` on line 116, as shown below:
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_01.png)
+
+In addition, this file also needs to be modified:
+```
+C:\Users\Carbon\anaconda3\envs\duotpu\Lib\site-packages\torch\nn\modules\upsampling.py
+```
+When using conda on linux the file is located at:
+```
+~/anaconda3/envs/duotpu/lib/python3.9/site-packages/torch/nn/modules/upsampling.py
+```
+Make the following changes around line 153
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_02.png)
+
+After the modification is completed, run the `python main.py` file and the `yolov5n_jit.pt` file will be generated in the `yolov5-master` directory. This file is the required original model file.
+```
+(duotpu) C:\Users\Carbon\Duo-TPU\yolov5-master> python main.py
+```
+
+### Exit the conda environment (optional)
+
+The model files we need have been generated above. You can use the `conda deactivate` command to exit the conda environment:
+```
+(duotpu) C:\Users\Carbon\Duo-TPU\yolov5-master> conda deactivate
+```
+
+If you no longer need this conda virtual environment (duotpu), you can delete it with the following command:
+```
+conda env remove --name
+```
+
+## 2. Configure Docker development environment
+
+Refer to [here](https://milkv.io/docs/duo/application-development/tpu/tpu-docker). After configuring the Docker development environment, return here to continue the next step.
+
+:::warning
+If you are using a configured Docker development environment, please make sure to follow the Docker configuration tutorial to execute command `source ./tpu-mlir/envsetup.sh` after starting Docker, otherwise errors may occur in subsequent steps.
+:::
+
+## 3. Prepare the working directory in Docker
+
+Create and enter the `yolov5n_torch` working directory, note that it is a directory at the same level as `tpu-mlir`, and put the model files and image files into this directory
+```
+# mkdir yolov5n_torch && cd yolov5n_torch
+```
+
+Create a new Windows terminal and copy `yolov5n_jit.pt` from windows to Docker
+```
+docker cp /yolov5-master/yolov5n_jit.pt :/workspace/yolov5n_torch/yolov5n_jit.pt
+```
+
+`` is the file directory where the yolov5 development kit is located in the windows system, and `` is the container name, such as
+```
+docker cp C:\Users\Carbon\Duo-TPU\yolov5-master\yolov5n_jit.pt DuoTPU:/workspace/yolov5n_torch/yolov5n_jit.pt
+```
+
+Go back to the Docker terminal and put the image file into the current directory (`yolov5n_torch`)
+```
+# cp -rf ${TPUC_ROOT}/regression/dataset/COCO2017 .
+# cp -rf ${TPUC_ROOT}/regression/image .
+```
+`${TPUC_ROOT}` here is an environment variable, corresponding to the `tpu-mlir` directory, which is loaded in the `source ./tpu-mlir/envsetup.sh` step in the previous configuration of the Docker development environment.
+
+Create and enter the `work` working directory to store compiled files such as `MLIR` and `cvimodel`
+```
+# mkdir work && cd work
+```
+
+## 4. YOLOv5n-TORCH Model conversion
+
+:::tip
+The Duo development board is equipped with the CV1800B chip, which supports the **ONNX series** and **Caffe models**. Currently, it does not support TFLite models. In terms of quantized data types, it supports **quantization in BF16 format** and **asymmetric quantization in INT8 format**.
+:::
+
+The steps for model conversion are as follows:
+- Convert TORCH model to MLIR
+- Generate calibration tables required for quantification
+- MLIR quantization into INT8 asymmetric cvimodel
+
+### TORCH model converted to MLIR
+
+In this example, the model is RGB input, `mean` and `scale` are `0,0,0` and `0.0039216`, `0.0039216`, `0.0039216` respectively
+The command to convert TORCH model to MLIR model is as follows
+ ```
+# model_transform.py \
+ --model_name yolov5n \
+ --model_def ../yolov5n_jit.pt \
+ --input_shapes [[1,3,640,640]] \
+ --pixel_format "rgb" \
+ --keep_aspect_ratio \
+ --mean 0,0,0 \
+ --scale 0.0039216,0.0039216,0.0039216 \
+ --test_input ../image/dog.jpg \
+ --test_result yolov5n_top_outputs.npz \
+ --output_names 1219,1234,1249 \
+ --mlir yolov5n.mlir
+ ```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_06.png)
+
+After converting to the MLIR model, a `yolov5n.mlir` file will be generated, which is the MLIR model file. A `yolov5n_in_f32.npz` file and a `yolov5n_top_outputs.npz` file will also be generated, which are the input files for subsequent model conversion.
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_07.png)
+
+### MLIR to INT8 model
+
+#### Generate calibration tables required for quantification
+
+Before converting to the INT8 model, you need to generate a calibration table. Here we use the existing 100 pictures from COCO2017 as an example to execute calibration.
+```
+# run_calibration.py yolov5n.mlir \
+ --dataset ../COCO2017 \
+ --input_num 100 \
+ -o ./yolov5n_cali_table
+ ```
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_08.png)
+
+After the operation is completed, the `yolov5n_cali_table` file will be generated, which is used for subsequent compilation of the INT8 model.
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_09.png)
+
+#### MLIR quantized into INT8 asymmetric cvimodel
+
+The command to convert MLIR model to INT8 model is as follows
+```
+# model_deploy.py \
+ --mlir yolov5n.mlir \
+ --quantize INT8 \
+ --calibration_table ./yolov5n_cali_table \
+ --chip cv180x \
+ --test_input ../image/dog.jpg \
+ --test_reference yolov5n_top_outputs.npz \
+ --compare_all \
+ --tolerance 0.96,0.72 \
+ --fuse_preprocess \
+ --debug \
+ --model yolov5n_int8_fuse.cvimodel
+ ```
+
+:::tip
+If the development board you are using is not Duo, please replace the fifth line `-- chip cv180x` in the above command with the corresponding chip model.
+When using Duo 256M/Duo S , it should be changed to ` -- chip cv181x`.
+:::
+
+Example of successful operation
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_10.png)
+
+After compilation is completed, the `yolov5n_int8_fuse.cvimodel` file will be generated.
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_11.png)
+
+## 5. Validate on Development Board Duo
+
+### Connecting the Duo development board
+
+Complete the connection between the Duo development board and the computer according to the previous tutorial, and use tools such as `mobaxterm` or `Xshell` to open a terminal to operate the Duo development board.
+
+### Get tpu-sdk
+
+Switch to the `/workspace` directory in the Docker terminal
+```
+cd /workspace
+```
+
+Download tpu sdk, if you are using Duo, execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-cv180x.git
+mv ./tpu-sdk-cv180x ./tpu-sdk
+```
+
+Else,if you are using Duo 256M/Duo S , execute
+```
+git clone https://github.com/milkv-duo/tpu-sdk-sg200x.git
+mv ./tpu-sdk-sg200x ./tpu-sdk
+```
+
+### Copy tpu-sdk and model files to Duo
+
+In the terminal of the Duo board, create a new directory `/mnt/tpu/`
+```
+# mkdir -p /mnt/tpu && cd /mnt/tpu
+```
+
+In the Docker terminal, copy `tpu-sdk` and model files to the Duo
+```
+# scp -r /workspace/tpu-sdk root@192.168.42.1:/mnt/tpu/
+# scp /workspace/yolov5n_torch/work/yolov5n_int8_fuse.cvimodel root@192.168.42.1:/mnt/tpu/tpu-sdk/
+```
+
+### Set environment variables
+
+In the terminal of the Duo board, set the environment variables
+```
+# cd /mnt/tpu/tpu-sdk
+# source ./envs_tpu_sdk.sh
+```
+
+### Perform Object Detection
+
+On the Duo board, perform object detection on the image
+
+![duo](/docs/duo/tpu/duo-tpu-dog.jpg)
+
+In the terminal of the Duo board, use the `yolov5n_int8_fuse.cvimodel` model for object detection
+```
+# ./samples/samples_extra/bin/cvi_sample_detector_yolo_v5_fused_preprocess \
+ ./yolov5n_int8_fuse.cvimodel \
+ ./samples/samples_extra/data/dog.jpg \
+ yolov5n_out.jpg
+ ```
+
+Example of successful detection result
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_12.png)
+
+After successful operation, the detection result file `yolov5n_out.jpg` will be generated, which can be pulled to the PC through the scp command in the Windows terminal.
+```
+scp root@192.168.42.1:/mnt/tpu/tpu-sdk/yolov5n_out.jpg .
+```
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_13.png)
+
+View test result files on a Windows PC
+
+![duo](/docs/duo/tpu/duo-tpu-yolo5_14.jpg)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/wiringx.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/wiringx.md
new file mode 100644
index 00000000..b5f573b0
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/application-development/wiringx.md
@@ -0,0 +1,902 @@
+---
+sidebar_label: 'wiringX'
+sidebar_position: 10
+---
+
+# Introduction
+
+wiringX is a library that allows developers to control the GPIO of various platforms with generic and uniform functions. By using wiringX, the same code will run on all platforms supported by wiringX, natively.
+
+This article will be divided into the following four parts to introduce how to develop applications on Duo using wiringX:
+
+1. wiringX APIs
+2. Basic usage code demonstration
+3. Configuration of the application compilation environment based on wiringX
+4. Introduction to some demos and projects implemented using wiringX
+
+If you are already familiar with the usage of wiringX, you can directly refer to our sample code: [duo-examples](https://github.com/milkv-duo/duo-examples)
+
+Please note that many pin functions of the Duo series are multiplexed. When using `wiringX` to control the functions of each pin, it is important to confirm the current state of the pin to ensure it matches the desired functionality. If it doesn't, you can use the `duo-pinmux` command to switch it to the desired function.
+
+Please refer to the detailed usage instructions for more information:[pinmux](https://milkv.io/docs/duo/application-development/pinmux).
+
+### Duo/Duo256M wiringX numbers
+
+The wiringX pin numbers of Duo and Duo256M are consistent with the pin name numbers. However, the blue LED control pin is not available on the 40-pin physical pinout, and its wiringX pin number is `25`.
+
+
+
+
+
+| wiringX | PIN NAME | Pin# | Pin# | PIN NAME | wiringX |
+| ------- | -------- | :-----------------------------: | :------------------------------: | -------- | ------- |
+| 0 | GP0 |
1
|
40
| VBUS | |
+| 1 | GP1 |
2
|
39
| VSYS | |
+| | GND |
3
|
38
| GND | |
+| 2 | GP2 |
4
|
37
| 3V3_EN | |
+| 3 | GP3 |
5
|
36
| 3V3(OUT) | |
+| 4 | GP4 |
6
|
35
| | |
+| 5 | GP5 |
7
|
34
| | |
+| | GND |
8
|
33
| GND | |
+| 6 | GP6 |
9
|
32
| GP27 | 27 |
+| 7 | GP7 |
10
|
31
| GP26 | 26 |
+| 8 | GP8 |
11
|
30
| RUN | |
+| 9 | GP9 |
12
|
29
| GP22 | 22 |
+| | GND |
13
|
28
| GND | |
+| 10 | GP10 |
14
|
27
| GP21 | 21 |
+| 11 | GP11 |
15
|
26
| GP20 | 20 |
+| 12 | GP12 |
16
|
25
| GP19 | 19 |
+| 13 | GP13 |
17
|
24
| GP18 | 18 |
+| | GND |
18
|
23
| GND | |
+| 14 | GP14 |
19
|
22
| GP17 | 17 |
+| 15 | GP15 |
20
|
21
| GP16 | 16 |
+| | | | | | |
+| 25 | GP25 |
LED
| | | |
+
+
+
+### DuoS wiringX numbers
+
+The wiringX pin numbers of DuoS are consistent with the physical pin numbers. The blue LED control pin is not on the 40PIN physical pins, and its wiringX number is `0`.
+
+
+
+#### Header J3
+
+GPIO on `Header J3` use 3.3V logic levels.
+
+
+
+| wiringX | PIN NAME | PIN# | PIN# | PIN NAME | wiringX |
+|:-------:|:---------|:--------------------------------:|:-------------------------------:|:---------|:-------:|
+| | 3V3 |
1
|
2
| VSYS(5V) | |
+| 3 | B20 |
3
|
4
| VSYS(5V) | |
+| 5 | B21 |
5
|
6
| GND | |
+| 7 | B18 |
7
|
8
| A16 | 8 |
+| | GND\* |
9
|
10
| A17 | 10 |
+| 11 | B11 |
11
|
12
| B19 | 12 |
+| 13 | B12 |
13
|
14
| GND | |
+| 15 | B22 |
15
|
16
| A20 | 16 |
+| | 3V3 |
17
|
18
| A19 | 18 |
+| 19 | B13 |
19
|
20
| GND | |
+| 21 | B14 |
21
|
22
| A18 | 22 |
+| 23 | B15 |
23
|
24
| B16 | 24 |
+| | GND |
25
|
26
| A28 | 26 |
+
+
+
+*GND\*: Pin 9 is a low-level GPIO in the V1.1 version of the hardware, and is GND in the V1.2 version and later.*
+
+#### Header J4
+
+GPIO on `Header J4` use 1.8V logic levels.
+
+Most of the pins on this header have dedicated functions, such as MIPI DSI signals, Touch Screen signals, and audio signals. If there is no special requirement, it is not recommended to use the pins on this header as GPIO.
+
+
+
+| wiringX | PIN NAME | PIN# | PIN# | PIN NAME | wiringX |
+|:-------:|----------|:-------------------------------:|:--------------------------------:|:------------|:-------:|
+| | VSYS(5V) |
52
|
51
| AUDIO_OUT_R | |
+| 50 | B1 |
50
|
49
| AUDIO_OUT_L | |
+| 48 | B2 |
48
|
47
| AUDIO_IN_R | |
+| 46 | B3 |
46
|
45
| AUDIO_IN_L | |
+| 44 | E2 |
44
|
43
| 3V3 | |
+| 42 | E1 |
42
|
41
| C18 | 41 |
+| 40 | E0 |
40
|
39
| C19 | 39 |
+| | GND |
38
|
37
| GND | |
+| 36 | C20 |
36
|
35
| C16 | 35 |
+| 34 | C21 |
34
|
33
| C17 | 33 |
+| | GND |
32
|
31
| GND | |
+| 30 | C14 |
30
|
29
| C12 | 29 |
+| 28 | C15 |
28
|
27
| C13 | 27 |
+
+
+
+## 1. Code example
+
+### GPIO Usage Example
+
+Here is an example of working with GPIO. It will toggle pin 20 on Duo every 1 second, pulling it high and then low. The physical pin number for pin 20 is `15` in the WiringX numbering system.
+
+```c
+#include
+#include
+
+#include
+
+int main() {
+ int DUO_GPIO = 15;
+
+ // Duo: milkv_duo
+ // Duo256M: milkv_duo256m
+ // DuoS: milkv_duos
+ if(wiringXSetup("milkv_duo", NULL) == -1) {
+ wiringXGC();
+ return -1;
+ }
+
+ if(wiringXValidGPIO(DUO_GPIO) != 0) {
+ printf("Invalid GPIO %d\n", DUO_GPIO);
+ }
+
+ pinMode(DUO_GPIO, PINMODE_OUTPUT);
+
+ while(1) {
+ printf("Duo GPIO (wiringX) %d: High\n", DUO_GPIO);
+ digitalWrite(DUO_GPIO, HIGH);
+ sleep(1);
+ printf("Duo GPIO (wiringX) %d: Low\n", DUO_GPIO);
+ digitalWrite(DUO_GPIO, LOW);
+ sleep(1);
+ }
+
+ return 0;
+}
+```
+After compiling and running it on Duo, you can use a multimeter or an oscilloscope to measure the state of pin 20 and verify if it matches the expected behavior.
+
+You can also use the onboard LED pin to verify the behavior. By observing the on/off state of the LED, you can intuitively determine if the program is executing correctly. The WiringX pin number for the LED is `25`. Simply modify the code mentioned above by replacing pin `15` with pin `25`. However, please note that the default firmware has a script to control LED blinking on startup, which needs to be disabled. You can refer to the example explanation for [blink](#blink) below for instructions on how to disable it.
+
+### I2C Usage Example
+
+Here is an example of I2C communication:
+
+```c
+#include
+#include
+#include
+
+#include
+
+#define I2C_DEV "/dev/i2c-1"
+
+#define I2C_ADDR 0x04
+
+int main(void)
+{
+ int fd_i2c;
+ int data = 0;
+
+ // Duo: milkv_duo
+ // Duo256M: milkv_duo256m
+ // DuoS: milkv_duos
+ if(wiringXSetup("milkv_duo", NULL) == -1) {
+ wiringXGC();
+ return -1;
+ }
+
+ if ((fd_i2c = wiringXI2CSetup(I2C_DEV, I2C_ADDR)) <0) {
+ printf("I2C Setup failed: %d\n", fd_i2c);
+ wiringXGC();
+ return -1;
+ }
+
+ // TODO
+}
+```
+
+### SPI Usage Example
+
+Here is an example of SPI communication:
+
+```c
+#include
+#include
+#include
+
+#include
+
+int main(void)
+{
+ int fd_spi;
+
+ // Duo: milkv_duo
+ // Duo256M: milkv_duo256m
+ // DuoS: milkv_duos
+ if(wiringXSetup("milkv_duo", NULL) == -1) {
+ wiringXGC();
+ return -1;
+ }
+
+ if ((fd_spi = wiringXSPISetup(0, 500000)) <0) {
+ printf("SPI Setup failed: %d\n", fd_spi);
+ wiringXGC();
+ return -1;
+ }
+
+ // TODO
+}
+```
+
+### UART Usage Example
+
+Here is an example of UART communication using UART4 on pins 4/5:
+
+```c
+#include
+#include
+
+#include
+
+int main() {
+ struct wiringXSerial_t wiringXSerial = {115200, 8, 'n', 1, 'n'};
+ char buf[1024];
+ int str_len = 0;
+ int i;
+ int fd;
+
+ // Duo: milkv_duo
+ // Duo256M: milkv_duo256m
+ // DuoS: milkv_duos
+ if(wiringXSetup("milkv_duo", NULL) == -1) {
+ wiringXGC();
+ return -1;
+ }
+
+ if ((fd = wiringXSerialOpen("/dev/ttyS4", wiringXSerial)) < 0) {
+ printf("Open serial device failed: %d\n", fd);
+ wiringXGC();
+ return -1;
+ }
+
+ wiringXSerialPuts(fd, "Duo Serial Test\n");
+
+ while(1)
+ {
+ str_len = wiringXSerialDataAvail(fd);
+ if (str_len > 0) {
+ i = 0;
+ while (str_len--)
+ {
+ buf[i++] = wiringXSerialGetChar(fd);
+ }
+ printf("Duo UART receive: %s\n", buf);
+ }
+ }
+
+ wiringXSerialClose(fd);
+
+ return 0;
+}
+```
+Testing Method:
+
+The RX of the USB to serial converter cable is connected to pin 4 (UART4_TX) of Duo, the TX of the serial cable is connected to pin 5 (UART4_RX) of Duo, and the GND of the serial cable is connected to the GND of Duo. On the computer, configure the COM port and parameters using a serial debugging tool.
+
+The compiled executable of the above program is named `uart_test`. After uploading it to Duo via SSH and running it, you should be able to see the string `Duo Serial Test` received in the serial tool on your computer. If you send the string `Hello World` from the serial tool, you will also see the corresponding string received on the Duo's terminal. This confirms that the serial communication is functioning correctly.
+
+![duo](/docs/duo/duo-wiringx-uart-test.png)
+
+
+## 2. Development Environment Setup
+
+### Build environment on Ubuntu20.04
+
+You can also use Ubuntu installed in a virtual machine, Ubuntu installed via WSL on Windows, or Ubuntu-based systems using Docker.
+
+- Install the tools that compile dependencies
+ ```
+ sudo apt-get install wget git make
+ ```
+- Get example source code
+ ```
+ git clone https://github.com/milkv-duo/duo-examples.git
+ ```
+
+- Prepare compilation environment
+ ```
+ cd duo-examples
+ source envsetup.sh
+ ```
+ The first time you source it, the required SDK package will be automatically downloaded, which is approximately 180MB in size. Once downloaded, it will be automatically extracted to the `duo-examples` directory with the name `duo-sdk`. When source it next time, if the directory already exists, it will not be downloaded again.
+
+- Compile testing
+
+ Take hello-world as an example, enter the hello-world directory and execute make:
+ ```
+ cd hello-world
+ make
+ ```
+ After the compilation is successful, send the generated `helloworld` executable program to the Duo device through the network port or the RNDIS network. For example, the RNDIS method supported by the [default firmware](https://github.com/milkv-duo/duo-buildroot-sdk/releases), Duo’s IP is 192.168.42.1, the user name is `root`, and the password is `milkv`.
+ ```
+ scp helloworld root@192.168.42.1:/root/
+ ```
+ After sending successfully, run `./helloworld` in the terminal logged in via ssh or serial port, and it will print `Hello, World!`
+ ```
+ [root@milkv]~# ./helloworld
+ Hello, World!
+ ```
+ **At this point, our compilation and development environment is ready for use.**
+
+### How to create your own project
+
+You can simply copy existing examples and make necessary modifications. For instance, if you need to manipulate a GPIO, you can refer to the `blink` example. LED blinking is achieved by controlling the GPIO's voltage level. The current SDK utilizes the WiringX library for GPIO operations, which has been adapted specifically for Duo. You can find the platform initialization and GPIO control methods in the `blink.c` code for reference.
+
+- Create your own project directory called `my-project`.
+- Copy the `blink.c` and `Makefile` files from the `blink` example to the `my-project` directory.
+- Rename `blink.c` to your desired name, such as `gpio_test.c`.
+- Modify the `Makefile` by changing `TARGET=blink` to `TARGET=gpio_test`.
+- Modify `gpio_test.c` to implement your own code logic.
+- Execute the `make` command to compile.
+- Send the generated `gpio_test` executable program to Duo for execution.
+
+Note:
+
+- Creating a new project directory is not mandatory to be placed within the `duo-examples` directory. You can choose any location based on your preference. Before executing the `make` compilation command, it is sufficient to load the compilation environment from the `duo-examples` directory (source /PATH/TO/duo-examples/envsetup.sh).
+- Within the terminal where the compilation environment (envsetup.sh) is loaded, avoid compiling Makefile projects for other platforms such as ARM or X86. If you need to compile projects for other platforms, open a new terminal.
+
+## 3. Explanation of each example
+
+### hello-world
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/hello-world](https://github.com/milkv-duo/duo-examples/tree/main/hello-world)
+
+A simple example that doesn't interact with Duo peripherals, only prints the output "Hello, World!" to verify the development environment.
+
+### blink
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/blink](https://github.com/milkv-duo/duo-examples/tree/main/blink)
+
+This example demonstrates how to control an LED connected to a GPIO pin. It uses the WiringX library to toggle the GPIO pin's voltage level, resulting in the LED blinking.
+
+The `blink.c` code includes platform initialization and GPIO manipulation methods from the WiringX library.
+
+To test the `blink` example, which involves LED blinking, you need to disable the script responsible for the automatic LED blinking on the default firmware of Duo. In the Duo terminal, execute the following command:
+```
+mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync
+```
+This command renames the LED blinking script. After restarting Duo, the LED will no longer blink.
+
+Once you have finished testing the `blink` program implemented in C, if you want to restore the LED blinking script, you can rename it back using the following command and then restart Duo:
+```
+mv /mnt/system/blink.sh_backup /mnt/system/blink.sh && sync
+```
+
+### ADC
+
+#### adcRead reads the voltage value
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/adc](https://github.com/milkv-duo/duo-examples/tree/main/adc)
+
+Reading the measured value of the ADC is divided into two versions: shell script and C language. After starting, select the ADC to be read according to the output prompts. After selection, the voltage value measured by the ADC will be printed in a loop.
+
+### I2C
+
+I2C source code directory: [https://github.com/milkv-duo/duo-examples/tree/main/i2c](https://github.com/milkv-duo/duo-examples/tree/main/i2c)
+
+#### BMP280 Temperature Barometer Sensor
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/i2c/bmp280_i2c](https://github.com/milkv-duo/duo-examples/tree/main/i2c/bmp280_i2c)
+
+This example code shows how to interface the Milk-V Duo with the popular BMP280 temperature and air pressure sensor manufactured by Bosch.
+
+#### VL53l0X Time of Flight distance sensor
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/i2c/vl53l0x_i2c](https://github.com/milkv-duo/duo-examples/tree/main/i2c/vl53l0x_i2c)
+
+Use the TOF distance sensor VL53L0X module via the I2C interface to read the measured distance.
+
+#### SSD1306 OLEDs
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/i2c/ssd1306_i2c](https://github.com/milkv-duo/duo-examples/tree/main/i2c/ssd1306_i2c)
+
+Display strings on SSD1306 OLED display via I2C interface.
+
+#### ADXL345 Three-axis acceleration sensor
+
+Source code: [https://github.com/milkv-duo/duo-examples/blob/main/i2c/adxl345_i2c](https://github.com/milkv-duo/duo-examples/blob/main/i2c/adxl345_i2c)
+
+Read the acceleration data obtained by ADXL345 through the I2C interface, read it every 1 second, and print the result on the screen.
+
+#### LCM1602 Display Moudle
+
+Source code: [https://github.com/milkv-duo/duo-examples/blob/main/i2c/lcm1602_i2c](https://github.com/milkv-duo/duo-examples/blob/main/i2c/lcm1602_i2c)
+
+Display strings on the 1602 LCD screen via the I2C interface.
+
+#### LCM2004 Display Moudle
+
+Source code: [https://github.com/milkv-duo/duo-examples/blob/main/i2c/lcm2004_i2c](https://github.com/milkv-duo/duo-examples/blob/main/i2c/lcm2004_i2c)
+
+Display string on 2004 LCD screen via I2C interface.
+
+#### TCS34725 Color sensor
+
+Source code: [https://github.com/milkv-duo/duo-examples/blob/main/i2c/tcs34725_i2c](https://github.com/milkv-duo/duo-examples/blob/main/i2c/tcs34725_i2c)
+
+Read the TCS34725 color sensor through the I2C interface and output the obtained data.
+
+### SPI
+
+SPI source code directory: [https://github.com/milkv-duo/duo-examples/tree/main/spi](https://github.com/milkv-duo/duo-examples/tree/main/spi)
+
+#### MAX6675 Temperature Sensor
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/spi/max6675_spi](https://github.com/milkv-duo/duo-examples/tree/main/spi/max6675_spi)
+
+Connect the K-type thermocouple measurement module MAX6675 through the SPI interface to measure the current temperature on the sensor.
+
+#### RC522 Radio Frequency Identification Module
+
+Source code: [https://github.com/milkv-duo/duo-examples/tree/main/spi/rc522_spi](https://github.com/milkv-duo/duo-examples/tree/main/spi/rc522_spi)
+
+Connect the RC522 RFID read-write module via the SPI interface to read the card ID and type and output them to the screen.
+
+## 4. Compile wiringX
+
+Duo firmware already contains the compiled wiringX library (/usr/lib/libwiringx.so) and can be used directly. If you need to compile the source code of wiringX to generate the library, you can compile it as follows.
+
+We compile it on an Ubuntu host or other Linux distribution.
+
+*Note: Part of Duo's wiringX code has not yet been integrated into the upstream wiringX repo. In actual use, please give priority to using the wiringX library in Duo firmware.
+
+### Download wiringX source code
+
+```
+git clone https://github.com/wiringX/wiringX.git
+```
+
+### Modify CMakeLists.txt
+
+Enter the code directory:
+```
+cd wiringX
+```
+
+The wiringX project is compiled using cmake. You need to modify CMakeLists.txt through `vi` or other editors to add the cross-compilation toolchain and compilation parameters:
+
+```diff {9-12}
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8909393..6918181 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -17,6 +17,11 @@ set(CMAKE_EXE_LINKER_FLAGS " -Wl,-rpath=/usr/local/lib/,-rpath=/usr/lib/,-rpath=
+ set(CMAKE_SHARED_LINKER_FLAGS " -Wl,-rpath=/usr/local/lib/,-rpath=/usr/lib/,-rpath=/lib/")
+ set(CMAKE_MODULE_LINKER_FLAGS " -Wl,-rpath=/usr/local/lib/,-rpath=/usr/lib/,-rpath=/lib/")
+
++set(CMAKE_C_COMPILER "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-gcc")
++set(CMAKE_CXX_COMPILER "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-g++")
++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d")
++set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
++
+ # Start uninstaller generator
+ function(WRITE_UNINSTALL_TARGET_SCRIPT)
+ # Create uninstall target template file, if it doesn't exist...
+```
+
+There are two variables that need to be noted and configured according to your own file path:
+- **CMAKE_C_COMPILER**: The path to gcc in the cross-compilation toolchain
+- **CMAKE_CXX_COMPILER**: path to g++ in the cross-compilation toolchain
+
+Download link for cross-compilation toolchain: [host-tools.tar.gz](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz). You can download and unzip it through the wget command:
+```bash
+wget https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz
+tar -xf host-tools.tar.gz
+```
+
+If you have ever compiled [duo-buildroot-sdk](https://github.com/milkv-duo/duo-buildroot-sdk), the `host-tools` directory in its root directory is the directory of the cross toolchain. There is no need to re-download, you can directly modify the `CMAKE_CURRENT_SOURCE_DIR` field to specify the directory. Or create a soft link pointing to the directory.
+
+### Modify code
+
+Since the time-related definitions in the cross toolchain are slightly different from those in wiringX, add the following two lines of modification:
+
+```diff {9,10}
+diff --git a/src/wiringx.c b/src/wiringx.c
+index 034674a..4171a75 100644
+--- a/src/wiringx.c
++++ b/src/wiringx.c
+@@ -113,6 +113,9 @@ static struct spi_t spi[2] = {
+ } while(0)
+ #endif
+
++typedef time_t __time_t;
++typedef suseconds_t __suseconds_t;
++
+ /* Both the delayMicroseconds and the delayMicrosecondsHard
+ are taken from wiringPi */
+ static void delayMicrosecondsHard(unsigned int howLong) {
+```
+
+### Compile
+
+Compiling in cmake will create some intermediate directories and files, so we create a new build directory and enter this directory to complete the compilation:
+
+```bash
+mkdir build
+cd build
+cmake ..
+make
+```
+
+After compilation is completed, the `libwiringx.so` generated in the current `build` directory is the wiringX library we need.
+
+### Points to Consider
+
+If you encounter compilation errors, you can try to change the version of `cmake`. For example, you can manually install the latest `3.27.6` version:
+
+```bash
+wget https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.sh
+chmod +x cmake-3.27.6-linux-x86_64.sh
+sudo sh cmake-3.27.6-linux-x86_64.sh --skip-license --prefix=/usr/local/
+```
+The manually installed `cmake` is in `/usr/local/bin`. At this time, use the `cmake --version` command to check its version number, which should be:
+
+```
+cmake version 3.27.6
+```
+
+## 5. wiringX APIs
+
+### General
+
+
+
+int wiringXSetup(char *name, ...)
+
+ To initialize the WiringX library for configuring and managing GPIO pins:
+ - Duo
+ ```
+ wiringXSetup("milkv_duo", NULL)
+ ```
+ - Duo256M
+ ```
+ wiringXSetup("milkv_duo256m", NULL)
+ ```
+ - DuoS
+ ```
+ wiringXSetup("milkv_duos", NULL)
+ ```
+
+
+
+
+
+
+int wiringXValidGPIO(int pin)
+
+ To check if a GPIO pin is available.
+
+
+
+
+
+
+void delayMicroseconds(unsigned int ms)
+
+ Delay for how many milliseconds.
+
+
+
+
+
+
+int wiringXGC(void)
+
+ To release resources.
+
+
+
+
+
+
+char *wiringXPlatform(void)
+
+ Return platform information.
+
+
+
+
+### GPIO
+
+
+
+int pinMode(int pin, pinmode_t mode)
+
+ Set the working mode for the specified pin, where pin is the pin number, and mode can be:
+ - PINMODE_INPUT input mode
+ - PINMODE_OUTPUT output mode
+ - PINMODE_INTERRUPT interrupt mode
+
+
+
+
+
+
+int digitalRead(int pin)
+
+ Read the input value of the specified pin, and the return value is HIGH or LOW.
+
+
+
+
+
+
+int digitalWrite(int pin, enum digital_value_t value)
+
+ Set the output value for the specified pin, where value can be:
+ - HIGH high level
+ - LOW low level
+
+
+
+
+
+
+int waitForInterrupt(int pin, int ms)
+
+ Wait for an interrupt to occur on pin, with a timeout of ms milliseconds.
+ *This function has been deprecated. It is recommended to use wiringXISR*
+
+
+
+
+
+
+int wiringXISR(int pin, enum isr_mode_t mode)
+
+Configure pin as an interrupt mode, with several modes for mode:
+- ISR_MODE_RISING
+- ISR_MODE_FALLING
+- ISR_MODE_BOTH
+
+
+
+
+### I2C
+
+
+
+int wiringXI2CSetup(const char *dev, int addr)
+
+ Configure the I2C node and I2C address.
+
+
+
+
+
+
+int wiringXI2CRead(int fd)
+
+ Read 1 byte of data.
+
+
+
+
+
+
+int wiringXI2CReadReg8(int fd, int reg)
+
+ Read 1 byte of data from the reg register.
+
+
+
+
+
+
+int wiringXI2CReadReg16(int fd, int reg)
+
+ Read 2 bytes of data from the reg register.
+
+
+
+
+
+
+int wiringXI2CWrite(int fd, int reg)
+
+ Write the address of the register reg.
+
+
+
+
+
+
+int wiringXI2CWriteReg8(int fd, int reg, int value8)
+
+ Write the 8-bit data value8 to the register reg.
+
+
+
+
+
+
+int wiringXI2CWriteReg16(int fd, int reg, int value16)
+
+ Write the 16-bit data value16 to the register reg.
+
+
+
+### SPI
+
+
+
+int wiringXSPISetup(int channel, int speed)
+
+ Configure the channel (0 on Duo) and speed (default to 500000) of the SPI device.
+
+
+
+
+
+int wiringXSPIDataRW(int channel, unsigned char *data, int len)
+
+ The SPI bus writes data on the rising edge and reads data on the falling edge. Therefore, this function performs both read and write operations simultaneously, resulting in the read data overwriting the written data. Please be cautious when using it.
+
+
+
+
+
+int wiringXSPIGetFd(int channel)
+
+ Get the file descriptor of the SPI device, with the channel defaulting to 0 on Duo.
+
+
+
+### UART
+
+
+
+int wiringXSerialOpen(const char *dev, struct wiringXSerial_t serial)
+
+ Open the serial port device, where `dev` is the device descriptor and `serial` is a structure that needs to be filled with serial port-related parameters. For more details, please refer to the [UART Usage Example](#UART-Usage-Example).
+
+ ```c
+ typedef struct wiringXSerial_t {
+ unsigned int baud; // baudrate
+ unsigned int databits; // 7/8
+ unsigned int parity; // o/e/n
+ unsigned int stopbits; // 1/2
+ unsigned int flowcontrol; // x/n
+ } wiringXSerial_t;
+ ```
+
+
+
+
+
+void wiringXSerialClose(int fd)
+
+ Close the serial port.
+
+
+
+
+
+void wiringXSerialFlush(int fd)
+
+ Flush the buffer.
+
+
+
+
+
+void wiringXSerialPutChar(int fd, unsigned char c)
+
+ Output a character.
+
+
+
+
+
+void wiringXSerialPuts(int fd, const char *s)
+
+ Output a string.
+
+
+
+
+
+void wiringXSerialPrintf(int fd, const char *message, ...)
+
+ Format output.
+
+
+
+
+
+int wiringXSerialDataAvail(int fd)
+
+ Return the number of data received in the buffer.
+
+
+
+
+
+int wiringXSerialGetChar(int fd)
+
+ Read a character from the serial port device.
+
+
+
+### PWM
+
+The current version of wiringX only supports Duo's PWM. Duo256M and DuoS will add PWM support later.
+
+- Duo PWM Pin Number
+
+
+
+| PWM | PIN NAME | Pin# | Pin# | PIN NAME |
+|:---:|:---------|:-------------------------------:|:--------------------------------:|----------|
+| | GP0 |
1
|
40
| VBUS |
+| | GP1 |
2
|
39
| VSYS |
+| | GND |
3
|
38
| GND |
+| 10 | GP2 |
4
|
37
| 3V3_EN |
+| 11 | GP3 |
5
|
36
| 3V3(OUT) |
+| 5 | GP4 |
6
|
35
| |
+| 6 | GP5 |
7
|
34
| |
+| | GND |
8
|
33
| GND |
+| 9 | GP6 |
9
|
32
| GP27 |
+| 8 | GP7 |
10
|
31
| GP26 |
+| 7 | GP8 |
11
|
30
| RUN |
+| 4 | GP9 |
12
|
29
| GP22 |
+| | GND |
13
|
28
| GND |
+| | GP10 |
14
|
27
| GP21 |
+| | GP11 |
15
|
26
| GP20 |
+| 4 | GP12 |
16
|
25
| GP19 |
+| 5 | GP13 |
17
|
24
| GP18 |
+| | GND |
18
|
23
| GND |
+| | GP14 |
19
|
22
| GP17 |
+| | GP15 |
20
|
21
| GP16 |
+
+
+
+
+
+wiringXPWMSetPeriod(int pin, long period)
+
+ Set the period of the PWM pin, pin is the PWM pin number, period is in nanoseconds.
+
+
+
+
+
+
+int wiringXPWMSetDuty(int pin, long duty_cycle)
+
+ Set the high level time of the PWM pin in one cycle, duty_cycle is in nanoseconds.
+
+
+
+
+
+
+int wiringXPWMSetPolarity(int pin, int polarity)
+
+ Set the PWM pin polarity, the polarity is 0 or 1:
+ - 0 normal
+ - 1 inversed
+
+
+
+
+
+
+int wiringXPWMEnable(int pin, int enable)
+
+ Enable or disable PWM pin output, enable is 0 or 1:
+ - 0: disable
+ - 1: enable
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/_category_.json
new file mode 100644
index 00000000..3c9ece4f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "📷 Camera",
+ "position": 200,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo/camera",
+ "description": "Camera for Milk-V Duo"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/gc2083.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/gc2083.md
new file mode 100644
index 00000000..3f54717b
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/gc2083.md
@@ -0,0 +1,149 @@
+---
+sidebar_label: 'CAM-GC2083 '
+sidebar_position: 10
+---
+# CAM-GC2083
+## Introduction
+CAM-GC2083 is equipped with GLAXYCORE's GC2083 CMOS Image Sensor, providing up to 2MP resolution. It is compatible with the 16P MIPI CSI interface on the Milk-V Duo board.
+
+## Specification
+### Sensor Fectures
+- Optical size:
+ 1/3 inch
+
+- Pixel size:
+2.7μm×2.7μm FSI
+
+- Active image size:
+1920× 1080
+
+- Color Filter:
+RGB Bayer
+
+- Output formats:
+Raw Bayer 10bit/8bit
+
+- Power supply requirement:
+AVDD28:2.7~2.9V(Typ.2.8V)
+DVDD:Generated by the intemalregulator (Typ.1.2V)
+IOVDD: 1.7~1.9V(Typ. 1.8V)
+
+- Power Consumption:
+128mW@Full Size @30fps
+
+- Frame rate:
+30fps@Full Size
+
+- PLL support
+
+- Frame sync support (master/slave)
+
+- Windowing support
+
+- Mirror and Flip support
+
+- Analog Gain:
+64X(Max)
+
+- Sensitivity:
+3.24V/lux.s
+
+- Dynamic range:
+74dB
+
+- MAX SNR:
+37dB
+
+### FPC Interface Definition
+
+| **Pin NO.** | **Definition** | **Pin NO.** | **Definition** |
+|:-----------:|:--------------:|:-----------:|:--------------:|
+| 1 | GND | 9 | MIPI0_CKP |
+| 2 | MIPI0_DN0 | 10 | GND |
+| 3 | MIPI0_DP0 | 11 | SENSOR_RSTN |
+| 4 | GND | 12 | SENSOR_CLK |
+| 5 | MIPI0_DN1 | 13 | I2C_SCL |
+| 6 | MIPI0_DP1 | 14 | I2C_SDA |
+| 7 | GND | 15 | / |
+| 8 | MIPI0_CKN | 16 | 3V3 |
+
+## Hardware connection
+
+FFC/FPC A-Type(SAME Side) Ribbon Flexible Flat Cable
+
+![duo-camera](/docs/duo/duo-camera-connection_01.jpg)
+
+The direction of the metal contact surface of the Ribbon Cable
+
+![duo-camera](/docs/duo/duo-camera-connection_02.jpg)
+
+## Software testing
+
+This test is only used to verify if the camera is functioning properly. It runs a test program on Duo to stream video, and then using VLC media player on a PC to receive the video stream.
+
+First, make sure you can SSH into the Duo device using USB networking (RNDIS). The default firmware SSH username and password are root/milkv.
+
+The latest firmware has integrated test program, please use [V1.1.0](https://github.com/milkv-duo/duo-buildroot-sdk/releases/tag/Duo-V1.1.0) or [Latest Firmware](https://github.com/milkv-duo/duo-buildroot-sdk/releases).
+
+The Test program added face detection demo while pushing the stream.
+
+Log in to the Duo terminal:
+```bash
+ssh root@192.168.42.1
+```
+
+Execute the test program to start streaming:
+```bash
+camera-test.sh
+```
+
+In normal circumstances, the terminal will display the following log at the end:
+``` {8}
+Bind VI with VPSS Grp(0), Chn(0)
+Attach VBPool(0) to VPSS Grp(0) Chn(0)
+Attach VBPool(1) to VPSS Grp(0) Chn(1)
+Initialize VENC
+venc codec: h264
+venc frame size: 1280x720
+Initialize RTSP
+rtsp://127.0.1.1/h264
+prio:0
+anchor:-8,-8,8,8
+anchor:-16,-16,16,16
+bbox:bbox_8_Conv_dequant
+landmark:kps_8_Conv_dequant
+score:score_8_Sigmoid_dequant
+anchor:-32,-32,32,32
+anchor:-64,-64,64,64
+bbox:bbox_16_Conv_dequant
+landmark:kps_16_Conv_dequant
+score:score_16_Sigmoid_dequant
+anchor:-128,-128,128,128
+anchor:-256,-256,256,256
+bbox:bbox_32_Conv_dequant
+landmark:kps_32_Conv_dequant
+score:score_32_Sigmoid_dequant
+Enter TDL thread
+Enter encoder thread
+0 R:1165 B:3087 CT:2688
+1 R:1464 B:2327 CT:3937
+2 R:1974 B:1613 CT:7225
+Golden 1464 1024 2327
+```
+
+Note the link starting with 'rtsp:', replace the IP with the IP address of Duo, and that will be the streaming address to use in VLC media player.
+
+On your PC, open VLC media player. Go to the 'Media' menu and select 'Open Network Stream' In the 'Network' tab, enter the following URL in the 'Please enter a network URL' field.
+
+```
+rtsp://192.168.42.1/h264
+```
+
+Click the `Show more options` in the lower left corner, and you can set the `Caching` option to adjust the delay. The default is 1000 milliseconds, which is 1 second. When the network environment is good, such as in a LAN, you can turn it down to reduce latency. You can set it to 100 to 300. If the network environment is poor or the screen freezes, you can try to increase it.
+
+Click 'Play' and you will be able to see the streaming video from the camera.
+
+![duo-camera](/docs/duo/duo-camera-vlc-stream.jpg)
+
+## Downloads
+- [Hardware schematics](https://github.com/milkv-duo/Accessories/blob/master/CAM-GC2083/Hardware_schematics/DUO_CAM_GC2083.pdf)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/tuning.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/tuning.md
new file mode 100644
index 00000000..2338c7c2
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/camera/tuning.md
@@ -0,0 +1,16 @@
+---
+sidebar_label: 'Tuning Guide'
+sidebar_position: 50
+---
+
+## Introduction
+
+ISP Development Reference: [html](https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/en/01.software/ISP/ISP_Development_Reference/build/html/index.html) | [pdf](https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/en/01.software/ISP/ISP_Development_Reference/build/ISPDevelopmentReference_en.pdf)
+
+ISP Tuning Guide: [html](https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/en/01.software/ISP/ISP_Tuning_Guide/build/html/index.html) | [pdf](https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/en/01.software/ISP/ISP_Tuning_Guide/build/ISPTuningGuide_en.pdf)
+
+PQ Tools User Guide: [html](https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/en/01.software/ISP/PQ_Tools_User_Guide/build/html/3_Interface_and_Function_Description.html) | [pdf](https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/en/01.software/ISP/PQ_Tools_User_Guide/build/PQToolsUserGuide_en.pdf)
+
+## Downloads
+- [PQ Tools](https://github.com/milkv-duo/accessories/blob/master/CAM-GC2083/Software/CviPQtool_20230306.zip?raw=true)
+- [isp_tool_daemon.tar.gz](https://github.com/milkv-duo/accessories/blob/master/CAM-GC2083/Software/isp_tool_daemon.tar.gz?raw=true)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/8051core.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/8051core.md
new file mode 100644
index 00000000..a9c82997
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/8051core.md
@@ -0,0 +1,314 @@
+---
+sidebar_label: '8051 core'
+sidebar_position: 55
+---
+
+# 8051 Core
+
+## Introduction
+
+The CPU used by Duo contains an 8051 core. The 8051 subsystem is located in a module that is independently powered by the RTC. The subsystem is configured with an 8051, an I2C/UART/SPI NOR/SD controller, a Timer/WDT, interrupt management, and a Mailbox IP. The system software can use the 8051 to manage wake-up conditions and wake up the system while it is in sleep mode, and communicate with external devices through peripheral controllers.
+
+## Quick Start
+
+### 8051 core compilation guide
+
+Source Code: [github](https://github.com/milkv-duo/duo-8051.git).
+
+run:
+```bash
+git clone https://github.com/milkv-duo/duo-8051.git
+cd duo-8051/sdcc/mars/project/base_project
+make clean && make
+```
+After successful compilation, the compiled firmware `mars_mcu_fw.bin` can be found in `sdcc/mars/project/base_project/output`.
+
+
+### How to load firmware
+
+First download the firmware and tools and unzip the zip package:[firmware.zip](https://github.com/milkv-duo/duo-8051/releases/download/Duo-8051-V1.0/firmware.zip).
+
+Ⅰ. Load firmware in 8051-SRAM:
+
+1. Copy `8051_up`, `mars_mcu_fw.bin`, and `blink.sh` into `/mnt/data`, and grant execution and read permissions.
+
+2. Execute `8051_up` to automatically update the firmware and start the 8051 core.
+
+3. Execute `blink.sh`. This script will send data to the 8051 core and cause the blue LED to flash (please confirm that /mnt/system/blink.sh has been removed before executing this script).
+
+:::tip
+The 8051 kernel firmware cannot exceed 8KB when running this method. Exceeding the limit may cause it to not run.
+:::
+
+Ⅱ.Load firmware in DDR memory:
+ 1. Change the memory allocation in the SDK and modify `build/boards/[chip model]/[board config]/memmap.py` .
+
+ Add the following content in MemoryMap:
+```python
+# ==============
+# 8051
+# ==============
+CHIP8051_SIZE = 512 * SIZE_1K
+CHIP8051_ADDR = DRAM_BASE + DRAM_SIZE - CHIP8051_SIZE
+```
+
+ Modify the following content:
+```python
+# ==============
+# C906L FreeRTOS
+# ==============
+FREERTOS_SIZE = 768 * SIZE_1K
+# FreeRTOS is after 8051
+FREERTOS_ADDR = CHIP8051_ADDR - FREERTOS_SIZE
+FSBL_C906L_START_ADDR = FREERTOS_ADDR
+```
+
+
+
+2. Recompile the firmware and burn it to the Duo board.
+
+3. Copy `8051_up`, `mars_mcu_fw.bin`, `blink.sh`, and `8051_boot_cfg.ini` into `/mnt/data`, and grant execution and read permissions.
+
+4. Execute `8051_up` to automatically update the firmware and start the 8051 core.
+
+5. Execute `blink.sh`. This script will send information to the 8051 core and cause the blue LED to flash (please confirm that /mnt/system/blink.sh has been removed before executing this script).
+
+:::tip
+If you want to customize the DDR memory size of 8051 to store firmware, please modify:
+```python
+CHIP8051_SIZE = 512 * SIZE_1K
+```
+in which 512 is the custom size, and modify the address in `8051_boot_cfg.ini` to be the custom address.
+
+The Duo address calculation formula is "2147483648+ 64*1048576-[custom size]*1024".
+
+The Duo-256M address calculation formula is "2147483648+256*1048576-[custom size]*1024".
+
+(note that when filling the address to config file, it must be converted into a hexadecimal address 0xXXXXXXX.)
+:::
+
+## 8051 SDCC
+
+### Introduction
+`SDCC` is a cross-compiler whose target CPU is 8051. It is used in Duo to compile 8051 core related code.
+
+### 8051 on-chip resources
+
+#### Peripheral resources
+
+##### 8051 comes with peripherals
+
+1. Three 16bit Timers.
+
+2. One uart, multiplexed `PWR_UART_RX`/`PWR_UART_TX`.
+
+##### rtc domain peripherals
+
+8051 is generally used in low-power scenarios. The rtc domain will not lose power during poweroff/suspend, which is a no die domain. Therefore, the peripherals used by 8051 in most cases are on the rtc domain. The peripheral table of rtc domain is as follows:
+
+
+##### AP on-chip peripherals
+
+8051 can access `0x0` ~ `0xFFFFFFFF` when the AP is powered on. In theory, all peripherals on the AP side can be accessed. However, whether the interrupt signal of the corresponding peripheral device can be transmitted to 8051, you need to check the aptortc interrupt table.
+
+#### interrupt controller
+
+##### Hardware structure
+
+The interrupt control of 8051 is divided into three parts:
+
+1. 8051 on-chip interrupt.
+
+2. Peripheral interrupt signal on rtc.
+
+3. The AP side interrupt.
+
+The interrupt numbers and supported interrupt types defined by 8051 are used as shown in the following table:
+
+
+The peripheral interrupt signal on the rtc can be packaged and connected to the 8051 through `external interrupt 0` and `external interrupt 1`, which can be understood as sharing the `int0_n` and `int1_n` interrupt lines. As shown in the figure below, `irq_ap2rtc[1:0]` handles interrupt events on the AP.
+
+
+The interrupt event on the AP side is ORed through `0x3000250` and `0x3000254`, and the interrupt on the AP side is packaged and transmitted to `irq_ap2rtc[0]`. The interrupt event on the AP side is packaged and transmitted to `irq_ap2rtc[1]` through `0x3000260` and `0x3000264`.
+
+:::tip
+Please refer to "reg_top_misc.xlsx" for AP side interrupt event enable and view status. For supported interrupt types and corresponding ap interrupt number, please refer to sheet "toptortc" in "cv180x_interrupt.xlsx".
+:::
+
+##### Interrupt the configuration process
+
+1. Configure interrupt events and enable corresponding interrupts.
+
+2. `0x3000248 = 0x01` enables rtc2ap bus conversion.
+
+3. Check the bit corresponding to the interrupt number enable `rtcsys_ap2rtc_irq0_sigen0`/`rtcsys_ap2rtc_irq0_sigen1` or `rtcsys_ap2rtc_irq1_sigen0`/`rtcsys_ap2rtc_irq1_sigen1`.
+
+4. enable `irq_ap2rtc[0]` or enable `irq_ap2rtc[1]`.
+
+5. enable `int0_n` or enable `int1_n` .
+
+6. After the interrupt response enters the external interrupt processing function, check dw_ictl or reg `0x502507c` status to see if it is due to the `irq_ap2rtc[0]` or `irq_ap2rtc[1]` event response. If so, check `rtcsys_ap2rtc_irq0_status0`/`crtcsys_ap2rtc_irq0_status1` or `rtcsys_ap2rtc_irq1_status0`/rtc `sys_ap2rtc_irq1_status1` View the responding AP interrupt event which one.
+
+Interrupt control example:
+```C
+#if TEST_APTORTC_ICTL
+
+static int __xdata aptortc_count = 0;
+int test_aptortc_gpioa_isr(char irqn, int *priv)
+{
+ write_robot(0x0302004c, 0x8000);
+ printf("gpio0 interrupt\n");
+ aptortc_count++;
+}
+
+void test_aptortc_irq()
+{
+ printf("test aptortc irq\n");
+ write_robot(0x03020004, 0x100c0020); //Set gpioA gpio15 as output
+ write_robot(0x03001908, 0x44); //Switch pinmux to pull-up
+ write_robot(0x03020030, 0xa000); //Enable interrupts
+ write_robot(0x03020038, 0x8000); //Set up edge triggering
+
+ ap2rtc_irq_init();
+ ap2rtc_request_irq(17, test_aptortc_gpioa_isr, NULL);
+
+ ap2rtc_irq_unmask(17);
+ dw_ictl_unmask(IRQ_AP2RTC0_INTR);
+ irq_enable();
+
+ printf("REG_51_INT1_SRC_MASK: 0x%081x\n", read_robot(REG_51_INT1_SRC_MASK));
+ EX0 = 1;
+ EX1 = 1;
+ EA = 1;
+ while(aptortc_count == 0)
+ printf("gpioA irq 0x3020040 = %x, aptortc_irq status = %x\n",read_robot(0x3020040),read_robot(0x3000258));
+
+ printf("aptortc_count = %d\n",aptortc_count);
+ irq_disable();
+}
+#endif
+```
+
+### 8051 address mapping and startup method
+
+The 8051 core address space is divided into the following three parts:
+
+1. `Program memory`:Internal rom(64K)+External rom(64K~4M by code banking).
+
+2. `Data memory`:Internal ram(256byte)+External ram(64K~4G).
+
+3. `Special register`(128byte).
+
+
+
+:::tip
+8051 itself does not come with externel rom and externel ram. What is expressed here is the bus addressability. In the system, externel rom and externel rom are mapped to the memory on the chip through `0x5025020` and `0x5025024` or `sfr (0xfd, 0xfc)`, such as AHB SRAM, TPU SRAM, DDR, SPINOR address space.
+:::
+
+#### 8051 module responsible for address mapping
+
+1. `u_mcu_8051_iram`.
+
+2. `u_mcu_8051_sfr_wp`(Responsible for the conversion of SFR to AHB bus).
+
+3. `u_mcu_8051_xdata_wp`(Responsible for mapping externel rom and externel ram).
+
+
+
+The conversion from SFR to AHB bus is mainly used to read and write registers. In the code, `robot_read` and `robot_write` are through this interface.
+
+The 8051 address line has a bit width of 16 bits and the data line has a bit width of 8 bits. The `XDATA` interface maps externel rom and externel ram to 32-bit address space such as AHB SRAM, TPU SRAM, DDR and SPINOR.
+
+#### Notes on address mapping and startup methods
+
+1. cv181x and cv180x need to configure `reg_51_rom_addr_def = 1` in `0x5025020`.
+
+2. 8051 irom can only be mapped to AHB SRAM by default. You can modify `reg_51irom_ioffset[4:0]` in `0x5025024` to configure the offset of the first address on AHB SRAM.The first address is `0x5200000 + reg_51irom_ioffset[4:0] * 2KB`. Only when `reg_51_mem_ea_n = 1` (the configured externel rom does not exist), the mcu will start from the irom. If the irom address is exceeded, it will go to the externel rom to fetch address.When `reg_51_mem_ea_n = 0`, it starts from externel rom and does not use irom.
+
+3. The first address of externel rom can be mapped to AHB SRAM, TPU SRAM, DDR and SPINOR address space. The `reg_51xdata_ioffset0[20:0]` of `0x5025020` can be configured to determine the mapping address. The first address of externel rom is `reg_51xdata_ioffset0[20:0] * 2KB`.
+
+4. The first address of Externel ram can be mapped to AHB SRAM, TPU SRAM, DDR, and can be configured with `reg_51xdata_doffset0[20:0]` or `SFR(0xfd, 0xfc)`.
+
+5. If `reg_51xdata_doffset0[20:0]` is configured, the first address of the external ram is `reg_51xdata_doffset0[20:0] * 2KB`. At this time, sfr `0xfc = 0`, `0xfd = 0` must be set, and the address of `reg_51xdata_doffset0[20:0]` and `SFR` must be configured at the same time. It is the superimposed effect of the two.
+
+6. When `reg_51xdata_doffset0[20:0] = 0`, configure `SFR{0xfd,0xfc}`, then the first address of externel ram is `SFR{0xfd,0xfc} * 64KB` .
+
+:::tip
+Since most 8051 are used in low-power consumption scenarios, most of the startup methods are that both program memory and data memory are mapped to AHB SRAM.
+:::
+
+#### Modify the division of external rom and external ram
+
+Modify the `MakeFile` in the SDCC code directory `sdcc/mars/project/base_project`:
+```makefile
+# ------------------------------------------------------
+# Memory Layout
+
+# PRG Size = 4K Bytes
+CODE_SIZE = --code-loc 0x0000 --code-size 0x1F00
+
+# INT-MEM Size = 256 Bytes
+#IRAM_SIZE = --idata-loc 0x0000 --iram-size 256
+
+# EXT-MEM Size = 32K Bytes
+XRAM_SIZE = --xram-loc 0x1900 --xram-size 0x400
+
+# ------------------------------------------------------
+# MCS51 Options
+```
+Modify `CODE_SIZE`, `XRAM_SIZE` to change the size of external rom and external ram.
+
+:::tip
+AHB SRAM register size is 8KB. When using AHB SRAM as external rom, be careful not to allocate more than 8KB memory.
+:::
+
+### SFR register
+
+The SFR (Special Function Register) is located at 80H~FFH. SFR registers are divided into two categories, one is the SFR register that comes with the 8051, and the other is the extended SFR register. The complete SFR register can be found at [d8051_db.pdf](https://github.com/milkv-duo/duo-8051/blob/main/doc/d8051_db.pdf) 。
+
+:::tip
+For more information on 8051 basic knowledge, please refer to the website [link](https://www.keil.com/support/man/docs/is51/) and datasheet [d8051_db.pdf](https://github.com/milkv-duo/duo-8051/blob/main/doc/d8051_db.pdf) 。
+:::
+
+#### Implementation of robot_write and robot_read
+
+The following figure shows the relevant SFR registers that implement `robot_write` and `robot_read` :
+
+
+`robot_write` :
+
+1. Set `reg_51robot_size` 、 `reg_51robot_adr` 、 `reg_51robot_wd` 、`reg_51robot_we = 1` 。
+
+2. `reg_51robot_fire` is set to 1 during writing, please poll this register until `reg_51robot_fire == 0`.
+
+`robot_read` :
+
+1. Set `reg_51robot_size` 、 `reg_51robot_adr` 、`reg_51robot_we = 0` 。
+
+2. `reg_51robot_fire` is set to 1 during reading, please poll this register until `reg_51robot_fire == 0`.
+
+3. Read data from `reg_51robot_rd`.
+
+### Firmware loading tool 8051_UP
+
+This tool is used to load the bin firmware into memory and start the 8051 core.
+
+Source Code: [github](https://github.com/milkv-duo/duo-8051/tree/main/tools/8051_up)。
+
+#### Compilation method
+
+run:
+```bash
+git clone https://github.com/milkv-duo/duo-examples.git
+git clone https://github.com/milkv-duo/duo-8051.git
+cp -r ./duo-8051/tools/8051_up ./duo-examples
+cd ./duo-examples/8051_up
+source ../envsetup.sh
+make
+```
+
+After successful compilation, the executable file `8051_up` will be generated in the `duo-examples/8051_up` directory.
+
+:::tip
+The compiled software can be found in [firmware.zip](https://github.com/milkv-duo/duo-8051/releases/download/Duo-8051-V1.0/firmware.zip) . For the compilation method, please refer to the Demo in [duo-examples](https://github.com/milkv-duo/duo-examples) .
+:::
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/_category_.json
new file mode 100644
index 00000000..22b2c714
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🚀 Getting Started",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo/getting-started",
+ "description": "Getting Started with Duo"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/arduino.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/arduino.md
new file mode 100644
index 00000000..b6a39674
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/arduino.md
@@ -0,0 +1,789 @@
+---
+sidebar_label: 'Arduino'
+sidebar_position: 51
+---
+
+# Introduction
+
+Arduino is a popular open-source hardware platform known for its simplicity, ease of use, and openness. It provides a rich collection of library functions and example code, making it accessible even for individuals without programming experience. Additionally, the Arduino community is highly active, allowing easy access to a wide range of project tutorials, documentation, and support.
+
+Milk-V Duo series now supports Arduino development. You can directly use the Arduino IDE and, after a simple configuration, start using it.
+
+The Duo series CPU adopts a big-little core design, where the Arduino firmware runs on the little core, while the big core is responsible for communication with the Arduino IDE. It receives the Arduino firmware and loads it onto the little core for execution. At the same time, the Linux system in the big core also operates normally.
+
+## 1. Development Environment Setup
+
+### Install Arduino IDE
+
+Arduino IDE supports three operating systems: Windows, Linux, and macOS. According to the system you are using, go to [Arduino official website](https://www.arduino.cc/en/software) to download the corresponding installation package for installation. The current latest version is 2.3.2, and it is recommended to use the latest version.
+
+### Add Duo to Arduino IDE
+
+Open Arduino IDE, select ``Preferences`` in the ``File`` menu, and add the Duo configuration file address in the ``Additional boards manager URLs`` in the ``Settings`` tab:
+
+```
+https://github.com/milkv-duo/duo-arduino/releases/download/V1.0.0/package_sg200x_index.json
+```
+
+
+
+Please download the latest json file address from [Releases](https://github.com/milkv-duo/duo-arduino/releases).
+
+If you have configured other development board addresses before, separate them with commas, or click the icon on the right side of the address bar to bring up the window, and follow the prompts to add them.
+
+After configuring, select ``Board`` in the ``Tools`` menu, open the ``Boards Manager``, search for *SG200X*, and click ``Install``.
+
+
+
+At this point, the Duo development environment in Arduino IDE has been installed. Now you can write and test the code.
+
+### Test blinking the onboard LED
+
+Currently, Duo's SD card system needs to burn firmware that supports Arduino. Please download the firmware with the prefix `arduino` from [Latest Release](https://github.com/milkv-duo/duo-buildroot-sdk/releases) firmware.
+
+Refer to [Boot the Duo](https://milkv.io/docs/duo/getting-started/boot) in the previous chapter to install the SD card system.
+
+Use a USB cable to connect Duo to your computer, and Duo will automatically power on.
+
+Duo's default firmware, the large-core Linux system, will control the on-board LED flashing. This is achieved through the boot script. Now we are going to use the little-core Arduino to light up the LED. We need to disable the LED flashing script in the large-core Linux. In Duo's Execute in terminal:
+```
+mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync
+```
+That is to say, rename the LED flashing script. After restarting Duo, the LED will no longer flash:
+```
+reboot
+```
+
+At this time, there will be an additional serial device in the "Port" of the "Device Manager" of the computer.
+
+
+
+On the main interface of Arduino IDE, click ``Select Board``, and then click ``Select other board and port...``
+
+
+
+Search for "duo", select ``Duo Dev Module`` for Duo, select ``Duo256 Dev Module`` for Duo256M, select the corresponding serial port in the port and click OK.
+
+
+
+Open the ``Examples`` > ``01.Basics`` > ``Blink`` test program in the ``File`` menu of the Arduino IDE. The function of this program is to blink the onboard LED of the Arduino device. In Duo It is also supported. You may need to install pyserial in order to upload, and then let’s just click the ``Upload`` button to test:
+
+
+
+At this time, you can see the LED on the Duo board blinking at intervals of 1 second.
+
+## 2. Duo Arduino pin resource
+
+### Duo
+
+
+
+| SPI | PWM | I2C | UART | GPIO | NAME | PIN | PIN | NAME | GPIO | ADC |
+|-----------|-------|----------|----------|:----:|-----:|:-------------------------------:|:--------------------------------:|----------|:----:|------|
+| | | I2C0_SCL | | 1 | GP0 |
1
|
40
| VBUS | | |
+| | | I2C0_SDA | | 2 | GP1 |
2
|
39
| VSYS | | |
+| | | | | | GND |
3
|
38
| GND | | |
+| | PWM10 | | | | GP2 |
4
|
37
| 3V3_EN | | |
+| | PWM11 | | | | GP3 |
5
|
36
| 3V3(OUT) | | |
+| | | | UART3_TX | | GP4 |
6
|
35
| | | |
+| | | | UART3_RX | | GP5 |
7
|
34
| | | |
+| | | | | | GND |
8
|
33
| GND | | |
+| SPI2_SCK | | | | | GP6 |
9
|
32
| GP27 | | |
+| SPI2_MOSI | | | | | GP7 |
10
|
31
| GP26 | | ADC1 |
+| SPI2_MISO | | I2C1_SDA | | | GP8 |
11
|
30
| RUN | | |
+| SPI2_CSn | | I2C1_SCL | | | GP9 |
12
|
29
| GP22 | | |
+| | | | | | GND |
13
|
28
| GND | | |
+| | | | | 14 | GP10 |
14
|
27
| GP21 | 27 | |
+| | | | | 15 | GP11 |
15
|
26
| GP20 | 26 | |
+| | | | | | GP12 |
16
|
25
| GP19 | 25 | |
+| | | | | | GP13 |
17
|
24
| GP18 | 24 | |
+| | | | | | GND |
18
|
23
| GND | | |
+| | | | | 19 | GP14 |
19
|
22
| GP17 | 22 | |
+| | | | | 20 | GP15 |
20
|
21
| GP16 | 21 | |
+| | | | | | | | | | | |
+| | | | | 0 | |
LED
| | | | |
+
+
+
+### Duo256M
+
+
+
+| SPI | PWM | I2C | UART | GPIO | NAME | PIN | PIN | NAME | GPIO | ADC |
+|-----------|------|----------|----------|:----:|-----:|:-------------------------------:|:--------------------------------:|----------|:----:|------|
+| | | | | 1 | GP0 |
1
|
40
| VBUS | | |
+| | | | | 2 | GP1 |
2
|
39
| VSYS | | |
+| | | | | | GND |
3
|
38
| GND | | |
+| | PWM7 | | | | GP2 |
4
|
37
| 3V3_EN | | |
+| | PWM6 | | | | GP3 |
5
|
36
| 3V3(OUT) | | |
+| | | | UART3_TX | | GP4 |
6
|
35
| | | |
+| | | | UART3_RX | | GP5 |
7
|
34
| | | |
+| | | | | | GND |
8
|
33
| GND | | |
+| SPI2_SCK | | I2C3_SDA | | | GP6 |
9
|
32
| GP27 | | |
+| SPI2_MOSI | | I2C3_SCL | | | GP7 |
10
|
31
| GP26 | | ADC1 |
+| SPI2_MISO | | I2C1_SDA | | | GP8 |
11
|
30
| RUN | | |
+| SPI2_CSn | | I2C1_SCL | | | GP9 |
12
|
29
| GP22 | | |
+| | | | | | GND |
13
|
28
| GND | | |
+| | | I2C2_SDA | | 14 | GP10 |
14
|
27
| GP21 | 27 | |
+| | | I2C2_SCL | | 15 | GP11 |
15
|
26
| GP20 | 26 | |
+| | | | | | GP12 |
16
|
25
| GP19 | 25 | |
+| | | | | | GP13 |
17
|
24
| GP18 | 24 | |
+| | | | | | GND |
18
|
23
| GND | | |
+| | | | | 19 | GP14 |
19
|
22
| GP17 | 22 | |
+| | | | | 20 | GP15 |
20
|
21
| GP16 | 21 | |
+| | | | | | | | | | | |
+| | | | | 0 | |
LED
| | | | |
+
+
+
+## 3. Code example
+
+### GPIO Usage Example
+
+This program implements Duo physical pin 20 to output high and low levels cyclically with an interval of 1 second, and observe the phenomenon through an external LED.
+
+The connection method is as follows. The negative pole of the LED is connected to the ground of the Duo (for example, pin 18), and the positive pole is connected in series with a 1K resistor and then connected to pin 20:
+
+
+
+test code:
+```C
+#define TEST_PIN 20 //0,1,2,14,15,19,20,21,22,24,25,26,27
+
+// the setup function runs once when you press reset or power the board
+void setup() {
+ pinMode(TEST_PIN, OUTPUT);
+}
+
+// the loop function runs over and over again forever
+void loop() {
+ digitalWrite(TEST_PIN, HIGH); // turn the TEST_PIN on (HIGH is the voltage level)
+ delay(1000); // wait for a second
+ digitalWrite(TEST_PIN, LOW); // turn the TEST_PIN off by making the voltage LOW
+ delay(1000); // wait for a second
+}
+```
+
+:::tip
+- If the LED is not connected, you can observe the status changes of the pin through a multimeter or oscilloscope.
+- Configuring TEST_PIN to 0 enables testing of the Duo onboard LED.
+:::
+
+### UART Usage Example
+
+#### UART Serial port
+
+The UART serial port uses `UART3` on physical pin `6/7` by default. When debugging the Arduino program, you can print debugging information through this serial port.
+
+The connection method is as follows. The computer can use a USB to TTL serial port cable. The logic level is 3.3V and the baud rate is 115200. The RX of the serial port cable is connected to the PIN 6 UART3_TX of the Duo. The TX of the serial port cable is connected to the PIN 7 UART3_RX of the Duo. The serial port The GND of the line is connected to any GND of the Duo, such as pin 3:
+
+
+
+test code:
+```C
+void setup() {
+ Serial.begin(115200);
+}
+
+void loop() {
+ Serial.printf("hello world\r\n");
+ delay(1000);
+}
+```
+
+After running, you can see the "hello world" string printed every 1 second in the computer serial port tool:
+```
+hello world
+hello world
+```
+
+In addition, the default serial port uses Duo's UART3 interface, so `Serial3` can also be used in the program:
+```C
+void setup() {
+ Serial3.begin(115200);
+}
+
+void loop() {
+ Serial3.printf("hello world\r\n");
+ delay(1000);
+}
+```
+
+### I2C Usage Example
+
+:::caution
+The I2C interface resources of Duo and Duo256M are different and need to be used according to the previous pin resource diagram.
+:::
+
+#### I2C0 sends data to I2C1 (Duo)
+
+The hardware connection is as follows. Connect the SDA and SCL pins of I2C0 and I2C1 correspondingly, and then connect the serial port to the computer to view the printing information according to the method in the UART example above.
+
+
+
+The `Wire` function in Duo is mapped to I2C0 by default, that is, `Wire` is equivalent to `Wire0`.
+
+Test code:
+```C
+#include
+
+void receive(int a) {
+ Serial.printf("receive %d bytes\n\r", a);
+ while(a--) {
+ Serial.printf("%d \n\r", Wire1.read());
+ }
+}
+
+void setup() {
+ Serial.begin(115200);
+ Wire1.begin(0x50);
+ Wire1.onReceive(receive);
+ Wire.begin();
+ Serial.printf("test slave\n\r");
+ Wire1.print();
+}
+
+byte val = 0;
+
+void loop() {
+ Wire.beginTransmission(0x50); // Transmit to device number 0x50
+ Serial.printf("send %d \n\r", ++val);
+ Wire.write(val); // Sends value byte
+ Wire.endTransmission(); // Stop transmitting
+ Wire1.onService();
+ delay(1000);
+}
+```
+
+Test Results:
+```
+test slave
+Wire1: 1
+[iic_dump_register]: ===dump start
+IC_CON = 0x22
+IC_TAR = 0x55
+IC_SAR = 0x50
+IC_SS_SCL_HCNT = 0x1ab
+IC_SS_SCL_LCNT = 0x1f3
+IC_ENABLE = 0x1
+IC_STATUS = 0x6
+IC_INTR_MASK = 0x224
+IC_INTR_STAT = 0
+IC_RAW_INTR_STAT = 0x10
+[iic_dump_register]: ===dump end
+send 1
+receive 1 bytes
+1
+send 2
+receive 1 bytes
+2
+send 3
+receive 1 bytes
+3
+send 4
+receive 1 bytes
+4
+```
+
+#### I2C1 sends data to I2C2 (Duo256M)
+
+:::tip
+Note that Duo256M does not have I2C0.
+:::
+
+The hardware connection is as follows. Connect the SDA and SCL pins of I2C1 and I2C2 correspondingly, and then connect the serial port to the computer to view the printing information according to the method in the UART example above.
+
+
+
+The `Wire` function in Duo256M is mapped to I2C1 by default, that is, `Wire` is equivalent to `Wire1`.
+
+Test code:
+```C
+#include
+
+void receive(int a) {
+ Serial.printf("receive %d bytes\n\r", a);
+ while(a--) {
+ Serial.printf("%d \n\r", Wire2.read());
+ }
+}
+
+void setup() {
+ Serial.begin(115200);
+
+ Wire2.begin(0x50);
+ Wire2.onReceive(receive);
+
+ Wire.begin();
+ Serial.printf("test slave\n\r");
+ Wire2.print();
+}
+
+byte val = 0;
+
+void loop() {
+ Wire.beginTransmission(0x50); // Transmit to device number 0x50
+ Serial.printf("send %d \n\r", ++val);
+ Wire.write(val); // Sends value byte
+ Wire.endTransmission(); // Stop transmitting
+ Wire2.onService();
+ delay(1000);
+}
+```
+
+Test Results:
+```
+test slave
+Wire2: 1
+[iic_dump_register]: ===dump start
+IC_CON = 0x22
+IC_TAR = 0x55
+IC_SAR = 0x50
+IC_SS_SCL_HCNT = 0x1ab
+IC_SS_SCL_LCNT = 0x1f3
+IC_ENABLE = 0x1
+IC_STATUS = 0x6
+IC_INTR_MASK = 0x224
+IC_INTR_STAT = 0
+IC_RAW_INTR_STAT = 0x10
+[iic_dump_register]: ===dump end
+send 1
+receive 1 bytes
+1
+send 2
+receive 1 bytes
+2
+send 3
+receive 1 bytes
+3
+send 4
+receive 1 bytes
+4
+```
+
+### SPI Usage Example
+
+#### SPI loopback test
+
+The hardware connection is as follows. Short-circuit the MOSI and MISO of the SPI, that is, pin 10 and pin 11, and then connect the serial port to the computer according to the method in the UART example above to view the printing information.
+
+
+
+Test code:
+```C
+#include
+
+char str[]="hello world\n";
+void setup() {
+ // put your setup code here, to run once:
+ Serial.begin(115200);
+ SPI.begin();
+}
+
+byte i = 0;
+
+void loop() {
+ // put your main code here, to run repeatedly:
+ // digitalWrite(12, 1);
+ SPI.beginTransaction(SPISettings());
+ Serial.printf("transfer %c\n\r", str[i]);
+ char out = SPI.transfer(str[i++]); // spi loop back
+ SPI.endTransaction();
+ Serial.printf("receive %x \n\r", out);
+ i %= 12;
+}
+```
+
+Test Results:
+```
+receive a
+transfer h
+receive 68
+transfer e
+receive 65
+transfer l
+receive 6c
+transfer l
+receive 6c
+transfer o
+receive 6f
+transfer
+receive 20
+transfer w
+receive 77
+transfer o
+receive 6f
+transfer r
+receive 72
+transfer l
+receive 6c
+transfer d
+receive 64
+transfer
+```
+
+### PWM Usage Example
+
+The hardware connection is as follows. Connect the DUO's GP4 to the negative lead of the LED.
+
+
+
+Test code:
+```C
+void setup() {
+ pinMode(6, OUTPUT);
+}
+
+void loop() {
+ for(int i = 128; i < 255; i++)
+ {
+ analogWrite(6,i);
+ delay(50);
+ }
+ for(int i = 255; i > 128; i--)
+ {
+ analogWrite(6,i);
+ delay(50);
+ }
+}
+```
+
+After compiling and burning, you can observe the LED light breathing effect.
+
+### ADC Usage Example
+
+The hardware connection is as follows. Connect the GP26 of DUO to the signal pin of the potentiometer, and connect the other two pins to the positive and negative poles of the power supply respectively.
+
+
+
+Test code:
+```C
+int adc_get_val = 0;
+
+void setup() {
+ pinMode(0,OUTPUT);
+}
+
+void loop() {
+ adc_get_val = analogRead(31);
+
+ digitalWrite(0,HIGH);
+ delay(adc_get_val);
+ digitalWrite(0,LOW);
+ delay(adc_get_val);
+}
+```
+
+After compiling and burning, you can observe that the flashing frequency of the onboard LED changes as the position of the potentiometer changes.
+
+### MailBox Usage Example
+
+Compile and burn the following code into the small core Arduino. This program can read the information sent by the large core from the MailBox and print it to the serial port, for serial port wiring, please refer to the [UART Usage Example](#uart-usage-example) in this chapter.
+
+```C
+
+#include "mailbox.h"
+
+struct valid_t {
+ uint8_t linux_valid;
+ uint8_t rtos_valid;
+} __attribute__((packed));
+
+typedef union resv_t {
+ struct valid_t valid;
+ unsigned short mstime; // 0 : noblock, -1 : block infinite
+} resv_t;
+
+typedef struct cmdqu_t cmdqu_t;
+/* cmdqu size should be 8 bytes because of mailbox buffer size */
+struct cmdqu_t {
+ uint8_t ip_id;
+ uint8_t cmd_id : 7;
+ uint8_t block : 1;
+ union resv_t resv;
+ unsigned int param_ptr;
+} __attribute__((packed)) __attribute__((aligned(0x8)));
+
+void showmsg(MailboxMsg msg) {
+ cmdqu_t *cmdq;
+ Serial.print("Get Msg: ");
+ Serial.println(*(msg.data), HEX);
+ cmdq = (cmdqu_t *)msg.data;
+ Serial.printf("cmdq->ip_id = %d\r\n", cmdq->ip_id);
+ Serial.printf("cmdq->cmd_id = %x\r\n", cmdq->cmd_id);
+ Serial.printf("cmdq->block = %d\r\n", cmdq->block);
+ Serial.printf("cmdq->para_ptr = %x\r\n", cmdq->param_ptr);
+ *(msg.data) = 0;
+}
+
+void setup() {
+ Serial.begin(115200);
+ mailbox_init(false);
+ mailbox_register(0, showmsg);
+ mailbox_enable_receive(0);
+ Serial.println("Mailbox Start");
+}
+
+void loop() {
+
+}
+
+```
+
+Compile the test program [mailbox_test](https://github.com/milkv-duo/duo-examples/tree/main/mailbox-test) and run it on large-core Linux. The test program has been stored in the [duo-examples](https://github.com/milkv-duo/duo-examples) warehouse. You can refer to [README](https://github.com/milkv-duo/duo-examples/blob/main/README.md) for compilation.
+
+After running, the big core Linux output:
+
+```
+
+C906B: cmd.param_ptr = 0x2
+C906B: cmd.param_ptr = 0x3
+
+```
+
+Small core serial port printing:
+
+```
+
+Mailbox Start
+Get Msg: 19300
+cmdq->ip_id = 0
+cmdq->cmd_id = 13
+cmdq->block = 1
+cmdq->para_ptr = 2
+Get Msg: 19300
+cmdq->ip_id = 0
+cmdq->cmd_id = 13
+cmdq->block = 1
+cmdq->para_ptr = 3
+
+```
+
+## 4. Sensor examples
+
+### L9110H_test
+
+L9110H_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/L9110H_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/L9110H_test)
+
+For the example code of the DC motor driver chip L9110H, connect the wires according to the code comments and then burn and run. The motor will run in cycles of gradual acceleration and deceleration, and reverse gradual acceleration and deceleration.
+
+### LCD1602
+
+LCD1602_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/LCD1602_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/LCD1602_test)
+
+Example code for the LCD1602 I2C interface screen. Connect the wires according to the code comments and then burn and run. The screen will display a string.
+
+### LCD2004
+
+LCD2004_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/LCD2004_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/LCD2004_test)
+
+Example code for the LCD2004 I2C interface screen. Connect the wires according to the code comments and then burn and run. The screen will display a string.
+
+### Buzzer
+
+buzzer_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/buzzer_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/buzzer_test)
+
+Example code for the buzzer module, wired according to the code comments and burned to run. The buzzer plays three different frequencies of beeps in a loop.
+
+### HC-SR04
+
+hc_sr04_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/hc_sr04_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/hc_sr04_test)
+
+Example code for HC-SR04 ultrasonic distance measurement sensor module. After burning and running the example code, the board will print the measured distance data to the serial port.
+
+### RC522
+
+rc522_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/rc522_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/rc522_test)
+
+Example code for RC522 RFID read-write module. After burning and running the code, the board will loop to check if the ID card is read. If the ID card is detected, it will print the card type and card number information to the serial port.
+
+### SSD1306
+
+ssd1306_test source:[https://github.com/milkv-duo/duo-arduino-examples/tree/master/ssd1306_test](https://github.com/milkv-duo/duo-arduino-examples/tree/master/ssd1306_test)
+
+Example code for SSD1306 OLED screen module. After wiring according to comments and burning the code, the screen displays a dynamic animation of the eyes.
+
+## 5. Arduino APIs
+
+### Digital I/O
+
+
+
+digitalWrite()
+
+```
+void digitalWrite(uint8_t pinNumber, uint8_t status)
+```
+Write a HIGH or a LOW value to a digital pin.
+
+
+
+
+
+digitalRead()
+
+```
+int digitalRead(uint8_t pinNumber)
+```
+Reads the value from a specified digital pin, either HIGH or LOW.
+
+
+
+
+
+pinMode()
+
+```
+void pinMode(uint8_t pinNumber, uint8_t pinMode)
+```
+Configures the specified pin to behave either as an input or an output
+
+
+
+### Analog I/O
+
+
+
+analogRead()
+
+```
+uint32_t analogRead(uint32_t pinNumber)
+```
+Reads the value from the specified analog pin.
+
+
+
+
+
+analogReadResolution()
+
+```
+void analogReadResolution(int bits)
+```
+Sets the size (in bits) of the value returned by analogRead().
+
+
+
+
+
+analogWrite()
+
+```
+void analogWrite(uint8_t pinNumber, uint32_t val)
+```
+Writes an analog value (PWM wave) to a pin.
+
+
+
+
+
+analogWriteResolution()
+
+```
+void analogWriteResolution(int bits)
+```
+analogWriteResolution() sets the resolution of the analogWrite() function.
+
+
+
+### Wire(I2C)
+
+
+
+begin()
+
+```
+void begin(csi_iic_addr_mode_t addr_mode = IIC_ADDRESS_7BIT);
+void begin(uint16_t address, csi_iic_addr_mode_t addr_mode = IIC_ADDRESS_7BIT);
+```
+
+
+
+
+
+
+beginTransmission()
+
+```
+void beginTransmission(uint16_t);
+```
+
+
+
+
+
+endTransmission()
+
+```
+uint8_t endTransmission(bool stopBit);
+uint8_t endTransmission(void);
+```
+
+
+
+
+
+requestFrom()
+
+```
+size_t requestFrom(uint16_t address, size_t quantity, bool stopBit);
+size_t requestFrom(uint16_t address, size_t quantity);
+```
+
+
+
+
+
+write()
+
+```
+size_t write(uint8_t data);
+size_t write(const uint8_t * data, size_t quantity);
+```
+
+
+
+
+
+available()
+
+```
+virtual int available(void);
+```
+
+
+
+
+
+
+read()
+
+```
+virtual int read(void);
+```
+
+
+
+
+
+onReceive()
+
+```
+void onReceive(void(*)(int));
+```
+
+
+
+
+
+onRequest()
+
+```
+void onRequest(void(*)(void));
+```
+
+
+
+
+
+Other functional interfaces and their usage in Duo will be updated in the future. You can also refer to [Arduino official documentation](https://www.arduino.cc/reference/en/) first.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/boot.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/boot.md
new file mode 100644
index 00000000..689c0359
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/boot.md
@@ -0,0 +1,50 @@
+---
+sidebar_label: 'Boot the Duo'
+sidebar_position: 10
+---
+
+# Boot Duo from microSD card
+
+## Prepare
+
+- Necessary
+ - Duo, Duo256M or DuoS
+ - microSD card, larger than 1GB
+ - Type-C cable
+- Optional
+ - USB to TTL serial cable
+
+## Download images and tools
+
+- Download the system image from [Official Image and SDK](https://milkv.io/docs/duo/resources/image-sdk).
+- Download the flash tool, [balenaEtcher](https://etcher.balena.io/) or [Rufus](https://rufus.ie/en/).
+
+## Burn image
+
+Here are the steps for using balenaEtcher.
+
+- Click **Flash from file**
+
+![etcher-step1](/docs/duo/etcher-step1.png)
+
+- Click **Select target**
+
+![etcher-step2](/docs/duo/etcher-step2.png)
+
+- Click **Flash!**
+
+![etcher-step3](/docs/duo/etcher-step3.png)
+
+## Power on
+
+Connect the Duo with a Type-C cable using an adapter (5V) or computer USB.
+
+The blue LED on the Duo will blink.
+
+:::tip
+If the blue LED does not blink after booting, it means the system is not running properly, and there may be a problem with the image burned to the microSD. You can try to re-burn the image with other burning software, such as balenaEtcher, Rufus, Win32DiskImager, etc. If it still cannot boot normally, you can connect a serial cable and send the log after booting to us for analysis.
+:::
+
+## Troubleshooting
+
+If you have a problem, go to our [community](https://community.milkv.io/) and post to let us know.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/buildroot-sdk.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/buildroot-sdk.md
new file mode 100644
index 00000000..c1f0749d
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/buildroot-sdk.md
@@ -0,0 +1,485 @@
+---
+sidebar_label: 'Buildroot SDK'
+sidebar_position: 40
+---
+
+# Introduction
+
+Duo's default SDK is built based on buildroot and is used to generate Duo's firmware. The SDK mainly contains the following parts:
+
+- u-boot: 2021.10
+- linux kernel: 5.10.4
+- buildroot: 2021.05
+- opensbi: 89182b2
+
+Source code: [github](https://github.com/milkv-duo/duo-buildroot-sdk)
+
+SDK Directory Structure
+
+```text
+├── build // compilation scripts and board configs
+├── build.sh // one-click compilation script
+├── buildroot-2021.05 // buildroot source code
+├── freertos // freertos system
+├── fsbl // fsbl firmware in prebuilt form
+├── install // temporary images stored here
+├── isp_tuning // camera effect parameters
+├── linux_5.10 // linux kernel
+├── middleware // self-developed multimedia framework
+├── device // configuration files for milkv
+├── opensbi // opensbi library
+├── out // final image for SD card
+├── ramdisk // prebuilt ramdisk
+└── u-boot-2021.10 // u-boot source code
+```
+
+:::tip
+The current SDK does not support the ARM core of Duo256M and DuoS. If you need to use the ARM core, you can temporarily refer to this repositories:
+
+duo-build: [https://github.com/milkv-duo/duo-build](https://github.com/milkv-duo/duo-build)
+:::
+
+# Build image
+
+Prepare the Compilation Environment. Using a local Ubuntu system, the officially supported compilation environment is `Ubuntu Jammy 22.04.x amd64` only!
+
+If you are using other Linux distributions, we strongly recommend that you use the Docker environment to compile to reduce the probability of compilation errors.
+
+The following describes the compilation methods in the two environments.
+
+## 1. Compiled using Ubuntu 22.04
+
+### Packages to be installed
+
+Install the packages that compile dependencies:
+
+```bash
+sudo apt install -y pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tcl openssh-client cmake expect
+```
+
+### Get SDK Source Code
+
+```bash
+git clone https://github.com/milkv-duo/duo-buildroot-sdk.git --depth=1
+```
+
+### 1). One-click Compilation
+
+Execute one-click compilation script `build.sh`:
+```bash
+cd duo-buildroot-sdk/
+./build.sh
+```
+
+You will see tips on how to use the compiled script:
+```bash
+# ./build.sh
+Usage:
+./build.sh - Show this menu
+./build.sh lunch - Select a board to build
+./build.sh [board] - Build [board] directly, supported boards asfollows:
+milkv-duo
+milkv-duo256m
+```
+Listed at the bottom is the list of currently supported target versions.
+
+As shown in the prompt, there are two ways to compile the target version.
+
+The first method is to execute `./build.sh lunch` to bring up the interactive menu, select the version number to be compiled, and press Enter:
+```bash
+# ./build.sh lunch
+Select a target to build:
+1. milkv-duo
+2. milkv-duo256m
+Which would you like:
+```
+
+The second method is to put the name of the target version after the script and compile it directly. For example, if you need to compile the image of `milkv-duo`, the command is as follows:
+```bash
+# ./build.sh milkv-duo
+```
+
+After a successful compilation, you can find the generated SD card burning image `milkv-duo-*-*.img` in the `out` directory.
+
+*Note: The first compilation will automatically download the required toolchain, which is approximately 840MB in size. Once downloaded, it will be automatically extracted to the `host-tools` directory in the SDK directory. For subsequent compilations, if the `host-tools` directory is detected, the download will not be performed again*.
+
+### 2). Step-by-step Compilation
+
+If you have not executed the one-click compilation script, you need to manually download the toolchain [host-tools](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz) and extract it to the SDK root directory:
+
+```bash
+tar -xf host-tools.tar.gz -C /your/sdk/path/
+```
+
+Then enter the following commands in sequence to complete the step-by-step compilation. Replace `[board]` and `[config]` in the command with the version that needs to be compiled. The currently supported `board` and corresponding `config` are as follows:
+```
+milkv-duo cv1800b_milkv_duo_sd
+milkv-duo256m cv1812cp_milkv_duo256m_sd
+```
+
+```bash
+source device/[board]/boardconfig.sh
+
+source build/milkvsetup.sh
+defconfig [config]
+clean_all
+build_all
+pack_sd_image
+```
+
+For example, if you need to compile the image of `milkv-duo`, the step-by-step compilation command is as follows:
+```bash
+source device/milkv-duo/boardconfig.sh
+
+source build/milkvsetup.sh
+defconfig cv1800b_milkv_duo_sd
+clean_all
+build_all
+pack_sd_image
+```
+
+Generated firmware location:
+```
+Duo: install/soc_cv1800b_milkv_duo_sd/[board].img
+Duo256M: install/soc_cv1812cp_milkv_duo256m_sd/[board].img
+```
+
+## 2. Compiled using Docker
+
+Docker support is required on hosts running Linux systems. For how to use Docker, please refer to the [official documentation](https://docs.docker.com/) or other tutorials.
+
+We put the SDK source code on the Linux host system and call the Docker image environment provided by Milk-V to compile it.
+
+### Pull SDK code on Linux host
+
+```bash
+git clone https://github.com/milkv-duo/duo-buildroot-sdk.git --depth=1
+```
+
+### Enter the SDK code directory
+
+```bash
+cd duo-buildroot-sdk
+```
+
+### Pull the Docker image and run
+
+```bash
+docker run -itd --name duodocker -v $(pwd):/home/work milkvtech/milkv-duo:latest /bin/bash
+```
+
+Description of some parameters in the command:
+- `duodocker` Docker name, you can use the name you want to use.
+- `$(pwd)` The current directory, here is the duo-buildroot-sdk directory that was 'cd' to in the previous step.
+- `-v $(pwd):/home/work` Bind the current code directory to the /home/work directory in the Docker image.
+- `milkvtech/milkv-duo:latest` The Docker image provided by Milk-V will be automatically downloaded from hub.docker.com for the first time.
+
+After Docker runs successfully, you can use the `docker ps -a` command to view the running status:
+```bash
+$ docker ps -a
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+8edea33c2239 milkvtech/milkv-duo:latest "/bin/bash" 2 hours ago Up 2 hours duodocker
+```
+
+### 1). One-click compilation using Docker
+
+```bash
+docker exec -it duodocker /bin/bash -c "cd /home/work && cat /etc/issue && ./build.sh [board]"
+```
+
+Note that the `./build.sh [board]` at the end of the command is the same as the previous usage in the one-click compilation instructions in Ubuntu 22.04. Use `./build.sh` can see how to use the command, use `./ build.sh lunch` can bring up the interactive selection menu, use `./build.sh [board]` to directly compile the target version, `[board]` can be replaced with:
+```
+milkv-duo
+milkv-duo256m
+```
+
+Description of some parameters in the command:
+- `duodocker` The name of the running Docker must be consistent with the name set in the previous step.
+- `"*"` In quotes is the shell command to be run in the Docker image.
+- `cd /home/work` Switch to the /home/work directory. Since this directory has been bound to the host's code directory during runtime, the /home/work directory in Docker is the source code directory of the SDK.
+- `cat /etc/issue` Displays the version number of the image used by Docker. It is currently Ubuntu 22.04.3 LTS and is used for debugging.
+- `./build.sh [board]` Execute one-click compilation script.
+
+For example, if you need to compile the image of `milkv-duo`, the command is as follows:
+```bash
+docker exec -it duodocker /bin/bash -c "cd /home/work && cat /etc/issue && ./build.sh milkv-duo"
+```
+
+After successful compilation, you can see the generated SD card burning image `[board]-*-*.img` in the `out` directory.
+
+### 2). Compile step by step using Docker
+
+If you have not executed the one-click compilation script, you need to manually download the toolchain [host-tools](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz) and extract it to the SDK root directory:
+
+```bash
+tar -xf host-tools.tar.gz -C /your/sdk/path/
+```
+
+Step-by-step compilation requires logging into Docker to operate. Use the command `docker ps -a` to view and record the ID number of the container, such as 8edea33c2239.
+
+Enter Docker:
+```bash
+docker exec -it 8edea33c2239 /bin/bash
+```
+
+Enter the code directory bound in Docker:
+```bash
+root@8edea33c2239:/# cd /home/work/
+```
+
+Then enter the following commands in sequence to complete the step-by-step compilation. Replace `[board]` and `[config]` in the command with the version that needs to be compiled. The currently supported `board` and corresponding `config` are as follows:
+```
+milkv-duo cv1800b_milkv_duo_sd
+milkv-duo256m cv1812cp_milkv_duo256m_sd
+```
+
+```bash
+source device/[board]/boardconfig.sh
+
+source build/milkvsetup.sh
+defconfig [config]
+clean_all
+build_all
+pack_sd_image
+```
+
+For example, if you need to compile the image of `milkv-duo`, the step-by-step compilation command is as follows:
+```bash
+source device/milkv-duo/boardconfig.sh
+
+source build/milkvsetup.sh
+defconfig cv1800b_milkv_duo_sd
+clean_all
+build_all
+pack_sd_image
+```
+
+Generated firmware location:
+```
+Duo: install/soc_cv1800b_milkv_duo_sd/[board].img
+Duo256M: install/soc_cv1812cp_milkv_duo256m_sd/[board].img
+```
+
+Generated firmware location: `install/soc_cv1800b_milkv_duo_sd/milkv-duo.img`.
+
+After compilation is completed, you can use the `exit` command to exit the Docker environment:
+```bash
+root@8edea33c2239:/home/work# exit
+```
+The generated firmware can also be seen in the host code directory.
+
+### Stop Docker
+
+After compilation is completed, if the above Docker running environment is no longer needed, you can stop it first and then delete it:
+```bash
+docker stop 8edea33c2239
+docker rm 8edea33c2239
+```
+
+## 3. Other compilation considerations
+
+If you want to try to compile this SDK in an environment other than the above two environments, the following are things you may need to pay attention to, for reference only.
+
+### cmake version
+
+Note:`cmake` minimum version requirement is `3.16.5`.
+
+Check the version of `cmake` in the system:
+
+```bash
+cmake --version
+```
+
+For example, the version of `cmake` installed using apt in the `Ubuntu 20.04` is:
+
+```
+cmake version 3.16.3
+```
+
+The minimum requirement of this SDK is not met. Manual installation of the latest version `3.27.6` is needed:
+
+```bash
+wget https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.sh
+chmod +x cmake-3.27.6-linux-x86_64.sh
+sudo sh cmake-3.27.6-linux-x86_64.sh --skip-license --prefix=/usr/local/
+```
+
+When manually installed, `cmake` is located in `/usr/local/bin`. To check its version, use the command `cmake --version`, which should display:
+
+```
+cmake version 3.27.6
+```
+
+### Compiling with Windows Linux Subsystem (WSL)
+
+If you wish to perform the compilation with WSL, there's an small issue building the image.
+The $PATH, due Windows interoperability, has Windows environment variables which include some spaces between the paths.
+
+To solve this problem you need to change the `/etc/wsl.conf` file and add the following lines:
+
+```
+[interop]
+appendWindowsPath = false
+```
+
+After that, you need to reboot the WSL with `wsl.exe --reboot`. Then you able to run the `./build.sh` script or the `build_all` line in the step-by-step compilation method.
+To rollback this change in `/etc/wsl.conf` file set `appendWindowsPath` as true. To reboot the WSL, can you use the Windows PowerShell command `wsl.exe --shutdown` then `wsl.exe`, after that the Windows environment variables become avaliable again in $PATH.
+
+## 4. Add application packages
+
+Buildroot is a lightweight embedded Linux system building tool. The system it generates does not have the apt package management tool like the Ubuntu system to download and use application packages. Duo's default SDK has added some commonly used tools or commands. If you need to add your own applications, you need to make some modifications to the SDK and recompile to generate the required system firmware.
+
+The following introduces several common methods for adding application packages in Buildroot.
+
+### Enable commands in Busybox
+
+In a system built using Buildroot, some basic commands are provided by busybox. You can check whether the configuration file of busybox contains the commands you need, enable it and recompile. The location of the configuration file of busybox is:
+
+```
+buildroot-2021.05/package/busybox/busybox.config
+```
+
+For example, the timeout command, how to enable it:
+
+```diff {9,10}
+diff --git a/buildroot-2021.05/package/busybox/busybox.config b/buildroot-2021.05/package/busybox/busybox.config
+index d7d58f064..b268cd6f8 100644
+--- a/buildroot-2021.05/package/busybox/busybox.config
++++ b/buildroot-2021.05/package/busybox/busybox.config
+@@ -304,7 +304,7 @@ CONFIG_TEST=y
+ CONFIG_TEST1=y
+ CONFIG_TEST2=y
+ CONFIG_FEATURE_TEST_64=y
+-# CONFIG_TIMEOUT is not set
++CONFIG_TIMEOUT=y
+ CONFIG_TOUCH=y
+ # CONFIG_FEATURE_TOUCH_NODEREF is not set
+ CONFIG_FEATURE_TOUCH_SUSV3=y
+```
+
+Refer to this commit: [busybox: add timeout command](https://github.com/milkv-duo/duo-buildroot-sdk/commit/2833c24f11bb48776094265b7b16cfde87f86083)
+
+### Configure application packages preset in Buildroot
+
+In addition, a large number of application packages are preset in Buildroot. The required programs are generated by downloading the source code and compiling them. The preset application packages of Buildroot can be viewed in the `buildroot-2021.05/package` directory.
+
+Configuring to enable or disable an application package is implemented in the target board's configuration file. Taking the `milkv-duo` target as an example, its buildroot configuration file is:
+```
+buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig
+```
+
+We can compile the SDK as a whole on the host (such as Ubuntu), and then go to the Buildroot compilation directory to configure the relevant application packages through command line menu interaction.
+
+1. Enter the Buildroot compilation directory
+
+ ```
+ cd buildroot-2021.05/output/milkv-duo_musl_riscv64
+ ```
+
+ You can use the `make show-targets` command to view the currently used application packages:
+
+ ```
+ $ make show-targets
+ busybox coreutils dhcpcd dnsmasq dropbear duo-pinmux e2fsprogs evtest expat fio freetype gdb host-acl host-attr host-autoconf host-automake host-e2fsprogs host-fakeroot host-genimage host-libtool host-libzlib host-m4 host-makedevs host-mkpasswd host-patchelf host-pkgconf host-skeleton host-util-linux host-xz host-zlib htop ifupdown-scripts initscripts iperf3 json-c kmod libevent libffi libnl libopenssl libxml2 libxslt libzlib musl-compat-headers ncurses ntp openssl python-cffi python-evdev python-freetype python-lxml python-modbus-tk python-pillow python-pinpong python-pip python-psutil python-pycparser python-serial python-setuptools python-smbus-cffi python-spidev python3 skeleton skeleton-init-common skeleton-init-sysv spidev_test strace stress-ng tar toolchain toolchain-external toolchain-external-custom urandom-scripts util-linux wpa_supplicant zlib rootfs-ext2 rootfs-tar
+ ```
+
+2. Configure Buildroot
+
+ Execute the `make menuconfig` command to bring up the interactive menu:
+
+
+
+ Find the required application package according to the classification in `Target packages`. If you don't know the specific location of the application package, you can press the `/` key to search for the package name. For example, if you want to install the `tar` command, since searching for `tar` will bring up too many other irrelevant content, you can search for `package_tar`. And see that `=n` is currently disabled. Its location is in the `System tools` category of `Target packages`. You can double-click the `ESC` key to return to the main page. Then enter the corresponding position on the interface, or you can directly enter the position according to the number prompted earlier:
+
+
+
+ Press the space bar to enable:
+
+
+
+ Double-click the `ESC` key continuously to exit the main interface. When prompted whether to save, the default is YES. Just press Enter to save and exit:
+
+
+
+ Execute the `make savedefconfig` command to save the modified configuration to the original configuration file. Use the `git status` command to confirm. You can see that the original configuration file has been modified:
+
+
+
+ At this point, go back to the SDK root directory and recompile.
+
+ :::tip
+ Here you can also compare the differences between the old configuration file and the new configuration file in the compilation directory, and manually modify the parts that need to be changed directly into the original configuration file `milkv-duo_musl_riscv64_defconfig`:
+ ```diff
+ diff -u .config.old .config
+ ```
+ :::
+
+ After starting with the newly compiled image, test the newly added command on the Duo device. If a `not found` error occurs, it may be that the `.mk` configuration file of the package needs to be supplemented with gcc parameters, mainly `TARGET_CFLAGS` and The two parameters of `TARGET_LDFLAGS` need to be added. You can refer to the following commits:
+
+ 1. [buildroot: enable fio](https://github.com/milkv-duo/duo-buildroot-sdk/commit/6ebbd6e219d3efcd9b95086c75702f4f717e7f03#diff-1a84d28825d604f941100ff9b50ec8d63bf84535a3dd6f7e62c421a657e6556a)
+ 2. [buildroot: enable spidev_test](https://github.com/milkv-duo/duo-buildroot-sdk/commit/84d6b72eb6c9ff467410376fc982b5ee4f8e3d1f#diff-d0fb4ce2e7555c5cc5399aeaa75e4bf5fd429f034f4d00457f450a994204b97f)
+ 3. [buildroot: fix build parameter for coremark package](https://github.com/milkv-duo/duo-buildroot-sdk/commit/cdd4fabb6100f87a61ca7560def558cd9e38f91a)
+
+### Add your own application package
+
+Compile and test your own application. The method of integrating it into the Buildroot project is not recommended. It is recommended to use method [duo-examples](https://github.com/milkv-duo/duo-examples).
+
+If you really need to compile your application in Buildroot package mode, you can refer to the configuration of the preset package in Buildroot to add it. Here are a few reference links:
+
+1. [buildroot: add python-evdev required by the pinpong library](https://github.com/milkv-duo/duo-buildroot-sdk/commit/11caee79c7a48f7f6fd4a5d352ccf8976857d522)
+2. [buildroot: add python-freetype required by the pinpong library](https://github.com/milkv-duo/duo-buildroot-sdk/commit/165fc3c4c1adca1d1f635fd2069a5ad67d895c7c)
+
+Mainly refer to the content added in `buildroot-2021.05/package`.
+
+## 5. Delete application packages
+
+If you need to delete some unnecessary application packages to speed up compilation, or disable some unnecessary packages when compiling the firmware by yourself, you can use the `make menuconfig` method of opening the Buildroot application package mentioned above to disable related packages.
+
+You can also delete the corresponding package name in the Buildroot configuration file. Take the `milkv-duo` target as an example. For example, if you do not need to compile Python-related libraries, you can make the following modifications and recompile to generate firmware.
+
+```diff title="buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig"
+diff --git a/buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig b/buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig
+index 2bc8cd5e3..e78901afb 100644
+--- a/buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig
++++ b/buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig
+@@ -330,25 +330,6 @@ BR2_PACKAGE_EVTEST=y
+ # BR2_PACKAGE_FCONFIG is not set
+ BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS=y
+
+-BR2_PACKAGE_PYTHON3=y
+-BR2_PACKAGE_PYTHON3_PY_PYC=y
+-BR2_PACKAGE_PYTHON_LXML=y
+-BR2_PACKAGE_PYTHON_PIP=y
+-BR2_PACKAGE_PYTHON_SETUPTOOLS=y
+-BR2_PACKAGE_PYTHON3_SSL=y
+-
+-BR2_PACKAGE_PYTHON_SERIAL=y
+-BR2_PACKAGE_PYTHON_PILLOW=y
+-BR2_PACKAGE_PYTHON_SMBUS_CFFI=y
+-BR2_PACKAGE_PYTHON_SPIDEV=y
+-BR2_PACKAGE_PYTHON_MODBUS_TK=y
+-BR2_PACKAGE_PYTHON_EVDEV=y
+-BR2_PACKAGE_PYTHON_FREETYPE=y
+-
+-BR2_PACKAGE_PYTHON_PINPONG=y
+-
+-BR2_PACKAGE_PYTHON_PSUTIL=y
+-
+ #
+ # Compression and decompression
+ #
+```
+
+## 6. Frequently Asked Questions
+
+### Buildroot troubleshooting method
+
+Buildroot in the SDK enables top-level parallel compilation by default to speed up compilation. However, when a compilation error occurs, it is inconvenient to analyze the error log, so we can delete it in the config file first, and then reopen it after the problem is solved.
+
+Taking the milkv-duo target as an example, delete the configuration in its configuration file and recompile:
+
+```bash title="buildroot-2021.05/configs/milkv-duo_musl_riscv64_defconfig"
+BR2_PER_PACKAGE_DIRECTORIES=y
+```
+
+When a compilation error occurs, in addition to checking the error information of the compilation terminal, you can also check the complete log in `build/br.log` for troubleshooting.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duo.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duo.md
new file mode 100644
index 00000000..75978bbf
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duo.md
@@ -0,0 +1,123 @@
+---
+sidebar_label: 'Duo(CV1800B)'
+sidebar_position: 0
+---
+
+# Duo
+
+
+
+ Milk-V Duo is an ultra-compact embedded development platform based on the CV1800B chip. It can run Linux and RTOS, providing a reliable, low-cost, and high-performance platform for professionals, industrial ODMs, AIoT enthusiasts, DIY hobbyists, and creators.
+
+## Introduction of CV1800B
+
+CV1800B is a high-performance, low-power chip for residential consumer surveillance IP cameras, home intelligence and many other products, integrated with H.264/H.265 video compression encoder and ISP; supports digital broad dynamic, 3D noise reduction, defogging, lens distortion correction and other image enhancement and correction algorithms, providing customers with professional-grade video image quality.
+
+The chip integrates self-developed intelligent reference solutions (human detection, area detection, motion detection), built-in DDR and complete peripherals and peripherals, providing a highly integrated and simple solution to support customer product development and mass production.
+
+In addition, it also provides secure boot, secure update, secure encryption, etc., providing users with a series of security solutions from development, mass production, and product application with an 8-bit MCU subsystem integrated into the chip, which can replace the general external MCU to achieve the purpose of saving BOM cost and power consumption.
+
+## CV1800B Public Preliminary Datasheet
+
+We have open sourced the Public Preliminary Datasheet of CV1800B to GitHub. please [check it out](https://github.com/milkv-duo/duo-files/blob/main/duo/datasheet/CV1800B-CV1801B-Preliminary-Datasheet-full-en.pdf).
+
+## Buy the CV1800B Chips
+
+Milk-V is the Authorised Global Distributor of the CV1800B chips. You can buy samples of the CV1800B chip from our distributor [online store](https://arace.tech/products/sophon-cv1800b-5pcs) directly. For volume order, please contact [Milk-V Sales Team](mailto:sales@milkv.io) for the qoutation.
+
+## Duo GPIO Pinout
+
+
+
+### GPIO pin mapping
+
+
+
+| GROUP | ADDR | PORT | CHIP | NUM | NAME | START |
+|:-----:|:-------------:|:-----:|:---------:|:-------:|:---------|:------------------|
+| gpio0 | gpio@03020000 | porta | gpiochip0 | 480-511 | XGPIOA | 480 - XGPIOA[0] |
+| gpio1 | gpio@03021000 | portb | gpiochip1 | 448-479 | XGPIOB | 448 - XGPIOB[0] |
+| gpio2 | gpio@03022000 | portc | gpiochip2 | 416-447 | XGPIOC | 416 - XGPIOC[0] |
+| gpio3 | gpio@03023000 | portd | gpiochip3 | 384-415 | | |
+| gpio4 | gpio@05021000 | porte | gpiochip4 | 352-383 | PWR_GPIO | 352 - PWR_GPIO[0] |
+
+
+
+### GPIO Pinout
+
+
+
+| JTAG | SPI | SPI NOR | SD | PWM | I2C | UART | NUM | CV1800B | NAME | PIN | PIN | NAME | CV1800B | NUM | ADC | SPI NOR | SPI NAND |
+|:---------|:----------|:---------------|:--------|:------|:---------|:-----------|:---:|:-------------|-----:|:-------------------------------:|:--------------------------------:|:---------|:------------|:---:|:-----------|:--------------|:-------------|
+| JTAG_TDI | | | | | I2C0_SCL | UART1/2_TX | 508 | XGPIOA[28] | GP0 |
1
|
40
| VBUS(5V) | | | | | |
+| JTAG_TDO | | | | | I2C0_SDA | UART1/2_RX | 509 | XGPIOA[29] | GP1 |
2
|
39
| VSYS(5V) | | | | | |
+| | | | | | | | | | GND |
3
|
38
| GND | | | | | |
+| | | | SD1_GP1 | PWM10 | | UART4_TX | 378 | PWR_GPIO[26] | GP2 |
4
|
37
| 3V3_EN | | | | | |
+| | | | SD1_GP0 | PWM11 | | UART4_RX | 377 | PWR_GPIO[25] | GP3 |
5
|
36
| 3V3(OUT) | | | | | |
+| | | SPINOR1_HOLD_X | SD1_D2 | PWM5 | I2C1_SCL | UART2/3_TX | 371 | PWR_GPIO[19] | GP4 |
6
|
35
| | | | | | |
+| | | SPINOR1_WP_X | SD1_D1 | PWM6 | I2C1_SDA | UART2/3_RX | 372 | PWR_GPIO[20] | GP5 |
7
|
34
| | | | | | |
+| | | | | | | | | | GND |
8
|
33
| GND | | | | | |
+| | SPI2_SCK | SPINOR1_SCK | SD1_CLK | PWM9 | I2C3_SDA | | 375 | PWR_GPIO[23] | GP6 |
9
|
32
| GP27 | XGPIOB[6] | 454 | ADC2(1.8V) | | |
+| | SPI2_SDO | SPINOR1_MOSI | SD1_CMD | PWM8 | I2C3_SCL | | 374 | PWR_GPIO[22] | GP7 |
10
|
31
| GP26 | XGPIOB[3] | 451 | ADC1(1.8V) | | |
+| | SPI2_SDI | SPINOR1_MISO | SD1_D0 | PMW7 | I2C1_SDA | UART3_RTS | 373 | PWR_GPIO[21] | GP8 |
11
|
30
| RUN | | | | | |
+| | SPI2_CS_X | SPINOR1_CS_X | SD1_D3 | PWM4 | I2C1_SCL | UART3_CTS | 370 | PWR_GPIO[18] | GP9 |
12
|
29
| GP22 | PWR_GPIO[4] | 356 | | | |
+| | | | | | | | | | GND |
13
|
28
| GND | | | | | |
+| | | | | | I2C1_SDA | | 425 | XGPIOC[9] | GP10 |
14
|
27
| GP21 | XGPIOA[26] | 506 | | SPINOR_HOLD_X | SPINAND_HOLD |
+| | | | | | I2C1_SCL | | 426 | XGPIOC[10] | GP11 |
15
|
26
| GP20 | XGPIOA[27] | 507 | | SPINOR_WP_X | SPINAND_WP |
+| JTAG_TMS | | | | PWM4 | | UART0/1_TX | 496 | XGPIOA[16] | GP12 |
16
|
25
| GP19 | XGPIOA[25] | 505 | | SPINOR_MOSI | SPINAND_MOSI |
+| JTAG_TCK | | | | PWM5 | | UART0/1_RX | 497 | XGPIOA[17] | GP13 |
17
|
24
| GP18 | XGPIOA[22] | 502 | | SPINOR_SCK | SPINAND_SCK |
+| | | | | | | | | | GND |
18
|
23
| GND | | | | | |
+| | | | | | | | 494 | XGPIOA[14] | GP14 |
19
|
22
| GP17 | XGPIOA[24] | 504 | | SPINOR_CS_X | SPINAND_CS |
+| | | | | | | | 495 | XGPIOA[15] | GP15 |
20
|
21
| GP16 | XGPIOA[23] | 503 | | SPINOR_MISO | SPINAND_MISO |
+| | | | | | | | | | | | | | | | | | |
+| | | | | | | | 440 | XGPIOC[24] | |
LED
| | | | | | | |
+
+
+
+### Camera interface
+
+Duo camera uses a 16-pin connector with a distance of 0.5 mm, which can be directly used with the [CAM-GC2083](https://milkv.io/docs/duo/camera/gc2083) camera head.
+
+#### Connector FPC Definition
+
+
+
+
+
+| J1 | Description |
+|:--:|:--------------------|
+| 1 | GND |
+| 2 | MIPI0_DN0 |
+| 3 | MIPI0_DP0 |
+| 4 | GND |
+| 5 | MIPI0_DN1 |
+| 6 | MIPI0_DP1 |
+| 7 | GND |
+| 8 | MIPI0_CKN |
+| 9 | MIPI0_CKP |
+| 10 | GND |
+| 11 | SENSOR_RSTN (1.8V) |
+| 12 | SENSOR_CLK (1.8V) |
+| 13 | I2C1_SCL (1.8V) |
+| 14 | I2C1_SDA (1.8V) |
+| 15 | |
+| 16 | 3V3 |
+
+
+
+## Hardware Docs
+
+### V1.2
+
+- Schematic: [duo-schematic-v1.2.pdf](https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-schematic-v1.2.pdf?raw=true)
+- SMD TOP: [duo-component-list-top-v1.2.pdf](https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-component-list-top-v1.2.pdf?raw=true)
+- SMD BOTTOM: [duo-component-list-bottom-v1.2.pdf](https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-component-list-bottom-v1.2.pdf?raw=true)
+- 2D dxf: [duo-mechanical-drawings-v1.1.zip](https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-mechanical-drawings-v1.1.zip?raw=true)
+
+### V1.1
+
+- Schematic: [duo-schematic-v1.1.pdf](https://github.com/milkv-duo/duo-files/blob/main/duo/hardware/duo-schematic-v1.1.pdf?raw=true)
+
+### Others
+
+[https://github.com/milkv-duo/duo-files/tree/main/duo/hardware](https://github.com/milkv-duo/duo-files/tree/main/duo/hardware)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duo256m.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duo256m.md
new file mode 100644
index 00000000..0bb3203e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duo256m.md
@@ -0,0 +1,133 @@
+---
+sidebar_label: 'Duo256M(SG2002)'
+sidebar_position: 1
+---
+
+# Duo256M
+
+
+
+The Milk-V Duo 256M is an upgraded version of Duo with a memory boost to 256M, catering to applications demanding larger memory capacities. It features the SG2002 computing series chip, elevating computational power to 1.0TOPS@INT8. It enables seamless switching between RISC-V/ARM architectures and supports simultaneous operation of dual systems. Additionally, it includes an array of rich GPIO interfaces such as SPI, UART, suitable for a wide range of hardware development in edge intelligent monitoring, including IP cameras, smart peephole locks, visual doorbells, and more.
+
+## Introduction of SG2002
+
+SG2002 is a high-performance, low-power chip designed for various product fields such as edge intelligent surveillance IP cameras, smart door locks, visual doorbells, and home intelligence. It integrates H.264 video compression and decoding, H.265 video compression encoding, and ISP capabilities. It supports multiple image enhancement and correction algorithms such as HDR wide dynamic range, 3D noise reduction, defogging, and lens distortion correction, providing customers with professional-grade video image quality.
+
+The chip also incorporates a self-developed TPU, delivering 1.0 TOPS of computing power under 8-bit integer operations. The specially designed TPU scheduling engine efficiently provides high-bandwidth data flow for all tensor processing unit cores. Additionally, it offers users a powerful deep learning model compiler and software SDK development kit. Leading deep learning frameworks like Caffe and Tensorflow can be easily ported to its platform. Furthermore, it includes security boot, secure updates, and encryption, providing a series of security solutions from development, mass production, to product applications.
+
+The chip integrates an 8-bit MCU subsystem, replacing the typical external MCU to achieve cost-saving and power efficiency goals.
+
+## SG2002 Public Preliminary Datasheet
+
+We have open sourced the Public Preliminary Datasheet and TRM of SG2002 to GitHub. please [check it out](https://github.com/milkv-duo/duo-files/tree/main/duo-256M/datasheet).
+
+## Buy the SG2002 Chips
+
+Milk-V is the Authorised Global Distributor of the SG2002 chips. You can buy samples of the SG2002 chip from our distributor [online store](https://arace.tech/products/sophon-cv1800b-5pcs) directly. For volume order, please contact [Milk-V Sales Team](mailto:sales@milkv.io) for the qoutation.
+
+## Duo256M GPIO Pinout
+
+
+
+### GPIO pin mapping
+
+
+
+| GROUP | ADDR | PORT | CHIP | NUM | NAME | START |
+|:-----:|:-------------:|:-----:|:---------:|:-------:|:---------|:------------------|
+| gpio0 | gpio@03020000 | porta | gpiochip0 | 480-511 | XGPIOA | 480 - XGPIOA[0] |
+| gpio1 | gpio@03021000 | portb | gpiochip1 | 448-479 | XGPIOB | 448 - XGPIOB[0] |
+| gpio2 | gpio@03022000 | portc | gpiochip2 | 416-447 | XGPIOC | 416 - XGPIOC[0] |
+| gpio3 | gpio@03023000 | portd | gpiochip3 | 384-415 | | |
+| gpio4 | gpio@05021000 | porte | gpiochip4 | 352-383 | PWR_GPIO | 352 - PWR_GPIO[0] |
+
+
+
+### GPIO Pinout
+
+
+
+| JTAG | SPI | SPI-NOR | SD | PWM | I2C | UART | NUM | SG2002 | NAME | PIN | PIN | NAME | SG2002 | NUM | ADC | SPI-NOR | SPI-NAND | EMMC |
+|:---------|:---------|:----------|:--------|:------|:---------|:-----------|:---:|:-------------|-----:|:-------------------------------:|:--------------------------------:|:------------|:------------|:---:|:-----------|:---------|:----------|:----------|
+| JTAG_TDI | | | | | | UART1/2_TX | 508 | XGPIOA[28] | GP0 |
1
|
40
| VBUS(5V) | | | | | | |
+| JTAG_TDO | | | | | | UART1/2_RX | 509 | XGPIOA[29] | GP1 |
2
|
39
| VSYS(5V) | | | | | | |
+| | | | | | | | | | GND |
3
|
38
| GND | | | | | | |
+| JTAG_TMS | | | | PWM7 | | UART1_TX | 499 | XGPIOA[19] | GP2 |
4
|
37
| 3V3_EN | | | | | | |
+| JTAG_TCK | | | | PWM6 | | UART1_RX | 498 | XGPIOA[18] | GP3 |
5
|
36
| 3V3(OUT) | | | | | | |
+| | | NOR1_HOLD | SD1_D2 | PWM5 | I2C1_SCL | UART2/3_TX | 371 | PWR_GPIO[19] | GP4 |
6
|
35
| Boot-Switch | | | | | | |
+| | | NOR1_WP | SD1_D1 | PWM6 | I2C1_SDA | UART2/3_RX | 372 | PWR_GPIO[20] | GP5 |
7
|
34
| Audio-Out | | | | | | |
+| | | | | | | | | | GND |
8
|
33
| GND | | | | | | |
+| | SPI2_SCK | NOR1_SCK | SD1_CLK | PWM9 | I2C3_SDA | | 375 | PWR_GPIO[23] | GP6 |
9
|
32
| GP27 | XGPIOB[6] | 454 | | | | |
+| | SPI2_SDO | NOR1_MOSI | SD1_CMD | PWM8 | I2C3_SCL | | 374 | PWR_GPIO[22] | GP7 |
10
|
31
| GP26 | XGPIOB[3] | 451 | ADC1(1.8V) | | | |
+| | SPI2_SDI | NOR1_MISO | SD1_D0 | PMW7 | I2C1_SDA | UART3_RTS | 373 | PWR_GPIO[21] | GP8 |
11
|
30
| RUN | | | | | | |
+| | SPI2_CS | NOR1_CS | SD1_D3 | PWM4 | I2C1_SCL | UART3_CTS | 370 | PWR_GPIO[18] | GP9 |
12
|
29
| GP22 | PWR_GPIO[4] | 356 | | | | |
+| | | | | | | | | | GND |
13
|
28
| GND | | | | | | |
+| | | | | PWM10 | I2C2_SDA | | 430 | XGPIOC[14] | GP10 |
14
|
27
| GP21 | XGPIOA[26] | 506 | | NOR_HOLD | NAND_HOLD | EMMC_DAT2 |
+| | | | | PWM11 | I2C2_SCL | | 431 | XGPIOC[15] | GP11 |
15
|
26
| GP20 | XGPIOA[27] | 507 | | NOR_WP | NAND_WP | EMMC_DAT3 |
+| | | | | PWM4 | | UART0/1_TX | 496 | XGPIOA[16] | GP12 |
16
|
25
| GP19 | XGPIOA[25] | 505 | | NOR_MOSI | NAND_MOSI | EMMC_DAT0 |
+| | | | | PWM5 | | UART0/1_RX | 497 | XGPIOA[17] | GP13 |
17
|
24
| GP18 | XGPIOA[22] | 502 | | NOR_SCK | NAND_SCK | EMMC_CLK |
+| | | | | | | | | | GND |
18
|
23
| GND | | | | | | |
+| | | | | | | | 494 | XGPIOA[14] | GP14 |
19
|
22
| GP17 | XGPIOA[24] | 504 | | NOR_CS | NAND_CS | EMMC_DAT1 |
+| | | | | | | | 495 | XGPIOA[15] | GP15 |
20
|
21
| GP16 | XGPIOA[23] | 503 | | NOR_MISO | NAND_MISO | EMMC_CMD |
+| | | | | | | | | | | | | | | | | | | |
+| | | | | | | | 354 | PWR_GPIO[2] | |
LED
| | | | | | | | |
+
+
+
+The logic level of `GP26` and `GP27` pins is 1.8V, and the logic level of other GPIO pins is 3.3V logic level.
+
+### Camera interface
+
+Duo256M camera uses a 16-pin connector with a distance of 0.5 mm, which can be directly used with the [CAM-GC2083](https://milkv.io/docs/duo/camera/gc2083) camera head.
+
+#### Connector FPC Definition
+
+
+
+
+
+| J1 | Description |
+|:--:|:--------------------|
+| 1 | GND |
+| 2 | MIPI0_DN0 |
+| 3 | MIPI0_DP0 |
+| 4 | GND |
+| 5 | MIPI0_DN1 |
+| 6 | MIPI0_DP1 |
+| 7 | GND |
+| 8 | MIPI0_CKN |
+| 9 | MIPI0_CKP |
+| 10 | GND |
+| 11 | SENSOR_RSTN (1.8V) |
+| 12 | SENSOR_CLK (1.8V) |
+| 13 | I2C2_SCL (1.8V) |
+| 14 | I2C2_SDA (1.8V) |
+| 15 | |
+| 16 | 3V3 |
+
+
+
+## Duo256M User Guide
+
+### RISC-V and ARM switching
+
+The large core of Duo256M can choose to use RISC-V or ARM processor. The RISC-V core is used by default. You can switch to the ARM core by shorting physical pin 35 (Boot-Switch) and GND. If you find that Duo256M cannot start normally during use, please first check whether the core currently used is consistent with the firmware used.
+
+
+
+If the debug serial port is connected, you can see in the first line of the boot log that starting with `C` means starting from the RISC-V core, and starting with `B` means starting from the ARM core.
+
+- RISC-V:
+ ```
+ C.SCS/0/0.C.SCS/0/0.WD.URPL.USBI.USBW
+ ```
+- ARM:
+ ```
+ B.SCS/0/0.WD.URPL.B.SCS/0/0.WD.URPL.USBI.USBW
+ ```
+
+## Hardware Docs
+
+### Others
+
+[https://github.com/milkv-duo/duo-files/tree/main/duo-256M](https://github.com/milkv-duo/duo-files/tree/main/duo-256M)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duos.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duos.md
new file mode 100644
index 00000000..2697b553
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/duos.md
@@ -0,0 +1,380 @@
+---
+sidebar_label: 'Duo S(SG2000)'
+sidebar_position: 3
+---
+
+# Duo S
+
+
+
+Milk-V Duo S is an upgraded model of Duo, featuring an upgraded SG2000 main controller with a larger 512MB memory and expanded IO capabilities. It integrates wireless capabilities with WI-FI 6/BT 5, and comes equipped with a USB 2.0 HOST interface and a 100Mbps Ethernet port for user convenience. Supporting dual cameras (2x MIPI CSI 2-lane) and MIPI video output (MIPI DSI 4-lane), it allows for versatile applications. The device also supports switching between RISC-V and ARM boot through a switch. With enhanced functionality, Duo S is better suited for a variety of scenarios with more complex project development requirements.
+
+## Introduction of SG2000
+
+SG2000 is a high-performance, low-power chip designed for various product fields such as edge intelligent surveillance IP cameras, local facial recognition attendance machines, and smart home devices. It integrates H.264/H.265 video compression and decoding and ISP capabilities. It supports various image enhancement and correction algorithms like HDR wide dynamic range, 3D noise reduction, defogging, and lens distortion correction, providing customers with professional-grade video image quality.
+
+The chip also integrates an in-house TPU, delivering approximately 0.5TOPS of computing power under INT8 operations. The specially designed TPU scheduling engine efficiently provides high-bandwidth data flow for tensor processing unit cores. It also offers users a powerful deep learning model compiler and software SDK development kit. Mainstream deep learning frameworks such as Caffe, Pytorch, ONNX, MXNet, and TensorFlow (Lite) can be easily ported to this platform.
+
+## SG2000 Public Preliminary Datasheet
+
+We have open sourced the Public Preliminary Datasheet and TRM of SG2000 to GitHub. please [check it out](https://github.com/milkv-duo/duo-files/tree/main/duo-s/datasheet).
+
+## Buy the SG2000 Chips
+
+Milk-V is the Authorised Global Distributor of the SG2002 chips. You can buy samples of the SG2002 chip from our distributor [online store](https://arace.tech/products/sophon-cv1800b-5pcs) directly. For volume order, please contact [Milk-V Sales Team](mailto:sales@milkv.io) for the qoutation.
+
+## DuoS GPIO Pinout
+
+
+
+### GPIO pin mapping
+
+
+
+| GROUP | ADDR | PORT | CHIP | NUM | NAME | START |
+|:-----:|:-------------:|:-----:|:---------:|:-------:|:---------|:------------------|
+| gpio0 | gpio@03020000 | porta | gpiochip0 | 480-511 | XGPIOA | 480 - XGPIOA[0] |
+| gpio1 | gpio@03021000 | portb | gpiochip1 | 448-479 | XGPIOB | 448 - XGPIOB[0] |
+| gpio2 | gpio@03022000 | portc | gpiochip2 | 416-447 | XGPIOC | 416 - XGPIOC[0] |
+| gpio3 | gpio@03023000 | portd | gpiochip3 | 384-415 | | |
+| gpio4 | gpio@05021000 | porte | gpiochip4 | 352-383 | PWR_GPIO | 352 - PWR_GPIO[0] |
+
+
+
+### Header J3
+
+GPIO on `Header J3` use 3.3V logic levels.
+
+
+
+| SPI | PWM | I2C | UART | NUM | SG2000 | NAME | PIN | PIN | NAME | SG2000 | NUM | UART | PWM | SPI | JTAG |
+|:---------|:-----|:---------|:---------|:---:|:-----------|------:|:--------------------------------:|:-------------------------------:|:---------|:-----------|:---:|:-------------------|:-----|:--------|:----------|
+| | | | | | | 3V3 |
1
|
2
| VSYS(5V) | | | | | | |
+| | PWM3 | I2C4_SCL | | 468 | XGPIOB[20] | B20 |
3
|
4
| VSYS(5V) | | | | | | |
+| | | I2C4_SDA | | 469 | XGPIOB[21] | B21 |
5
|
6
| GND | | | | | | |
+| | | I2C1_SCL | | 466 | XGPIOB[18] | B18 |
7
|
8
| A16 | XGPIOA[16] | 496 | UART0_TX/UART1_TX | PWM4 | | |
+| | | | | | | GND\* |
9
|
10
| A17 | XGPIOA[17] | 497 | UART0_RX/UART1_RX | PWM5 | | |
+| | PWM1 | I2C1_SDA | UART2_TX | 459 | XGPIOB[11] | B11 |
11
|
12
| B19 | XGPIOB[19] | 467 | UART2_TX | PWM2 | | |
+| | PWM2 | I2C1_SCL | UART2_RX | 460 | XGPIOB[12] | B12 |
13
|
14
| GND | | | | | | |
+| | | | UART2_RX | 470 | XGPIOB[22] | B22 |
15
|
16
| A20 | XGPIOA[20] | 500 | | | | JTAG_TRST |
+| | | | | | | 3V3 |
17
|
18
| A19 | XGPIOA[19] | 499 | UART1_TX/UART1_RTS | PWM7 | | JTAG_TMS |
+| SPI3_SDO | PWM3 | I2C2_SCL | | 461 | XGPIOB[13] | B13 |
19
|
20
| GND | | | | | | |
+| SPI3_SDI | | I2C2_SDA | | 462 | XGPIOB[14] | B14 |
21
|
22
| A18 | XGPIOA[18] | 498 | UART1_RX/UART1_CTS | PWM6 | | JTAG_TCK |
+| SPI3_SCK | | | UART2_TX | 463 | XGPIOB[15] | B15 |
23
|
24
| B16 | XGPIOB[16] | 464 | UART2_RX | | SPI3_CS | |
+| | | | | | | GND |
25
|
26
| A28 | XGPIOA[28] | 508 | UART2_TX/UART1_TX | | | |
+
+
+
+*GND\*: Pin 9 is a low-level GPIO in the V1.1 version of the hardware, and is GND in the V1.2 version and later.*
+
+NOTE: The I2C on the CSI camera connector J2 is I2C2, so when using the CSI camera on J2, I2C2 in the J3 pin header is not available.
+
+### Header J4
+
+GPIO on `Header J4` use 1.8V logic levels.
+
+
+
+| PWM | I2C | UART | MIPI DSI | NUM | SG2000 | NAME | PIN | PIN | NAME | SG2000 | NUM | MIPI DSI |
+|:------|:---------|:---------|:-----------|:---:|:------------|---------:|:-------------------------------:|:--------------------------------:|:------------|:-----------|:---:|:-----------|
+| | | | | | | VSYS(5V) |
52
|
51
| AUDIO_OUT_R | | | |
+| PWM12 | I2C4_SCL | UART3_TX | | 499 | XGPIOB[1] | B1 |
50
|
49
| AUDIO_OUT_L | | | |
+| PWM13 | I2C4_SDA | UART3_RX | | 450 | XGPIOB[2] | B2 |
48
|
47
| AUDIO_IN_R | | | |
+| | | | | 451 | XGPIOB[3] | B3 |
46
|
45
| AUDIO_IN_L | | | |
+| PWM10 | I2C2_SDA | | LCD_RST | 354 | PWR_GPIO[2] | E2 |
44
|
43
| 3V3 | | | |
+| PWM9 | I2C2_SCL | UART2_RX | LCD_PWR_CT | 353 | PWR_GPIO[1] | E1 |
42
|
41
| C18 | XGPIOC[18] | 434 | MIPI_TX_3N |
+| PWM8 | | UART2_TX | LCD_PWM | 352 | PWR_GPIO[0] | E0 |
40
|
39
| C19 | XGPIOC[19] | 435 | MIPI_TX_3P |
+| | | | | | | GND |
38
|
37
| GND | | | |
+| | | | MIPI_TX_2N | 436 | XGPIOC[20] | C20 |
36
|
35
| C16 | XGPIOC[16] | 432 | MIPI_TX_CN |
+| | | | MIPI_TX_2P | 437 | XGPIOC[21] | C21 |
34
|
33
| C17 | XGPIOC[17] | 433 | MIPI_TX_CP |
+| | | | | | | GND |
32
|
31
| GND | | | |
+| | | | MIPI_TX_1N | 430 | XGPIOC[14] | C14 |
30
|
29
| C12 | XGPIOC[12] | 428 | MIPI_TX_0N |
+| | | | MIPI_TX_1P | 431 | XGPIOC[15] | C15 |
28
|
27
| C13 | XGPIOC[13] | 429 | MIPI_TX_0P |
+
+
+
+### Blue LED PIN
+
+
+
+| NAME | SG2000 | NUM |
+|:-------------------------------:|:----------:|:---:|
+|
LED
| XGPIOA[29] | 509 |
+
+
+
+### Camera interface
+
+DuoS has two CSI camera connectors:
+
+- J1 is a 16 PIN 0.5mm pitch connector compatible with Duo and Duo256M cameras, and can directly use the [CAM-GC2083](https://milkv.io/docs/duo/camera/gc2083) camera.
+- J2 is a 15-pin 1.0mm pitch connector compatible with the Raspberry Pi camera interface. It currently supports the OV5647 camera used on the Raspberry Pi.
+
+
+
+Note that the I2C used by the J1 interface is I2C3, and the I2C used by the J2 interface is I2C2. Please check the pin multiplexing configuration when using it.
+
+#### J1 Connector FPC Definition
+
+
+
+| J1 | Description |
+|:--:|:--------------------|
+| 1 | GND |
+| 2 | MIPI0_DN0 |
+| 3 | MIPI0_DP0 |
+| 4 | GND |
+| 5 | MIPI0_DN1 |
+| 6 | MIPI0_DP1 |
+| 7 | GND |
+| 8 | MIPI0_CKN |
+| 9 | MIPI0_CKP |
+| 10 | GND |
+| 11 | SENSOR_RSTN0 (1.8V) |
+| 12 | SENSOR_CLK0 (1.8V) |
+| 13 | I2C3_SCL (1.8V) |
+| 14 | I2C3_SDA (1.8V) |
+| 15 | |
+| 16 | 3V3 |
+
+
+
+#### J2 Connector FPC Definition
+
+
+
+| J2 | Description |
+|:--:|:---------------------|
+| 1 | 3V3 |
+| 2 | I2C2_SDA (3.3V) |
+| 3 | I2C2_SCL (3.3V) |
+| 4 | SENSOR_CLK1 (3.3V) |
+| 5 | SENSOR_RSTN1 (3.3V) |
+| 6 | GND |
+| 7 | MIPI0_DP5 (CAM1_CP) |
+| 8 | MIPI0_DN5 (CAM1_CN) |
+| 9 | GND |
+| 10 | MIPI0_DP4 (CAM1_DP1) |
+| 11 | MIPI0_DN4 (CAM1_DN1) |
+| 12 | GND |
+| 13 | MIPI0_DP3 (CAM1_DP0) |
+| 14 | MIPI0_DN3 (CAM1_DN0) |
+| 15 | GND |
+
+
+
+### POE Header
+
+
+
+
+
+| POE Pin | Description |
+|:-------:|:-----------:|
+| 1 | VB- |
+| 2 | VB+ |
+| 3 | VA- |
+| 4 | VA+ |
+
+
+
+## DuoS User Guide
+
+### RISC-V and ARM switching
+
+The large core of DuoS can choose to use RISC-V or ARM processor, which can be set through the switch on the board. If you find that DuoS cannot start normally during use, please first check whether the switch is consistent with the firmware used.
+
+
+
+If the debug serial port is connected, you can see in the first line of the boot log that starting with `C` means starting from the RISC-V core, and starting with `B` means starting from the ARM core.
+
+- RISC-V:
+ ```
+ C.SCS/0/0.C.SCS/0/0.WD.URPL.USBI.USBW
+ ```
+- ARM:
+ ```
+ B.SCS/0/0.WD.URPL.B.SCS/0/0.WD.URPL.USBI.USBW
+ ```
+
+### Usage of USB Type A interface
+
+The USB functions of the DuoS USB Type A interface and Type C interface are optional and cannot be used at the same time. The default firmware is configured with the USB network port (RNDIS) function of the Type C port. If you need to switch to the USB 2.0 HOST port of the Type A port for use with USB flash drives and other devices, you need to execute the following command:
+
+~~~
+ln -sf /mnt/system/usb-host.sh /mnt/system/usb.sh
+sync
+~~~
+Then execute the `reboot` command or power on again to make it take effect.
+
+For example, after connecting a USB flash drive to the USB A port, you can use `ls /dev/sd*` to check whether the device is detected.
+
+Mount it to the system to view the contents of the USB flash drive (take /dev/sda1 as an example):
+```
+mkdir /mnt/udisk
+mount /dev/sda1 /mnt/udisk
+```
+Check whether the contents of the `/mnt/udisk` directory are as expected:
+```
+ls /mnt/udisk
+```
+
+Command to uninstall USB flash drive:
+```
+umount /mnt/udisk
+```
+
+When you want to restore the USB network (RNDIS) function of the Type C port, execute:
+~~~
+rm /mnt/system/usb.sh
+ln -sf /mnt/system/usb-rndis.sh /mnt/system/usb.sh
+sync
+~~~
+Then execute the `reboot` command or power on again to make it take effect.
+
+:::tip
+DuoS has an onboard Ethernet interface, so the USB network port (RNDIS) of the Type C port can be used without switching to the USB 2.0 Host function of the A port.
+:::
+
+### UART Serial Console
+
+Connect USB to TTL serial cable as shown below. Do not connect the red wire.
+
+| Milk-V DouS | \<---> | USB to TTL |
+| ----------- | ------ | ---------- |
+| GND (pin 6) | \<---> | Black wire |
+| TX (pin 8) | \<---> | White wire |
+| RX (pin 10) | \<---> | Green wire |
+
+
+
+The default serial setting for Duo u-boot and kernel console is:
+
+```
+baudrate: 115200
+data bit: 8
+stop bit: 1
+parity : none
+flow control: none
+```
+
+### WIFI configuration
+
+#### Method 1
+
+Edit the following file and replace `ssid` and `psk` with the WIFI account and password to be connected:
+
+```python {6,7} title="/etc/wpa_supplicant.conf"
+ctrl_interface=/var/run/wpa_supplicant
+ap_scan=1
+update_config=1
+
+network={
+ ssid="wifi_test"
+ psk="12345678"
+ key_mgmt=WPA-PSK
+}
+```
+
+Then execute the following command:
+
+```bash
+wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
+```
+You can connect to WIFI. After connecting, you can view the assigned IP address through the `ifconfig` or `ip a` command.
+
+:::tip
+If you need to automatically connect to the network at boot, you can put this command in the `/mnt/system/auto.sh` file.
+:::
+
+### eMMC version firmware burning
+
+The DuoS eMMC version does not have firmware burned and needs to be burned using a PC through the USB interface.
+
+:::tip
+Use the USB burning tool under Windows to support eMMC. The firmware version is [V1.1.0](https://github.com/milkv-duo/duo-buildroot-sdk/releases/tag/Duo-V1.1.0) or [latest version](https://github.com/milkv-duo/duo-buildroot-sdk/releases).
+:::
+
+#### Burning in Windows
+
+1. Install driver
+
+ Download the USB driver installation tool: [CviUsbDownloadInstallDriver.zip](https://github.com/milkv-duo/duo-buildroot-sdk/releases/download/Duo-V1.1.0/CviUsbDownloadInstallDriver.zip). After downloading, unzip and install.
+
+2. Download burning tool
+
+ Download the command line burning tool under Windows [CviBurn_v2.0_cli_windows.zip](https://github.com/milkv-duo/duo-buildroot-sdk/releases/download/Duo-V1.1.0/CviBurn_v2.0_cli_windows.zip), unzip it after downloading.
+
+3. Download firmware
+
+ Download the latest version of DuoS eMMC firmware, currently [milkv-duos-emmc-v1.1.0-2024-0410.zip](https://github.com/milkv-duo/duo-buildroot-sdk/releases/download/Duo-V1.1.0/milkv-duos-emmc-v1.1.0-2024-0410.zip), you can create a new rom folder in the burning tool `CviBurn_v2.0_cli_windows` directory, and extract the downloaded eMMC firmware compressed package to rom directory, the directory structure of the burning tool is as follows:
+
+ ```
+ └───CviBurn_v2.0_cli_windows
+ │ cv_dl_magic.bin
+ │ usb_dl.exe
+ └───rom
+ │ boot.emmc
+ │ fip.bin
+ │ partition_emmc.xml
+ │ rootfs_ext4.emmc
+ | ...
+ ```
+
+ In the Windows terminal, execute the burning command in the `CviBurn_v2.0_cli_windows` directory:
+
+ ```
+ .\usb_dl.exe -s linux -c cv181x -i .\rom
+ ```
+
+ *You can also put the firmware in other directories and specify the corresponding directory through the -i parameter in the command. *
+
+ Displays message waiting for USB connection:
+
+
+
+ Use **Type-C data cable** to connect DuoS and PC (note, if DuoS currently has an SD card inserted, please remove the SD card first), DuoS will automatically power on and enter the burning mode, and the PC will display the burning status in real time. Recording progress:
+
+ ```
+ [INFO] Waiting for USB device connection: ---
+ [INFO] found usb device vid=0x3346 pid=0x1000
+ [INFO] downloading file: .\rom\boot.emmc
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 3384664/213100824(1%)
+ [INFO] downloading file: .\rom\rootfs_ext4.emmc
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 20161944/213100824(9%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 36939224/213100824(17%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 53716504/213100824(25%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 70493784/213100824(33%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 87271064/213100824(40%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 104048344/213100824(48%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 120825624/213100824(56%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 137602904/213100824(64%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 154380184/213100824(72%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 171157464/213100824(80%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 187934744/213100824(88%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 204712024/213100824(96%)
+ [INFO] CVI_USB_PROGRAM
+ [INFO] updated size: 213100696/213100824(99%)
+ [INFO] USB download complete
+ ```
+
+ After the burning is completed, the DuoS will automatically restart. After booting, you will see the blue LED on the DuoS flashing, indicating that the system has started normally and the burning is successful.
+
+## Hardware Docs
+
+### Others
+
+[https://github.com/milkv-duo/duo-files/tree/main/duo-s](https://github.com/milkv-duo/duo-files/tree/main/duo-s)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/rtoscore.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/rtoscore.md
new file mode 100644
index 00000000..c96e0663
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/rtoscore.md
@@ -0,0 +1,203 @@
+---
+sidebar_label: 'RTOS Core'
+sidebar_position: 50
+---
+
+# Introduction
+
+Duo's CPU adopts a dual-core design. The big core runs the Linux system, and the small core runs the real-time system. Currently, it is FreeRTOS.
+
+# How to use the small core
+
+## Inter-core communication example
+
+The communication between the Duo big core and the small core is realized through the mailbox module. The latest image has added the mailbox driver to the Linux kernel of the big core. Related functions are also implemented in the FreeRTOS code of the small core. Please use [V1.0.9]( https://github.com/milkv-duo/duo-buildroot-sdk/releases/tag/Duo-V1.0.9) or [latest image](https://github.com/milkv-duo/duo-buildroot-sdk/releases) test.
+
+### Big core controls small core to light up LED
+
+This example is a Linux application running on the big core, which use the mailbox driver in the Linux kernel to notify the small core FreeRTOS to control the blue LED on Duo. The LED is first light up, and after 3 seconds, it is turned off.
+
+```c
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+enum SYSTEM_CMD_TYPE {
+ CMDQU_SEND = 1,
+ CMDQU_SEND_WAIT,
+ CMDQU_SEND_WAKEUP,
+};
+
+#define RTOS_CMDQU_DEV_NAME "/dev/cvi-rtos-cmdqu"
+#define RTOS_CMDQU_SEND _IOW('r', CMDQU_SEND, unsigned long)
+#define RTOS_CMDQU_SEND_WAIT _IOW('r', CMDQU_SEND_WAIT, unsigned long)
+#define RTOS_CMDQU_SEND_WAKEUP _IOW('r', CMDQU_SEND_WAKEUP, unsigned long)
+
+enum SYS_CMD_ID {
+ CMD_TEST_A = 0x10,
+ CMD_TEST_B,
+ CMD_TEST_C,
+ CMD_DUO_LED,
+ SYS_CMD_INFO_LIMIT,
+};
+
+enum DUO_LED_STATUS {
+ DUO_LED_ON = 0x02,
+ DUO_LED_OFF,
+ DUO_LED_DONE,
+};
+
+struct valid_t {
+ unsigned char linux_valid;
+ unsigned char rtos_valid;
+} __attribute__((packed));
+
+typedef union resv_t {
+ struct valid_t valid;
+ unsigned short mstime; // 0 : noblock, -1 : block infinite
+} resv_t;
+
+typedef struct cmdqu_t cmdqu_t;
+/* cmdqu size should be 8 bytes because of mailbox buffer size */
+struct cmdqu_t {
+ unsigned char ip_id;
+ unsigned char cmd_id : 7;
+ unsigned char block : 1;
+ union resv_t resv;
+ unsigned int param_ptr;
+} __attribute__((packed)) __attribute__((aligned(0x8)));
+
+int main()
+{
+ int ret = 0;
+ int fd = open(RTOS_CMDQU_DEV_NAME, O_RDWR);
+ if(fd <= 0)
+ {
+ printf("open failed! fd = %d\n", fd);
+ return 0;
+ }
+
+ struct cmdqu_t cmd = {0};
+ cmd.ip_id = 0;
+ cmd.cmd_id = CMD_DUO_LED;
+ cmd.resv.mstime = 100;
+ cmd.param_ptr = DUO_LED_ON;
+
+ ret = ioctl(fd , RTOS_CMDQU_SEND_WAIT, &cmd);
+ if(ret < 0)
+ {
+ printf("ioctl error!\n");
+ close(fd);
+ }
+ sleep(1);
+ printf("C906B: cmd.param_ptr = 0x%x\n", cmd.param_ptr);
+
+ sleep(3);
+
+ cmd.cmd_id = CMD_DUO_LED;
+ cmd.param_ptr = DUO_LED_OFF;
+ ret = ioctl(fd , RTOS_CMDQU_SEND, &cmd);
+ if(ret < 0)
+ {
+ printf("ioctl error!\n");
+ close(fd);
+ }
+ sleep(1);
+ printf("C906B: cmd.param_ptr = 0x%x\n", cmd.param_ptr);
+
+ close(fd);
+ return 0;
+}
+```
+
+The test program has been placed in the [duo-examples](https://github.com/milkv-duo/duo-examples/tree/main/mailbox-test) repository,If this is your first time using this repository,you can refer to [README](https://github.com/milkv-duo/duo-examples/blob/main/README.md) to configure the environment and complete the compilation:
+
+1. The recommended compilation environment is `Ubuntu 22.04 LTS`
+2. Install the tools that compile dependencies:
+ ```
+ sudo apt-get install wget git make
+ ```
+3. Get [duo-examples](https://github.com/milkv-duo/duo-examples) source code:
+ ```
+ git clone https://github.com/milkv-duo/duo-examples.git --depth=1
+ ```
+4. Prepare compilation environment:
+ ```
+ cd duo-examples
+ source envsetup.sh
+ ```
+5. Enter the `mailbox-test` directory and execute make
+ ```
+ cd mailbox-test
+ make
+ ```
+
+After successful compilation, the generated `mailbox_test` test program should be transferred to Duo through the network port or USB network (RNDIS). For example, in USB network mode, the IP of Duo is `192.168.42.1`, and the user name is `root`, the password is `milkv`:
+```
+$ scp mailbox_test root@192.168.42.1:/root/
+```
+
+Add executable permissions to the `mailbox_test` program on Duo:
+```
+chmod +x mailbox_test
+```
+
+The default firmware of Duo has the big core Linux system controlling the LED blinking, which is achieved through a boot script. When testing this program, it is necessary to disable the script responsible for LED blinking. To do so, execute the following command on Duo's terminal:
+```
+mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync
+```
+
+This command renames the LED blinking script. After restarting Duo, the LED will no longer blink.
+
+Run the `./mailbox_test` test in Duo serial port terminal, the output is as follows:
+```
+[root@milkv-duo]~# ./mailbox_test
+RT: [507.950049]prvQueueISR
+RT: [507.952485]recv cmd(19) from C906B, param_ptr [0x00000002]
+RT: [507.958306]recv cmd(19) from C906B...send [0x00000004] to C906B
+C906B: cmd.param_ptr = 0x4
+RT: [511.965433]prvQueueISR
+RT: [511.967867]recv cmd(19) from C906B, param_ptr [0x00000003]
+RT: [511.973689]recv cmd(19) from C906B...send [0x00000004] to C906B
+C906B: cmd.param_ptr = 0x3
+```
+
+You can see that the blue LED on the Duo turns on first and then turns off.
+
+The logs starting with `RT` are output by the small core `FreeRTOS`, and the logs starting with `C906B` are output by the `mailbox_test` application on the big core.
+
+In the logs, it can be observed that after the big core sends the command to light up the LED to the small core, the small core responds with 0x4 (0x00000004) to the big core, and the big core also receives 0x4. Similarly, after sending the command to turn off the LED, the small core responds with 0x4 (0x00000004) to the big core. However, the value printed on the big core side is 0x3. Combining this with the code, this 0x3 is the parameter before the big core sends the command to turn off the LED. This difference can be attributed to the usage of `RTOS_CMDQU_SEND_WAIT` and `RTOS_CMDQU_SEND` as two different parameters:
+```
+RTOS_CMDQU_SEND_WAIT Wait for return value (ACK)
+RTOS_CMDQU_SEND No return value
+```
+
+Additionally, if you want to view the relevant logs of the mailbox driver in the big core Linux kernel, you can use either of the following two methods:
+
+1. Modify kernel log level in the serial terminal:
+ ```
+ echo 8 > /proc/sys/kernel/printk
+ ```
+ Then execute the testing program:
+ ```
+ ./mailbox_test
+ ```
+2. Use the `dmesg` command
+
+### Appendix
+
+The directory where the relevant code is located:
+
+1. Big core mailbox Linux driver:
+ ```
+ linux_5.10/drivers/soc/cvitek/rtos_cmdqu/
+ ```
+2. Small core FreeRTOS:
+ ```
+ freertos/cvitek/driver/rtos_cmdqu/include/rtos_cmdqu.h
+ freertos/cvitek/task/comm/src/riscv64/
+ ```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/setup.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/setup.md
new file mode 100644
index 00000000..41c06af2
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/setup.md
@@ -0,0 +1,191 @@
+---
+sidebar_label: 'Setting Up'
+sidebar_position: 20
+---
+
+# Set up the working environment
+
+## USBnet setup
+
+We have enabled RNDIS and DHCP on the system by default in order to use USB network.
+
+### Windows
+
+1. Connect the Duo to the computer via Type-C cable
+
+2. The "RNDIS" device appear in the Device Manager
+
+![rndis-step1](/docs/duo/rndis-step1.png)
+
+3. Select "RNDIS" and right click to update the driver
+
+![rndis-step2](/docs/duo/rndis-step2.png)
+
+4. Select "Browse my computer for drivers"
+
+![rndis-step3](/docs/duo/rndis-step3.png)
+
+5. Select "Let me pick from a list of available drivers on my computer"
+
+![rndis-step4](/docs/duo/rndis-step4.png)
+
+6. Select "Network adapters"
+
+![rndis-step5](/docs/duo/rndis-step5.png)
+
+7. Manufacturer/Model: Microsoft/USB RNDIS Adapter
+
+![rndis-step6](/docs/duo/rndis-step6.png)
+
+8. Ignore warning message and click "Yes"
+
+![rndis-step7](/docs/duo/rndis-step7.png)
+
+9. Driver update successful
+
+![rndis-step8](/docs/duo/rndis-step8.png)
+
+10. Check "USB RNDIS Adapter"
+
+![rndis-step9](/docs/duo/rndis-step9.png)
+
+11. Find the IP and test the network using ping
+
+![rndis-step10](/docs/duo/rndis-step10.png)
+
+* If you are having trouble installing the rndis driver, you can try [another installation method](./windows-rndis-dirver).
+
+### Linux
+
+In general, Linux can use RNDIS without configuration.
+
+You can use command ip to check the usb0 network.
+
+```
+neko@milk-v:~ sudo dmesg | grep usb0
+[1055270.386719] rndis_host 1-2.1:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-2.1, RNDIS device, aa:53:5d:bb:7f:28
+[1055270.423753] rndis_host 1-2.1:1.0 enxaa535dbb7f28: renamed from usb0
+neko@milk-v:~ ip addr show enxaa535dbb7f28
+15: enxaa535dbb7f28: mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
+ link/ether 42:a2:79:19:7f:e3 brd ff:ff:ff:ff:ff:ff
+ inet 192.168.42.69/24 brd 192.168.42.255 scope global dynamic noprefixroute enp0s20f0u1
+ valid_lft 3569sec preferred_lft 3569sec
+ inet6 fe80::3c92:ed74:3475:cb9c/64 scope link noprefixroute
+ valid_lft forever preferred_lft forever
+neko@milk-v:~ ping 192.168.42.1 -c 5
+PING 192.168.42.1 (192.168.42.1) 56(84) bytes of data.
+64 bytes from 192.168.42.1: icmp_seq=1 ttl=64 time=0.334 ms
+64 bytes from 192.168.42.1: icmp_seq=2 ttl=64 time=0.287 ms
+64 bytes from 192.168.42.1: icmp_seq=3 ttl=64 time=0.275 ms
+64 bytes from 192.168.42.1: icmp_seq=4 ttl=64 time=0.287 ms
+64 bytes from 192.168.42.1: icmp_seq=5 ttl=64 time=0.266 ms
+
+--- 192.168.42.1 ping statistics ---
+5 packets transmitted, 5 received, 0% packet loss, time 4096ms
+rtt min/avg/max/mdev = 0.266/0.289/0.334/0.031 ms
+neko@milk-v:~
+```
+
+### macOS
+
+There is no official driver for RNDIS. We need to install [HoRNDIS](https://joshuawise.com/horndis).
+
+1. Download HoRNDIS driver
+ - Intel https://github.com/jwise/HoRNDIS/releases
+ - Apple silicon https://github.com/jwise/HoRNDIS/files/7323710/HoRNDIS-M1.zip
+
+2. Disable System Integrity Protection
+
+ a. Enter macOS recovery
+
+ Please refer [macOS User Guide -> Recovery](https://support.apple.com/en-hk/guide/mac-help/mchl338cf9a8/mac) to enter recovery mode.
+
+ b. Open the terminal and type the following command
+
+ ```
+ csrutil disable
+
+ csrutil enable --without kext
+ ```
+
+ c. Restart the Mac
+
+3. Install the Kext extension in the zip pack
+
+4. Check the network settings
+
+## SSH
+
+1. Open the terminal, type **ssh root@192.168.42.1**, and answer yes
+
+![rndis-ssh1](/docs/duo/rndis-ssh1.png)
+
+2. Enter the password **milkv**
+
+ (The password will not be displayed on the screen)
+
+![rndis-ssh2](/docs/duo/rndis-ssh2.png)
+
+3. Login successful
+
+![rndis-ssh3](/docs/duo/rndis-ssh3.png)
+
+### Modify the IP address of RNDIS
+
+The default IP address of USB network RNDIS is `192.168.42.1`. If you need to modify this address, for example, when the same computer is connected to multiple Duo devices, the RNDIS IP of each Duo needs to be set to a different one. This can be achieved by modifying the following two files in the Duo device:
+
+```bash {8} showLineNumbers title="/mnt/system/usb-rndis.sh"
+#!/bin/sh
+
+/etc/uhubon.sh device >> /tmp/rndis.log 2>&1
+/etc/run_usb.sh probe rndis >> /tmp/rndis.log 2>&1
+/etc/run_usb.sh start rndis >> /tmp/rndis.log 2>&1
+
+sleep 0.5
+ifconfig usb0 192.168.42.1
+
+count=`ps | grep dnsmasq | grep -v grep | wc -l`
+if [ ${count} -lt 1 ] ;then
+ echo "/etc/init.d/S80dnsmasq start" >> /tmp/rndis.log 2>&1
+ /etc/init.d/S80dnsmasq start >> /tmp/rndis.log 2>&1
+fi
+```
+
+```bash {2} showLineNumbers title="/etc/dnsmasq.conf"
+interface=usb0
+dhcp-range=192.168.42.2,192.168.42.242,1h
+dhcp-option=3
+dhcp-option=6
+```
+
+## Serial Console
+
+### USB to TTL serial cable
+
+Each pin of a USB-to-TTL cable is defined as follows:
+
+![usb2ttl](/docs/duo/usb2ttl.jpg)
+
+### Connection
+
+Connect USB to TTL serial cable as shown below. Do not connect the red wire.
+
+
+| Milk-V Duo | \<---> | USB to TTL |
+| ------------ | ------ | ---------- |
+| TX (pin 16) | \<---> | White wire |
+| RX (pin 17) | \<---> | Green wire |
+| GND (pin 18) | \<---> | Black wire |
+
+
+![duo-serial](/docs/duo/duo-serial.jpg)
+
+The default serial setting for Duo u-boot and kernel console is:
+
+```
+baudrate: 115200
+data bit: 8
+stop bit: 1
+parity : none
+flow control: none
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/swap.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/swap.md
new file mode 100644
index 00000000..729c3663
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/getting-started/swap.md
@@ -0,0 +1,165 @@
+---
+sidebar_label: 'Enable Swap'
+sidebar_position: 30
+---
+
+## 1. What is Swap
+
+Swap, also known as virtual RAM, is used to support storing data in hard disk when physical memory (RAM) is full. Sometimes Swap is also used in parallel to increase cache capacity even if the physical memory is not used up yet.
+
+:::caution
+This may cause wear and tear on your microSD card leading to a shorter drive lifespan! It is strongly recommended to enable swap functionality **only when there is insufficient memory available**!
+:::
+
+:::tip
+The Duo 256M memory is relatively large, so the default firmware does not add a Swap partition and does not support the Swap function.
+:::
+
+## 2. How to enable Swap on Duo
+
+Use the latest system image
+
+[https://github.com/milkv-duo/duo-buildroot-sdk/releases](https://github.com/milkv-duo/duo-buildroot-sdk/releases)
+
+Execute the following two commands to activate swap
+```
+mkswap /dev/mmcblk0p3
+swapon /dev/mmcblk0p3
+```
+then run `free -h` command to check if the swap is active (256M)
+
+```
+[root@milkv-duo]~# free -h
+ total used free shared buff/cache available
+Mem: 28.8M 13.6M 9.1M 76.0K 6.1M 12.4M
+Swap: 256.0M 0 256.0M
+```
+
+## 3. How to increase the size of the Swap partition
+
+The default firmware size of the Swap partition is `256M`. There are two methods to increase the Swap partition size
+
+### 1). Modify SDK and recompile to generate a new firmware
+
+You can modify the value of this [size](https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/milkv/genimage-milkv-duo.cfg#L36), and then recompile to generate the firmware
+
+You can modify the size of the Swap partition in the configuration file used to create the image, and then recompile and generate firmware. The configuration file links corresponding to each firmware are as follows:
+
+[milkv-duo](https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/device/milkv-duo/genimage.cfg#L36)
+[milkv-duo-lite](https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/device/milkv-duo-lite/genimage.cfg#L36)
+
+### 2). Directly modify using the fdisk command in Duo
+
+By connecting to Duo through a serial cable or SSH, you can use the `fdisk` command to modify it. The principle involves deleting the existing swap partition and creating a new one with the specified size
+
+:::caution
+Any modifications to the partitions can potentially lead to data loss. Before performing any partition operations, please make sure to back up your important data!
+:::
+
+The following is the step-by-step command-line interactive method using `fdisk`. If you're not familiar with this method, a script-based approach is provided later, which can be executed once to complete the modification
+
+#### The command-line interactive mode of fdisk
+
+Entering the `fdisk` command will take you into the command-line interactive mode of `fdisk`
+
+```
+fdisk /dev/mmcblk0
+```
+
+By entering the `p` command, you can view the information of the current partition on the MicroSD Card. You will be able to see that the partition `/dev/mmcblk0p3` used for `swap` is `256MB` in size
+```
+Command (m for help): p
+Disk /dev/mmcblk0: 15 GB, 15931539456 bytes, 31116288 sectors
+486192 cylinders, 4 heads, 16 sectors/track
+Units: sectors of 1 * 512 = 512 bytes
+
+Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
+/dev/mmcblk0p1 * 0,0,2 16,81,2 1 262144 262144 128M c Win95 FAT32 (LBA)
+/dev/mmcblk0p2 16,81,3 114,57,8 262145 1835008 1572864 768M 83 Linux
+/dev/mmcblk0p3 114,57,9 146,219,10 1835009 2359296 524288 256M 0 Empty
+```
+Please make a note of the `StartLBA` (starting sector) value for `/dev/mmcblk0p3`, which is `1835009`. We will need it later
+
+To delete a partition, you need to execute the `d` command and then enter the partition number you want to delete. In this case, we want to delete `/dev/mmcblk0p3`, so you should enter `3`
+```
+Command (m for help): d
+Partition number (1-4): 3
+```
+
+To create a new partition, you can use the `n` command. When prompted, choose whether to create a primary or extended partition. Since we want to create a primary partition, enter `p`. Next, enter the partition number you want to create, which is `3` for `/dev/mmcblk0p3`
+
+The following prompt `First sector` is required to enter the starting sector value of the new partition, which is the value `1835009` recorded above. You can see that this value is recognized by default in the prompt, so you can just press Enter without inputting it
+
+Finally, you will be asked to input the size of the new partition. You can either enter the ending sector value or directly specify the size of the partition. For example, if you want to allocate 1GB, you can enter `+1G` according to the prompt
+```
+Command (m for help): n
+Partition type
+ p primary partition (1-4)
+ e extended
+p
+Partition number (1-4): 3
+First sector (1835009-31116287, default 1835009):
+Using default value 1835009
+Last sector or +size{,K,M,G,T} (1835009-31116287, default 31116287): +1G
+```
+Then execute the `p` command again to check the current partition status. You will see that `/dev/mmcblk0p3` is now `1024M`, which is equivalent to `1G`
+
+Finally, execute the `w` command to save the modifications and exit the fdisk interactive mode
+```
+Command (m for help): w
+The partition table has been altered.
+Calling ioctl() to re-read partition table
+fdisk: WARNING: rereading partition table failed, kernel still uses old table: Resource busy
+```
+At this point, the partition modifications will not take effect until you execute the `reboot` command to restart the system or power cycle the device
+
+To activate Swap, you can execute the following two commands in the Duo terminal
+```
+mkswap /dev/mmcblk0p3
+swapon /dev/mmcblk0p3
+```
+Then run the command `free -h` to check if the swap has been enabled (1G, which is equivalent to 1024M)
+
+#### The script-based approach for fdisk
+
+Create a script file named `swap_resize.sh` in Duo, or create it on your PC and then upload it to Duo
+
+The contents of the `swap_resize.sh` file, please note to modify `+1G` to the desired size
+```bash
+fdisk /dev/mmcblk0 <> /etc/network/interfaces && sync
+```
+then reboot the board.
+
+Enable the 4 USB ports on the IO-Board:
+~~~
+ln -sf /mnt/system/usb-host.sh /mnt/system/usb.sh
+sync
+~~~
+then reboot the board.
+
+For example, if a USB flash drive is connected to the USB port on the IO-Board, you can use the command `ls /dev/sd*` to check if the device is detected.
+
+To mount the USB drive and view its contents in the system (taking /dev/sda1 as an example):
+```
+mkdir /mnt/udisk
+mount /dev/sda1 /mnt/udisk
+```
+Verify if the contents in the `/mnt/udisk` directory match the expectations:
+```
+ls /mnt/udisk
+```
+
+The command to unmount a USB flash drive:
+```
+umount /mnt/udisk
+```
+
+To restore the functionality of the USB network (RNDIS) when not using the IO-Board, you can follow these steps:
+```
+ln -sf /mnt/system/usb-rndis.sh /mnt/system/usb.sh
+sync
+```
+then reboot the board.
+
+## Hardware schematics
+- [Hardware schematics](https://github.com/milkv-duo/accessories/blob/master/Duo_USB%26Ethernet_IOB/duo_iob_v1.11.pdf)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/overview.md
new file mode 100644
index 00000000..801d38b4
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/overview.md
@@ -0,0 +1,153 @@
+---
+sidebar_label: '🌍 Overview'
+sidebar_position: 1
+---
+
+
+# Milk-V Duo
+
+# Duo series
+
+# Revision history
+
+| Version | Date | Changes from previous version |
+| ------- | ---------- | --------------------------------------------- |
+| 0.1 | 2023/11/24 | First version |
+| 0.2 | 2023/12/15 | Introduction of Duo 256M and Related Products |
+| 0.3 | 2023/12/27 | Introduction of Duo S and Related Products |
+
+--------------------------------------------------------------------------------------------------------
+# Introduction
+Milk-V Duo is an ultra-compact embedded development platform based on the CV1800B chip. It can run Linux and RTOS, providing a reliable, low-cost, and high-performance platform for professionals, industrial ODMs, AIoT enthusiasts, DIY hobbyists, and creators.
+
+The Milk-V Duo 256M is an upgraded version of Duo with a memory boost to 256M, catering to applications demanding larger memory capacities. It features the SG2002 computing series chip, elevating computational power to 1.0TOPS@INT8. It enables seamless switching between RISC-V/ARM architectures and supports simultaneous operation of dual systems. Additionally, it includes an array of rich GPIO interfaces such as SPI, UART, suitable for a wide range of hardware development in edge intelligent monitoring, including IP cameras, smart peephole locks, visual doorbells, and more.
+
+Milk-V Duo S is an upgraded model of Duo, featuring an upgraded SG2000 main controller with a larger 512MB memory and expanded IO capabilities. It integrates wireless capabilities with WI-FI 6/BT 5, and comes equipped with a USB 2.0 HOST interface and a 100Mbps Ethernet port for user convenience. Supporting dual cameras (2x MIPI CSI 2-lane) and MIPI video output (MIPI DSI 4-lane), it allows for versatile applications. The device also supports switching between RISC-V and ARM boot through a switch. With enhanced functionality, Duo S is better suited for a variety of scenarios with more complex project development requirements.
+
+# Specification
+| | [Duo](/docs/duo/getting-started/duo) | [Duo 256M](/docs/duo/getting-started/duo256m) | [Duo S](/docs/duo/getting-started/duos) |
+| -------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
+| Overview | | | |
+| SoC | CVITEK CV1800B | SG2002 | SG2000 |
+| RISC-V CPU | C906@1Ghz + C906@700MHz | C906@1Ghz + C906@700MHz | C906@1Ghz + C906@700MHz |
+| Arm CPU | N/A | 1 x Cortex-A53@1GHz | 1 x Cortex-A53@1GHz |
+| MCU | 8051@8KB SRAM | 8051@6KB SRAM | 8051@6KB SRAM |
+| TPU | 0.5TOPS@INT8 | 1Top@INT8 | 0.5Top@INT8 |
+| Storage | 1 x microSD connector or 1x SD NAND on board | 1 x microSD connector or 1x SD NAND on board | 1 x microSD connector, 1x eMMC Pad on board |
+| Memory | SIP DRAM 64MB | SIP DRAM 256MB | SIP DRAM 512MB |
+| USB | 1 x Type-C for power and data, USB Pads available | 1 x Type-C for power and data, USB Pads available | 1 x Type-C for power and data or 1x USB 2.0 A Port HOST |
+| CSI | 1 x 16P FPC connector (MIPI CSI 2-lane) | 1 x 16P FPC connector (MIPI CSI 2-lane) | 1x 16P FPC connector (MIPI CSI 2-lane),1x 15P FPC connector (MIPI CSI 2-lane) |
+| Sensor Support | 4M @ 25fps | 5M @ 30fps | 5M @ 30fps |
+| Ethernet | 100Mbps ethernet with PHY | 100Mbps ethernet with PHY | 100Mbps ethernet port(RJ45) onboard |
+| Wireless | N/A | N/A | Optional WIFI6 / BT5.4 onboard |
+| Audio | N/A | Via GPIO Pads | Via GPIO Header |
+| Display | N/A | N/A | Via GPIO Header (MIPI DSI 4-lane) |
+| GPIO | up to 26 Pins available for general purpose I/O(GPIO) | up to 26 Pins available for general purpose I/O(GPIO) | Up to 39x GPIO Pin (Via 2x 26Pin GPIO Header) |
+| Power | 5V/1A | 5V/1A | 5V/1A |
+| OS Support | Buildroot, RTOS | Buildroot, RTOS | Buildroot, RTOS |
+| Size | 21mm*51mm | 21mm*51mm | 43mm x 43mm |
+| Others | N/A | N/A | 1x BOOT swich, 1x Recovery Key, 1x RST Key |
+
+
+# Features
+
+## Processor
+
+### CV1800B (Duo)
+- 1GHz and 700MHz RISC-V C906 processors
+- Integrated CVITEK TPU for smart detection.
+- SIP DRAM 64MB
+- Supports H.264/H.265 video encoding, up to 2880x1620@20fps.
+- Compatible with high-definition CMOS sensors.
+- Programmable frequency output for sensor clock.
+- Comprehensive ISP features for image optimization.
+- Partial OpenCV library support with CV hardware acceleration.
+- 16-bit audio codec with built-in mic input and output functions.
+- Flexible network configurations with 1 Ethernet PHY.
+
+### SG2002 (Duo 256M)
+- 1GHz and 700MHz RISC-V C906 processors
+- **Optional T-Head C906@1GHz or Cortex-A53@1GHz**
+- Integrated **1TOPS@INT8** TPU for smart detection.
+- SIP DRAM 256MB
+- Supports H.264/H.265 video encoding, up to **5M@30fps**.
+- Compatible with high-definition CMOS sensors.
+- Support Multiple storage devices via SPI-NOR, SPI-NAND, eMMC5.0, 2 x SDIO3.0 interfaces
+- Comprehensive ISP features for image optimization.
+- Partial OpenCV library support with CV hardware acceleration.
+- 16-bit audio codec with built-in mic input and output functions.
+- 2L MIPI DSI 5M@30fps
+- 4L or 2L+2L MIPI CSI 5M@30fps
+- Flexible network configurations with 1 Ethernet PHY.
+- QFN88
+
+### SG2000 (Duo S)
+- 1GHz and 700MHz RISC-V C906 processors
+- **Optional T-Head C906@1GHz or Cortex-A53@1GHz**
+- Integrated 0.5TOPS@INT8 TPU for smart detection.
+- SIP DRAM 512MB
+- Supports H.264/H.265 video encoding, up to **5M@30fps**.
+- Compatible with high-definition CMOS sensors.
+- Support Multiple storage devices via SPI-NOR, SPI-NAND, eMMC5.0, 2 x SDIO3.0 interfaces
+- Comprehensive ISP features for image optimization.
+- Partial OpenCV library support with CV hardware acceleration.
+- 16-bit audio codec with built-in mic input and output functions.
+- 2L MIPI DSI 5M@30fps
+- 4L or 2L+2L MIPI CSI 5M@30fps
+- Flexible network configurations with 1 Ethernet PHY.
+- LFBGA
+
+## CSI-2 (MIPI serial camera)
+- Features a 16-pin FPC interface for 2-lane MIPI camera input.
+- Operates I2C, CLK, and RST signals at a 1.8V voltage level.
+
+## Ethernet
+- Milk-V Duo includes CV1800B chip with a 100Mbps PHY.
+- PHY is linked to a 5-pin solder pad.
+- External transformer and RJ45 socket are needed for Ethernet use.
+
+## USB
+- USB 2.0 compliant, backward compatible with USB 1.1.
+- Supports various speed modes, Host/Device functionality, and transfer protocols.
+- Expandable interfaces via USB Hub (up to 127 devices).
+- Power-saving mode, supports HID devices.
+- Functions as USB slave device with configurable software.
+- USB Type-C for storage media access.
+
+## Micro SD
+- SDIO0 is compatible with Secure Digital Memory (SD 3.0) protocol.
+
+## GPIO
+- Up to 26 GPIO pins on the MilkV-Duo 40-pin header provide access to internal peripherals such as SDIO, I2C, PWM, SPI, J-TAG, and UART.
+- Up to 3x I2C
+- Up to 5x UART
+- Up to 1x SDIO1
+- Up to 1x SPI
+- Up to 2x ADC
+- Up to 7x PWM
+- Up to 1x RUN
+- Up to 1x JTAG
+![pinoutv1.2](/docs/duo/pinout.webp)
+
+
+## Board Specifications
+- Single-sided PCB
+- Dimensions: 51×21mm
+- Thickness: 1mm
+- Type-C port located on the top edge
+- Dual castellated/through-hole pins around the remaining edges
+- Can be used as a surface mount module or in Dual Inline Package (DIP) format
+- 40 main user pins on a 2.54mm (0.1") pitch grid with 1mm holes
+- Compatible with veroboard and breadboard
+
+## Quick Start
+[Image download](https://github.com/milkv-duo/duo-buildroot-sdk/releases)
+
+[How to build image](https://milkv.io/docs/duo/getting-started/buildroot-sdk)
+
+[Hardware Doc](https://github.com/milkv-duo/duo-files)
+
+[Chip datasheet](https://github.com/sophgo/sophgo-doc/releases)
+
+## Support
+For support please post your issue on the [Milk-V Community Duo Category](https://community.milkv.io/c/duo/5).
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/_category_.json
new file mode 100644
index 00000000..b5494470
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🧰 Resources",
+ "position": 90,
+ "link": {
+ "type": "generated-index",
+ "slug": "/duo/resources",
+ "description": "Useful Resources"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/image-sdk.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/image-sdk.md
new file mode 100644
index 00000000..71cc7ccd
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/image-sdk.md
@@ -0,0 +1,43 @@
+---
+sidebar_label: 'Official Image and SDK '
+sidebar_position: 10
+---
+
+# Official Image and SDK
+
+## Image
+
+- **(Latest)** [milkv-duo-xxx.img.zip](https://github.com/milkv-duo/duo-buildroot-sdk/releases/)
+
+ Root password: milkv
+ Login via RNDIS using ssh:
+ ~~~
+ ssh root@192.168.42.1
+ ~~~
+ If you want to disable LED blinking:
+ ```
+ mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync
+ ```
+ then reboot the board
+
+ This means renaming the LED blinking script, and after restarting the Duo, the LED will no longer blink
+
+ If you want to restore LED blinking, rename it back to its original name and restart the device
+ ```
+ mv /mnt/system/blink.sh_backup /mnt/system/blink.sh && sync
+ ```
+ then reboot the board
+
+ [Use IO-Board](https://milkv.io/docs/duo/io-board/usb-ethernet-iob)
+
+
+## SDK
+
+### Milk-V Duo Official buildroot SDK
+
+duo-buildroot-sdk [https://github.com/milkv-duo/duo-buildroot-sdk](https://github.com/milkv-duo/duo-buildroot-sdk)
+
+### Milk-V Duo Official C/C++ examples
+
+duo-examples [https://github.com/milkv-duo/duo-examples](https://github.com/milkv-duo/duo-examples
+)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/mainline.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/mainline.md
new file mode 100644
index 00000000..9ad0dd0e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/mainline.md
@@ -0,0 +1,37 @@
+---
+sidebar_label: 'Mainline Status'
+sidebar_position: 5
+---
+
+# Mainline Status
+
+Milk-V Duo upstream work is actively developed by the community members. The latest update can be found on the [Sophgo linux wiki](https://github.com/sophgo/linux/wiki). A summary of current status (as 2024 Feb) is as below:
+
+
+## Milk-V Duo family
+
+| Component | Patch Submitted Date | Status | Link | In mainline since version x |
+|----------------|----------------------|--------------|----------|-----------------------------|
+| Minimal | Oct/6/2023 | Accepted | [v2][4] | 6.7 |
+| Clock | Jan/14/2024 | Under Review | [v6][5] | N/A |
+| Reset | Nov/13/2023 | Under Review | [v1][6] | N/A |
+| eFuse | Nov/19/2023 | Under Review | [v1][7] | N/A |
+| RTC | Jan/22/2024 | Under Review | [v7][8] | N/A |
+| Timer | Jan/25/2024 | Under Review | [v2][9] | N/A |
+| Watchdog | Jan/25/2024 | Under Review | [v2][10] | N/A |
+| PinCtrl | Nov/13/2024 | Under Review | [v1][11] | N/A |
+| SPI & I2C | Feb/8/2024 | Under Review | [v2][12] | N/A |
+| PWM | Feb/7/2024 | Under Review | [v1][13] | N/A |
+
+
+[4]:https://lore.kernel.org/linux-riscv/20231006121449.721-1-jszhang@kernel.org/
+[5]:https://lore.kernel.org/linux-riscv/IA1PR20MB4953C774D41EDF1EADB6EC18BB6D2@IA1PR20MB4953.namprd20.prod.outlook.com/
+[6]:https://lore.kernel.org/linux-riscv/20231113005503.2423-1-jszhang@kernel.org/
+[7]:https://lore.kernel.org/linux-riscv/20231119131332.999-1-jszhang@kernel.org/
+[8]:https://lore.kernel.org/linux-riscv/20240122080500.2621-1-qiujingbao.dlmu@gmail.com/
+[9]:https://lore.kernel.org/linux-riscv/DM6PR20MB23167ABF18C1F004A5710D4FAB7A2@DM6PR20MB2316.namprd20.prod.outlook.com/
+[10]:https://lore.kernel.org/linux-riscv/DM6PR20MB2316366FC9ADCBC7B6E9C289AB7A2@DM6PR20MB2316.namprd20.prod.outlook.com/
+[11]:https://lore.kernel.org/linux-riscv/20231113005702.2467-1-jszhang@kernel.org/
+[12]:https://lore.kernel.org/linux-riscv/IA1PR20MB49539A9C5F5CFF6644ED2C2ABB442@IA1PR20MB4953.namprd20.prod.outlook.com/
+[13]:https://lore.kernel.org/linux-riscv/20240207055856.672184-1-qiujingbao.dlmu@gmail.com/
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/mmf.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/mmf.md
new file mode 100644
index 00000000..ff22fdbf
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/mmf.md
@@ -0,0 +1,253 @@
+---
+sidebar_label: 'Cvitek MMF SDK'
+sidebar_position: 20
+---
+
+# Cvitek Reference Documentation
+
+Below is the list of the Cvitek CV180x / CV181x MMF SDK Reference Documentation provided by Cvitek.
+
+
+
+
+ Chinese Version(中文版) |
+ 格式 |
+ English Version |
+ Format |
+
+
+
+
+ CIPHER API 参考 |
+ html |
+ pdf |
+ CIPHER API Reference |
+ html |
+ pdf |
+
+
+ IVE软件开发指南 |
+ html |
+ pdf |
+ IVE API Reference |
+ html |
+ pdf |
+
+
+ LDC_调试指南 |
+ html |
+ pdf |
+ LDC Debugging Guide |
+ html |
+ pdf |
+
+
+ MIPI使用指南 |
+ html |
+ pdf |
+ MIPI User Guide |
+ html |
+ pdf |
+
+
+ MIPI屏幕时钟时序计算器 |
+ html |
+ pdf |
+ Clock Timing Calculator for MIPI Panels |
+ html |
+ pdf |
+
+
+ Sensor调试指南 |
+ html |
+ pdf |
+ Sensor Debugging Guide |
+ html |
+ pdf |
+
+
+ 开机画面使用指南 |
+ html |
+ pdf |
+ Startup Screen User Guide |
+ html |
+ pdf |
+
+
+ MMF媒体软件开发指南 |
+ html |
+ pdf |
+ Media Processing Software Development Reference |
+ html |
+ pdf |
+
+
+ 屏幕对接使用指南 |
+ html |
+ pdf |
+ Screen Docking Guide |
+ html |
+ pdf |
+
+
+ 芯片码率控制使用说明 |
+ html |
+ pdf |
+ Bit Rate Control Application Notes |
+ html |
+ pdf |
+
+
+ 智能编码使用指南 |
+ html |
+ pdf |
+ Smart Coding User Guide |
+ html |
+ pdf |
+
+
+ 音频质量调试指南 |
+ html |
+ pdf |
+ Audio Quality (VQE_AEC) Tuning Guide |
+ html |
+ pdf |
+
+
+ SDK编译及使用说明 |
+ html |
+ pdf |
+ SDK Compilation and Usage Guide |
+ html |
+ pdf |
+
+
+ Flash 分区工具使用指南 |
+ html |
+ pdf |
+ Cvitek Flash Partition Tool User Guide |
+ html |
+ pdf |
+
+
+ 裸烧与非裸烧升级使用手册 |
+ html |
+ pdf |
+ Cvitek Bare and Non-Bare Chip Burning Upgrade Operation Guide |
+ html |
+ pdf |
+
+
+ eFuse 使用指南 |
+ html |
+ pdf |
+ eFuse User Guide |
+ html |
+ pdf |
+
+
+ Linux 开发环境用户指南 |
+ html |
+ pdf |
+ Linux Development Environment User Guide |
+ html |
+ pdf |
+
+
+ SDK 二次开发网络安全注意事项 |
+ html |
+ pdf |
+ Cyber Security Precautions for SDK Secondary Development |
+ html |
+ pdf |
+
+
+ SPI NAND 烧录器预烧手册 |
+ html |
+ pdf |
+ SPI NAND Programmer Burn-in User Guide |
+ html |
+ pdf |
+
+
+ U-boot 移植应用开发指南 |
+ html |
+ pdf |
+ U-boot Porting Development Guide |
+ html |
+ pdf |
+
+
+ Wi-Fi使用指南 |
+ html |
+ pdf |
+ Wi-Fi User Guide |
+ html |
+ pdf |
+
+
+ 安全启动使用指南 |
+ html |
+ pdf |
+ Secure Boot User Guide |
+ html |
+ pdf |
+
+
+ 外围设备驱动操作指南 |
+ html |
+ pdf |
+ Peripheral Driver Operation Guide |
+ html |
+ pdf |
+
+
+ RTC 操作指南 |
+ html |
+ pdf |
+ RTC Application Guide |
+ html |
+ pdf |
+
+
+ ISP 开发参考 |
+ html |
+ pdf |
+ ISP Development Reference |
+ html |
+ pdf |
+
+
+ 图像调优指南 |
+ html |
+ pdf |
+ ISP Tuning Guide |
+ html |
+ pdf |
+
+
+ 图像质量调试工具使用指南 |
+ html |
+ pdf |
+ PQ Tools User Guide |
+ html |
+ pdf |
+
+
+ MIPI 屏幕时钟时序计算器 |
+ html |
+ pdf |
+ Clock Timing Calculator for MIPI Panels |
+ html |
+ pdf |
+
+
+ 量产烧写使用指南 |
+ html |
+ pdf |
+ Production Burning User Guide |
+ html |
+ pdf |
+
+
+
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/opencv-mobile.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/opencv-mobile.md
new file mode 100644
index 00000000..a6eaf044
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/opencv-mobile.md
@@ -0,0 +1,491 @@
+---
+sidebar_label: 'OpenCV Mobile'
+sidebar_position: 30
+---
+
+## Introduction
+
+**opencv-mobile** is a lightweight version of the OpenCV library that minimizes the compilation of OpenCV by adjusting compilation parameters and removing certain portions of the OpenCV source code.
+
+opencv-mobile provides commonly used functionalities of OpenCV, such as image processing, matrix operations, and more. It stays synchronized with the upstream version and has no third-party dependencies. In the majority of cases, it can seamlessly replace the official OpenCV with only 1/10th of the size, making it particularly suitable for mobile and embedded environments with specific size requirements.
+
+Source code package size comparison:
+| OpenCV 4.9.0 | The Official OpenCV | opencv-mobile |
+|:-:|:-:|:-:|
+| source zip | 93 MB | 10.7 MB |
+| android | 242 MB | 18.1 MB |
+| ios | 202 MB | 10.0 MB |
+| ios+bitcode | missing :( | 34.5 MB |
+
+Project link: [https://github.com/nihui/opencv-mobile](https://github.com/nihui/opencv-mobile) | Thanks to `nihui`!
+
+:::tip
+opencv-mobile already supports hardware-accelerated JPG decoding and VPSS (Video Processing Subsystem) hardware acceleration on Milk-V Duo/Duo256M/DuoS.
+:::
+
+## 1. Quick start
+
+We can directly download its release precompiled package to test basic functions or carry out application development.
+
+A [test example](https://github.com/nihui/opencv-mobile/blob/master/test/main.cpp) is provided in the project source code, demonstrates how to use opencv-mobile to load images, zoom, and save images.
+
+Taking this test program as an example, we will introduce the compilation method of opencv-mobile in Linux environment and how to run it on Milk-V Duo.
+
+### Download pre-compiled package for Milk-V Duo
+
+The release link of opencv-mobile:
+[https://github.com/nihui/opencv-mobile/releases](https://github.com/nihui/opencv-mobile/releases)
+
+Download the latest pre-compiled package of Milk-V Duo: [opencv-mobile-4.9.0-milkv-duo.zip](https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.9.0-milkv-duo.zip)
+
+### Create a new test program directory
+
+Create a new directory `picture-resize` and enter it:
+```bash
+mkdir picture-resize
+cd picture-resize
+```
+
+Extract the pre-compiled package downloaded to the current directory:
+```bash
+unzip ../opencv-mobile-4.9.0-milkv-duo.zip
+```
+
+### Create code file
+
+Create a new file named `main.cpp`:
+
+```bash
+vi main.cpp
+```
+
+Add the following:
+```cpp
+#include
+#include
+#include
+
+int main()
+{
+ cv::Mat bgr = cv::imread("in.jpg", 1);
+
+ cv::resize(bgr, bgr, cv::Size(200, 200));
+
+ cv::imwrite("out.jpg", bgr);
+
+ return 0;
+}
+```
+
+Its function is to scale an image named `in.jpg` to a size of `200x200` and then output it as an `out.jpg` file.
+
+### Create CMakeLists.txt
+
+To compile using cmake, you need to create a CMakeLists.txt file:
+```bash
+vi CMakeLists.txt
+```
+
+The content is as follows:
+```makefile
+project(opencv-mobile-test)
+cmake_minimum_required(VERSION 3.5)
+set(CMAKE_CXX_STANDARD 11)
+
+set(CMAKE_C_COMPILER "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-gcc")
+set(CMAKE_CXX_COMPILER "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-g++")
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d")
+
+set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/opencv-mobile-4.9.0-milkv-duo/lib/cmake/opencv4")
+find_package(OpenCV REQUIRED)
+
+add_executable(opencv-mobile-test main.cpp)
+
+target_link_libraries(opencv-mobile-test ${OpenCV_LIBS})
+```
+
+There are three variables that need to be noted and configured according to your own file path:
+- **OpenCV_DIR**: The directory corresponding to the precompiled package previously extracted to the current directory. Pay attention to the version number in the path.
+- **CMAKE_C_COMPILER**: The path to gcc in the cross-compilation tool chain.
+- **CMAKE_CXX_COMPILER**: The path to g++ in the cross-compilation tool chain
+
+Download link for cross-compilation toolchain: [host-tools.tar.gz](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz). You can download it through the wget command then unzip:
+```bash
+wget https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz
+tar -xf host-tools.tar.gz
+```
+
+If you have ever compiled [duo-buildroot-sdk](https://github.com/milkv-duo/duo-buildroot-sdk), the `host-tools` directory under its root directory is the directory of the cross-compilation toolchain. There is no need to re-download it. You can directly modify `OpenCV_DIR` and specify it to this directory. Or create a soft link pointing to the directory.
+
+### Compile
+
+Compiling in cmake mode will create some intermediate directories and files, so we create a new `build` directory and enter this directory to complete it:
+```bash
+mkdir build
+cd build
+cmake ..
+make
+```
+The normal compilation output is as follows:
+```bash
+$ make
+[ 50%] Building CXX object CMakeFiles/opencv-mobile-test.dir/main.cpp.o
+[100%] Linking CXX executable opencv-mobile-test
+[100%] Built target opencv-mobile-test
+```
+The `opencv-mobile-test` generated in the current `build` directory is the test program:
+```bash
+$ ls
+CMakeCache.txt CMakeFiles cmake_install.cmake Makefile opencv-mobile-test
+```
+
+The directory structure at this time is as follows:
+```
+picture-resize/ # Test program root directory
+├── build # Compile output directory
+├── CMakeLists.txt # CMake configuration file
+├── host-tools # Duo cross-compilation tool chain directory
+├── main.cpp # Test program source code file
+└── opencv-mobile-4.9.0-milkv-duo/ # opencv-mobile precompiled library directory
+```
+
+Transfer the generated `opencv-mobile-test` program to Duo through the `scp` command:
+```bash
+scp opencv-mobile-test root@192.168.42.1:/root/
+```
+Then transfer a `jpg` picture with a size of `1024x1024` for testing to Duo:
+```bash
+scp in.jpg root@192.168.42.1:/root/
+```
+
+`in.jpg`:
+
+
+
+### Run the test program in Duo
+
+:::caution
+For Duo firmware, please temporarily use the version [V1.0.8](https://github.com/milkv-duo/duo-buildroot-sdk/releases/tag/Duo-V1.0.8)
+:::
+
+Log in to the Duo terminal through the serial port or ssh and enter the /root/ directory:
+```bash
+cd /root/
+```
+
+Add executable permissions to opencv-mobile-test:
+```bash
+chmod +x opencv-mobile-test
+```
+
+Run the test program:
+```bash
+./opencv-mobile-test
+```
+
+If you encounter an `OOM` error, it may be that the image resolution is too large and the memory usage exceeds the available memory of Duo. It is normal to change the image to a smaller size.
+```
+Out of memory: Killed process 3718 (opencv-mobile-t) total-vm:31168kB, anon-rss:11384kB, file-rss:4kB, shmem-rss:0kB, UID:0
+```
+
+Use the `ls` command to check whether the `out.jpg` file is generated in the current directory:
+```
+[root@milkv-duo]~# ls
+in.jpg opencv-mobile-test out.jpg
+```
+
+Use the `scp` command on the computer to retrieve the `out.jpg` file locally and check whether the size is 200x200:
+```bash
+scp root@192.168.42.1:/root/out.jpg .
+```
+
+## 2. Hardware accelerated JPG decoding test
+
+opencv-mobile already supports hardware-accelerated JPG decoding in Milk-V Duo
+
+1. The opencv-mobile highgui module dynamically loads the cvi library and JPG hardware decoding at runtime
+2. No need to modify the code, cv::imread() and cv::imdecode() are automatically supported
+3. Supports EXIF auto-rotation and direct decoding to grayscale
+4. Speeded up by 5~11 times!
+
+### Test example
+
+To verify the actual effect of JPG hardware acceleration, you can also use the previous sample program that scales the jpg file to 200x200, and use the opencv-mobile precompiled package without JPG hardware acceleration and the precompiled package with JPG hardware acceleration to generate test programs, compare by its running time on Duo.
+
+Pre-compiled package without JPG hardware acceleration: [opencv-mobile-4.8.0-milkv-duo.zip
+](https://github.com/nihui/opencv-mobile/releases/download/v19/opencv-mobile-4.8.0-milkv-duo.zip)
+
+Pre-compiled package with JPG hardware acceleration: [opencv-mobile-4.9.0-milkv-duo.zip
+](https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.9.0-milkv-duo.zip)
+
+Use two pre-compiled packages to compile `opencv-mobile-test` respectively and transfer them to Duo for running. I tested it in Duo-256M here. `in.jpg` uses a picture with a resolution of 3000x3000 and a size of 3.2M jpg image.
+
+```
+[root@milkv-duo]~# time ./opencv-mobile-test-4.8.0
+real 0m 2.56s
+user 0m 2.31s
+sys 0m 0.24s
+```
+```
+[root@milkv-duo]~# time ./opencv-mobile-test-4.9.0
+this device is not whitelisted for jpeg encoder rkmpp
+real 0m 0.37s
+user 0m 0.13s
+sys 0m 0.14s
+```
+It can be seen that the running time without JPG hardware acceleration is `2.56s`, and the running time with JPG hardware acceleration is only `0.37s`, which is about `6.92` times.
+
+### Some details and limitations
+
+#### Load cvi-mmf dynamic library at runtime
+
+In order to reduce compilation coupling, opencv-mobile uses the runtime dlopen/dlsym method to load libsys libvpu libae libawb libisp libcvi_bin libsns_gc2083. Even if the library is missing during compilation, it is still compatible and available.
+
+This method can also automatically adapt to later system library upgrades.
+
+#### Whitelist
+
+The optimized code was verified and tested on Milk-V Duo / Milk-V Duo-256M.
+
+When loading the cvi-mmf library, it is additionally determined whether /proc/device-tree/model is a Milk-V Duo device, and can automatically fall back to the non-optimized version on other devices.
+
+#### Avoid special resolutions
+
+During the test, it was found that for ultra-small (2x2) and ultra-large (4096x4096) resolutions, pictures often get damaged or the content is garbled, encoding errors occur, and even the device is killed due to insufficient memory.
+
+Therefore, for the following special circumstances, it will automatically fall back to the non-optimized version:
+
+- w or h is not a multiple of 2
+- w or h is less than 8
+
+#### Pitfalls in the decoding process and vpss alignment
+
+1. Read jpg file into memory
+2. Parse the jpg header and obtain w h channel number sampling method EXIF and other information
+3. cvi-mmf prepares 3 vbuffers for decoded vb, rotated vb, and BGR-converted vb
+4. vdec decodes to yuv444/yuv422/yuv420/y
+5. vpss does the rotation and yuv converts to nv12
+6. vpss does nv12 to bgr conversion
+
+Among them, the ** test found that vpss has higher requirements for data alignment. It will happen that the data decoded by vdec is 64bytes aligned, while vpss requires the data to be 128bytes aligned**.
+
+In some sizes that are not multiples of 128, decoding failure or decoded image data errors may occur:
+
+![opencv-mobile](/docs/duo/opencv-mobile_02.webp)
+
+So I made a hack in the middle of vdec->vpss. After vdec decoding and before vpss processing, I reset the phyaddr value and re-memmove the UV channel data to meet the alignment requirements of vpss.
+
+If it is decoded to grayscale, vpss will directly treat yuv as y, which can accelerate the rotation.
+
+Overall, the jpg decoding process is much more complicated than encoding, and there are more situations to consider.
+
+#### 8 rotation directions
+
+vdec can only be configured to output flip/mirror, and with vpss it can only do 90/180/270 rotation, and can combine 8 rotation directions.
+
+**Since vpss can only rotate nv12 data, the uv channel decoded by yuv444 will inevitably be downsampled, which is detrimental to the picture quality**.
+
+**Yuv422 vertical and progressive are not supported**.
+
+During the test, it was found that yuv422 horizontal jpg can be decoded normally, but yuv422 vertical jpg is decoded incorrectly by vdec. This type of jpg will automatically fall back to software decoding.
+
+Additionally, progressive jpgs are not supported.
+
+#### Performance Testing
+
+The test reads the image in advance and repeatedly calls cv::imdecode() to decode JPG to eliminate interference from file reading and writing, and the fastest time-consuming statistics are obtained.
+
+Test jpg files in four color spaces of YUV444 YUV422 YUV420 GRAY with a resolution of 720p, and jointly test the decoding process of rotating 90 degrees according to EXIF.
+
+Test cv::Mat decoded to BGR and grayscale respectively.
+
+Tested on Milk-V Duo and Milk-V Duo-256M.
+
+Test results show that cvi-mmf hardware-accelerated JPG decoding has greatly improved.
+
+![opencv-mobile](/docs/duo/opencv-mobile_03.webp)
+
+![opencv-mobile](/docs/duo/opencv-mobile_04.webp)
+
+![opencv-mobile](/docs/duo/opencv-mobile_05.webp)
+
+![opencv-mobile](/docs/duo/opencv-mobile_06.webp)
+
+## 3. VPSS hardware acceleration test
+
+opencv-mobile now supports Milk-V Duo/Duo256M/DuoS MIPI CSI cameras and VPSS hardware acceleration.
+
+- The opencv-mobile highgui module implements access to camera streams based on cvi-mmf
+- Automatically and dynamically load the ae+awb+isp+cvi_bin library at runtime to implement ISP image adjustment
+- Automatically and dynamically load the vpss library at runtime to implement crop + YUV2BGR hardware acceleration
+- There is no need to modify the code, calling cv::VideoCapture will automatically support it and support setting the resolution.
+- Currently only supports Milk-V’s official GC2083 camera
+
+### Test example
+
+- Use cv::VideoCapture to open the camera and set the resolution to 320x240
+- Get 1 frame of image every 1 second
+- Turn off camera
+- Finally, stitch the 9 pictures together and save them
+
+The first frame is black because the ISP is still counting image information and it is too late for the ISP to automatically process it.
+
+Sample code:
+```cpp
+#include
+#include
+#include
+
+#include // sleep()
+
+int main()
+{
+ cv::VideoCapture cap;
+ cap.set(cv::CAP_PROP_FRAME_WIDTH, 320);
+ cap.set(cv::CAP_PROP_FRAME_HEIGHT, 240);
+ cap.open(0);
+
+ const int w = cap.get(cv::CAP_PROP_FRAME_WIDTH);
+ const int h = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
+ fprintf(stderr, "%d x %d\n", w, h);
+
+ cv::Mat bgr[9];
+ for (int i = 0; i < 9; i++)
+ {
+ cap >> bgr[i];
+
+ sleep(1);
+ }
+
+ cap.release();
+
+ // combine into big image
+ {
+ cv::Mat out(h * 3, w * 3, CV_8UC3);
+ bgr[0].copyTo(out(cv::Rect(0, 0, w, h)));
+ bgr[1].copyTo(out(cv::Rect(w, 0, w, h)));
+ bgr[2].copyTo(out(cv::Rect(w * 2, 0, w, h)));
+ bgr[3].copyTo(out(cv::Rect(0, h, w, h)));
+ bgr[4].copyTo(out(cv::Rect(w, h, w, h)));
+ bgr[5].copyTo(out(cv::Rect(w * 2, h, w, h)));
+ bgr[6].copyTo(out(cv::Rect(0, h * 2, w, h)));
+ bgr[7].copyTo(out(cv::Rect(w, h * 2, w, h)));
+ bgr[8].copyTo(out(cv::Rect(w * 2, h * 2, w, h)));
+
+ cv::imwrite("out.jpg", out);
+ }
+
+ return 0;
+}
+```
+
+Similarly, refer to the method in the previous [Quick Start](#1-quick-start) to transfer other compiled files to Duo to execute the `./opencv-mobile-test` command:
+
+:::tip
+- The camera needs to be connected before Duo is powered on
+- When the command is executed, the camera direction can be rotated to capture different images until the program ends
+:::
+
+```
+[root@milkv-duo]~# ./opencv-mobile-test
+this device is not whitelisted for jpeg encoder rkmpp
+this device is not whitelisted for capture v4l2 rkaiq
+this device is not whitelisted for capture v4l2 rkaiq
+ISP Vipipe(0) Allocate pa(0x8bf30000) va(0x0x3fe7c50000) size(291120)
+awbInit ver 6.8@2021500
+0 R:1400 B:3100 CT:2850
+1 R:1500 B:2500 CT:3900
+2 R:2300 B:1600 CT:6500
+Golden 1024 1024 1024
+WB Quadratic:0
+isWdr:0
+ViPipe:0,===GC2083 1080P 30fps 10bit LINE Init OK!===
+binName = /mnt/cfg/param/cvi_sdr_bin
+********************************************************************************
+cvi_bin_isp message
+gerritId: 36403 commitId: c69c5863e
+md5: cab880835a2ad5184de5ed7762404b84
+sensorNum 1
+sensorName0 2083
+
+PQBIN message
+gerritId: 80171 commitId: 5c9d8fc5d
+md5: ba5a510e093ad42db6788e6c2d13169e
+sensorNum 3
+sensorName0 2053
+
+author: wanqiang.he desc: 思博慧CV1812H_GC2083_RGB_mode_V1.0.0
+createTime: 2023-08-04 16:48:08version: V1.1
+tool Version: v3.0.5.24 mode:
+********************************************************************************
+sensorName(0) mismatch, mwSns:2083 != pqBinSns:2053
+320 x 240
+0 R:1165 B:3087 CT:2688
+1 R:1464 B:2327 CT:3937
+2 R:1974 B:1613 CT:7225
+Golden 1464 1024 2327
+wdrLEOnly:1
+ISP Vipipe(0) Free pa(0x8bf30000) va(0x0x3fe7c50000)
+gc2083_standby
+```
+After successful operation, a picture `out.jpg` composed of 9 frames of images will be generated.
+```
+[root@milkv-duo]~# ls
+opencv-mobile-test out.jpg
+```
+
+Use the `scp` command on your computer to retrieve the `out.jpg` file locally:
+```bash
+scp root@192.168.42.1:/root/out.jpg .
+```
+
+View the generated image `out.jpg`:
+
+![opencv-mobile-out](/docs/duo/opencv-mobile-out.jpg)
+
+### Some details and limitations
+
+#### Load cvi-mmf dynamic library at runtime
+
+In order to reduce compilation coupling, opencv-mobile uses the runtime dlopen/dlsym method to load libsys libvpu libae libawb libisp libcvi_bin libsns_gc2083. Even if the library is missing during compilation, it is still compatible and available.
+
+This method can also automatically adapt to later system library upgrades.
+
+#### Device detection and whitelisting
+
+The optimized code was verified and tested on Milk-V Duo / Milk-V Duo-256M.
+
+When loading the cvi-mmf library, additionally determine whether /proc/device-tree/model is a Milk-V Duo device
+
+Milk-V Duo and Milk-V Duo-256M cvi-mmf interface are source code compatible, but in fact the sns ini configuration files are different. If used incorrectly, image frames cannot be obtained normally and an error will be reported.
+```
+isp_err_chk:6343(): CSIBDG_A CH0 frm height less than setting(1080)
+```
+
+Distinguish two models according to the model information, and resume work after loading the corresponding configuration:
+
+- Milk-V Duo: [sensor_cfg_gc2083.ini](https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/device/milkv-duo/overlay/mnt/data/sensor_cfg_gc2083.ini)
+- Milk-V Duo-256M:[sensor_cfg_gc2083.ini](https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/device/milkv-duo256m/overlay/mnt/data/sensor_cfg_GC2083.ini)
+
+#### Resolution adaptive
+
+The native camera resolution is 1920x1080 30fps.
+
+- If the user request size exceeds 1080p, the size will be automatically reduced to within the 1080p range while maintaining the ratio
+- If the user requests less than 1080p, it will be automatically cropped in the center and kept scaled down to the required resolution
+
+![opencv-mobile-scale](/docs/duo/opencv-mobile_01.webp)
+
+#### vb memory pool number
+
+Although in theory, one memory block can be reused all the time to provide NV21 with frame fetching, but during testing it was found that when there are too few vb memory blocks, a vb memory exhaustion error will occur, resulting in the inability to fetch frames normally after a period of time.
+
+Refer to the cvi-mmf sample code to open up 4 memory blocks for storing NV21 data, so that the problem of vb exhaustion will no longer occur.
+
+## Reference link
+
+1. [opencv-mobile 现已支持 milkv-duo/duo256m MIPI CSI 摄像头和vpss硬件加速](https://zhuanlan.zhihu.com/p/677764814)
+2. [opencv-mobile 现已支持 milkv-duo cvi-mmf 硬件加速 JPG 解码](https://zhuanlan.zhihu.com/p/673940312)
+3. [opencv-mobile (迷你版opencv库)在 milkv-duo 上的移植和应用](https://zhuanlan.zhihu.com/p/653359280)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/spilvgl.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/spilvgl.md
new file mode 100644
index 00000000..c4ec827f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/spilvgl.md
@@ -0,0 +1,235 @@
+---
+sidebar_label: 'SPI Display LVGL'
+sidebar_position: 60
+---
+
+# Introduction
+
+This example runs on a Duo device, using a 240x320 resolution SPI interface display to run the LVGL test program.
+
+You need to prepare the Milk-V Duo development board (or Duo256M), SD card, and an ST7789V chip LCD screen. The full-color 2.4-inch screen used here has a resolution of 240*320 and the interface method is SPI. You can choose different ones as needed. size screen. For screens with different resolutions, please note that the following configurations should be modified accordingly.
+
+
+
+## Bring up the SPI display
+
+### Compile firmware
+
+Get the official SDK: [https://github.com/milkv-duo/duo-buildroot-sdk.git](https://github.com/milkv-duo/duo-buildroot-sdk.git)
+```
+git clone https://github.com/milkv-duo/duo-buildroot-sdk.git
+```
+
+Get Duo LVGL Demo: [https://github.com/milkv-duo/duo-lvgl-fb-demo.git](https://github.com/milkv-duo/duo-lvgl-fb-demo.git)
+```
+git clone https://github.com/milkv-duo/duo-lvgl-fb-demo.git
+```
+
+Enter the SDK directory and apply a patch to the SDK kernel to support the ST7789V chip (the patch is in the duo-lvgl-fb-demo.git repository above):
+```
+cd duo-buildroot-sdk
+git apply --reject ../duo-lvgl-fb-demo/duo-kernel-fb_st7789v.patch
+```
+
+Confirm that the kernel configuration has support for turning on FB TFT (the latest Buildroot SDK already supports it by default):
+```
+CONFIG_FB=y
+CONFIG_FB_TFT=y
+CONFIG_FB_TFT_ST7789V=y
+```
+
+The location of the kernel configuration file:
+- Duo:
+ ```
+ build/boards/cv180x/cv1800b_milkv_duo_sd/linux/cvitek_cv1800b_milkv_duo_sd_defconfig
+ ```
+- Duo256M:
+ ```
+ build/boards/cv181x/cv1812cp_milkv_duo256m_sd/linux/cvitek_cv1812cp_milkv_duo256m_sd_defconfig
+ ```
+- DuoS SD:
+ ```
+ build/boards/cv181x/cv1813h_milkv_duos_sd/linux/cvitek_cv1813h_milkv_duos_sd_defconfig
+ ```
+- DuoS eMMC:
+ ```
+ build/boards/cv181x/cv1813h_milkv_duos_emmc/linux/cvitek_cv1813h_milkv_duos_emmc_defconfig
+ ```
+
+Compile SD card firmware:
+
+- Duo
+ ```
+ ./build.sh milkv-duo
+ ```
+- Duo256M
+ ```
+ ./build.sh milkv-duo256m
+ ```
+- DuoS SD
+ ```
+ ./build.sh milkv-duos-sd
+ ```
+- DuoS eMMC
+ ```
+ ./build.sh milkv-duos-emmc
+ ```
+
+After compilation, burn the corresponding img file in the out directory to the microSD card.
+
+### Hardware connection
+
+Next, perform wiring configuration based on the Duo pin position reference. Note that the `BL` pin of this display is the backlight enable pin, and the backlight is on when the pin level is high.
+
+#### Duo and Duo256M
+
+
+
+| Duo/Duo256M Pin | ST7789V |
+|:-------------------|:--------:|
+| PIN 38: GND | GND |
+| PIN 36: 3.3V(OUT) | VCC |
+| PIN 9: SPI2_SCK | SCL |
+| PIN 10: SPI2_SDO | SDA |
+| PIN 21: GP16 | RES |
+| PIN 22: GP17 | DC |
+| PIN 12: SPI2_CS_X | CS |
+| PIN 36: 3.3V(OUT) | BL |
+
+
+
+
+
+#### DuoS
+
+
+
+| DuoS Pin | ST7789V |
+|:------------------|:--------:|
+| PIN 25: GND | GND |
+| PIN 17: 3V3 | VCC |
+| PIN 23: SPI3_SCK | SCL |
+| PIN 19: SPI3_SDO | SDA |
+| PIN 26: A28 | RES |
+| PIN 22: A18 | DC |
+| PIN 24: B16 | CS |
+| PIN 1: 3V3 | BL |
+
+
+
+
+
+### Test screen display
+
+Insert the microSD card burned above into Duo, power on, log in to the Duo console through the serial terminal or SSH, and check whether the ST7789V driver is normal:
+
+```
+[root@milkv-duo]~# dmesg | grep st7789v
+[ 0.998809] fb_st7789v spi0.0: fbtft_property_value: buswidth = 8
+[ 1.005243] fb_st7789v spi0.0: fbtft_property_value: debug = 0
+[ 1.011392] fb_st7789v spi0.0: fbtft_property_value: rotate = 0
+[ 1.017613] fb_st7789v spi0.0: fbtft_property_value: fps = 60
+[ 1.529233] graphics fb0: fb_st7789v frame buffer, 240x320, 150 KiB video memory, 4 KiB buffer memory, fps=62, spi0.0 at 48 MHz
+```
+
+If the above display shows that the driver has been loaded normally.
+
+Screen displaying artifacts:
+```
+cat /dev/random > /dev/fb0
+```
+
+Clear the screen (black screen):
+```
+cat /dev/zero > /dev/fb0
+```
+
+If the screen can display artifacts and black screens normally, it means the screen can be used normally.
+
+## LVGL test
+
+### Download LVGL fb demo source code
+
+Download the `lv_port_linux_frame_buffer` source code. LVGL has provided the Linux fb project, which has integrated the lvgl and lvgl_drivers sub-repositories through the git submodule sub-repository.
+
+This repository has been integrated into the Duo LVGL Demo code downloaded earlier, and is adapted to Duo and the SPI display, and can be compiled and tested directly.
+
+### Download toolchain
+
+Download toolchain:
+```
+git clone https://github.com/milkv-duo/host-tools.git
+```
+You can also directly use the host-tools directory in the buildroot SDK, which is the same.
+
+Enter the tool chain directory and `export` the tool chain to the environment variable:
+```
+cd host-tools
+export PATH=$PATH:$(pwd)/gcc/riscv64-linux-musl-x86_64/bin
+```
+
+Verify that the toolchain is available:
+```
+riscv64-unknown-linux-musl-gcc -v
+```
+The version information of the toolchain can be displayed normally, that is, the toolchain is available.
+
+### Compile LVGL
+
+Enter the lv_port_linux_frame_buffer directory in the Demo code and execute:
+```
+make clean
+make -j
+```
+
+After compilation is completed, the demo program will be generated in the build/bin directory and copied to the Duo device through the scp command:
+```
+scp demo root@192.168.42.1:/root/
+```
+The password is `milkv`.
+
+Log in to the Duo terminal console through the serial port or SSH:
+```
+ssh root@192.168.42.1
+```
+
+Add executable permissions to the demo program:
+```
+chmod +x demo
+```
+
+Run the test program:
+```
+./demo
+```
+
+You can see the widget Demo of lvgl:
+
+
+
+*If the color is wrong in subsequent runs, you can modify `LV_COLOR_16_SWAP` to 1.
+
+### Benchmark test sample
+
+Modify the macro definition in `lv_conf.h`, change `LV_USE_DEMO_WIDGETS` to 0, change `LV_USE_DEMO_BENCHMARK` to 1 and recompile:
+
+```
+make clean
+make -j
+```
+
+Use the same method to upload the generated demo to Duo for testing. Note that when uploading again, the demo program running in Duo needs to exit (Ctrl+C) first.
+
+
+
+After running this test, statistical results will be generated:
+
+
+
+The test result is FPS: around 100.
+
+## Ref
+
+- [milk-v duo 交叉编译 LVGL](https://zhuanlan.zhihu.com/p/672633256)
+- [milk-v duo spi TFT 液晶屏 ST7789V 使用](https://zhuanlan.zhihu.com/p/672610362)
+- [【spi】Milk-V Duo点亮st7735](https://community.milkv.io/t/spi-milk-v-duo-st7735/625)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/third-party-img.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/third-party-img.md
new file mode 100644
index 00000000..7cbf93ff
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/third-party-img.md
@@ -0,0 +1,42 @@
+---
+sidebar_label: 'Third-party Image and SDK '
+sidebar_position: 90
+---
+
+# Third-party Image and SDK
+
+Third-party image are produced by the community
+
+## Duo(CV1800B)
+
+| OS | Download Link | Guide Link | Author |
+| --------------------------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Arch Linux | [Download](https://drive.google.com/file/d/1Qf8ioR29KCsvt2MIWre168Um9Q8ot_z5/view?usp=sharing) | [Milk-V Community](https://community.milkv.io/t/arch-linux-on-milkv-duo-milkv-duo-arch-linux/329) [Milk-V Community](https://community.milkv.io/t/debian-arch-linux-on-milkv-duo-256m-milkv-duo-256m-debian-arch-linux/1110) | [@Judehahh](https://community.milkv.io/u/Judehahh) [@sRGB](https://community.milkv.io/u/srgb/summary) |
+| AlpineLinux | [Download](https://drive.google.com/file/d/1LfebzdIubEVe0RRMwWAD5QA5LjK-8sv5/view?usp=drive_link) | [Github](https://github.com/cwt/duo-buildroot-sdk/releases/tag/poc1) [Milk-V Community](https://community.milkv.io/t/alpine-linux-on-the-duo/700/5) | [@xyzdims.com](https://xyzdims.com/3d-printers/misc-hardware-notes/iot-milk-v-duo-risc-v-esbc-running-linux/#AlpineLinux_Disk_Image) [@cwt](https://github.com/cwt) |
+| Ubuntu 22.04 | [Download](https://drive.google.com/file/d/1y1NQamzUDzot_kVT2yKkbusoJmtvH5tD/view?usp=sharing) | [Github](https://github.com/bassusteur/milkv-duo-ubuntu) [Milk-V Community](https://community.milkv.io/t/ubuntu-on-the-milk-v-duo/960) | [@bassusteur](https://github.com/bassusteur) [@xyzdims.com](https://xyzdims.com/3d-printers/misc-hardware-notes/iot-milk-v-duo-risc-v-esbc-running-linux/#Ubuntu_Disk_Image) |
+| Debian | [Download](https://drive.google.com/file/d/1TqMuFsRo5Es2Y6-qAyxV8jnFdAkcCp4v/view?usp=sharing) | [Milk-V Community](https://community.milkv.io/t/milkv-duo-duo-debian-full-7z-519m-download/862) [Github](https://github.com/hongwenjun/riscv64/tree/main/milkv-duo) | [@sRGB](https://community.milkv.io/u/srgb/summary) |
+| Fedora-RISCV-Builder | [Learn more](https://github.com/chainsx/fedora-riscv-builder) | [Github](https://github.com/chainsx/fedora-riscv-builder) | [@chainsx](https://github.com/chainsx) |
+| Debian/Ubuntu image builder | [Learn more](https://community.milkv.io/t/milk-v-duo-debian-ubuntu-image-builder/1424) | [Github](https://github.com/logicethos/Milk-V_Duo_Linux2SD) | [@Logic Ethos Ltd](https://github.com/logicethos) |
+| OpenWRT | [Learn more](https://github.com/Pillar1989/VizOS) | [Milk-V Community](https://community.milkv.io/t/openwrt-on-milkv-duo-milkv-duo-openwrt/1025) | [@Baozhu](https://community.milkv.io/u/Baozhu) [@Pillar1989](https://github.com/Pillar1989) |
+| Zephyr | [Download](https://github.com/kinsamanka/milkv-zephyros/releases/download/v0.1.1-alpha/milkv-duo_sdcard.img.gz) | [Github](https://github.com/kinsamanka/milkv-zephyros) | [@kinsamanka](https://github.com/kinsamanka) |
+| Yocto | [Learn more](https://github.com/kinsamanka/meta-milkv/blob/master/README.md) | [Github](https://github.com/kinsamanka/meta-milkv) | [@kinsamanka](https://github.com/kinsamanka) |
+| RT-Thread | [Learn more](https://github.com/RT-Thread/rt-thread/tree/master/bsp/cvitek) | [Github](https://github.com/RT-Thread/rt-thread/tree/master/bsp/cvitek) [RISC-V RT-Thread Programming Guide](https://riscv-rtthread-programming-manual.readthedocs.io/zh-cn/latest/) | [@hflyingcys](https://github.com/flyingcys) |
+| ThreadX | [Learn more](https://github.com/saicogn/ThreadX-to-RISC-V64) | [Github] (https://github.com/saicogn/ThreadX-to-RISC-V64) | [@hsaicogn](https://github.com/saicogn) |
+
+
+## Duo 256M(SG2002)
+
+| OS | Download Link | Guide Link | Author |
+| ------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Debian | [Download](https://github.com/Fishwaldo/sophgo-sg200x-debian/releases/tag/v1.2.0) | [Github](https://github.com/Fishwaldo/sophgo-sg200x-debian) | [@Fishwaldo](https://github.com/Fishwaldo) |
+| Ubuntu 22.04 | [Download](https://drive.google.com/file/d/1mkzLhvtjJup3GbgWKZdwL80PZMMXg7n1/view) | [Github](https://github.com/bassusteur/milkv-duo-ubuntu) [Milk-V Community](https://community.milkv.io/t/ubuntu-on-the-milk-v-duo/960) | [@bassusteur](https://github.com/bassusteur) [@xyzdims.com](https://xyzdims.com/3d-printers/misc-hardware-notes/iot-milk-v-duo-risc-v-esbc-running-linux/#Ubuntu_Disk_Image) |
+| Arch Linux | [Download](https://drive.google.com/file/d/16qJTmEtFFTkS-mIRFdaj4Prbi2QezjMI/view) | [Milk-V Community](https://community.milkv.io/t/arch-linux-on-milkv-duo-milkv-duo-arch-linux/329) [Milk-V Community](https://community.milkv.io/t/debian-arch-linux-on-milkv-duo-256m-milkv-duo-256m-debian-arch-linux/1110) | [@Judehahh](https://community.milkv.io/u/Judehahh) [@sRGB](https://community.milkv.io/u/srgb/summary) |
+| AlpineLinux | [Download](https://drive.google.com/file/d/1zhhB6AdgvjjuzBWjY6TchdX5b0uNWzP-/view) | [Github](https://github.com/cwt/duo-buildroot-sdk/releases/tag/poc1) [Milk-V Community](https://community.milkv.io/t/alpine-linux-on-the-duo/700/5) | [@xyzdims.com](https://xyzdims.com/3d-printers/misc-hardware-notes/iot-milk-v-duo-risc-v-esbc-running-linux/#AlpineLinux_Disk_Image) [@cwt](https://github.com/cwt) |
+
+## Duo S(SG2000)
+
+| OS | Download Link | Guide Link | Author |
+| ------ | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------ |
+| Debian | [Download](https://github.com/Fishwaldo/sophgo-sg200x-debian/releases/tag/v1.2.0) | [Github](https://github.com/Fishwaldo/sophgo-sg200x-debian) | [@Fishwaldo](https://github.com/Fishwaldo) |
+| NuttX | [Learn more](https://github.com/lupyuen/nuttx-sg2000) | [Github](https://github.com/lupyuen/nuttx-sg2000) | [@lupyuen](https://github.com/lupyuen) |
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/xyzdims.md b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/xyzdims.md
new file mode 100644
index 00000000..7fe814c9
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/duo/resources/xyzdims.md
@@ -0,0 +1,20 @@
+---
+sidebar_label: 'XYZdims: Duo running Linux(Arch Linux)'
+sidebar_position: 50
+---
+
+# IoT: Milk-V Duo (RISC-V) eSBC running Linux
+
+XYZdims.com – a site focused on the integration of 3D-modeling, 3D-printing software & hardware.
+
+**Updates:**
+
+- 2023/10/21: released ArchLinux disk image with RNDIS support
+- 2023/10/16: creating custom disk images, releasing my own disk image tagged “spiritdude”
+- 2023/10/11: 2nd option for swap space, OLED SSD1306 example with TinyCC
+- 2023/10/10: adding Resizing Disk, Start Script at Boot, TinyCC, GPIO, Pinpong, Software State update
+- 2023/10/05: published
+- 2023/10/03: adding printable case and guide to add multiple boards on a host
+- 2023/09/21: starting writeup
+
+For more detail,please check [XYZdims.com: Milk-V Duo (RISC-V) eSBC running Linux](https://xyzdims.com/3d-printers/misc-hardware-notes/iot-milk-v-duo-risc-v-esbc-running-linux/#References)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/index.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/index.mdx
new file mode 100644
index 00000000..1ab6aebc
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/index.mdx
@@ -0,0 +1,14 @@
+---
+sidebar_label: '🏠 Home'
+sidebar_position: 0
+hide_title: true
+hide_table_of_contents: true
+pagination_next: null
+pagination_prev: null
+custom_edit_url: null
+---
+import Home from '@site/src/components/Home';
+
+
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/mars/_category_.json
new file mode 100644
index 00000000..ffbf2068
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "🔥 Mars",
+ "position": 1,
+ "link": {
+ "type": "generated-index",
+ "slug": "/mars"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/_category_.json
new file mode 100644
index 00000000..943ea7c8
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🔳 Compute Module",
+ "position": 200,
+ "link": {
+ "type": "generated-index",
+ "slug": "/mars/cm",
+ "description": "The Mars Compute Module is a System on Module (SoM) based on a the StarFive JH7110 System on Chip (SoC) integrates the Central Process Unit (CPU), Power Management Unit (PMU), DRAM memory, flash storage and wireless connectivity (WiFi 5 and BT 5.2) in a small form factor of just 55mm x 40mm."
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/boot.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/boot.md
new file mode 100644
index 00000000..9250892f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/boot.md
@@ -0,0 +1,182 @@
+---
+sidebar_label: 'Boot the Mars CM'
+sidebar_position: 10
+---
+# Boot the Mars CM
+
+:::tip
+Mars CM has two versions based on storage, one is `Mars CM` with eMMC storage, and the other is `Mars CM Lite` without eMMC storage. The Lite version can only be accessed through SD card on the base-board. If the base-board you are using does not have a SD card interface, you cannot use the Lite version. In addition, the eMMC version shares the hardware interface with the SD card, so they cannot be used at the same time. In other words, when using the eMMC version of Mars CM, you cannot insert a storage card into the SD card slot on the base-board.
+:::
+
+Mars CM adopts a core board design, with pin compatibility with Raspberry Pi CM4. It can be used with different base-boards. The firmware we currently release is compatible with the Raspberry Pi CM4 IO Board.
+
+Taking the Raspberry Pi CM4 IO Board as an example, we will introduce how to burn firmware for the `eMMC` version and the `Lite `version.
+
+## Mars CM eMMC version image burning
+
+### Prepare
+
+- Necessary
+ - Mars CM eMMC version
+ - Raspberry Pi CM4 IO Board or other Raspberry Pi CM4 compatible base-board
+ - USB to TTL serial cable
+ - USB data cable
+- Optional
+ - HDMI cable
+
+### Download image and burning tools
+
+- Download the Debian system image: [Official Image](https://milkv.io/zh/docs/mars/compute-module/resources/images)
+- Download the eMMC image burning tool: [UsbFlashTool](https://github.com/milkv-mars/mars-tools/blob/main/Mars-UsbFlashTool-v2.4-Windows.zip)
+
+### Install driver for the burning tool
+
+:::tip
+Driver installation is only required for the first use.
+:::
+
+Extract the downloaded `Mars-UsbFlashTool-*-Windows.zip` into the Windows system.
+
+1. Connect the USB to TTL serial port cable to the 40 pin header on the base-board, connect the USB to the PC and note down the serial port number
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_01.jpg)
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_02.png)
+
+ **Note: If any other serial port program is open and using the serial port, please exit the program to release the port and avoid occupying it.**
+
+2. Short-circuit pins 1 and 2 of the J12 header on the CM4 IO Board using a jumper cap (USB flashing mode)
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_03.jpg)
+
+3. Connect the PC and the base-board's J11 USB Slave interface using a Micro USB data cable
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_04.jpg)
+
+4. Run the `UsbFlashTool-*-Windows.exe` flashing program in the flashing tool directory
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_05.png)
+
+5. Set the serial port number in the `Serial Setting` on the right side to the serial port number noted in step 1
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_06.png)
+
+6. Power on the base-board through the 12V DC interface
+7. Select `Firmware` in `File Type`, then click `File Select` to select the `usbprog-mars-230510.out` in the `update` directory, then click `Load`, and wait for the message `Loaded` to appear after loading
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_07.png)
+
+8. At this time, the JH7110 device has been identified in the Windows Device Manager and the driver needs to be installed
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_08.png)
+
+9. Run the `zadig-2.5` program in the flashing tool directory, select `List All Devices` in the menu `Options`, select `StarFive JH7110 Device` in the drop-down list, and then click `Install Driver` to complete the driver installation
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_09.png)
+
+ After the driver is successfully installed, check whether the status in the device manager has become a normal USB device
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_10.png)
+
+10. After the driver is installed successfully, close the UsbFlashTool window, power off the base-board, and remove the jumper cap in step 2
+
+### Burn image
+
+The first 6 steps of burning the image are the same as the first 6 steps of installing the driver above.
+
+1. Connect the USB to TTL serial port cable to the 40 pin header on the base-board, connect the USB to the PC and note down the serial port number
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_01.jpg)
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_02.png)
+
+ **Note: If any other serial port program is open and using the serial port, please exit the program to release the port and avoid occupying it.**
+
+2. Short-circuit pins 1 and 2 of the J12 header on the CM4 IO Board using a jumper cap (USB flashing mode)
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_03.jpg)
+
+3. Connect the PC and the base-board's J11 USB Slave interface using a Micro USB data cable
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_04.jpg)
+
+4. Run the `UsbFlashTool-*-Windows.exe` flashing program in the flashing tool directory
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_05.png)
+
+5. Set the serial port number in the `Serial Setting` on the right side to the serial port number noted in step 1
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_06.png)
+
+6. Power on the base-board through the 12V DC interface
+7. Select `Firmware` in `File Type`, then click `File Select` to select the `usbprog-mars-230510.out` in the `update` directory, then click `Load`, and wait for the message `Complete` to appear after loading
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_15.png)
+
+8. Click `File Select` again, select the firmware for Mars CM eMMC version, select `Allinone` in `File Type`, select `EMMC` in `Memory Type`, and then click Load to start burning the image
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_16.png)
+
+ Note that this burning program uses segmented burning, so the progress bar does not scroll in real time. Please wait patiently for a while.
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_17.png)
+
+ The burning process takes about 10 minutes. When the final prompt is 100% and there is no error message, the burning is complete.
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_18.png)
+
+9. After burning is completed, close the UsbFlashTool window, power off the base-board, and remove the jumper cap in step 2
+
+### Power on
+
+Connect the base-board to the monitor with an HDMI cable. Note that Mars CM only has one HDMI signal, so the HDMI cable is connected to HDMI0 on the CM4 IO Board.
+
+Power on the 12V DC interface of the base-board. After waiting for the system to start, the green LED on the Mars CM starts to flash, and the Debian login interface will be displayed on the monitor.
+
+## Mars CM Lite version image burning
+
+The Lite version does not come with eMMC and needs to burn the firmware to the SD card. The burning method is the same as the image burning method for other development boards such as Raspberry Pi and Mars.
+
+### Prepare
+
+- Necessary
+ - Mars CM Lite
+ - Raspberry Pi CM4 IO Board or other Raspberry Pi CM4 compatible base-board
+ - microSD card with a capacity of 8GB or above
+ - microSD card reader
+- Optional
+ - USB to TTL serial cable
+ - HDMI cable
+
+### Download image and burning tools
+
+- Download the Debian system image: [Official Image](https://milkv.io/zh/docs/mars/compute-module/resources/images)
+- Download the burning tool: [balenaEtcher](https://etcher.balena.io/) or [Rufus](https://rufus.ie/en/)
+
+### Burn image
+
+Take burning using the `balenaEtcher` tool as an example:
+
+- Click **Flash from file** to select the system image
+
+![mars-cm](/docs/mars/cm/mars-cm-docs_boot_etcher_01.png)
+
+- Click **Select target** to select the target SD card
+
+![mars-cm](/docs/mars/cm/mars-cm-docs_boot_etcher_02.png)
+
+- Click **Flash!** to start burning
+
+![mars-cm](/docs/mars/cm/mars-cm-docs_boot_etcher_03.png)
+
+### Power on
+
+Install the Mars CM core board onto the base-board of the Raspberry Pi CM4 IO Board and connect the monitor with an HDMI cable. Note that Mars CM only has one HDMI signal, so the HDMI cable is connected to HDMI0 on the base board.
+
+Insert the microSD card with the above burned image into the card slot of the base-board.
+
+Power on the 12V DC interface of the base-board. After waiting for the system to start, the green LED on the Mars CM starts to flash, and the Debian login interface will be displayed on the monitor.
+
+## Troubleshooting
+
+If you have a problem, go to our [community](https://community.milkv.io/) and post to let us know.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/bootloader.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/bootloader.md
new file mode 100644
index 00000000..641c9e5a
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/bootloader.md
@@ -0,0 +1,109 @@
+---
+sidebar_label: 'Bootloader Update'
+sidebar_position: 40
+---
+
+# Milk-V Mars CM Bootloader Update Guide
+
+Whether Mars CM starts the system through the SD card or the eMMC module, it must be started through the Bootloader boot program. This boot program is stored in an SPI Flash on the board and contains two parts: `SPL` and `U-Boot`.
+
+:::tip
+The Bootloader in Mars CM can be understood as the BIOS in PC
+:::
+
+When Mars CM is shipped, it already comes with a pre-installed initial Bootloader program. There is no need to upgrade this program during normal usage. Bootloader upgrade is only necessary in the following situations:
+
+1. When the bootloader program in SPI Flash is accidentally damaged, causing the system to fail to start normally.
+2. When upgrading the official system image (such as Debian), it must be matched with the new bootloader, otherwise it cannot be started.
+3. U-Boot has fixed some bugs or added new functions. When you need to use these new functions.
+
+There are several ways to update the Bootloader in SPI Flash on Mars CM, such as Windows burning tools, TFTP, flashcp commands, etc. Here we first introduce how to use the UsbFlashTool burning tool in Windows systems.
+
+Mars CM can be used with different base-boards. Here we take the Raspberry Pi `CM4 IO Board` base board as an example.
+
+## Upgrade Bootloader using UsbFlashTool Windows tool
+
+### Download UsbFlashTool burning tool and Bootloader firmware
+
+[UsbFlashTool](https://github.com/milkv-mars/mars-tools/blob/main/Mars-UsbFlashTool-v2.4-Windows.zip)
+
+[Bootloader firmware](https://github.com/milkv-mars/mars-buildroot-sdk/releases)
+
+```
+SPL: u-boot-spl.bin.normal.out
+U-BOOT: visionfive2_fw_payload.img
+```
+
+### Install driver for the burning tool
+
+:::tip
+Driver installation is only required for the first use.
+:::
+
+Please refer to [Install driver for the burning tool
+](https://milkv.io/docs/mars/compute-module/boot#install-driver-for-the-burning-tool).
+
+After installing the driver, return here to continue the operation.
+
+### Upgrade Bootloader
+
+The first 6 steps of burning the bootloader are the same as the first 6 steps of installing the driver above.
+
+1. Connect the USB to TTL serial port cable to the 40 pin header on the base-board, connect the USB to the PC and note down the serial port number
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_01.jpg)
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_02.png)
+
+ **Note: If any other serial port program is open and using the serial port, please exit the program to release the port and avoid occupying it.**
+
+2. Short-circuit pins 1 and 2 of the J12 header on the CM4 IO Board using a jumper cap (USB flashing mode)
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_03.jpg)
+
+3. Connect the PC and the base-board's J11 USB Slave interface using a Micro USB data cable
+
+ ![mars-cm](/docs/mars/cm/mars-cm-docs_boot_04.jpg)
+
+4. Run the `UsbFlashTool-*-Windows.exe` flashing program in the flashing tool directory
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_05.png)
+
+5. Set the serial port number in the `Serial Setting` on the right side to the serial port number noted in step 1
+
+ ![mars-cm](/docs/mars/mars-usb-flash-tool_06.png)
+
+6. Power on the base-board through the 12V DC interface
+
+7. Flash the `SPL`
+
+ Click `File Select`, select the `SPL` firmware `u-boot-spl.bin.normal.out` to be burned, select `SPL` in `File Type`, select `FLASH` in `Memory Type`, Click `Load` to start burning firmware.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_16.png)
+
+ After successful burning, `SUCCEED` and `Complete` will be displayed.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_17.png)
+
+8. Flash the `U-BOOT`
+
+ Click `File Select`, select the `U-BOOT` firmware `visionfive2_fw_payload.img` to be burned, select `U-Boot` in `File Type`, select `FLASH` in `Memory Type`, and then click `Load` to start burning firmware.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_18.png)
+
+ After successful burning, `SUCCEED` and `Complete` will be displayed.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_19.png)
+
+9. After burning is completed, close the UsbFlashTool window, power off the base-board, and remove the jumper cap in step 2
+
+
+After powering on again, you can determine whether the bootloader has been updated based on the time information in the serial port log.
+
+```
+U-Boot SPL 2021.10 (Aug 31 2023 - 12:55:45 +0800)
+```
+
+```
+U-Boot 2021.10 (Aug 31 2023 - 12:55:45 +0800), Build: jenkins-github_visionfive2-17
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/extendpartition.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/extendpartition.md
new file mode 100644
index 00000000..b28085ac
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/extendpartition.md
@@ -0,0 +1,145 @@
+---
+sidebar_label: 'Extend Partition'
+sidebar_position: 30
+---
+
+# Extend Partition on SD Card or eMMC
+
+The default capacity of the official Debian image root file system is about `4GB`. When installing software or other data increases, there will be insufficient space. We can expand the file system to the full capacity of the SD card or eMMC.
+
+
+:::tip
+Whether Mar CM is a version with eMMC or a Lite version without eMMC that uses an SD card as the storage medium, the device recognized in the system is `/dev/mmcblk0`
+:::
+
+
+The following uses a Mars CM booted from a 32G SD card as an example to introduce how to expand the capacity through commands. The expansion method for the eMMC version is also the same.
+
+## Check the current status of the partitions
+
+Use the `df -h` command to view the current partition status
+
+```
+# df -h
+Filesystem Size Used Avail Use% Mounted on
+udev 1.4G 0 1.4G 0% /dev
+tmpfs 388M 3.4M 385M 1% /run
+/dev/mmcblk0p4 3.7G 3.1G 594M 85% /
+tmpfs 1.9G 0 1.9G 0% /dev/shm
+tmpfs 5.0M 8.0K 5.0M 1% /run/lock
+tmpfs 388M 92K 388M 1% /run/user/1000
+tmpfs 388M 24K 388M 1% /run/user/0
+```
+
+You can see that the device mounted in the current root partition `/` directory is `/dev/mmcblk0p4`
+
+## Extend a partition using the fdisk command
+
+Entering the `fdisk` command will take you into the command-line interactive mode of `fdisk`
+
+```
+# fdisk /dev/mmcblk0
+```
+
+Enter the `p` command to view the current partition information. You can see that the current capacity of the system partition `/dev/mmcblk0p4` is `3.8G`
+
+```
+Command (m for help): p
+
+Disk /dev/mmcblk0: 29.12 GiB, 31267487744 bytes, 61069312 sectors
+Units: sectors of 1 * 512 = 512 bytes
+Sector size (logical/physical): 512 bytes / 512 bytes
+I/O size (minimum/optimal): 512 bytes / 512 bytes
+Disklabel type: gpt
+Disk identifier: 6ED69CD1-D57A-4373-B24B-924EE58DFAA1
+
+Device Start End Sectors Size Type
+/dev/mmcblk0p1 4096 8191 4096 2M HiFive BBL
+/dev/mmcblk0p2 8192 16383 8192 4M HiFive FSBL
+/dev/mmcblk0p3 16384 221183 204800 100M EFI System
+/dev/mmcblk0p4 221184 8189918 7968735 3.8G Linux filesystem
+```
+
+Then execute the `d` command to delete the system partition from the original system. You will be prompted to enter the partition number to be deleted. We want to delete `/dev/mmcblk0p4`, so enter `4`
+
+```
+Command (m for help): d
+Partition number (1-4, default 4): 4
+
+Partition 4 has been deleted.
+
+Command (m for help):
+```
+
+Then use the `n` command to create a new partition. It prompts you to enter the partition number. We still use `/dev/mmcblk0p4`, so enter `4`.
+
+The following prompt `First sector` requires you to enter the starting sector value of the new partition. The command it has helped us identify the default starting value (`default 221184`), which is the starting sector of the just deleted `/dev/mmcblk0p4`, so you can just press Enter without entering value.
+
+Finally enter the size of the new partition. The default `"default"` value is the entire storage space, there is no need to enter a specific value, just press Enter and it will prompt "Do you want to remove the signature? [Y]es/[N]o:" Enter `No`
+
+```
+Command (m for help): n
+Partition number (4-128, default 4): 4
+First sector (34-61069278, default 221184):
+Last sector, +/-sectors or +/-size{K,M,G,T,P} (221184-61069278, default 61067263):
+
+Created a new partition 4 of type 'Linux filesystem' and of size 29 GiB.
+Partition #4 contains a ext4 signature.
+
+Do you want to remove the signature? [Y]es/[N]o: No
+
+Command (m for help):
+```
+
+Execute the `p` command to check the current partition situation. `/dev/mmcblk0p4` has been expanded to the entire storage space. Here it is `29G`
+
+```
+Command (m for help): p
+
+Disk /dev/mmcblk0: 29.12 GiB, 31267487744 bytes, 61069312 sectors
+Units: sectors of 1 * 512 = 512 bytes
+Sector size (logical/physical): 512 bytes / 512 bytes
+I/O size (minimum/optimal): 512 bytes / 512 bytes
+Disklabel type: gpt
+Disk identifier: 6ED69CD1-D57A-4373-B24B-924EE58DFAA1
+
+Device Start End Sectors Size Type
+/dev/mmcblk0p1 4096 8191 4096 2M HiFive BBL
+/dev/mmcblk0p2 8192 16383 8192 4M HiFive FSBL
+/dev/mmcblk0p3 16384 221183 204800 100M EFI System
+/dev/mmcblk0p4 221184 61067263 60846080 29G Linux filesystem
+
+Command (m for help):
+```
+
+Execute the `w` command to save changes and exit `fdisk` interactive mode
+
+```
+Command (m for help): w
+The partition table has been altered.
+Syncing disks.
+```
+
+Finally, execute the `resize2fs` command to complete the file system expansion
+
+```
+# resize2fs /dev/mmcblk0p4
+resize2fs 1.46.6-rc1 (12-Sep-2022)
+Filesystem at /dev/mmcblk0p4 is mounted on /; on-line resizing required
+old_desc_blocks = 1, new_desc_blocks = 4
+The filesystem on /dev/mmcblk0p4 is now 7605760 (4k) blocks long.
+```
+
+Use the `df -h` command again to check the partition status. You can see that the system partition node `/dev/mmcblk0p4` has been expanded to `29G`
+
+```
+# df -h
+Filesystem Size Used Avail Use% Mounted on
+udev 1.4G 0 1.4G 0% /dev
+tmpfs 388M 3.4M 385M 1% /run
+/dev/mmcblk0p4 29G 3.1G 26G 11% /
+tmpfs 1.9G 0 1.9G 0% /dev/shm
+tmpfs 5.0M 8.0K 5.0M 1% /run/lock
+tmpfs 388M 92K 388M 1% /run/user/1000
+tmpfs 388M 24K 388M 1% /run/user/0
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/hardware.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/hardware.md
new file mode 100644
index 00000000..dd76c3e1
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/hardware.md
@@ -0,0 +1,22 @@
+---
+sidebar_label: 'Hardware Docs'
+sidebar_position: 50
+---
+
+# Hardware Docs
+
+## Hardware Design
+
+### Schematic
+
+- V1.01
+
+ Lite (SD Card) version: [Milk-V_Mars-CM_SCH_V1.01_2024-0425_Lite.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars-CM_Hardware_Schematices/Milk-V_Mars-CM_SCH_V1.01_2024-0425_Lite.pdf)
+
+ eMMC version: [Milk-V_Mars-CM_SCH_V1.01_2024-0425_eMMC.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars-CM_Hardware_Schematices/Milk-V_Mars-CM_SCH_V1.01_2024-0425_eMMC.pdf)
+
+- V1.0
+
+ Lite (SD Card) version: [Milk-V_Mars-CM_SCH_V1.0-2023-0905_Lite.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars-CM_Hardware_Schematices/Milk-V_Mars-CM_SCH_V1.0-2023-0905_Lite.pdf)
+
+ eMMC version: [Milk-V_Mars-CM_SCH_V1.0_2023-0905_eMMC.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars-CM_Hardware_Schematices/Milk-V_Mars-CM_SCH_V1.0_2023-0905_eMMC.pdf)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/introduction.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/introduction.md
new file mode 100644
index 00000000..4a33df0e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/introduction.md
@@ -0,0 +1,35 @@
+---
+sidebar_label: 'Introduction'
+sidebar_position: 1
+---
+
+Mars Compute Module
+===================
+
+Version 1.0
+-----------
+
+---
+
+Introduction
+------------
+
+The Mars Compute Module (Mars CM) is a state-of-the-art System on Module (SoM) that leverages the capabilities of the StarFive JH7110 System on Chip (SoC). Designed to be a comprehensive yet compact solution, the Mars CM incorporates a Central Processing Unit (CPU), Power Management Unit (PMU), DRAM memory, flash storage, and wireless connectivity options including WiFi 5 and Bluetooth 5.2. All of these features are packed into a remarkably small form factor, measuring just 55mm x 40mm.
+
+![mars](/docs/mars/cm/mars-cm-block-diagram.webp)
+
+### Design Philosophy
+
+Inspired by the Milk-V Mars architecture, the Mars CM is engineered for both versatility and cost-efficiency. For applications that are particularly cost-sensitive, we offer the Mars CM Lite, which comes without the eMMC storage component.
+
+### Electrical Interface and Physical Form Factor
+
+The Mars CM interfaces with external components via two 100-pin high-density connectors. Its new design yields an even smaller footprint when considering the space occupied by the connectors.
+
+### Configuration Options
+
+The Mars CM is available in a variety of LPDDR4 RAM and eMMC storage configurations. For details on specific models, please refer to the 'Order Info' section.
+
+### Accelerate Your Product Development
+
+The Mars CM is not just a component; it's a catalyst for innovation. By offering a powerful SoM in an ultra-compact form factor, we enable customers to expedite the prototyping phase and move swiftly to production, simply by developing a compatible carrier board.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/resources/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/resources/_category_.json
new file mode 100644
index 00000000..4e040af8
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/resources/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🧰 Resources",
+ "position": 90,
+ "link": {
+ "type": "generated-index",
+ "slug": "/mars/cm/resources",
+ "description": "Useful Resources"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/resources/images.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/resources/images.md
new file mode 100644
index 00000000..b71df16a
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/resources/images.md
@@ -0,0 +1,31 @@
+---
+sidebar_label: 'Images Download'
+sidebar_position: 40
+---
+# Images Download
+
+## Official Image
+
+### Debian
+
+Download from Github: [https://github.com/milkv-mars/mars-buildroot-sdk/releases/](https://github.com/milkv-mars/mars-buildroot-sdk/releases/)
+
+Images description:
+
+- Mars CM Lite (SD card) version image
+ ```
+ mars-cm_debian-desktop_sdk-v*_cm4-io-board_sdcard_v*.img.zip
+ ```
+ After downloading, refer to [Burn Image](https://milkv.io/docs/mars/getting-started/boot#burn-image) Burn the image to the microSD card. Then insert the microSD card into Mars and power it on.
+
+- Mars CM eMMC version image
+ ```
+ mars-cm_debian-desktop_sdk-v*_cm4-io-board_emmc_v*.img.zip
+ ```
+ After downloading, refer to [Mars CM eMMC version image burning](https://milkv.io/docs/mars/compute-module/boot#mars-cm-emmc-version-image-burning) chapter to burn the image into eMMC.
+
+The default username and password are:
+```
+User: user
+Password: milkv
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/setup.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/setup.md
new file mode 100644
index 00000000..8e385704
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/compute-module/setup.md
@@ -0,0 +1,36 @@
+---
+sidebar_label: 'Setting Up'
+sidebar_position: 20
+---
+
+# Set up the working environment
+
+## Use Serial Console
+
+### USB to TTL serial cable
+
+Each pin of a USB-to-TTL cable is defined as follows:
+
+![usb2ttl](/docs/mars/usb2ttl.png)
+
+### Connection
+
+Take using `Raspberry Pi CM4 IO Board` as the base-board as an example, connect USB to TTL serial cable as shown below. Do not connect the red wire.
+
+| Milk-V Mars | \<---> | USB to TTL |
+| ------------ | ------ | ---------- |
+| GND (pin 6) | \<---> | Black wire |
+| TX (pin 8) | \<---> | White wire |
+| RX (pin 10) | \<---> | Green wire |
+
+![mars-cm-serial](/docs/mars/cm/mars-cm-docs_boot_01.jpg)
+
+The default serial setting for Mars console is:
+
+```
+baudrate: 115200
+data bit: 8
+stop bit: 1
+parity : none
+flow control: none
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/_category_.json
new file mode 100644
index 00000000..fd16e6b8
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🚀 Getting Started",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/mars/getting-started",
+ "description": "Getting Started with mars"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/boot.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/boot.md
new file mode 100644
index 00000000..f0225a2f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/boot.md
@@ -0,0 +1,46 @@
+---
+sidebar_label: 'Boot the Mars'
+sidebar_position: 10
+---
+# Boot Mars from microSD card
+
+## Prepare
+
+- Necessary
+ - Mars
+ - microSD or eMMC larger than 16GB
+ - Type-C cable
+- Optional
+ - USB to TTL serial cable
+ - HDMI cable
+
+## Download images and tools
+
+- Download the system image from [Official Image](https://milkv.io/docs/mars/getting-started/images#official-image).
+- Download the flash tool, [balenaEtcher](https://etcher.balena.io/) or [Rufus](https://rufus.ie/en/).
+
+## Burn image
+
+Here are the steps for using balenaEtcher.
+
+- Click **Flash from file**
+
+![etcher-step1](/docs/duo/etcher-step1.png)
+
+- Click **Select target**
+
+![etcher-step2](/docs/duo/etcher-step2.png)
+
+- Click **Flash!**
+
+![etcher-step3](/docs/duo/etcher-step3.png)
+
+## Power on
+
+Insert the microSD card with the burned firmware into the Mars microSD card slot. Use an adapter (5V) to connect Mars via a Type-C cable. Mars will automatically power on and the red power LED on the board will light up. After the system starts successfully, the green status LED on the board will flash.
+
+If an HDMI monitor is connected, the Debian desktop will be displayed after booting.
+
+## Troubleshooting
+
+If you have a problem, go to our [community](https://community.milkv.io/) and post to let us know.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/bootloader.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/bootloader.md
new file mode 100644
index 00000000..585edcc8
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/bootloader.md
@@ -0,0 +1,220 @@
+---
+sidebar_label: 'Bootloader Update'
+sidebar_position: 40
+---
+
+# Milk-V Mars Bootloader Update Guide
+
+Whether Mars starts the system through the SD card or the eMMC module, it must be started through the Bootloader boot program. This boot program is stored in an SPI Flash on the board and contains two parts: `SPL` and `U-Boot`.
+
+:::tip
+The Bootloader in Mars can be understood as the BIOS in PC
+:::
+
+When Mars is shipped, it already comes with a pre-installed initial Bootloader program. There is no need to upgrade this program during normal usage. Bootloader upgrade is only necessary in the following situations:
+
+1. When the bootloader program in SPI Flash is accidentally damaged, causing the system to fail to start normally.
+2. When upgrading the official system image (such as Debian), it must be matched with the new bootloader, otherwise it cannot be started.
+3. U-Boot has fixed some bugs or added new functions. When you need to use these new functions.
+
+There are several ways to update the Bootloader in SPI Flash on Mars, such as Windows burning tools, TFTP, flashcp commands, etc. Here are the methods of using the `flashcp` command and using the `UsbFlashTool` burning tool in Windows systems.
+
+## Update Bootloader using flashcp command
+
+If the current bootloader of your Mars can boot the Debian system normally, you can use the `flashcp` command in the Debian system to update the bootloader.
+
+1. Install flashcp command
+
+ The `flashcp` command in the Debian system is included in the `mtd-utils` package. Execute the following command to install:
+ ```bash
+ sudo apt install mtd-utils
+ ```
+
+2. Download Bootloader Firmware
+
+ [Bootloader firmware](https://github.com/milkv-mars/mars-buildroot-sdk/releases)
+
+ The firmware contains two files, `SPL` and `U-Boot`:
+ ```
+ SPL: mars_u-boot-spl.bin.normal.out
+ U-Boot: mars_visionfive2_fw_payload.img
+ ```
+ You can download it directly on Mars, or download it on PC and then transfer it to Mars through scp command or USB flash drive.
+
+3. View SPI Flash partition information
+ ```
+ cat /proc/mtd
+ ```
+ The output is as follows:
+ ```
+ user@milkv:~$ cat /proc/mtd
+ dev: size erasesize name
+ mtd0: 00040000 00001000 "spl"
+ mtd1: 00300000 00001000 "uboot"
+ mtd2: 00100000 00001000 "data"
+ ```
+ We need to update `SPL` to the `mtd0` partition and `U-Boot` to the `mtd1` partition.
+
+4. Update Bootloader
+
+ Update SPL:
+ ```bash
+ sudo flashcp -v mars_u-boot-spl.bin.normal.out /dev/mtd0
+ ```
+ Update U-Boot:
+ ```bash
+ sudo flashcp -v mars_visionfive2_fw_payload.img /dev/mtd1
+ ```
+ The output of successful execution is as follows:
+ ```
+ user@milkv:~$ sudo flashcp -v mars_u-boot-spl.bin.normal.out /dev/mtd0
+ Erasing blocks: 36/36 (100%)
+ Writing data: 143k/143k (100%)
+ Verifying data: 143k/143k (100%)
+ user@milkv:~$
+ user@milkv:~$ sudo flashcp -v mars_visionfive2_fw_payload.img /dev/mtd1
+ Erasing blocks: 723/723 (100%)
+ Writing data: 2890k/2890k (100%)
+ Verifying data: 2890k/2890k (100%)
+ ```
+
+After powering on again, you can determine whether the bootloader has been updated based on the timestamp in the UART serial port log:
+
+```
+U-Boot SPL 2021.10 (Nov 24 2023 - 10:21:39 +0800)
+```
+```
+U-Boot 2021.10 (Nov 24 2023 - 10:21:39 +0800)
+```
+
+## Use UsbFlashTool to upgrade bootloader under Windows
+
+### Download UsbFlashTool burning tool and Bootloader firmware
+
+[UsbFlashTool](https://github.com/milkv-mars/mars-tools/blob/main/Mars-UsbFlashTool-v2.4-Windows.zip)
+
+[Bootloader firmware](https://github.com/milkv-mars/mars-buildroot-sdk/releases)
+
+```
+SPL: mars_u-boot-spl.bin.normal.out
+U-Boot: mars_visionfive2_fw_payload.img
+```
+
+### Install driver for the burning tool
+
+:::tip
+Driver installation is only required for the first use.
+:::
+
+Extract the downloaded `Mars-UsbFlashTool-*-Windows.zip` into the Windows system.
+
+1. Connect the USB to TTL serial port cable to the 40 pin header on Mars, connect the USB to the PC and note down the serial port number
+
+ How to connect USB to serial cable: [Use Serial Console](https://milkv.io/docs/mars/getting-satrted/setup#use-serial-console)
+
+ ![mars](/docs/mars/mars-usb-flash-tool_02.png)
+
+ **Note: If any other serial port program is open and using the serial port, please exit the program to release the port and avoid occupying it.**
+
+2. Connect the PC and Mars using a USB 2.0 interface with a type A Male to Male USB data cable
+
+ ![mars](/docs/mars/usba2usba.jpg)
+
+ ![mars](/docs/mars/mars-usb-port-a.jpg)
+
+3. Press and hold the `upgrade button` on Mars, and then power on Mars through the Type C interface. At this time, Mars will enter the upgrade mode. You can release the `upgrade button` to continue the operation.
+
+ ![mars](/docs/mars/mars-upgrade-key.jpg)
+
+4. Run the `UsbFlashTool-*-Windows.exe` flashing program in the flashing tool directory
+
+ ![mars](/docs/mars/mars-usb-flash-tool_05.png)
+
+5. Set the serial port number in the `Serial Setting` on the right side to the serial port number noted in step 1
+
+ ![mars](/docs/mars/mars-usb-flash-tool_06.png)
+
+6. Select `Firmware` in `File Type`, then click `File Select` to select the `usbprog-mars-230510.out` in the `update` directory, then click `Load`, and wait for the message `Loaded` to appear after loading
+
+ ![mars](/docs/mars/mars-usb-flash-tool_07.png)
+
+7. At this time, the JH7110 device has been identified in the Windows Device Manager and the driver needs to be installed
+
+ ![mars](/docs/mars/mars-usb-flash-tool_08.png)
+
+8. Run the `zadig-2.5` program in the flashing tool directory, select `List All Devices` in the menu `Options`, select `StarFive JH7110 Device` in the drop-down list, and then click `Install Driver` to complete the driver installation
+
+ ![mars](/docs/mars/mars-usb-flash-tool_09.png)
+
+ After the driver is successfully installed, check whether the status in the device manager has become a normal USB device
+
+ ![mars](/docs/mars/mars-usb-flash-tool_10.png)
+
+9. After the driver is successfully installed, close the UsbFlashTool window and power off Mars.
+
+### Upgrade Bootloader
+
+The first 5 steps of burning the bootloader are the same as the first 5 steps of installing the driver above.
+
+1. Connect the USB to TTL serial port cable to the 40 pin header on Mars, connect the USB to the PC and note down the serial port number
+
+ How to connect USB to serial cable: [Use Serial Console](https://milkv.io/docs/mars/getting-satrted/setup#use-serial-console)
+
+ ![mars](/docs/mars/mars-usb-flash-tool_02.png)
+
+ **Note: If any other serial port program is open and using the serial port, please exit the program to release the port and avoid occupying it.**
+
+2. Connect the PC and Mars using a USB 2.0 interface with a type A Male to Male USB data cable
+
+ ![mars](/docs/mars/usba2usba.jpg)
+
+ ![mars](/docs/mars/mars-usb-port-a.jpg)
+
+3. Press and hold the upgrade button on Mars, and then power on Mars through the Type C interface. At this time, Mars will enter the upgrade mode. You can release the upgrade button to continue the operation.
+
+ ![mars](/docs/mars/mars-upgrade-key.jpg)
+
+4. Run the `UsbFlashTool-*-Windows.exe` flashing program in the flashing tool directory
+
+ ![mars](/docs/mars/mars-usb-flash-tool_05.png)
+
+5. Set the serial port number in the `Serial Setting` on the right side to the serial port number noted in step 1
+
+ ![mars](/docs/mars/mars-usb-flash-tool_06.png)
+
+6. Select `Firmware` in `File Type`, then click `File Select` to select the `usbprog-mars-230510.out` in the `update` directory, then click `Load`, and wait for the message `Complete` to appear after loading
+
+ ![mars](/docs/mars/mars-usb-flash-tool_15.png)
+
+7. Flash the `SPL`
+
+ Click `File Select`, select the `SPL` firmware `u-boot-spl.bin.normal.out` to be burned, select `SPL` in `File Type`, select `FLASH` in `Memory Type`, Click `Load` to start burning firmware.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_16.png)
+
+ After successful burning, `SUCCEED` and `Complete` will be displayed.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_17.png)
+
+8. Flash the `U-BOOT`
+
+ Click `File Select`, select the `U-BOOT` firmware `visionfive2_fw_payload.img` to be burned, select `U-Boot` in `File Type`, select `FLASH` in `Memory Type`, and then click `Load` to start burning firmware.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_18.png)
+
+ After successful burning, `SUCCEED` and `Complete` will be displayed.
+
+ ![mars](/docs/mars/mars-usb-flash-tool_19.png)
+
+9. After burning is completed, close the UsbFlashTool window and power off Mars.
+
+
+After powering on again, you can determine whether the bootloader has been updated based on the time information in the serial port log.
+
+```
+U-Boot SPL 2021.10 (Aug 31 2023 - 12:55:45 +0800)
+```
+
+```
+U-Boot 2021.10 (Aug 31 2023 - 12:55:45 +0800), Build: jenkins-github_visionfive2-17
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/extendpartition.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/extendpartition.md
new file mode 100644
index 00000000..855340ea
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/extendpartition.md
@@ -0,0 +1,146 @@
+---
+sidebar_label: 'Extend Partition'
+sidebar_position: 30
+---
+
+# Extend Partition on SD Card or eMMC
+
+The default capacity of the official Debian image root file system is about `4GB`. When installing software or other data increases, there will be insufficient space. We can expand the file system to the full capacity of the SD card or eMMC.
+
+
+:::tip
+Mars is started using eMMC or SD card. The nodes for storage mounting are different. The version of `eMMC` is `/dev/mmcblk0` and the version of `SD Card` is `/dev/mmcblk1`
+:::
+
+The following uses a Mars booted from a 32G SD card as an example to introduce how to expand the capacity through commands. The expansion method for the eMMC version is also the same, just replace `/dev/mmcblk1` with `/dev/mmcblk0` (`/dev/mmcblk1p4` with `/dev/mmcblk0p4`).
+
+## Check the current status of the partitions
+
+Use the `df -h` command to view the current partition status
+
+```
+# df -h
+Filesystem Size Used Avail Use% Mounted on
+udev 700M 0 700M 0% /dev
+tmpfs 193M 3.3M 190M 2% /run
+/dev/mmcblk1p4 3.7G 3.1G 590M 85% /
+tmpfs 962M 0 962M 0% /dev/shm
+tmpfs 5.0M 12K 5.0M 1% /run/lock
+/dev/mmcblk1p3 100M 23M 77M 23% /boot
+tmpfs 193M 60K 193M 1% /run/user/110
+tmpfs 193M 24K 193M 1% /run/user/0
+```
+
+You can see that the device mounted in the current root partition `/` directory is `/dev/mmcblk1p4`
+
+## Extend a partition using the fdisk command
+
+Entering the `fdisk` command will take you into the command-line interactive mode of `fdisk`
+
+```
+# fdisk /dev/mmcblk1
+```
+
+Enter the `p` command to view the current partition information. You can see that the current capacity of the system partition `/dev/mmcblk1p4` is `3.8G`
+
+```
+Command (m for help): p
+
+Disk /dev/mmcblk1: 29.12 GiB, 31267487744 bytes, 61069312 sectors
+Units: sectors of 1 * 512 = 512 bytes
+Sector size (logical/physical): 512 bytes / 512 bytes
+I/O size (minimum/optimal): 512 bytes / 512 bytes
+Disklabel type: gpt
+Disk identifier: 2D487F15-E07F-4B07-BC04-80EA297E8675
+
+Device Start End Sectors Size Type
+/dev/mmcblk1p1 4096 8191 4096 2M HiFive BBL
+/dev/mmcblk1p2 8192 16383 8192 4M HiFive FSBL
+/dev/mmcblk1p3 16384 221183 204800 100M EFI System
+/dev/mmcblk1p4 221184 8189918 7968735 3.8G Linux filesystem
+```
+
+Then execute the `d` command to delete the system partition from the original system. You will be prompted to enter the partition number to be deleted. We want to delete `/dev/mmcblk1p4`, so enter `4`
+
+```
+Command (m for help): d
+Partition number (1-4, default 4): 4
+
+Partition 4 has been deleted.
+
+Command (m for help):
+```
+
+Then use the `n` command to create a new partition. It prompts you to enter the partition number. We still use `/dev/mmcblk1p4`, so enter `4`.
+
+The following prompt `First sector` requires you to enter the starting sector value of the new partition. The command it has helped us identify the default starting value (`default 221184`), which is the starting sector of the just deleted `/dev/mmcblk1p4`, so you can just press Enter without entering value.
+
+Finally enter the size of the new partition. The default `"default"` value is the entire storage space, there is no need to enter a specific value, just press Enter and it will prompt "Do you want to remove the signature? [Y]es/[N]o:" Enter `No`
+
+```
+Command (m for help): n
+Partition number (4-128, default 4): 4
+First sector (34-61069278, default 221184):
+Last sector, +/-sectors or +/-size{K,M,G,T,P} (221184-61069278, default 61067263):
+
+Created a new partition 4 of type 'Linux filesystem' and of size 29 GiB.
+Partition #4 contains a ext4 signature.
+
+Do you want to remove the signature? [Y]es/[N]o: No
+
+Command (m for help):
+```
+
+Execute the `p` command to check the current partition situation. `/dev/mmcblk1p4` has been expanded to the entire storage space. Here it is `29G`
+
+```
+Command (m for help): p
+
+Disk /dev/mmcblk1: 29.12 GiB, 31267487744 bytes, 61069312 sectors
+Units: sectors of 1 * 512 = 512 bytes
+Sector size (logical/physical): 512 bytes / 512 bytes
+I/O size (minimum/optimal): 512 bytes / 512 bytes
+Disklabel type: gpt
+Disk identifier: 2D487F15-E07F-4B07-BC04-80EA297E8675
+
+Device Start End Sectors Size Type
+/dev/mmcblk1p1 4096 8191 4096 2M HiFive BBL
+/dev/mmcblk1p2 8192 16383 8192 4M HiFive FSBL
+/dev/mmcblk1p3 16384 221183 204800 100M EFI System
+/dev/mmcblk1p4 221184 61067263 60846080 29G Linux filesystem
+
+Command (m for help):
+```
+
+Execute the `w` command to save changes and exit `fdisk` interactive mode
+
+```
+Command (m for help): w
+The partition table has been altered.
+Syncing disks.
+```
+
+Finally, execute the `resize2fs` command to complete the file system expansion
+
+```
+# resize2fs /dev/mmcblk1p4
+resize2fs 1.46.6-rc1 (12-Sep-2022)
+Filesystem at /dev/mmcblk1p4 is mounted on /; on-line resizing required
+old_desc_blocks = 1, new_desc_blocks = 4
+The filesystem on /dev/mmcblk1p4 is now 7605760 (4k) blocks long.
+```
+
+Use the `df -h` command again to check the partition status. You can see that the system partition node `/dev/mmcblk1p4` has been expanded to `29G`
+
+```
+# df -h
+Filesystem Size Used Avail Use% Mounted on
+udev 700M 0 700M 0% /dev
+tmpfs 193M 3.3M 190M 2% /run
+/dev/mmcblk1p4 29G 3.1G 26G 11% /
+tmpfs 962M 0 962M 0% /dev/shm
+tmpfs 5.0M 12K 5.0M 1% /run/lock
+tmpfs 193M 64K 193M 1% /run/user/110
+tmpfs 193M 24K 193M 1% /run/user/0
+/dev/mmcblk1p3 100M 23M 77M 23% /boot
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/hardware.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/hardware.md
new file mode 100644
index 00000000..73ea16f4
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/hardware.md
@@ -0,0 +1,18 @@
+---
+sidebar_label: 'Hardware Docs'
+sidebar_position: 50
+---
+
+# Hardware Docs
+
+## Hardware Design
+
+### Schematic
+
+- V1.21:[Milk-V_Mars_SCH_V1.21_2024-0510.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars_Hardware_Schematics/Milk-V_Mars_SCH_V1.21_2024-0510.pdf)
+
+- V1.11:[Milk-V_Mars_SCH_V1.11_2023-0821.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars_Hardware_Schematics/Milk-V_Mars_SCH_V1.11_2023-0821.pdf)
+
+### 2D Dimension
+
+- V1.21:[Milk-V_Mars_Dimension_V1.21_2024-0510.pdf](https://github.com/milkv-mars/mars-files/blob/main/Mars_Hardware_2D/Milk-V_Mars_Dimension_V1.21_2024-0510.pdf)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/images.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/images.md
new file mode 100644
index 00000000..d9459f70
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/images.md
@@ -0,0 +1,120 @@
+---
+sidebar_label: 'Images Download'
+sidebar_position: 45
+---
+
+# Images Download
+
+## Official Image
+
+### Debian
+
+Download from Github: [https://github.com/milkv-mars/mars-buildroot-sdk/releases/](https://github.com/milkv-mars/mars-buildroot-sdk/releases/)
+
+Images description:
+
+- Mars SD card Image
+ ```
+ mars_debian-desktop_sdk-v*_sdcard_v*.img.zip
+ ```
+ After downloading, refer to [Burn Image](https://milkv.io/docs/mars/getting-started/boot#burn-image) Burn the image to the microSD card. Then insert the microSD card into Mars and power it on.
+
+- Mars eMMC Image
+ ```
+ mars_debian-desktop_sdk-v*_emmc_v*.img.zip
+ ```
+
+The default username and password are:
+```
+User: user
+Password: milkv
+```
+
+## Third-party Images
+
+### Ubuntu 24.04 (Noble Numbat)
+
+Ubuntu 24.04, officially released by Ubuntu, already provides a server version that supports Milk-V Mars.
+
+download link: [https://cdimage.ubuntu.com/releases/24.04/release/](https://cdimage.ubuntu.com/releases/24.04/release/)
+
+Download the preinstalled server image: [ubuntu-24.04-preinstalled-server-riscv64+milkvmars.img.xz](https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04-preinstalled-server-riscv64+milkvmars.img.xz)
+
+After downloading, refer to [Burn Image](https://milkv.io/docs/mars/getting-started/boot#burn-image) Burn the image to the microSD card.
+
+#### Update Flash firmware
+
+The factory-default U-boot firmware in Mars SPI Flash does not currently support booting Ubuntu images. You need to manually update the U-boot built from upstream sources. This U-boot firmware is already included in the Ubuntu 24.04 Mars image. We need to log in to the original U-boot of Mars through the serial console and update the U-boot firmware in the Ubuntu image to SPI Flash through commands.
+
+- Connect serial port
+
+ Refer to [Use Serial Console](https://milkv.io/docs/mars/getting-started/setup#use-serial-console) Connect the serial port cable using the method in the chapter.
+
+- Log in to the U-boot serial console
+
+ Insert the microSD card with the burned Ubuntu image into Mars, power it on, and quickly press the Enter key when `Hit any key to stop autoboot` appears in the serial terminal to enter the U-boot command line terminal:
+ ```python {6}
+ In: serial
+ Out: serial
+ Err: serial
+ Model: StarFive VisionFive V2
+ Net: eth0: ethernet@16030000, eth1: ethernet@16040000
+ Hit any key to stop autoboot: 0
+ StarFive #
+ ```
+
+- Enter the following commands in sequence
+
+ ```txt showLineNumbers
+ sf probe
+ load mmc 1:1 $kernel_addr_r /usr/lib/u-boot/starfive_visionfive2/u-boot-spl.bin.normal.out
+ sf update $kernel_addr_r 0 $filesize
+ load mmc 1:1 $kernel_addr_r /usr/lib/u-boot/starfive_visionfive2/u-boot.itb
+ sf update $kernel_addr_r 0x100000 $filesize
+ ```
+
+ When the above command is executed normally, the effect is as follows:
+
+ ```
+ StarFive # sf probe
+ SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
+ StarFive # load mmc 1:1 $kernel_addr_r /usr/lib/u-boot/starfive_visionfive2/ u-boot-spl.bin.normal.out
+ 141935 bytes read in 20 ms (6.8 MiB/s)
+ StarFive # sf update $kernel_addr_r 0 $filesize
+ device 0 offset 0x0, size 0x22a6f
+ 141935 bytes written, 0 bytes skipped in 0.679s, speed 213110 B/s
+ StarFive # load mmc 1:1 $kernel_addr_r /usr/lib/u-boot/starfive_visionfive2/ u-boot.itb
+ 1041691 bytes read in 60 ms (16.6 MiB/s)
+ StarFive # sf update $kernel_addr_r 0x100000 $filesize
+ device 0 offset 0x100000, size 0xfe51b
+ 963867 bytes written, 77824 bytes skipped in 7.199s, speed 148089 B/s
+ StarFive #
+ ```
+
+- Reset U-boot environment variables
+
+ Power on again, press the Enter key again when booting up to enter the U-boot command line terminal, and execute the following command:
+ ```
+ env default -f -a
+ env save
+ ```
+
+:::tip
+If the failure to update the Flash firmware causes Mars to fail to start normally, or if you need to flash the Flash firmware back to the default firmware, you can refer to the [Bootloader update](https://milkv.io/docs/mars/getting-started/bootloader) chapter , re-burn the Flash default firmware.
+:::
+
+#### Power on and start
+
+After updating the Flash firmware, power on again and you can boot the Ubuntu 24.04 Server system of Mars normally.
+
+When starting up for the first time, wait until you see the output line confirming that cloud-init has completed. Cloud init is responsible for generating SSH keys and setting default passwords. Wait for it to complete before logging in normally. When you see the following output from the serial port, it means that the process has been completed:
+
+```
+cloud-init[1055]: Cloud-init v. 24.1.3-0ubuntu3 finished at Fri, 19 Apr 2024 14:25:56 +0000. Datasource DataSourceNoCloud [seed=/var/lib/cloud/seed/nocloud-net][dsmode=net]. Up 93.71 seconds
+```
+
+Now you can log in using the following default user and password. You will be asked to set a new password when logging in for the first time:
+```
+User: ubuntu
+Password: ubuntu
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/setup.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/setup.md
new file mode 100644
index 00000000..5006913e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/setup.md
@@ -0,0 +1,59 @@
+---
+sidebar_label: 'Setting Up'
+sidebar_position: 20
+---
+
+# Set up the working environment
+
+## Use Serial Console
+
+### USB to TTL serial cable
+
+Each pin of a USB-to-TTL cable is defined as follows:
+
+![usb2ttl](/docs/mars/usb2ttl.png)
+
+### Connection
+
+Connect USB to TTL serial cable as shown below. Do not connect the red wire.
+
+| Milk-V Mars | \<---> | USB to TTL |
+| ------------ | ------ | ---------- |
+| GND (pin 6) | \<---> | Black wire |
+| TX (pin 8) | \<---> | White wire |
+| RX (pin 10) | \<---> | Green wire |
+
+![mars-serial](/docs/mars/mars-serial.jpg)
+
+The default serial setting for Mars console is:
+
+```
+baudrate: 115200
+data bit: 8
+stop bit: 1
+parity : none
+flow control: none
+```
+
+## Boot mode switch
+
+Mars hardware version V1.2 and later versions have a new DIP switch. You can choose to boot from SPI Flash, SD-card, eMMC or UART port. The DIP switch is factory default configured to boot from SPI Flash. If you need to configure it to other modes , please follow the table to configure the DIP switch:
+
+| GPIO1 | GPIO0 | |
+|:-----:|:-----:|:--------|
+| 0 | 0 | Flash |
+| 0 | 1 | SD-card |
+| 1 | 0 | eMMC |
+| 1 | 1 | UART |
+
+
+
+:::tip
+The boot method recommended by the CPU manufacturer is SPI Flash. Use the bootloder in Flash to continue booting from the SD card or eMMC. This method is the most stable. It is recommended that you use the method of booting directly from the SD-card or eMMC through DIP switch configuration as a debugging method or a method to verify functions.
+:::
+
+Mars before hardware version V1.2 boots from SPI Flash by default and can boot the system in the SD-card or eMMC normally. Not adding this DIP switch will not affect normal use.
+
+When you need to start updating the bootloader in Flash through the UART port, you can power on by pressing the button next to the LED on the board to enter UART mode. This method is applicable to all Mars hardware versions.
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/third-party-img.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/third-party-img.md
new file mode 100644
index 00000000..a123ba36
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/getting-started/third-party-img.md
@@ -0,0 +1,14 @@
+---
+sidebar_label: 'Third-party Image'
+sidebar_position: 50
+---
+# Third-party Image
+
+## Mars
+
+| OS | Download Link | Guide Link | Author |
+| ------ | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------ |
+| Ubuntu | [Ubuntu.com](https://ubuntu.com/download/risc-v#milk-v-mars) | [milk-v guide](https://milkv.io/docs/mars/getting-started/images#ubuntu-2404-noble-numbat) | [@Ubuntu](https://ubuntu.com) |
+| Deepin | [deepin](https://cdimage.deepin.com/RISC-V/preview-20240613-riscv64/deepin-23-beige-preview-riscv64-milkv-mars-20240613-123442.tar.xz) | [milk-v guide](https://milkv.io/docs/mars/getting-started/boot#burn-image) | [@deepin](https://www.deepin.org/index/en) |
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/mipicsi-support.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/mipicsi-support.md
new file mode 100644
index 00000000..a2a35e37
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/mipicsi-support.md
@@ -0,0 +1,10 @@
+---
+sidebar_label: '📷 MIPI CSI Camera Supported'
+sidebar_position: 100
+---
+# Camera for MIPI CSI
+Milk-V Mars supports the following
+
+| Manufacturer | Type specification | Description |
+|--------------|--------------------|------------------------|
+| Sony | IMX219 | 8MP sensor(crop 1080p) |
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/mipidsi-support.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/mipidsi-support.md
new file mode 100644
index 00000000..33fd1c32
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/mipidsi-support.md
@@ -0,0 +1,14 @@
+---
+sidebar_label: '🖥 MIPI DSI Display Supported'
+sidebar_position: 110
+---
+# Display for MIPI DSI
+
+Milk-V Mars supports the following
+
+| Manufacturer | Type specification | Description |
+|--------------|--------------------|------------------------|
+| Waveshare | 4.3inch DSI LCD | 2-Lane 4.3 inch 800x480 |
+| Waveshare | 7inch DSI LCD | 2-Lane 7 inch 800x480 |
+| Waveshare | 5inch DSI LCD | 2-Lane 5 inch 800x480 |
+| Radxa | Radxa Display 8 HD | 4-Lane 8 inch 800x1280 |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/overview.md
new file mode 100644
index 00000000..7d21fbcd
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/overview.md
@@ -0,0 +1,131 @@
+---
+sidebar_label: '🌍 Overview'
+sidebar_position: 1
+---
+
+# Mars
+
+Version 1.0
+
+-------------------------
+## Introduction
+
+Milk-V Mars is a high-performance RISC-V Single Board Computer (SBC) the size of a credit card, built on the StarFive JH7110. This four-core device supports a plug-and-play eMMC module, as well as up to 8GB of LPDDR4 memory. The board is equipped with three USB 3.0 ports, one USB 2.0 port, an HDMI 2.0 port that supports 4K resolution, an RJ45 Ethernet port that supports PoE (Power over Ethernet), and an M.2 E-Key slot for a WIFI/BT module. It also includes a 4-lane MIPI CSI and a 2-lane MIPI CSI, along with a 40-pin GPIO.
+
+![mars](/docs/mars/mars.webp)
+
+## Specification
+
+| Milk-V Mars | Specification |
+|--------------|-----------------------------------------------------|
+| SoC | Starfive JH7110 64bit SoC with RV64GC, up to 1.5GHz |
+| Memory | LPDDR4 1GB / 2GB / 4GB / 8GB |
+| Storage | 1x eMMC Slot |
+| | 1x Micro SD Slot |
+| | 1x SPI Flash for bootloader |
+| Video output | 1x HDMI |
+| | 1x mipi DSI(2-lane) |
+| | 1x mipi DSI(4-lane) |
+| | Max dual display output: 1 HDMI + 1 MIPI DSI |
+| Multimedia | 1x MIPI CSI(2-lane) |
+| | H.264 & H.265 4K@60fps Decoding |
+| | H.265 1080p@30fps Encoding |
+| | JPEG encoder/decoder |
+| Connectivity | 1x RJ45 Gigabit Ethernet |
+| | 3x USB3 + 1x USB2 |
+| | 1x M.2 E-Key |
+| Power | USB-C port 5V DC (minimum 3A+) |
+| | GPIO Power in, 5V DC via GPIO header (minimum 3A+) |
+| | PoE |
+| GPIO | 40 Pin GPIO Header,up to 28x GPIO, supporting 3.3V |
+| Dimensions | 85mm x 56mm |
+| Button | 1x Recovery botton |
+| Others | 2 Pin 5V slot for FAN |
+
+## Features
+
+- A 64-bit System-on-Chip (SoC) with RV64GC architecture, clocking up to 1.5GHz
+- Support for a removable eMMC module
+- Equipped with a Gigabit Ethernet port, PoE (Power over Ethernet) capable
+- Memory configuration up to 8GB LPDDR4
+- Features 3 USB 3.0 ports
+- Comes with 1 USB 2.0 port
+- Supports 1 4K HDMI 2.0 display output
+- Includes 2 MIPI DSI interfaces
+- Supports M.2 E-Key WIFI/BT module
+- Comes with a 40-pin GPIO interface
+
+## Hardware
+
+### SoC
+
+**Starfive JH7110** has the following
+- RISC-V U74 quad-core and S7 monitor core with 2 MB L2 cache
+- Support Linux OS with kernel versions 5.10 and 5.15
+- CPU work frequency up to 1.5 GHz
+- GPU IMG BXE-4-32
+- 32-bit LPDDR4/DDR4/LPDDR3/DDR3, up to 2,800 Mbps
+- Video decoder supports up to 4K@60fps and multi-stream for H.264/H.265
+- Video encoder supports up to 1080p@30fps and multi-stream for H.265
+- Provide JPEG encoder/decoder
+- Support up to 1080p@30fps full-functional ISP
+- Support video input: 1 × DVP and 1 × MIPI-CSI with 4D2C up to 4K@30fps
+- Support video output: MIPI display output with 4D1C up to 1080p@60fps
+- Support 1 × HDMI2.0 port display up to 4K@30fps
+- Support 24-bit RGB parallel interface up to 1080p@30fps
+- Support 2 × PCIe2.0, 1 lane
+- Support USB3.0 Host/Device (By reusing 1 of the PCIe2.0 lanes)
+- Support 2 × Ethernet MAC 1000 Mbps, 2 × CAN2.0B
+- Support IEEE 1588-2002 and IEEE 1588-2008 standards
+- Support TRNG and support OTP, DMA, QSPI, and other peripherals
+- Audio DSP supports floating-point instructions
+- Dedicated audio processing and sub-system
+
+#### GPU
+
+The GPU of JH7110 has the following
+- IMG BXE-4-32 MC1 with work frequency up to 600 MHz (400 MHz by default)
+- Fully compliant with the following APIs:
+ - Support OpenCL 3.0
+ - Support OpenGL ES 3.2
+ - Support Vulkan 1.2
+- Tile-based deferred rendering architecture for 3D graphics workloads, with concurrent processing of multiple tiles
+- Programmable high-quality image anti-aliasing
+- Fine-grain triangle culling
+- Support for DRM security
+- Support for GPU visualization
+ - Up to 8 virtual GPUs
+ - Support for IMG Hyper-Lane technology, with 8 hyper-lanes available
+ - Separate IRQs per OSID
+- Multi-threaded Unified Shading Cluster (USC) engine incorporating pixel shader, vertex shader, and GP-GPU (compute shader) functionality
+- USC incorporates an ALU architecture with high SIMD efficiency
+- Fully virtual memory addressing (up to 64 GB address space), supporting unified memory architecture
+- Fine-grained task switching, workload balancing, and power management
+- Advanced DMA driven operation for minimum host CPU interaction
+- System Level Cache (SLC)
+- Specialized Texture Cache Unit (TCU)
+- Compressed texture decoding
+- Lossless and/or visually lossless low area image compression - the Imagination
+- frame buffer compression and decompression (TFBC) algorithm
+- Dedicated processor for B-Series core firmware execution
+ - Single-threaded firmware processor with a 2 KB instruction cache and a 2 KB data cache.
+
+### Memory
+
+**Milk-V Mars** offers a choice of 2GB / 4GB / 8GB memory sizes.
+The memory specification is LPDDR4 2800MT/s.
+
+### Camara for MIPI CSI
+
+Milk-V Mars supports the following [Here](https://milkv.io/docs/mars/mipicsi-support)
+
+### Display for MIPI DSI
+
+Milk-V Mars supports the following [Here](https://milkv.io/docs/mars/mipidsi-support)
+
+### UVC Camera
+
+Milk-V Mars supports the following [Here](https://milkv.io/docs/mars/uvccam-support)
+
+### Support
+For support please post your issue on the [Milk-V Community Mars Category](https://community.milkv.io/c/mars).
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/resources/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/mars/resources/_category_.json
new file mode 100644
index 00000000..b551dd17
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/resources/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🧰 Resources",
+ "position": 90,
+ "link": {
+ "type": "generated-index",
+ "slug": "/mars/resources",
+ "description": "Useful Resources"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/resources/image.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/resources/image.md
new file mode 100644
index 00000000..2b56a7cb
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/resources/image.md
@@ -0,0 +1,21 @@
+---
+sidebar_label: 'Official Image'
+sidebar_position: 40
+---
+# Official Image
+
+## Debian
+
+~~~
+login user: user
+login password: milkv
+~~~
+
+[Download from Github](https://github.com/milkv-mars/mars-buildroot-sdk/releases/)
+
+Images introduction:
+
+### Mars SD Card image
+```
+mars_debian-desktop_*_sdcard_v*.img.zip
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/mars/uvccam-support.md b/i18n/ja/docusaurus-plugin-content-docs/current/mars/uvccam-support.md
new file mode 100644
index 00000000..0f410a7a
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/mars/uvccam-support.md
@@ -0,0 +1,11 @@
+---
+sidebar_label: '📹 UVC Camera Supported'
+sidebar_position: 120
+---
+# UVC Camera
+Milk-V Mars supports the following
+
+| Manufacturer | Type specification | Description |
+|--------------|--------------------|------------------------|
+| Logitech | Logitech C270 | 720p |
+| Logitech | Logitech C920 | 1080p |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/_category_.json
new file mode 100644
index 00000000..2d0ed9b3
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🦨 Meles",
+ "position": 1,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles",
+ "description": "Hello, I am Milk-V Meles"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/_category_.json
new file mode 100644
index 00000000..28501653
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🚀 Getting Started",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles/getting-started",
+ "description": "Getting Started with Meles"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/boot.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/boot.md
new file mode 100644
index 00000000..166a0dc4
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/boot.md
@@ -0,0 +1,94 @@
+---
+sidebar_label: 'Boot the Meles'
+sidebar_position: 10
+---
+
+# Boot the Meles
+
+## Prepare
+
+#### Necessary
+
+- Meles
+- eMMC larger than 16GB
+- Power supply
+ - The Meles is powered by a Type-C port with an input voltage of 5V.
+
+#### Optional
+- USB to TTL serial cable
+ - [Use Serial Console](./setup.md).
+- Ethernet cable
+ - Meles supports Internet access via WIFI or Ethernet.
+ - Ethernet cables are used to connect the Meles to the local network and the Internet.
+- USB Type A to Type C Cable
+ - Required to use the fastboot command to burn an image into the EMMC.
+- USB Keyboard and Mouse
+ - The Meles features four USB-A ports and can be equipped with a full-size keyboard and mouse.
+- Monitor and HDMI cable
+ - The Meles is equipped with a full-size HDMI connector. It is recommended to use a monitor that supports HDMI.
+ - Supports up to 3840 x 2160 (4K) resolution.
+
+## Download images and tools
+
+You need to use the fasboot utility to burn the image into the eMMC.
+
+- Commands for installing the fasboot utility on Linux: `sudo apt-get install android-tools-adb`.
+
+You will need to download the following three files:
+
+- u-boot-with-spl-meles-4g.bin or u-boot-with-spl-meles.bin
+ - Choose according to the meles memory size, 4G choose u-boot-with-spl-meles-4g.bin, 8G choose u-boot-with-spl-meles.bin
+- boot-meles-20240417_155900.ext4
+- root-meles-20240417_155900.ext4
+
+Download the system image from [Resources Download](../resources-download/image.md).
+
+## Write images
+
+#### Here are the steps on how to burn an image to an eMMC using the fasboot utility on a Linux system, If you want to boot with an SD card, click here: [Install an image to MicroSD Card](../installation/install-an-image-to-microsd-card.md).
+
+- First snap the EMMC into the slot on the back of the meles
+
+![Install-eMMC](/docs/meles/Install-emmc.webp)
+
+- Use the Type-A to Type-C cable to connect the meles to the PC.
+ - Type-A port connects to the PC's Type-A port, and Type-C port connects to the meles' Type-C port.
+
+- The following steps need to be performed to put the Meles into burn mode
+ - Press and hold the Meles Download Button
+ - Reconnect to Type-C port
+ - Release the Download Button
+
+![Download Button](/docs/meles/DownloadButton.webp)
+
+- Enter the following command to view the PC side and the device will appear
+```
+$ lsusb | grep T-HEAD
+Bus 001 Device 045: ID 2345:7654 T-HEAD USB download gadget
+```
+
+- Execute the following command to start burning
+ - The `u-boot-with-spl.bin` file is divided into `u-boot-with-spl-meles-4g.bin` and `u-boot-with-spl-meles.bin`, depending on the memory size of the meles you have.
+ - `4G` choose `u-boot-with-spl-meles-4g.bin`, `8G` choose `u-boot-with-spl-meles.bin`
+```
+$ fastboot flash ram u-boot-with-spl-meles.bin
+$ fastboot reboot
+$ sleep 5
+$ fastboot flash uboot u-boot-with-spl-meles.bin
+$ fastboot flash boot boot-meles-20240417_155900.ext4
+$ fastboot flash root root-meles-20240417_155900.ext4
+```
+
+- The following figure represents a successful burn-in
+
+![Write Success](/docs/meles/WriteSuccess.webp)
+
+## Power on
+
+Connect the Meles with a Type-C cable using an adapter (5V) and a HDMI cable to screen.
+
+When the system boots up, the screen Meles is connected to will show the Debian desktop.
+
+## Troubleshooting
+
+If you have a problem, go to our [community](https://community.milkv.io/) and post to let us know.
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/setup.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/setup.md
new file mode 100644
index 00000000..0c39664d
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/getting-started/setup.md
@@ -0,0 +1,36 @@
+---
+sidebar_label: 'Setting Up'
+sidebar_position: 20
+---
+
+# Set up the working environment
+
+## Use Serial Console
+
+### USB to TTL serial cable
+
+Each pin of a USB-to-TTL cable is defined as follows:
+
+![usb2ttl](/docs/meles/usb2ttl.png)
+
+### Connection
+
+Connect USB to TTL serial cable as shown below. Do not connect the red wire.
+
+| Milk-V Mars | \<---> | USB to TTL |
+| ------------ | ------ | ---------- |
+| GND (pin 6) | \<---> | Black wire |
+| TX (pin 8) | \<---> | White wire |
+| RX (pin 10) | \<---> | Green wire |
+
+![mars-serial](/docs/meles/meles-serial.png)
+
+The default serial setting for Mars console is:
+
+```
+baudrate: 115200
+data bit: 8
+stop bit: 1
+parity : none
+flow control: none
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/hardware/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/hardware/_category_.json
new file mode 100644
index 00000000..17e248de
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/hardware/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🔌 Hardware Introduction",
+ "position": 50,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles/hardware",
+ "description": "Hardware Introduction"
+ }
+}
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/hardware/meles-main-board.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/hardware/meles-main-board.md
new file mode 100644
index 00000000..579ff222
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/hardware/meles-main-board.md
@@ -0,0 +1,248 @@
+---
+sidebar_label: 'Meles Main board'
+sidebar_position: 50
+---
+
+# Meles Main board
+
+## Interface Description
+
+![meles-hardware-interface](/docs/meles/meles-hardware-interface.jpeg)
+
+| NO. | Name | NO. | Name | NO. | Name |
+| ---- | ----------------------- | ---- | ---------------- | ---- | ----------------- |
+| 1 | SPI Nor Flash | 11 | User LED | 21 | MIPI CSI |
+| 2 | 40-PIN Header | 12 | USB-C Power | 22 | Fan |
+| 3 | External Antenna Socket | 13 | HDMI | 23 | eMMC Socket |
+| 4 | Internal Anternna | 14 | PoE | 24 | MicroSD Card Slot |
+| 5 | Wi-Fi5 / BT5.0 | 15 | Download Button | 25 | JTAG |
+| 6 | MIPI DSI | 16 | USB 3.0 Host | | |
+| 7 | Soc TH1520 | 17 | eMMC Boot Button | | |
+| 8 | MIPI CSI | 18 | RAM | | |
+| 9 | Power LED | 19 | Gigabit Ethernet | | |
+| 10 | Reset Button | 20 | Headphone | | |
+
+
+## Hardware Version
+
+Meles comes with different versions. When you get the board, you need to know the hardware version like 'Meles V1.2', which is printed in the top side of the board.
+
+## Power Supply
+
+Meles uses the USB Type-C port for both power and communication.
+
+To power Meles standalone, you can use 5V/3A power adapter with USB Type-C port. You can use the USB PD/QC power adapter without worrying damaging the board because the PD/QC will detect that Meles only supports 5V, so the adapter will output 5V.
+
+Meles can be powered from the PC/Laptop ports directly.
+
+When you use PoE function provided by Meles, you may power Meles by putting DC +5V directly to PIN#2 and PIN#4. GND pins lke PIN#6 and PIN#9 are also needed.
+
+## Processor
+
+The T-HEAD TH1520 SoC used in Meles is a high-performance processor.
+
+* CPU
+ * RISC-V 64GCV C910*4@2.0GHz
+ * Each core contains 64KB I cache amd 64KB D Cache
+ * 1MB of Shared L2 Cache
+ * Support TEE and REE, configured during core booting
+ * Support multi-core debugging framework of custom and RISC-V compatible interface
+ * Independent power domain, supports DVFS
+* GPU
+ * OpenCL 1.1/1.2/2.0
+ * OpenGL ES 3.0/3.1/3.2
+ * Vulkan 1.1/1.2
+ * Android NN HAL
+* NPU
+ * Support 4TOPS@INT8, up to 1GHz
+ * Support TensorFlow, ONNX, Caffe
+ * Support CNN, RNN, DNN
+* Decode
+ * Real-time decoder, support H.265/H.264/VP9/8/7/6/AVS/AVS+/AVS2.0/VC1/MPEG4
+ * Supports H.264 BP/MP/HP@level 5.1 decoding, up to 4K resolution
+ * Supports H.265/HEVC Main Profile@level 5.1 decoding, up to 4K resolution
+ * Supports VP9 Profile-2 decoding, up to 4K resolution
+ * Supports AVS2.0 decoding, up to 4K resolution
+ * Supports VP6/7/8/AVS/AVS+/VC1/MPEG4 decoding, up to 1920x1080 resolution
+ * Decoding at 4K@75fps maximum
+* Encode
+ * Supports H.264 BP/MP/HP(level4.2) encoding, up to 4K resolution
+ * Supports H.265/HEVC Main Profile encoding, up to 4K resolution
+ * Only supports I-frames and P-frames
+ * Encoding at 4K@40fps maximum
+
+## Memory
+
+Meles's memory is LPDDR4x 4266MT/s. Meles is available in 4GB / 8GB /16GB memory options.
+
+## Ethernet
+
+Meles offers a Gigabit Ethernet port. From the test results, the bandwidth is at least 930 Mbits/sec.
+
+If you are interested in PoE (Power over Ethernet), you should try it on Meles.
+
+## Micro SD Card Interface
+
+The Micro SD card interface pin specification shows below.
+
+| PIN# | Name |
+| ---- | ---------- |
+| 1 | SDIO0_DAT2 |
+| 2 | SDIO0_DAT3 |
+| 3 | SDIO0_CMD |
+| 4 | VSD_3V3 |
+| 5 | SDIO0_CLK |
+| 6 | GND |
+| 7 | SDIO0_DAT0 |
+| 8 | SDIO0_DAT1 |
+| 9 | SDIO0_DETN |
+| 10 | GND |
+
+## eMMC Socket on Board Interface Feature
+
+The high performance eMMC module is the best choice as the system storage for Meles. The eMMC module with 8GB/16GB/32GB/64GB/128GB is available.
+
+The eMMC Socket pin specification shows below.
+
+| Name | PIN | PIN | Name |
+| :-------: | :--: | :--: | :---------: |
+| GND1 | 1 | 34 | GND11 |
+| EMMC_D5 | 2 | 33 | EMMC_D6 |
+| GND2 | 3 | 32 | GND12 |
+| EMMC_D4 | 4 | 31 | EMMC_D7 |
+| GND3 | 5 | 30 | GND13 |
+| EMMC_0 | 6 | 29 | EMMC_D1 |
+| GND4 | 7 | 28 | GND14 |
+| EMMC_CLK | 8 | 27 | EMMC_D2 |
+| GND5 | 9 | 26 | GND15 |
+| EMMC_D3 | 10 | 25 | EMMC_CMD |
+| GND6 | 11 | 24 | GND16 |
+| EMMC_RSTN | 12 | 23 | DVDD33_EMMC |
+| GND7 | 13 | 22 | DVDD33_EMMC |
+| GND8 | 14 | 21 | DVDD18_EMMC |
+| EMMC_RCLK | 15 | 20 | DVDD18_EMMC |
+| GND9 | 16 | 19 | GND17 |
+| GND10 | 17 | 18 | GND18 |
+
+## USB Interface
+
+The Meles has four USB-A connectors. All are USB 3.0. It can be operated with any generic USB computer keyboard and mouse. It can also be used with USB storage, USB to MIDI converters, and almost any other USB capable device/component.
+
+## HDMI Interface
+
+The Meles is equipped with one HDMI connector. As for HDMI, the maximum resolution is 4k@60Hz. Any HDMI monitor should work as a display for the Meles.
+
+The HDMI interface pin specification shows below.
+
+| PIN# | Name |
+| ---- | ----------- |
+| 1 | HDMI_DATAP2 |
+| 2 | GND |
+| 3 | HDMI_DATAN2 |
+| 4 | HDMI_DATAP1 |
+| 5 | GND |
+| 6 | HDMI_DATAN1 |
+| 7 | HDMI_DATAP0 |
+| 8 | GND |
+| 9 | HDMI_DATAN0 |
+| 10 | HDMI_CLKP |
+| 11 | GND |
+| 12 | HDMI_CLKN |
+| 13 | HDMI_CEC |
+| 14 | NC |
+| 15 | HDMI_SCL |
+| 16 | HDMI_SDA |
+| 17 | GND |
+| 18 | VCC5V0_HDMI |
+| 19 | HDMI_HPD |
+
+## DSI Interface
+
+It is used for MIPI Display.
+
+## CSI1/CSI2 Interface
+
+It is used for MIPI Camera.
+
+## Audio Interface
+
+Meles is equipped with a standard 3.5mm jack. An audio lead is necessary to produce sound when there is no HDMI cable. Audio can be played through speakers or headphones using jack. This requires you to use the Desktop volume control for configuration.
+
+## PWM Fan
+
+| PIN# | Name |
+| ---- | ----- |
+| 1 | PWM |
+| 2 | +5V |
+
+## LED
+
+Meles has Power LED and User LED.
+
+Power LED is green. It is always on when Meles in given power.
+
+User LED is blue. It can be controlled by software. By default its blink status shows the running kernel.
+
+## Buttons
+
+Meles presents three buttons, Reset button, Download button and eMMC boot button.
+
+The Reset button serves as the hardware reset button. Short press the button to reboot the system.
+
+The Download button is for firmware flash/upgrade.
+
+The eMMC boot button is for eMMC booting first.
+
+## JTAG Interface
+
+Meles is equipped with a JTAG interface for internal debug.
+
+The JTAG interface pin specification shows below.
+
+| PIN# | Name |
+| ---- | ---------- |
+| 1 | JTG_TMS |
+| 2 | JTG_TD |
+| 3 | JTG_TDO |
+| 4 | JTG_TCLK |
+| 5 | GND |
+| 6 | AOUART_TXD |
+| 7 | GND |
+| 8 | AOUART_RXD |
+| 9 | GND |
+| 10 | GND |
+
+## 40 PIN GPIO
+
+The Meles is supplied with a 40pin pin GPIO cradle that is compatible with most sensor applications on the market.
+
+**_Hint:_ Actual compatibility is subject to use.**
+
+- The Meles has a 40-pin expansion connector. Each pin is color coded.
+
+
+
+| Function4 | Function3 | Function2 | Function1 | GPIO | Pin# | Pin# | GPIO | Function1 | Function2 | Function3 | Function4 |
+| :----------: | :--------------: | :--------: | :--------: | :------: | :------------------------------: | :-----------------------------: | :-------: | :-------------------------------------: | :---------: | :---------: | :-----------: |
+| | | | +3.3V | |
1
|
2
| | +5.0V | | | |
+| | | | I2C1_SDA | GPIO0_9 |
3
|
4
| | +5.0V | | | |
+| | | | I2C1_SCL | GPIO0_8 |
5
|
6
| | GND | | | |
+| | | | UART3_TXD | GPIO0_16 |
7
|
8
| GPIO2_0 |
UART0_TXD
| | | |
+| | | | GND | |
9
|
10
| GPIO2_1 |
UART0_RXD
| | | |
+| | | | UART3_RXD | GPIO0_17 |
11
|
12
| AOGPIO_8 | I2S2_SCLK | AUDIO_PA19 | AOUART_TXD | AOUART_IR_OUT |
+| | | | GMAC1_RXDV | GPIO2_25 |
13
|
14
| | GND | | | |
+| | | | GMAC1_TXD3 | GPIO2_24 |
15
|
16
| GPIO2_22 | GMAC1_TXD1 | | | |
+| | | | +3.3V | |
17
|
18
| GPIO2_31 | GMAC1_RXD1 | | | |
+| | | | SPI_MOSI | GPIO2_16 |
19
|
20
| | GND | | | |
+| | | | SPI_MISO | GPIO2_17 |
21
|
22
| GPIO3_2 | PWM0 | | | |
+| UART2_IR_OUT | UART2_TXD | SPI_SCLK | SPI_SCLK | GPIO2_14 |
23
|
24
| GPIO2_15 | SPI_SSN0 | UART2_RXD | UART2_IR_IN | |
+| | | | GND | |
25
|
26
| | ADC | | | |
+| | | | I2C3_SDA | GPIO2_12 |
27
|
28
| GPIO2_11 | I2C3_SCL | | | |
+| | | | GMAC1_TXD2 | GPIO2_23 |
29
|
30
| | GND | | | |
+| | | | GMAC1_RXD2 | GPIO3_1 |
31
|
32
| GPIO0_10 | UART1_TXD | | | |
+| | | | UART1_RXD | GPIO0_11 |
33
|
34
| | GND | | | |
+| | PLL_DSKEW_BYPASS | AUDIO_PA18 | I2S2_LRCK | AOGPIO_7 |
35
|
36
| GPIO3_3 | PWM1 | | | |
+| | | | GMAC1_RXD2 | GPIO3_0 |
37
|
38
| AOGPIO_10 | AUDIO_PA21 | BISR_BYPASS | | |
+| | | | GND | |
39
|
40
| AOGPIO_11 | AUDIO_PA22 | | | |
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/_category_.json
new file mode 100644
index 00000000..d12e13a3
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🖊️ Installation",
+ "position": 50,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles/installation",
+ "description": "Install an image"
+ }
+}
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/install-an-image-to-microsd-card.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/install-an-image-to-microsd-card.md
new file mode 100644
index 00000000..f1bf5656
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/install-an-image-to-microsd-card.md
@@ -0,0 +1,50 @@
+---
+sidebar_label: 'Install an image to MicroSD Card'
+sidebar_position: 50
+---
+
+# Install an image to MicroSD Card
+
+SoC TH1520 used on Meles supports booting from SPI Nor Flash and eMMC.
+There is one MicroSD Card slot on Meles. Therefore Meles supports the following booting method: SPI Nor Flash + MicroSD Card.
+
+## Requirements
+
+- Meles with proper power
+- SPI Nor Flash with bootloader on board
+- A MicroSD Card, larger than 16GB, class 10 or better
+- A PC/laptop running Windows or Linux or MacOS
+
+## Install tools on PC
+
+Get Balena Etcher from webite, https://etcher.balena.io/.
+
+Get the decompression tool 7-Zip from GitHub, https://github.com/mcmilk/7-Zip-zstd/releases/download/v22.01-v1.5.5-R3/7z22.01-zstd-x64.exe
+
+## Get Meles MicroSD card image
+
+Download Meles MicroSD Card image. https://mirror.iscas.ac.cn/revyos/extra/images/meles/20240601/sdcard-meles-20240601_180943.img.zst
+
+You can use 7-Zip or other tools to extract the downloaded .zst compressed file to any directory.
+
+## Write the image to MicroSD Card
+
+- Insert the MicroSD Card into MicroSD Card Reader, which connects to Host PC.
+- Run the application Etcher
+- On the Etcher window, we click "Flash from file" to select image file.
+
+![sdcard-etcher-flash-from-file](/docs/meles/sdcard-etcher-flash-from-file.png)
+
+- On the Etcher window, we click "Select target" to select MicroSD Card device.
+
+![sdcard-etcher-select-target](/docs/meles/sdcard-etcher-select-target.png)
+
+- On the Etcher window, we click "Flash!" to write the image.
+
+![sdcard-etcher-flash](/docs/meles/sdcard-etcher-flash.png)
+
+- On the Etcher window, it shows that "Flash Complete!".
+
+![sdcard-etcher-flash-complete](/docs/meles/sdcard-etcher-flash-complete.png)
+
+Now we have successfully installed the image to MicroSD Card.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/install-an-image-to-spi-nor-flash.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/install-an-image-to-spi-nor-flash.md
new file mode 100644
index 00000000..70821571
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/installation/install-an-image-to-spi-nor-flash.md
@@ -0,0 +1,234 @@
+---
+sidebar_label: 'Install an image to SPI Nor Flash'
+sidebar_position: 50
+---
+
+# Install an image to SPI Nor Flash
+
+Meles has a SPI nor Flash on board. It contains the Bootloader and supports booting other media that the SoC download mode itself does not directly support such Micro SD card and USB.
+
+## Install an image to SPI Nor Flash via UART port
+
+When you replace a new SPI Nor Flash or the firmware is damaged, you may need to burn an image for it. In this case, you can use the serial port to burn it.
+
+### Requirements
+
+- Meles with proper power
+- Bootloader for Meles
+- Image writer
+- USB to TTL serial cable
+- Linux Ubuntu PC
+
+### Install tools on PC
+
+Install yoctools
+
+
+$ sudo pip install yoctools -U
+
+
+Check version
+
+
+$ yoc --version
+2.0.74
+
+
+Get image writer, iw-single-line.bin
+
+
+$ wget https://github.com/milkv-meles/thead-bin/raw/main/image-writer/iw-single-line.bin
+
+
+### Get essential images
+
+First you need to prepare the image for burning. If your Meles is the 8GB version, you need to download ```u-boot-with-spl-meles.bin```. If your Meles is the 4GB version, download ```u-boot-with-spl-meles-4g.bin```. These files can be found in the [Official Image](../resources-download/image.md) section.
+
+Download zero image.
+
+
+$ wget https://github.com/milkv-meles/thead-bin/raw/main/image-writer/zero-1m.img
+
+
+### Boot Meles to download mode
+
+To boot Meles to download mode is simple:
+
+- Power down Meles
+- Plug USB to TTL serial cable to Meles debug port
+- Press download button and hold it
+- Plug USB Type-C power adapter to Meles Type-C port to power on Meles
+- Release download button
+
+### Write Bootloader to SPI Nor Flash
+
+#### Step 1: Check available devices with cct tool
+
+Run the following command. /dev/ttyUSB0 is the serial port on PC.
+
+
+$ sudo cct list -u /dev/ttyUSB0
+Wait ..............
+
+
+Just ignore the log and go to the Step 2.
+
+#### Step 2: Boot Meles to download mode
+
+- Power down Meles
+- Plug USB to TTL serial cable to Meles debug port
+- Press download button and hold it
+- Plug USB Type-C power adapter to Meles Type-C port to power on Meles
+- Release download button
+- Check device
+
+
+$ sudo cct list -u /dev/ttyUSB0
+Wait ............................
+Memory device list:
+ dev = ram0 , size = 1.1MB
+ dev = qspi0 , size = 16.0MB
+
+
+#### Step 3: Download image writer to SRAM
+
+
+$ sudo cct download -u /dev/ttyUSB0 -d ram0 -f ./iw-single-line.bin -v checksum -r
+Wait
+Send file './iw-single-line.bin' to 2:0 ...
+File ./iw-single-line.bin download success.
+Start to verify data with method:[checksum]
+checksum value is: 0x880572
+读出并校验成功!
+Start to run image...
+
+
+#### Step 4: Download Bootloader to SPI Nor Flash
+
+Download bootloader to 8GB Meles.
+
+
+$ sudo cct download -u /dev/ttyUSB0 -d qspi0 -f ./u-boot-with-spl-meles.bin -v checksum -r -t 1200
+Wait
+Send file './u-boot-with-spl-meles.bin' to 23:0 ...
+File ./u-boot-with-spl-meles.bin download success.
+Start to verify data with method:[checksum]
+checksum value is: 0x428a844
+读出并校验成功!
+Start to run image...
+
+
+#### Step 5: Power cycle Meles
+
+Power cycle Meles and the blue LED should be always on.
+
+### Erase SPI Nor Flash
+
+#### Step 1: Check available devices with cct tool
+
+Run the following command. Device /dev/ttyUSB0 is the serial port on PC.
+
+
+$ sudo cct list -u /dev/ttyUSB0
+Wait ..............
+
+
+Just ignore the log and go to the Step 2.
+
+#### Step 2: Boot Meles to download mode
+
+- Power down Meles
+- Plug USB to TTL serial cable to Meles debug port
+- Press download button and hold it
+- Plug USB Type-C power adapter to Meles Type-C port to power on Meles
+- Release download button
+- Check device
+
+
+$ sudo cct list -u /dev/ttyUSB0
+Wait ............................
+Memory device list:
+ dev = ram0 , size = 1.1MB
+ dev = qspi0 , size = 16.0MB
+
+
+#### Step 3: Download image writer to SRAM
+
+
+$ sudo cct download -u /dev/ttyUSB0 -d ram0 -f ./iw-single-line.bin -v checksum -r
+Wait
+Send file './iw-single-line.bin' to 2:0 ...
+File ./iw-single-line.bin download success.
+Start to verify data with method:[checksum]
+checksum value is: 0x880572
+读出并校验成功!
+Start to run image...
+
+
+#### Step 4: Download zero image to SPI Nor Flash
+
+
+$ sudo cct download -u /dev/ttyUSB0 -d qspi0 -f ./zero-1m.img -v checksum -r -t 1200
+Wait
+Send file './zero-1m.img' to 23:0 ...
+File ./zero-1m.img download success.
+Start to verify data with method:[checksum]
+checksum value is: 0x0
+读出并校验成功!
+Start to run image...
+
+
+#### Step 5: Power cycle Meles
+
+Power cycle Meles and the Soc will go directly into download mode and the blue LED will go out.
+
+
+## Flashing images for SPI Nor Flash via Fastboot
+
+If there is available firmware in SPI Nor Flash, the image can be burned through Fastboot when the Soc enters download mode.
+
+Because the TH1520 chip does not have a driver under Windows, the following steps must be performed under the Ubuntu system.
+
+### Download images and tools
+
+First, you need to execute the following command to install the fastboot utility
+
+```
+sudo apt-get install android-tools-adb
+sudo apt-get install fastboot
+```
+
+In addition, you need to prepare the image file for flashing. If your Meles is the 8GB version, you need to download ```u-boot-with-spl-meles.bin```. If your Meles is the 4GB version, download ```u-boot-with-spl-meles-4g.bin```. These files can be found in the [Official Image](../resources-download/image.md) section.
+
+### Start to write
+
+#### Step 1: Launch Meles in download mode
+
+- Meles shuts down and powers off
+- Press and hold the download button
+- Plug in the Type C cable to power up Meles
+- Release the Download button
+
+Type the following command on the PC to view the device:
+
+```
+$ lsusb | grep T-HEAD
+Bus 001 Device 045: ID 2345:7654 T-HEAD USB download gadget
+```
+
+At this time, execute the ```fastboot devices``` command, and the fastboot device number will be returned on the screen, proving that fastboot is available.
+
+#### Step 2: Write
+
+Enter the directory where the image file is stored and execute the following command to start flashing:
+
+```
+fastboot flash ram u-boot-with-spl.bin
+fastboot reboot
+#Wait 3-5 seconds for Meles to reboot
+fastboot flash uboot u-boot-with-spl.bin
+```
+
+#### Step 3: Restart Meles
+
+After Meles is powered on again, if the system is normal, the blue LED should be always on.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/low-level-development/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/low-level-development/_category_.json
new file mode 100644
index 00000000..99f99038
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/low-level-development/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🐧 Low Level Development",
+ "position": 60,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles/low-level-development",
+ "description": "How to build u-boot, kernel and rootfs for meles"
+ }
+}
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/low-level-development/build-revyos.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/low-level-development/build-revyos.md
new file mode 100644
index 00000000..6116a7c3
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/low-level-development/build-revyos.md
@@ -0,0 +1,10 @@
+---
+sidebar_label: 'Build RevyOS'
+sidebar_position: 10
+---
+
+# Build RevyOS
+
+To build RevyOS V2024-0417, Please view https://github.com/milkv-meles/build/blob/main/README.md.
+
+If you want to build the newest image, Please view https://github.com/revyos/revyos.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/os-usage/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/os-usage/_category_.json
new file mode 100644
index 00000000..88c5956f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/os-usage/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🖥️ OS Usage",
+ "position": 30,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles/os-usage",
+ "description": "OS Usage with Meles"
+ }
+}
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/os-usage/revyos.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/os-usage/revyos.md
new file mode 100644
index 00000000..d3efd72f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/os-usage/revyos.md
@@ -0,0 +1,269 @@
+---
+sidebar_label: 'RevyOS'
+sidebar_position: 50
+---
+
+# RevyOS
+
+Meles RevyOS is an easy to use desktop system. While working with Meles RevyOS, you will find that it performs well in audio, video, Internet, BT, AI, etc.
+
+Command prepended by `$` means that the command may be executed by an unprivileged user. And command prepended by `#` means that the command may be executed by an privileged user. But the symbol, `$` and `#`, are not part of the command.
+
+## Login
+
+Login requires account and password。
+
+- User Name: **debian**
+- password : **debian**
+
+![desktop-login](/docs/meles/login.webp)
+
+## Open Terminal
+
+You can open the command line terminal directly by clicking on the following icon or by using the shortcut `Ctrl + Alt + T` key combination.
+
+![cmd-line-1](/docs/meles/cmd-line-1.webp)
+
+![cmd-line-2](/docs/meles/cmd-line-2.webp)
+
+- Enter the `sudo su` command to access `root` privileges, with the password: `debian`.
+
+![cmd-line-3](/docs/meles/cmd-line-3.webp)
+
+## Enternet connection
+
+Connect the network cable to the Meles' Ethernet port.
+
+- Check status when the cable is not connected.
+
+![ethernet-disconnect](/docs/meles/ethernet-disconnect.webp)
+
+- Check tatus when the network cable is connected.
+
+![ethernet-connect](/docs/meles/ethernet-connect.webp)
+
+## Wi-Fi connection
+
+- Click the icon in the upper right corner to view the wireless network.
+
+![wifi-connect-1](/docs/meles/wifi-connect-1.webp)
+
+- Enter the password and click 'Connect' to connect to the hotspot.
+
+![wifi-connect-2](/docs/meles/wifi-connect-2.webp)
+
+![wifi-connect-3](/docs/meles/wifi-connect-3.webp)
+
+## Bluetooth Connect
+
+### Enable bluetooth
+
+Bluetooth needs to be enabled by entering the following command at the command line.
+
+- Requires **`root`** privileges.
+
+- Type the **`vi bt_enable.sh`** command to open a vim editor.
+
+![enable-bt-1](/docs/meles/enable-bt-1.webp)
+
+- Press the **`i`** key to enter the input mode.
+
+![enable-bt-2](/docs/meles/enable-bt-2.webp)
+
+- Then type the following
+```
+echo 509 > /sys/class/gpio/export
+echo out > /sys/class/gpio/gpio509/direction
+echo 0 > /sys/class/gpio/gpio509/value
+sleep 2
+echo 1 > /sys/class/gpio/gpio509/value
+sleep 1
+
+brcm_patchram_plus --enable_hci --no2bytes --tosleep 200000 --baudrate 115200 --patchram /lib/firmware/brcm/BCM4345C5.hcd /dev/ttyS4 &
+```
+
+![enable-bt-3](/docs/meles/enable-bt-3.webp)
+
+- After the content is entered, press the **`ESC`** key to enter the bottom line mode, then enter **`wq`** and press **`Enter`** to save and exit.
+
+![enable-bt-4](/docs/meles/enable-bt-4.webp)
+
+- Execute the **`chmod +x bt_enable.sh`** command
+
+![enable-bt-5](/docs/meles/enable-bt-5.webp)
+
+- Execute **`./bt_enable.sh`** to enable Bluetooth and the Bluetooth icon will be displayed in the upper right corner.
+
+![enable-bt-6](/docs/meles/enable-bt-6.webp)
+
+- Click on the Bluetooth icon in the upper-right corner, the Enable Bluetooth window will pop up, and then click **`Enable Bluetooth`**.
+
+![enable-bt-7](/docs/meles/enable-bt-7.webp)
+
+- Bluetooth icon in the upper right corner becomes normal after being enabled.
+
+![enable-bt-8](/docs/meles/enable-bt-8.webp)
+
+### Start connecting to remote Bluetooth device
+
+Once Bluetooth is enabled, you can start searching for and connecting to the Bluetooth device you want to connect to.
+
+- Click on the Bluetooth icon in the upper right corner and select **`yes`** in the pop-up window.
+
+![connect-bt-1](/docs/meles/connect-bt-1.webp)
+
+- Click **`search`** to start searching.
+
+![connect-bt-2](/docs/meles/connect-bt-2.webp)
+
+- When the search is complete, the relevant Bluetooth devices around you will appear.
+
+![connect-bt-3](/docs/meles/connect-bt-3.webp)
+
+- Click on the Bluetooth device you want to connect to and it will automatically connect successfully.
+
+![connect-bt-4](/docs/meles/connect-bt-4.webp)
+
+## Browser Use
+
+The Chromium browser is built-in and is available by clicking the browser icon at the bottom of the desktop.
+
+![browser-use-1](/docs/meles/browser-use-1.webp)
+
+- Once opened you can use the search engine.
+
+![browser-use-2](/docs/meles/browser-use-2.webp)
+
+- Online videos can also be played.
+
+![browser-use-3](/docs/meles/browser-use-3.webp)
+
+## Display Settings
+
+The display settings are only available when you are operating on the monitor.
+
+### Applications-Settings-Display
+
+Click Applications in the upper left corner of the desktop.
+
+![display-1](/docs/meles/display-1.webp)
+
+Select Settings, and then find the Display option in the Options section.
+
+![display-2](/docs/meles/display-2.webp)
+
+You can change the following settings in it.
+
+![display-3](/docs/meles/display-3.webp)
+
+## Setup VNC and AutoLogin
+
+First, make sure the development board is connected to the Internet.
+
+Then open the terminal and execute the following command to install x11vnc
+
+```
+sudo apt update
+sudo apt install x11vnc -y
+```
+
+After the installation is complete, execute the command ```x11vnc```. The output shown in the figure below proves that the installation is successful.
+
+![vnc-install](/docs/meles/vnc-installed.jpg)
+
+Set up the startup auto-start below.
+
+Execute the command ```nano ~/vnc_startup.sh``` in the terminal and enter the following content in the file:
+
+```
+while true
+do
+x11vnc
+done
+```
+
+After entering, press ```ctrl``` + ```o``` to save, and press ```ctrl``` + ```x``` to exit.
+
+Execute the following command to add execution permissions to the file:
+
+```
+chmod +x ~/vnc_startup.sh
+```
+
+Finally, set vnc to start automatically. Open the upper left corner application - settings - session and startup
+
+Add a vnc startup task in the 'application autostart' item on the page and fill in the task command with ```/home/debian/vnc_startup.sh```, as shown in the figure.
+
+![vnc-install](/docs/meles/vnc-startup.jpg)
+
+Next, set up automatic login.
+
+Execute the following command
+
+```
+sudo nano /etc/lightdm/lightdm.conf
+```
+
+Edit the ```autologin-user=``` and ```autologin-in-background=false``` lines.
+
+Uncomment and change the content to
+
+```
+autologin-user=debian
+autologin-in-background=True
+```
+
+![vnc-install](/docs/meles/lightdn-conf.jpg)
+
+When finished, press ```ctrl``` + ```o``` to save, and press ```ctrl``` + ```x``` to exit.
+
+Reboot finally.
+
+After meles is started, please query the IP address of meles on the router, open the VNC client, and set up the connection.
+
+![vnc-install](/docs/meles/vnc-connect.jpg)
+
+![vnc-install](/docs/meles/vnc-connected.jpg)
+
+## SSH
+
+- Check the status of the SSH service. Run the following command in a command line window
+
+```
+sudo service ssh status
+```
+
+![ssh-1](/docs/meles/ssh-1.webp)
+
+- Enter the following command
+
+```
+ssh [username]@[IP address]
+```
+
+Example:
+
+```
+ssh milkv@192.168.2.180
+```
+
+- You need to enter the user password to successfully connect to the Debian system. This is a basic SSH connection process. You can use other SSH options for more advanced connections.
+
+![ssh-2](/docs/meles/ssh-2.webp)
+
+### Notice
+
+SSH is installed by default.
+
+If the SSH service is not installed, you can use the following command to install it:
+
+```
+sudo apt-get update
+sudo apt-get install ssh
+```
+
+If the SSH service is not started or runs abnormally, run the following command to restart it:
+
+```
+sudo service sshd restart
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/overview.md
new file mode 100644
index 00000000..8ee28f8e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/overview.md
@@ -0,0 +1,81 @@
+---
+sidebar_label: '🌍 Overview'
+sidebar_position: 4
+---
+
+# Meles
+
+Version 1.0
+
+-------------------------
+## Introduction
+Milk-V Meles is a credit card-sized, single-board computer (SBC) based on the TH1520. It is powered by a Quad Core RISC-V 64GCV C910, capable of running up to 1.85GHz. This SBC is packed with rich interfaces and boasts powerful computing and AI capabilities, making it an ideal RISC-V intelligent hardware platform for hobbyists, makers, engineers, teachers, and students.
+
+
+![meles](/docs/meles/meles.webp)
+![meles-top](/docs/meles/meles-top.webp)
+![meles-bot](/docs/meles/meles-bot.webp)
+
+## Specification
+| Milk-V Meles | Specification |
+| ------------ | -------------------------------------------------------------------------------------- |
+| SoC | T-Head TH1520, Quad Core RISC-V 64GCV C910, up to 1.85GHz |
+| Memory | 8GB / 16GB LPDDR4X, 4266 MT/s |
+| Storage | 1x eMMC Slot |
+| | 1x MicroSD Slot |
+| Display | 1x HDMI 2.0, up to 4K@60FPS |
+| | 1x MIPI DSI 4-lanes, support touch screen |
+| Audio | 1x HDMI 2.0 with audio output |
+| | 1x I2S, support audio input and output |
+| | 1x 3.5mm jack for audio output |
+| Camera | 1x 4-lanes MIPI CSI input |
+| | 1x 2-lanes MIPI CSI input |
+| USB | 4x USB3.0 HOST |
+| | 1x USB2.0 Device (Type-C) |
+| Ethernet | 1x 10/100/1000 Mbps RJ45 Port |
+| Wireless | AP6256 (WI-FI 5 / BT 5.2) |
+| GPIO | 40 Pin GPIO Header, up to 3xUART, 2xI2C, 1xSPI, 1xI2S,1xADC, 8xGPIO, 1xC910 debug port |
+| Key | 1x Key for reset |
+| | 1x Key for recovery |
+| | 1x Key for eMMC / SPI flash bootmode swich |
+| LED | 1x Power LED |
+| | 1x User LED |
+| Other | 1x 2Pin for Fan |
+
+## Hardware
+### SoC
+**T-Head TH1520** has the following
+
+| TH1520 | Specification |
+| ------ | -------------------------------------------------------------------------------- |
+| CPU | RISC-V 64GCV C910*4@**1.85GHz** |
+| | Each core contains 64KB I cache amd 64KB D Cache |
+| | 1MB of Shared L2 Cache |
+| | Support TEE and REE, configured during core booting |
+| | Support multi-core debugging framework of custom and RISC-V compatible interface |
+| | Independent power domain, supports DVFS |
+| GPU | OpenCL 1.1/1.2/2.0 |
+| | OpenGL ES 3.0/3.1/3.2 |
+| | Vulkan 1.1/1.2 |
+| | Android NN HAL |
+| NPU | Support 4TOPS@INT8, up to 1GHz |
+| | Support TensorFlow、ONNX、Caffe |
+| | Support CNN、RNN、DNN |
+| Decode | Real-time decoder, support H.265/H.264/VP9/8/7/6/AVS/AVS+/AVS2.0/VC1/MPEG4 |
+| | Supports H.264 BP/MP/HP@level 5.1 decoding, up to 4K resolution |
+| | Supports H.265/HEVC Main Profile@level 5.1 decoding, up to 4K resolution |
+| | Supports VP9 Profile-2 decoding, up to 4K resolution |
+| | Supports AVS2.0 decoding, up to 4K resolution |
+| | Supports VP6/7/8/AVS/AVS+/VC1/MPEG4 decoding, up to 1920x1080 resolution |
+| | Decoding at 4K@75fps maximum |
+| Encode | Supports H.264 BP/MP/HP(level4.2) encoding, up to 4K resolution |
+| | Supports H.265/HEVC Main Profile encoding, up to 4K resolution |
+| | Only supports I-frames and P-frames |
+| | Encoding at 4K@40fps maximum |
+
+### Memory
+**Milk-V Meles** offers a choice of 8GB / 16GB memory sizes.
+The memory specification is LPDDR4X 4266MT/s.
+
+## Support
+For support please post your issue on the [Milk-V Community Meles Category](https://community.milkv.io/c/meles).
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/_category_.json
new file mode 100644
index 00000000..70555458
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🧰 Resources Download",
+ "position": 90,
+ "link": {
+ "type": "generated-index",
+ "slug": "/meles/resources-download",
+ "description": "Meles Related Resources Download"
+ }
+}
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/hardware.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/hardware.md
new file mode 100644
index 00000000..ea472472
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/hardware.md
@@ -0,0 +1,6 @@
+---
+sidebar_label: 'Hardware Resource'
+sidebar_position: 20
+---
+
+# Hardware Resource
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/image.md b/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/image.md
new file mode 100644
index 00000000..7d442020
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/meles/resources-download/image.md
@@ -0,0 +1,14 @@
+---
+sidebar_label: 'Official Image'
+sidebar_position: 10
+---
+
+# Official Image
+
+### v2024-0417
+
+Link:[Meles Image](https://github.com/milkv-meles/meles-images/releases/tag/v2024-0417).
+
+### v2024-0601
+
+Link:[Meles Image](https://mirror.iscas.ac.cn/revyos/extra/images/meles/20240601/).
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/_category_.json
new file mode 100644
index 00000000..b6a80a19
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "💪 Pioneer",
+ "position": 1,
+ "link": {
+ "type": "generated-index",
+ "slug": "/pioneer",
+ "description": "Be the Pioneer"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/development/kernel.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/development/kernel.md
new file mode 100644
index 00000000..c5f20aa0
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/development/kernel.md
@@ -0,0 +1,112 @@
+---
+sidebar_label: 'Build Kernel'
+sidebar_position: 1
+---
+
+# Build Kernel
+
+## Install dependencies
+
+- on Fedora
+
+```bash
+$ sudo dnf install autoconf automake curl python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo gperf libtool patchutils bc openssl dkms libudev-devel golang-bin zlib-devel qemu-user-binfmt qemu-user-static ncurses-devel expat-devel elfutils-libelf-devel pciutils-devel openssl-devel binutils-devel qemu-system-riscv-core rsync cpio
+```
+
+- on Ubuntu
+
+```bash
+$ sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev libncurses-dev openssl libiberty-dev libssl-dev dkms libelf-dev libudev-dev libpci-dev golang-go qemu-user-static rsync cpio rpm
+```
+
+## Build from source
+
+### Download source code
+
+```bash
+$ git clone https://github.com/sophgo/bootloader-riscv.git
+$ git clone https://github.com/sophgo/linux-riscv.git
+```
+
+### Build Cross toolchain
+
+```bash
+$ CHIP=mango
+$ source bootloader-riscv/scripts/envsetup.sh
+$ build_rv_gcc
+```
+
+```bash
+# get the following folders:
+.
+├── bootloader-riscv
+├── linux-riscv
+└── gcc-riscv
+ ├── gcc-riscv64-unknown-elf
+ └── gcc-riscv64-unknown-linux-gnu
+```
+
+### Build kernel
+
+```bash
+$ build_rv_kernel
+```
+
+- build debs
+
+```bash
+$ build_rv_ubuntu_kernel
+$ ls install/soc_mango/single_chip/bsp-debs/
+linux-headers-6.1.80.deb linux-image-6.1.80.deb linux-libc-dev_6.1.80.deb
+```
+
+- build rpms
+
+```bash
+$ build_rv_fedora_kernel
+$ ls install/soc_mango/single_chip/bsp-rpms/
+kernel-6.1.80.riscv64.rpm kernel-devel-6.1.80.riscv64.rpm kernel-headers-6.1.80.riscv64.rpm
+```
+
+### Install kernel
+
+Copy the generated packages to Pioneer.
+
+- on Ubuntu
+
+```bash
+$ sudo dpkg -i linux-image-6.1.80.deb
+```
+
+- on Fedora
+
+```bash
+$ sudo rpm -ivh --force kernel-6.1.80.riscv64.rpm
+```
+
+#### Check extlinux.conf
+
+```bash
+$ cat /boot/extlinux/extlinux.conf
+## /boot/extlinux/extlinux.conf
+
+default fedora_sophgo
+menu title linuxboot menu
+prompt 0
+timeout 50
+
+label fedora_sophgo
+ menu label Fedora Sophgo in SD
+ linux /vmlinuz-6.1.80
+ initrd /initramfs-6.1.80.img
+ append console=ttyS0,115200 root=LABEL=ROOT rootfstype=ext4 rootwait rw earlycon selinux=0 LANG=en_US.UTF-8 nvme_core.io_timeout=600 nvme_core.admin_timeout=600 cma=512M swiotlb=65536
+```
+
+#### Check build time
+
+After installation and reboot, you can check the build time to see if the new kernel is used.
+
+```bash
+$ uname -a
+Linux fedora-riscv 6.1.80 #1 SMP Tue May 14 08:14:53 UTC 2024 riscv64 GNU/Linux
+```
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/faq.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/faq.md
new file mode 100644
index 00000000..76b4db8f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/faq.md
@@ -0,0 +1,26 @@
+---
+sidebar_label: '🤔 FAQ'
+sidebar_position: 20
+---
+
+# FAQ
+
+## Idle power
+
+The CPU idle power is about 68W.
+
+## Memory specification
+
+4 DRAM controller, support DDR4 UDIMM/RDIMM up to 3200MT/s with ECC byte.
+
+## Kernel version
+
+The current version of Kernel is 6.1.x.
+
+## RVV version
+
+The current is RVV 0.71. There will be a CPU upgrade at Q1 2024 to support RVV 1.00.
+
+## Type of battery
+
+The battery type is CR1220.
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/BeforeStart.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/BeforeStart.md
new file mode 100644
index 00000000..d9ad57a2
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/BeforeStart.md
@@ -0,0 +1,68 @@
+---
+sidebar_label: 'Before Start'
+sidebar_position: 20
+
+---
+
+# Before Start
+
+## What's in the box
+
+When you get the Pioneer Board, the package should contain:
+
+- 1x Pioneer Board
+- 1x User Manual
+- 1x Cooler
+- 1x Cooler base
+- (Optional) DDR4 memory stick
+
+:::info
+
+In case of missing items, please contact us.
+
+:::
+
+## Before Power on
+
+:::info
+
+Before powering up the unit, make sure you have properly installed the heatsink.
+
+:::
+
+The Pioneer Box already has a cooler installed and you can skip the following steps.
+
+If you find that the cooler is not installed, please follow these steps to install the cooler.
+
+### Step 1. Inventory of Tools and Accessories
+
+The following tools and accessories are required for the entire installation process.
+
+- 1x Screwdriver
+- 1x Cooler
+- 1x Cooler base
+- 1x Screw kit
+
+### Step 2. Secure the Cooler Base to the Pioneer Board
+
+Apply thermal grease to the top of the CPU
+
+![fanstep2](/docs/pioneer/fanstep2.webp)
+
+### Step 3. Attach the Cooler Base to the Cooler
+
+Attach the cooler base to the cooler with screws as shown.
+
+![fanstep3](/docs/pioneer/fanstep3.webp)
+
+### Step 4. Secure the Cooler Base to the Pioneer Board
+
+Secure the cooler to the motherboard as shown. Please note, keep the cooler level during installation to avoid crushing the chip.
+
+![fanstep4](/docs/pioneer/fanstep4.webp)
+
+### Step 5. Connect the Fan
+
+Connect the fan to the motherboard as shown in the picture.
+
+![fanstep5](/docs/pioneer/fanstep5.webp)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/CompleteAssembly.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/CompleteAssembly.md
new file mode 100644
index 00000000..d96f3c1e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/CompleteAssembly.md
@@ -0,0 +1,48 @@
+---
+sidebar_label: 'Complete Assembly'
+sidebar_position: 26
+---
+# Complete Assembly
+
+Here is an example of a Pioneer Box case.
+
+## Attach the Pioneer Board to the Chassis
+
+### Step 1. Installing the Heatsink and Memory Stick
+
+Install the heatsink and memory stick on the Pioneer.
+
+![step1](/docs/pioneer/casestep1.webp)
+
+### Step 2. Installing the Power Supply
+
+Install the power supply on the chassis.
+
+![step2](/docs/pioneer/casestep2.webp)
+
+### Step 3. Install the Interface Baffle
+
+Attach the interface baffle to the back of the chassis.
+
+![step3](/docs/pioneer/casestep3.webp)
+
+### Step 4. Secure the Pioneer Board to the Chassis with Screws
+
+Secure the Pioneer Board to the chassis with screws. You can use the screws that came with the case.
+
+![step4](/docs/pioneer/casestep4.webp)
+
+### Step 5. Installing the SSD
+
+![step5](/docs/pioneer/casestep5.webp)
+
+### Step 6. Connecting the Front Panel USB
+
+Connect the Pioneer Board via the USB cable that came with the case. the plug has an anti-misplug design, which is a standard interface.
+
+![step6-1](/docs/pioneer/casestep6-1.webp)
+![step6-2](/docs/pioneer/casestep6-2.webp)
+
+### Step 7. Connect the Switch Key
+
+Connect the Pioneer Board via the switch key connection cable that comes with the chassis.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/ExpansionCards.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/ExpansionCards.md
new file mode 100644
index 00000000..9bfecce5
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/ExpansionCards.md
@@ -0,0 +1,23 @@
+---
+sidebar_label: 'Expansion Cards'
+sidebar_position: 23
+---
+# Expansion Cards
+
+Pioneer supports expansion cards via PCIe slots and M.2 E-Key slots
+
+## PCIe expansion cards
+
+Pioneer has 3 PCIe x16 slots (PCIe 3.0 x8)
+PCIe expansion cards can be installed in 3 PCIe slots.
+Please fasten the latch when you finish the installation.
+
+### PCIe support list
+
+Please check the [PCIe Support List](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/pioneer_pcie_list.pdf)
+
+---------------------------------
+## M.2 E-Key Expansion Card
+
+Pioneer has 1 M.2 E-Key slot.
+Supports installation of WI-FI/BT modules.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/InstallOS.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/InstallOS.md
new file mode 100644
index 00000000..83b83e87
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/InstallOS.md
@@ -0,0 +1,79 @@
+---
+sidebar_label: 'Install OS'
+sidebar_position: 21
+---
+
+# OS installation steps
+
+## 1. Preparation
+
+### 1.1 Tool preparation
+
+Before starting the installation, please prepare the following tools:
+
+- MicroSD card (at least greater than 16G)
+- MicroSD card reader
+- Serial port module
+
+### 1.2 Software preparation
+
+- Download and install balenaEtcher (https://etcher.balena.io/)
+- Download the image (https://milkv.io/docs/pioneer/getting-started/download)
+
+Select the desired image in the [Download page](https://milkv.io/docs/pioneer/getting-started/download), here is Fedora 38 as an example.
+
+![downloadpage](/docs/pioneer/downloadpage.png)
+
+## 2. Burn the program to MicroSD card
+
+### 2.1 Use BalenaEtcher to burn the image
+
+a. Click on the Flash from file button and choose the
+fedora-disk-gnome-workstation_riscv64-f38-20230515-035559-milkv.raw.xz (hereinafter referred to as **fedora38.raw.xz** ) you want to use.
+
+b. Click the Select target button and choose the microSD Card to write the fedora38.raw.xz to.
+
+c. Click the Flash! button to begin the process.
+
+![balena-etcher](/docs/pioneer/balena-etcher.png)
+
+### 2.2 Installing to Pioneer
+
+Insert the burned microSD card into the Pioneer's microSD card slot.
+
+## 3. Boot from microSD Card
+
+### 3.1 Power on
+
+Tap the boot button to start Pioneer.
+
+### 3.2 Setting up an account
+
+The installation wizard sets up the account password.
+
+### 3.3 Done! Getting Started with Fedora 38
+
+![fedora38](/docs/pioneer/fedora38.png)
+
+## 4. Boot from microSD Card & NVMe SSD
+
+Please complete sections 1-3 above before proceeding with this step
+The following steps are recommended for operation using the serial port
+
+Enter the account password to log in to the Fedora system
+
+![loginfedora38](/docs/pioneer/loginfedora.png)
+
+### 4.1 Use 'mv-rootfs.sh' to install the system to an NVMe SSD
+
+We have included the '[mv-rootfs.sh](https://milkv.io/docs/pioneer/getting-started/download)' script in /opt for easy configuration of your system to NVMe SSDs.
+
+Just refer to the following steps to run it.
+
+~~~
+[milkv@fedora-riscv ~]$ cd /opt
+[milkv@fedora-riscv opt]$ sudo ./mv-rootfs.sh
+~~~
+
+### 4.2 Reboot
+Reboot Pioneer to enable booting from SD cards and NVMe SSD
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/Memory.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/Memory.md
new file mode 100644
index 00000000..cbeab634
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/Memory.md
@@ -0,0 +1,39 @@
+---
+sidebar_label: 'Memory'
+sidebar_position: 22
+---
+# Memory
+
+## DDR4 Support List
+
+Please check the [DDR Support List](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/sg2042_ddr_support_list.md)
+
+If you are using a different model of memory stick, please update your test results to [this file](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/sg2042_ddr_support_list.md)
+
+Installing memory sticks that are not included in the list may prevent proper boot-up.
+
+You can contact us to purchase original support DDR.
+
+## Memory Installation
+
+When installing, please install the DDR slots in order from the DDR slot near the side of the PCIe slot.
+
+Please note that when installing multiple memory sticks, make sure that the memory sticks are installed starting from the DDR4 slot near the PCIe slot and no empty slots are allowed between each two memory sticks.
+
+### Example
+
+- When you only need to install 1 stick of memory, install it like this
+
+![DDR_1](/docs/pioneer/ddr_1.webp)
+
+- When you only need to install 2 memory stick, install it like this
+
+![DDR_2](/docs/pioneer/ddr_2.webp)
+
+- When you only need to install 3 memory stick, please install it like this
+
+![DDR_3](/docs/pioneer/ddr_3.webp)
+
+- When you only need to install 4 memory stick, please install it like this
+
+![DDR_4](/docs/pioneer/ddr_4.webp)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/PowerSupply.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/PowerSupply.md
new file mode 100644
index 00000000..6db51070
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/PowerSupply.md
@@ -0,0 +1,52 @@
+---
+sidebar_label: 'Power Supply'
+sidebar_position: 25
+---
+# Power supply
+
+## Power Supply Options
+
+Pioneer supports a standard 24P power supply, which means you can use the vast majority of PC power supplies on the market to power him.
+
+Nevertheless, we strongly recommend that you choose a high quality power supply to reduce the risk of power failure damaging your hardware devices.
+
+Power supply power is related to the number and power of your peripherals, we recommend choosing a power supply with 350W or more.
+
+## TDP Reference Table
+
+| Items | TDP |
+|:-------------:|:----:|
+| SOPHON SG2042 | 120W |
+| AMD R5 230 | 20W |
+| Intel X520-T2 | 20W |
+| ASM2824 | 6W |
+| Cooler | 6W |
+
+## Installing the power supply
+
+- Preparation
+ Make sure you have a desktop power supply that is suitable for your computer's configuration and power requirements, and that it has a 24-pin motherboard power connector.
+
+- Turn off your computer
+ Before starting the installation, make sure your computer is completely turned off and disconnected from the power supply.
+
+- Open the case
+ Look carefully at your desktop chassis to locate the power supply mounting area. Usually the power supply is located at the top or bottom of the case, and it is a rectangular metal or plastic box.
+
+- Locate the motherboard power connector
+ Locate a 24-pin power connector on the motherboard, located near the edge of the motherboard.
+
+- Connect the power supply
+ Insert the 24-pin connector of the power supply plug into the 24-pin power connector on the motherboard. Make sure the plug is perfectly aligned with the connector, then gently push it in until the plug is fully inserted and locked to the connector.
+
+- Connecting Other Power Cords
+ Depending on your computer configuration and needs, it may also be necessary to connect other power cables, such as hard drive power and graphics card power. These cables usually have specific connectors and connect to the appropriate ports on the motherboard and other hardware devices.
+
+- Organizing the power cables
+ After connecting all the necessary power cables, make sure they are organized and placed inside the case to avoid blocking fans or other components and to ensure air circulation.
+
+- Close the case
+ After ensuring that all power cables are connected to the correct locations, reinstall the side or top panel of the chassis.
+
+- Connect the power supply and test
+ Reconnect the power plug and make sure the plug is securely connected to the power outlet. Then turn on the power switch and start your computer. Check that the computer boots up properly and observe that the power supply and other hardware devices are operating properly.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/StorageDevices.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/StorageDevices.md
new file mode 100644
index 00000000..596b904e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/StorageDevices.md
@@ -0,0 +1,20 @@
+---
+sidebar_label: 'StorageDevices'
+sidebar_position: 24
+---
+
+# Storage Devices
+
+Pioneer has 5 SATA slots and 2 M.2 M-Key slots available for connecting storage devices.
+
+## M.2 M-Key (PCIe 3.0)
+
+Pioneer supports the connection of M.2 Nvme SSDs via the M.2 M-Key.
+Usually when you purchase an SSD, there are mounting screws included.
+The installation is the same as a standard desktop.
+
+## SATA
+
+Pioneer supports the connection of storage devices via the SATA interface.
+Usually when you purchase a drive, a SATA cable is included.
+Installation is the same as for a standard desktop.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/_category_.json
new file mode 100644
index 00000000..b833db7a
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🏁 Getting Started",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/pioneer/getting-started",
+ "description": "Getting Started with Pioneer"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/buglist.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/buglist.md
new file mode 100644
index 00000000..97387815
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/buglist.md
@@ -0,0 +1,10 @@
+---
+sidebar_label: 'Known Issues'
+sidebar_position: 50
+---
+# Pioneer Bug List
+
+This list summarizes the current known bugs of Milk-V Pioneer, and you can keep track of these Issues through [this page](https://github.com/milkv-pioneer/issues/issues).
+
+
+Get updates via our [GitHub repository](https://github.com/milkv-pioneer/issues/issues).
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/download.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/download.md
new file mode 100644
index 00000000..8b732bd3
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/download.md
@@ -0,0 +1,40 @@
+---
+sidebar_label: 'Download'
+sidebar_position: 30
+
+---
+# Download
+
+Here is a summary of the files we have available for download
+
+## Hardware
+
+- [2D design files (.dxf)](https://github.com/milkv-pioneer/pioneer-files/tree/main/hardware/Milk-V_Pioneer_2D)
+
+- [SOPHON SG2042 TRM](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/SG2042-TRM.pdf)
+
+- [DDR Supported list](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/pioneer_ddr_list.pdf)
+
+- [PCIe Supported List](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/pioneer_pcie_list.pdf)
+
+- [Recommended memory stick datasheet](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/Longsys_DDR4_RDIMM_32GB_2RX8_Specfication_RER432A032G7-WFS100_V1.1.pdf)
+
+- [Pioneer Schematic](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/milk-v_pioneer_SCH_v1.2.pdf)
+
+## Software
+
+- [Linux kernel source code](https://github.com/milkv-pioneer/linux-riscv)
+
+- [zsbl](https://github.com/milkv-pioneer/zsbl)
+
+- [bootloader](https://github.com/milkv-pioneer/bootloader)
+
+- [opensbi](https://github.com/milkv-pioneer/opensbi)
+
+### Image
+
+- [Fedora 38 for Milk-V Pioneer](https://drive.google.com/file/d/1IjxeKiwtyDTmc2YGbn7yvpbCx0B1kkBh/view?usp=sharing)
+
+### Tools
+
+- [mv-rootfs.sh](https://github.com/milkv-pioneer/scripts/blob/main/mv-rootfs.sh)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/processor.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/processor.md
new file mode 100644
index 00000000..1e6775c6
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/getting-started/processor.md
@@ -0,0 +1,16 @@
+---
+sidebar_label: 'Processor'
+sidebar_position: 20
+---
+# SOPHON SG2042
+
+## Introduction of SOPHON SG2042
+
+The SG2042 server chip is based on the RISC-V instruction set architecture (ISA) and features a 64-core server-grade chip designed to meet high-performance computing needs. It offers scalability, flexibility, and customization, with integrated circuits including high-speed cache (L3Cache 64MB), memory controller (4 DDR4-3200), network interface, and PCI Express® controller (x32 PCI Express Gen4.0), supporting general-purpose operating systems such as Linux®. The SG2042 has a clock speed of 2GHz and a design consisting of 16 clusters, each containing 4 RISC-V cores, with each core featuring L1-D 64KB and L1-I 64KB. Each cluster shares a design of L2 1MB. The L3 System cache has a capacity of 64MB. The SG2042 supports interconnect between two chips via CCIX and has 4 DDR4-3200 controllers, supporting RDIMM, ECC, and UDIMM. The chip also has 32x PCI E Gen4.0 interfaces, integrated eMMC5.1, SDIO 3.0, SPI x2, I2C x4, UART x4, and gigabit Ethernet MAC.
+
+![SG2042](/docs/pioneer/sg2042.webp)
+
+
+# SG2042 TRM
+
+We have open sourced the TRM of SOPHON SG2042 to GitHub. please [check it out](https://github.com/milkv-pioneer/pioneer-files/blob/main/hardware/SG2042-TRM.pdf).
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/overview.md
new file mode 100644
index 00000000..9de4a3de
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/overview.md
@@ -0,0 +1,70 @@
+---
+sidebar_label: '📚 Overview'
+sidebar_position: 1
+---
+
+# Pioneer Overview
+
+## Introduction
+
+Milk-V Pioneer is a developer motherboard based on SOPHON SG2042 in a standard mATX form factor. With PC-like interfaces and PC industrial compability, Pioneer provides native RISC-V development environment and RISC-V desktop experience. It is the first choice for RISC-V developers and hardware pioneers to experience the cutting edge technology of RISC-V. Embrace RISC-V, embrace the future.
+
+## Pioneer Board
+
+![Pioneer Board](/docs/pioneer/pioneerboardv1.1.webp)
+
+| Pioneer Board | Specification |
+| ------------- | -------------------------------------------------- |
+| Processor | SOPHON SG2042 (64 Core C920, RVV 0.71, up to 2GHz) |
+| Memory | 4x DDR4 DIMM slots up to 128 GB RAM support |
+| PCI Express | 1x PCIe x16 Slot (PCIe 4.0 x16) |
+| | 1x PCIe x16 Slot (PCIe 4.0 x8) |
+| Storage | 5x SATA connector |
+| | 1x SPI Flash for BIOS |
+| | 1x eMMC module connector |
+| | 1x micro SD card for recovery or OS loading |
+| | 2x M.2 M KEY(PCIe 3.0 x4) |
+| Ethernet | 2x RJ45 2.5G |
+| Wireless | 1x M.2 E KEY(PCIe 3.0 x1 + USB 2.0) |
+| USB | 8x USB3 |
+| | 1x USB Header for front panel(2x USB 3.0) |
+| Others | 1x misc header for front panel power, reset, etc |
+| | 1x serial port(USB-C) for front panel |
+| Power | 1x standard 24P ATX Power connector |
+| Size | 24.4cm x 24.4cm |
+
+## Pioneer Box
+
+![Pioneer Box](/docs/pioneer/pioneerbox.webp)
+
+Pioneer Box is a complete ready-to-use RISC-V PC with the following:
+
+- 1x Pioneer Board
+- 128GB 3200 DDR4
+- 1x 1TB PCIe 3.0 SSD
+- 1x Intel X540-T2 Network Card with 2x 10Gbps RJ45 ports
+- 1x AMD R5 230 Graphic Card with HDMI, VGA and DVI
+- 1x MSI A350 350W Power Apply
+- 1x Cooler with PWM Fan up to 2300 RPM supporting up to 160W D-TDP
+- White slim PC enclosure with handle
+
+## Hardware
+
+![Pioneer Mark](/docs/pioneer/pioneer-mark.webp)
+
+
+| No. | Description | No. | Description | No. | Description |
+| --- | --------------------------------- | --- | ------------------------------ | --- | --------------------------------- |
+| 1 | SOPHON SG2042 | 10 | PCIe 4.0 x8 | 19 | UART |
+| 2 | PCIe Switch(ASM2824) | 11 | MCU(for Power-up control) | 20 | SPIF |
+| 3 | DDR4 DIMM Slot | 12 | SATA3 6Gbps | 21 | JTAG |
+| 4 | SD Card Slot | 13 | 24P ATX Power Supply Connector | 22 | USB |
+| 5 | 2.5GbE Ethernet Port | 14 | LPC | 23 | SG2042 & MCU Debug |
+| 6 | USB3 | 15 | LPC | 24 | MCU Programming and Debugging Pin |
+| 7 | PCIe 4.0 x16 | 16 | Pin for Start, Power off, etc. | 25 | eMMC Module Connector |
+| 8 | M.2 E Key (PCIe 3.0 x1 + USB 2.0) | 17 | CPU FAN Connectors | - | - |
+| 9 | M.2 M Key (PCIe 3.0 x4) | 18 | GPIO | - | - |
+
+## Support
+
+For support please see the documentation section of the Milk-V website and post questions to the Milk-V Community.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/_category_.json
new file mode 100644
index 00000000..680f5fdb
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🧰 Resources",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/pioneer/resources",
+ "description": "Useful Resources"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/gcc.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/gcc.md
new file mode 100644
index 00000000..a7ec4d34
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/gcc.md
@@ -0,0 +1,83 @@
+---
+sidebar_label: 'GCC Toolchain'
+sidebar_position: 30
+---
+
+# SG2042 GCC toolchain documentation
+SG2042 use the T-HEAD GNU compiler toolchain, this document introduces how to build and use this toolchain.
+
+# T-HEAD GNU Compiler Toolchain
+T-HEAD GNU Compiler Toolchain is a RISC-V vendor toolchain that supports T-head CPUs. It offers vendor extensions series X-Thead, and optimized many special instructions.
+
+You can download the source and build it from [Here](https://github.com/T-head-Semi/xuantie-gnu-toolchain)
+
+A prebuild toolchain can be downloaded from [Here](https://occ.t-head.cn/community/download)
+
+## 1. How to Build
+### 1.1 Download the source for github
+
+``````
+$ git clone https://github.com/T-head-Semi/xuantie-gnu-toolchain
+``````
+
+*Notes: the source files will take around 6.65 GB of disk and download size.*
+
+### 1.2 Install prerequisites
+
+Several standard packages are needed to build the toolchain, so we need to prepare the build environment before build.
+
+- **On Ubuntu**
+``````
+$ apt-get install -y make diffutils autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev
+``````
+
+- **On On Fedora/CentOS/RHEL OS**
+``````
+$ dnf install -y make diffutils autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel
+``````
+
+### 1.3 Build steps
+Sets up the configure args at first, pick an install path like /opt/riscv, tools will be installed in /opt/riscv/bin subdir:
+
+``````
+$ ./configure --prefix=/opt/riscv –-with-arch=rv64gc_zfh_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync --with-abi=lp64d
+``````
+
+*Notes: you can enable any other supported RISC-V sub-extensions by adding extensions in --with-arch option. For example, to enable RISC-V Bitmanip extension in toolchain, you can add _zba_zbb_zbc_zbs follow exist args.*
+
+It supports two build modes: a generic ELF/Newlib toolchain and a more sophisticated Linux-ELF/glibc toolchain.
+
+- **Newlib toolchain**
+
+``````
+$ make -j $(nproc)
+``````
+
+- **Linux-ELF/glibc toolchain**
+
+``````
+$ make linux -j $(nproc)
+``````
+
+*Notes: The build usually takes about fifteen minutes.*
+
+### 1.4 Check the build
+After build finished, check with
+``````
+$ /opt/riscv/bin/riscv64-xxx-gcc -v
+``````
+
+to see if the toolchain installed correctly.
+
+## 2. How to use
+You can get an introduction to basic usage through --help option:
+``````
+$ /opt/riscv/bin/riscv64-xxx-gcc --help
+``````
+
+For further details please refer to [GCC user manual](https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/)
+
+## 3. Bug reports
+If you meet any problems when using toolchain, please send a bug report to [GCC Bugzilla](https://gcc.gnu.org/bugzilla) or [open a new issue](https://github.com/riscv-collab/riscv-gnu-toolchain/issues).
+
+The RISC-V toolchain SIG will help you solve the problem soon.
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/inferllm.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/inferllm.md
new file mode 100644
index 00000000..6d22f800
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/inferllm.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: 'InferLLM'
+sidebar_position: 30
+---
+
+# InferLLM
+
+Project Links: https://github.com/MegEngine/InferLLM
+
+InferLLM is a lightweight LLM model inference framework that mainly references and borrows from the llama.cpp project. llama.cpp puts almost all core code and kernels in a single file and use a large number of macros, making it difficult for developers to read and modify. InferLLM has the following features:
+
+- Simple structure, easy to get started and learning, and decoupled the framework part from the kernel part.
+- High efficiency, ported most of the kernels in llama.cpp.
+- Defined a dedicated KVstorage type for easy caching and management.
+- Compatible with multiple model formats (currently only supporting alpaca Chinese and English int4 models).
+- Currently supports CPU and GPU, optimized for Arm, x86, CUDA and riscv-vector. And it can be deployed on mobile phones, with acceptable speed.
+
+In short, InferLLM is a simple and efficient LLM CPU inference framework that can deploy quantized models in LLM locally and has good inference speed.
+
+## Latest News
+- 2023.08.16: Add support for LLama-2-7B model.
+- 2023.08.8: Optimized the performance on Arm, which optimized the int4 matmul kernel with arm asm and kernel packing.
+- berfor: support chatglm/chatglm2, baichuan, alpaca, ggml-llama model.
+
+## How to use
+### Download model
+Currently, InferLLM uses the same models as llama.cpp and can download models from the llama.cpp project. In addition, models can also be downloaded directly from Hugging Face [kewin4933/InferLLM-Model](https://huggingface.co/kewin4933/InferLLM-Model/tree/main). Currently, two alpaca, llama2, chatglm/chatglm2 and baichuan models are uploaded in this project, one is the Chinese int4 model and the other is the English int4 model.
+
+### Compile InferLLM
+#### Local compilation
+```shell
+mkdir build
+cd build
+cmake ..
+make
+```
+GPU is disabled default, if you want to enable GPU, please use `cmake -DENABLE_GPU=ON ..` to enable GPU. Now only CUDA is supported, before use CUDA, please install CUDA toolkit first.
+
+#### Android cross compilation
+According to the cross compilation, you can use the pre-prepared tools/android_build.sh script. You need to install NDK in advance and configure the path of NDK to the NDK_ROOT environment variable.
+```shell
+export NDK_ROOT=/path/to/ndk
+./tools/android_build.sh
+```
+### Run InferLLM
+Running ChatGLM model please refer to [ChatGLM model documentation](https://github.com/MegEngine/InferLLM/blob/main/application/chatglm/Readme.md).
+
+If it is executed locally, execute `./chatglm -m chatglm-q4.bin -t 4` directly. If you want to execute it on your mobile phone, you can use the adb command to copy alpaca and the model file to your mobile phone, and then execute `adb shell ./chatglm -m chatglm-q4.bin -t 4`.
+
+The default device is CPU, if you want to inference with GPU, please use `./chatglm -m chatglm-q4.bin -g GPU` to specify the GPU device.
+
+- CPU is SG2042, with riscv-vector 0.7, 64 threads
+![sg2042 running](/docs/pioneer/sg2042.gif)
+
+According to [x86 profiling result](https://github.com/MegEngine/InferLLM/blob/main/docs/profile.md), we strongly advise using 4 threads.
+
+### Supported model
+Now InferLLM supports the fellowing models:
+* [ChatGLM2-6B](https://github.com/THUDM/ChatGLM2-6B): usage please refer to [ChatGLM](https://github.com/MegEngine/InferLLM/blob/main/application/chatglm/Readme.md)
+* [ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B): usage please refer to [ChatGLM](https://github.com/MegEngine/InferLLM/blob/main/application/chatglm/Readme.md)
+* [llama](https://github.com/facebookresearch/llama)
+* [llama2](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf)
+* [alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html)
+* [baichuan](https://github.com/baichuan-inc/baichuan-7B) : usage please refer to [baichuan](https://github.com/MegEngine/InferLLM/blob/main/application/baichuan/Readme.md)
+### License
+InferLLM is licensed under the Apache License, Version 2.0
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/llvm.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/llvm.md
new file mode 100644
index 00000000..210c7e22
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/llvm.md
@@ -0,0 +1,65 @@
+---
+sidebar_label: 'LLVM Toolchain'
+sidebar_position: 30
+---
+
+# SG2042 Thead LLVM documentation
+This document is about the installation and use thead llvm in SG2042.
+
+## 1. Current status
+Thead vendor extensions are extensions which are not standardized by RISC-V International, and are instead defined by a thead hardware. Check spec [Here](https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf)
+
+Instructions are prefixed with `th.` as described in the specification. There are 13 vendor extensions in spec, but llvm supports 11 vendor extensions,they are:
+
+1. XTHeadBa, address-generation.
+2. XTHeadBb, basic bit-manipulation.
+3. XTHeadBs, single-bit operations
+4. XTHeadCondMov, conditional move
+5. XTHeadCmo, cache management operations
+6. XTHeadFMemIdx, indexed memory operations for floating point
+7. XTheadMac, multiply-accumulate instructions
+8. XTHeadMemIdx, indexed memory operations
+9. XTHeadMemPair,two-GPR memory operations
+10. XTHeadSync,multi-core synchronization instructions
+11. XTHeadVdot, version 1.0.0 of the THeadV-family custom instructions
+
+## 2. How to build
+### 2.1 Install prerequisites
+Several standard packages are needed to build the toolchain, so we need to prepare the build environment before build. Using ubuntu as an example:
+
+``````
+$ apt-get -y install flex bison git-core build-essential ninja-build libssh-dev libc6-dev python3-pip clang cmake
+``````
+
+### 2.2 Build steps
+
+``````
+$ git clone git@github.com:llvm/llvm-project.git
+$ cd llvm-project
+$ mkdir build && cd build
+$ cmake -DLLVM_TARGETS_TO_BUILD="RISCV" -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE="RELEASE" -G Ninja ../llvm
+$ ninja
+``````
+
+## 3. How to use
+
+`$.example, test.c`
+``````
+unsigned int clz_32(unsigned int a) {
+ return __builtin_riscv_clz_32(a);
+}
+``````
+
+``````
+$llvm-project/build/bin/clang -march=rv64gc_zfh_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync test.c
+``````
+
+*Notes: If we add the -S option,we can see the thead instruction.*
+
+``````
+ not a0, a0
+ slli a0, a0, 32
+ th.ff0 a0, a0 ----- the thead instruction.
+ ret
+``````
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/repository.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/repository.md
new file mode 100644
index 00000000..cd24c3a6
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/repository.md
@@ -0,0 +1,6 @@
+---
+sidebar_label: 'OpenKoji Software Repository'
+sidebar_position: 10
+---
+
+# Coming soon
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/scoresoftware.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/scoresoftware.md
new file mode 100644
index 00000000..3c97d003
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/scoresoftware.md
@@ -0,0 +1,323 @@
+---
+sidebar_label: 'SG2042 Running benchmark software usage documentation'
+sidebar_position: 20
+---
+# SG2042 Running benchmark software usage documentation
+This document is about the installation and use of SG2042 scoring software. It contains a total of two items, which are for CPU performance testing, including a total of five items, namely spec2017, spec2006, core-core latency, Uniex-bench, coremark; And for memory and IO performance runs a total of two items, namely stream and fio.
+
+## CPU Performance Testing
+### 1. SPEC 2017
+SPEC CPU is an industry-standard CPU-intensive benchmark suite. SPEC CPU2017 was released in June 2017 and contains four benchmarks. This document is about SPECrate 2017 Integer, SPECrate 2017 Floating, both are throughput tests.
+
+#### 1.1 How to Build
+
+``````
+$mkdir cpu
+$sudo mount cpu-1.1.9.iso cpu/
+$mkdir spec2017
+$sudo chmod +x spec2017/ -R
+$cp -r cpu/* spec2017/
+$cd spec2017
+$sudo dnf install gcc g++ gfortran glibc-static libgfortran-static libxcrypt-compat
+$./install.sh
+``````
+After running the./install.sh command, you will be prompted to whichdirectory to install the relevant files, type yes, you can install to the current directory, wait for the installation, after the installation is successful,continue execution:
+
+``````
+$mv riscv.cfg config/ // This command does not need to be executed if the official cfg is used
+``````
+
+Currently, Terapines zcc toolchain, llvm compiler, T-head compiler, gcc are supported. If you want to test with a different compiler, you can specify the compiler by modifying the CC, CXX, FC parameters of riscv.cfg:
+
+- **GCC**
+``````
+CC = $(SPECLANG)gcc -std=c99
+CXX = $(SPECLANG)g++ -std=c++O3
+``````
+
+- **T-head**
+``````
+CC = /home/fedora/tools/gcc-riscv64-thead-fedora38-linux-gnu-10.4/bin/gcc -std=c99
+CXX = /home/fedora/tools/gcc-riscv64-thead-fedora38-linux-gnu-10.4/bin/g++ -std=c++O3
+FC = /home/fedora/tools/gcc-riscv64-thead-fedora38-linux-gnu-10.4/bin/gfortran
+``````
+
+- **clang**
+
+Since llvm does not currently have a fortran library, fortran can only use gfortran:
+
+``````
+CC = clang
+CXX = calng++
+FC = $(SPECLANG)gfortran
+``````
+
+- **ZCC**
+
+Terapines fortran compiler zfc will be available in the next release.
+```
+CC = zcc --target=riscv64-unknown-linux-gnu -std=c99 -mllvm --no-unsigned-wrap=false
+CXX = z++ --target=riscv64-unknown-linux-gnu -std=c++03
+FC = $(SPECLANG)gfortran
+```
+
+#### 1.2 How to use
+
+``````
+$. ./shrc
+``````
+SPECrate Integer:
+``````
+$runcpu --action=run --tune=base --config=riscv.cfg intrate,
+``````
+SPECrate Floating:
+``````
+$. ./shrc
+$runcpu --action=run --tune=base --config=riscv.cfg fprate.
+``````
+Result:
+``````
+Under spec2017/result is the generated score.
+result:CPU2017.xxx.iinrate/fprate.refrate.pdf/txt;
+``````
+
+### 2. SPEC 2006
+SPEC 2006 is a suite of standardized CPU test benchmarks, including the SPECint benchmark and the SPECfp benchmark.
+
+#### 2.1 How to build
+
+``````
+$mkdir cpu
+$sudo mount cpu2006-1.2.iso cpu/
+$mkdir spec2006
+$sudo chmod +x spec2006/ -R
+$cp -r cpu/* spec2006/
+$cd spec2006
+$sudo dnf install gcc g++ gfortran glibc-static libgfortran-static libxcrypt-compat libstdc++-static.riscv64
+``````
+Place the spec2006 porting toolkit linux-riscv64-118.tar in the spec2006directory, then:
+
+``````
+$tar -xvf linux-riscv64-118.tar
+$export SPEC_INSTALL_NOCHECK=1
+$./install.sh -u linux-riscv
+$mv riscv.cfg config/ #If you use other config, this step can be ignored
+``````
+
+Currently, Terapines zcc toolchain, llvm compiler, T-head compiler, gcc are supported. If you want to use a different compiler for testing, you can specify the compiler by modifying the CC, CXX, FC parameters of riscv.cfg:
+
+- **GCC**
+
+``````
+CC = gcc
+CXX = g++
+FC = gfortran
+``````
+
+- **T-Head**
+
+``````
+CC = /home/fedora/tools/gcc-riscv64-thead-fedora38-linux-gnu-10.4/bin/gcc
+CXX = /home/fedora/tools/GCC - riscv64 - thead - fedora38 - Linux - 10.4 - gnu/bin/g++
+FC = /home/fedora/tools/GCC - riscv64 - thead - fedora38 - Linux - 10.4 -gnu/bin/gfortran
+``````
+
+- **llvm**
+
+``````
+CC = clang -Wno-int-conversion -std=gnu89
+CXX = g++
+FC = gfortran
+``````
+
+- **ZCC**
+
+Terapines fortran compiler zfc will be available in the next release.
+
+``````
+CC = zcc --target=riscv64-unknown-linux-gnu -Wno-int-conversion -std=gnu89 -mllvm -no-unsigned-wrap=false
+CXX = z++ --target=riscv64-unknown-linux-gnu -std=c++03
+FC = gfortran
+``````
+
+*Note: export SPEC_INSTALL_NOCHECK=1 can bypass regression testing for perl*
+
+#### How to use
+Run the runspec command to test, common test options are as follows:
+
+``````
+(1) --action=build/run/onlyrun build means only compile the test set, run means run the test set, if the test set has not been compiled before, it will build and then test. onlyrun only runs but does not compile.
+
+(2) -- tune=base/peak /all base benchmark peak test all first base test and then peak test.
+
+(3) -size =test/train/ref /all test set, from small to large, all, run all three test sets.
+
+(4) -- config=xxx.cfg specifies the config file, the file is saved in the config directory;
+
+(5) -n x Specifies the number of tests, n must be greater than or equal to 3 in order to generate a test report.
+
+(6) - reprotable generates a report int/fp/all Selects integer test, floating-point test, all runs int before fp
+
+(7) int/fp/all selects integer test and floating point test. all runs int first and then fp.
+
+(8)--copies=X limit the number of CPUs running when run rate test
+
+Just Type:
+runspec –action=build –tune=base –config=riscv.cfg int -reportable -n 3 -l
+``````
+
+### 3. Unixbench
+Unixbench is an open source tool for testing the basic performance of unix systems. It tests a series of performance of all aspects of the system, and then compares each test result with a benchmark value to obtain an index value.
+
+#### 3.1 How to build
+
+``````
+$git clone https://github.com/kdlucas/byte-unixbench.git
+$ cd byte-unixbench
+$cd Unixbbench
+$sudo dnf install perl
+``````
+
+llvm compiler, T-head compiler, gcc are currently supported. If you want to use adifferent compiler for testing, you can modify the Makefile to select the compiler
+
+``````
+$vim Makefile
+CC=clang/gcc/the path to gcc in the T-head bin directory
+$make
+``````
+
+#### 3.2 How to use
+``````
+$./Run
+``````
+
+If you want to get runs with different cpu numbers, you can add the -c argument to specify the number of cpus to run:
+
+Just Type:
+
+``````
+$/Run -c X//X is the actual number of cpus
+``````
+Result:
+The Unixbench run-score results are in the results directory:
+``````
+$cd results
+$ls
+``````
+
+### 4. Coremark test
+
+#### 4.1 How to build
+
+``````
+$git clone https://github.com/eembc/coremark.git
+$cd coremark
+$cd posix/
+$vi core_portme.mak
+``````
+
+Currently support llvm compiler, T-head compiler, gcc, if you want to use a different compiler test, you can change the cc parameter to select the compiler, and change PORT_CFLAGS =-O3,PORT_CFLAGS +=-lrt-lpthread in the core_porme.mak,then:
+
+``````
+$cd ..
+$make
+$make clean
+``````
+
+#### How to use
+
+``````
+$make XCFLAGS="-DMULTITHREAD= x-duse_fork "//X specifies how many cores to measure
+``````
+Result: Run score results in run1.log
+Note: If you need consecutive tests, run `$make clean` first
+
+### 5. core-core latency
+Core-core latency measures the latency it takes for a CPU to send a message to another CPU via its cache coherence protocol. By pinning two threads to two different CPU cores, we can have them perform a series of comparison swap operations and measure the latency.
+
+#### 5.1 How to build
+
+``````
+$git clone https://github.com/nviennot/core-to-core-latency.git
+$cd core-to-core-latency
+$curl, proto '= HTTPS' - tlsv1.2 - sSf https://sh.rustup.rs | sh
+$vi ~/.bashrc
+``````
+
+Installing Rust on Fedora can be done through rustup, the tool provided by Rust officially. After rustup is installed, in order to ensure that core-to-core-latency is running correctly, add the installation directory of rustup to the environment variable of your system, and add the following at the end of the bashrc file:eg:export PATH=“$HOME/.cargo/bin:$PATH”, then
+
+``````
+$source ~/.bashrc
+$cargo install core-to-core-latency
+``````
+
+#### 5.2 How to use
+
+``````
+$core-to-core-latency
+``````
+If you want to visualize the results, run the following command:
+``````
+$core-to-core-latency 5000 --csv > output.csv
+``````
+Result: The result is in the Result directory
+
+Results Visualization: There is a python script for visualization in the result directory. You can run this script through juypter to visualize the results.
+
+## Memory and IO Performance scores
+### 1. Stream
+stream is a set of comprehensive performance test programs, including four array operations: Copy, Scale, Add and Triad. The performance of memory bandwidth is tested by these four array operations.
+
+#### 1.1 How to build
+
+``````
+$git clone https://github.com/jeffhammond/STREAM.git
+$cd STREAM
+``````
+
+llvm compiler, T-head compiler, gcc are currently supported. The commands compiled by different compilers are as follows:
+
+``````
+$gcc-O3 -fopenmp -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 stream.c -o stream
+
+$clang -O3 -fopenmp -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 stream.c -o stream
+
+$/home/fedora/tools/gcc-riscv64-theel- fedora38- linux- gnu-10.4
+/bin/gcc-O3-fopenmp-DSTREAM_ARRAY_SIZE=80000000-DNTIMES=20 stream.c-o stream// T-head compiler
+``````
+
+#### 1.2 How to run
+
+``````
+$export OMP_NUM_THREADS=X// Specify how many threads to run
+$./streamResult: The command will give the result of memory bandwidth when completed
+``````
+
+### 2. FIO
+Fio is an open source testing tool, mainly used to test hard disk io performance, can test block devices or files, can simulate various io operations through multi-threads or processes, can test statistics iops, bandwidth and latency performance.
+
+#### 2.1 How to build
+llvm compiler, T-head compiler, gcc are currently supported. If you want to test with a different compiler, you can run make and specify the compiler:
+
+``````
+$git clone https://github.com/axboe/fio.git
+$cd fio
+$./configure -- cc=clang//llvm compiler
+$./configure--cc=/home/fedora/tools/gcc-riscv64-thead-fedora38- linux- gnu-10.4/bin/gcc // the directory where the compiler is located
+$./configure //gcc compiler
+$make
+$ make install
+``````
+
+#### How to run 64 threads
+Test the ability to read sequentially:
+
+``````
+$sudo fio -filename=/dev/nvme0n1 -direct=1 - iodepth 1 -thread -rw=read -ioengine=psync -bs=1M -size=10G - numjobs=64 -runtime=60 - group_reporting -name=nvme
+``````
+
+Test order write:
+
+``````
+$sudo fio -filename=/dev/nvme0n1 -direct=1 -iodepth 1 -thread -rw=wirte -ioengine=psync -bs=1M -size=10G - numjobs=64 -runtime=60 - group_reporting -name=nvme
+``````
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/zcc.md b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/zcc.md
new file mode 100644
index 00000000..0415f972
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/pioneer/resources/zcc.md
@@ -0,0 +1,80 @@
+---
+sidebar_label: 'ZCC Toolchain'
+sidebar_position: 30
+---
+# ZCC User Manual
+
+## Account Registration
+
+Since ZCC is a paid compiler, before downloading or using Terapines ZCC, please go to [**cloud.terapines.com**](https://cloud.terapines.com/) and submit an account registration request.
+
+Your registration may not be approved right away, for assistance, please contact **aries.wu@terapines.com**
+
+## Get ZCC Toolchain
+
+1. Register an account and login at https://cloud.terapines.com.
+2. Click the "Download Link" in the "Download ZStudio with Terapines Toolchains for Linux" section to download zcc.
+
+3. Unzip it. After unzipping, there will be a zcc directory in the current directory. This zcc directory is the installation path of the zcc toolchain.
+
+ ```
+ tar -xzvf zstudio-linux.tar.gz
+ ```
+
+## Online Authorization
+
+1. Add zcc to environment.
+
+ ```
+ export ZCC_PATH=`pwd`/zcc/bin
+ export PATH=$ZCC_PATH:$PATH
+ ```
+
+2. Use `which zcc` and `zcc --version` command to ensure zcc is in the environment.
+
+ ```
+ $ which zcc
+ ~/Work/jupiter/toolchain/zcc/bin/zcc
+ $ zcc --version
+ Terapines LTD zcc(based on clang) version 3.0.0_ (https://www.terapines.com bb012eef8b915c2ccbde7e17c9ff2533d1746469)
+ Target: riscv64-unknown-unknown-elf
+ Thread model: posix
+ InstalledDir: /home/tptuser/Work/jupiter/toolchain/zcc/bin/../.bin
+ Protection: enable
+ $
+ ```
+
+3. Use zstudio.sh for online authorization. `yourusername` and `yourpassword` are the username and password used to login at https://cloud.terapines.com.
+
+ Note: An account can only be used on one machine. Using the same account on a second machine will fail.
+
+ ```
+ zstudio.sh -u yourusername -p yourpassword
+ ```
+
+## Using ZCC
+
+Zcc is based on llvm compiler, and is also compatible with most gcc parameters. So you can use zcc like clang/gcc.
+
+```
+$ zcc hello.c -O3
+$ ./a.out
+Hello
+$
+```
+
+## Using ZCC to Test SPEC2006
+
+Modify the value of `zcc_dir` variable at line 102 in `zcc-sophgo.cfg` to point to the installation directory of zcc.
+
+Copy `zcc-sophgo.cfg` to $SPEC/config, and copy `zcc.xml` to $SPEC/config/flags. Then run runspec.
+
+```
+cp zcc-sophgo.cfg $SPEC/config/
+cp zcc.xml $SPEC/config/flags
+runspec --config=zcc-sophgo int --reportable
+```
+### Download
+- [zcc-sophgo.cfg](/docs/pioneer/zcc-sophgo.cfg)
+- [zcc.xml](/docs/pioneer/zcc.xml)
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/press.md b/i18n/ja/docusaurus-plugin-content-docs/current/press.md
new file mode 100644
index 00000000..1d8edb7a
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/press.md
@@ -0,0 +1,33 @@
+---
+sidebar_label: '🗞️ Press'
+sidebar_position: 99
+---
+
+# Milk-V in the Press
+
+## Duo
+- Platima Tinkers - [Testing out the Milk-V Duo - The new $9 RISC-V eSBC that runs Linux!](https://www.youtube.com/watch?v=YqUtGk0DHbQ&utm_source=milkv.io)
+
+- apalrd's adventures - [A $5 Introduction to the RISC-V Future of Computing](https://www.youtube.com/watch?v=z-GoLDQHYsE?utm_source=milkv.io)
+
+## Pioneer
+
+- Hackster - [Milk-V's Pioneer Is a Tall Glass of Cold RISC-V with 64 Cores, Up to 128GB of RAM](https://www.hackster.io/news/milk-v-s-pioneer-is-a-tall-glass-of-cold-risc-v-with-64-cores-up-to-128gb-of-ram-fabf9f22747f?utm_source=milkv.io)
+
+- TechPowerUp - [Milk-V Pioneer Developer Board Combines 64-Core RISC-V SoC with mATX Modularity](https://www.techpowerup.com/308989/milk-v-pioneer-developer-board-combines-64-core-risc-v-soc-with-matx-modularity?utm_source=milkv.io)
+
+- Tom's HardWare -[Milk-V Offers a Trio of RISC-V Raspberry Pi Alternatives](https://www.tomshardware.com/news/milk-v-offers-a-trio-of-risc-v-raspberry-pi-alternatives?utm_source=milkv.io)
+
+## Mars
+- Hackster - [Milk-V Surprises with a Second RISC-V SBC — Physically Compatible with the Raspberry Pi 3 Model B](https://www.hackster.io/news/milk-v-surprises-with-a-second-risc-v-sbc-physically-compatible-with-the-raspberry-pi-3-model-b-fa548a5908e8?utm_source=milkv.io)
+
+- Platima Tinkers - [Milk-V Mars First Look: Quad-Core 1.5GHz 64-bit RISC-V SBC plus Updated SD/eMMC Images](https://www.youtube.com/watch?v=HuU0LbnTbFk&utm_source=milkv.io)
+
+- Liliputing - [Milk-V Mars is a Raspberry Pi-sized PC with a quad-core RISC-V processor](https://liliputing.com/milk-v-mars-is-a-raspberry-pi-sized-pc-with-a-quad-core-risc-v-processor/?utm_source=milkv.io)
+
+- LinuxGizmos - [Milk-V Mars single board computer features RISC-V StarFive processor](https://linuxgizmos.com/milk-v-mars-single-board-computer-features-risc-v-starfive-processor/?utm_source=milkv.io)
+
+## Vega
+- The Paradise - [The world’s first open source 10 Gigabit RISC-V network switch Milk-V Vega unveiled](https://theparadise.ng/the-worlds-first-open-source-10-gigabit-risc-v-network-switch-milk-v-vega-unveiled/?utm_source=milkv.io)
+
+- Hackster.io - [RISC-V Specialist Milk-V Jumps Into the Network Market with the New 10-gig-E Vega Switch](https://www.hackster.io/news/risc-v-specialist-milk-v-jumps-into-the-network-market-with-the-new-10-gig-e-vega-switch-ef91693d20a3?utm_source=milkv.io)
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/vega/_category_.json
new file mode 100644
index 00000000..cb42edee
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🪐 Vega",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/vega",
+ "description": "Hello, I am Milk-V Vega"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/_category_.json
new file mode 100644
index 00000000..3244917e
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/_category_.json
@@ -0,0 +1,9 @@
+{
+ "label": "🚀 Getting Started",
+ "position": 10,
+ "link": {
+ "type": "generated-index",
+ "slug": "/vega/getting-started",
+ "description": "Getting Started with Vega"
+ }
+}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/boot.md b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/boot.md
new file mode 100644
index 00000000..7706b364
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/boot.md
@@ -0,0 +1,30 @@
+---
+sidebar_label: 'Boot the Vega'
+sidebar_position: 10
+---
+
+# Boot the Vega
+
+## Prepare
+
+- Necessary
+ - Vega
+ - DC5525 12V/2A Power Adapter
+
+## Image and SDK
+
+Milk-V Vega is shipped with a pre-installed Linux operating system with a remote management backend **so you don't need to install it again**.
+
+## Power Supply
+
+Please use 12V/2A AC-DC power adapter with DC5525 interface
+**Wrong voltage may damage the product***
+
+## Power on
+
+After power on, Milk-V Vega will start up automatically.
+
+During the boot process, all the Vega's network port lights **will remain on until the boot is complete**.
+
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/buildroot-sdk.md b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/buildroot-sdk.md
new file mode 100644
index 00000000..9573a655
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/buildroot-sdk.md
@@ -0,0 +1,256 @@
+---
+sidebar_label: 'Buildroot SDK'
+sidebar_position: 40
+---
+
+# Introduction
+
+Vega's default SDK is built based on buildroot and is used to generate Vega's firmware. The SDK mainly contains the following parts:
+
+- u-boot: 2020.07-rc2
+- linux kernel: 5.8.0
+- buildroot: 2020.05-rc1
+- opensbi: 0.7
+
+Source code: [github](https://github.com/milkv-vega/vega-buildroot-sdk)
+
+# Build image
+
+Prepare the Compilation Environment. Using a local Ubuntu system, the officially supported compilation environment is `Ubuntu Jammy 22.04.x amd64` only!
+
+If you are using other Linux distributions, we strongly recommend that you use the Docker environment to compile to reduce the probability of compilation errors.
+
+The following describes the compilation methods in the two environments.
+
+## 1. Compiled using Ubuntu 22.04
+
+### Packages to be installed
+
+```bash
+sudo apt install -y make git gcc g++ bison flex device-tree-compiler mtd-utils
+```
+
+### Get SDK Source Code
+
+```bash
+git clone https://github.com/milkv-vega/vega-buildroot-sdk.git --depth=1
+```
+
+### One-click Compilation
+
+Execute one-click compilation script `build.sh`:
+```bash
+cd vega-buildroot-sdk/
+./build.sh
+```
+
+After successful compilation, you can see the three generated images in the `out` directory:
+```
+out/
+├── freeloader.bin
+├── kernel.bin
+└── ubifs.img
+```
+
+## 2. Compiled using Docker
+
+Docker support is required on hosts running Linux systems. For how to use Docker, please refer to the [official documentation](https://docs.docker.com/) or other tutorials.
+
+We put the SDK source code on the Linux host system and call the Docker image environment provided by Milk-V to compile it.
+
+### Pull SDK code on Linux host
+
+```bash
+git clone https://github.com/milkv-vega/vega-buildroot-sdk.git --depth=1
+```
+
+### Enter the SDK code directory
+
+```bash
+cd vega-buildroot-sdk
+```
+
+### Pull the Docker image and run
+
+:::tip
+The Docker image used here is the same Docker image used by Milk-V’s other product Duo.
+:::
+
+```bash
+docker run -itd --name vegadocker -v $(pwd):/home/work milkvtech/milkv-duo:latest /bin/bash
+```
+
+Description of some parameters in the command:
+- `vegadocker` Docker name, you can use the name you want to use.
+- `$(pwd)` The current directory, here is the duo-buildroot-sdk directory that was 'cd' to in the previous step.
+- `-v $(pwd):/home/work` Bind the current code directory to the /home/work directory in the Docker image.
+- `milkvtech/milkv-duo:latest` The Docker image provided by Milk-V will be automatically downloaded from hub.docker.com for the first time.
+
+After Docker runs successfully, you can use the `docker ps -a` command to view the running status:
+```bash
+$ docker ps -a
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+8edea33c2239 milkvtech/milkv-duo:latest "/bin/bash" 2 hours ago Up 2 hours vegadocker
+```
+
+### One-click compilation using Docker
+
+```bash
+docker exec -it vegadocker /bin/bash -c "cd /home/work && cat /etc/issue && ./build.sh"
+```
+
+Description of some parameters in the command:
+- `vegadocker` The name of the running Docker must be consistent with the name set in the previous step.
+- `"*"` In quotes is the shell command to be run in the Docker image.
+- `cd /home/work` Switch to the /home/work directory. Since this directory has been bound to the host's code directory during runtime, the /home/work directory in Docker is the source code directory of the SDK.
+- `cat /etc/issue` Displays the version number of the image used by Docker. It is currently Ubuntu 22.04.3 LTS and is used for debugging.
+- `./build.sh` Execute one-click compilation script.
+
+After successful compilation, you can see the three generated images in the `out` directory:
+```
+out/
+├── freeloader.bin
+├── kernel.bin
+└── ubifs.img
+```
+
+### Stop Docker
+
+After compilation is completed, if the above Docker running environment is no longer needed, you can stop it first and then delete it:
+```bash
+docker stop 8edea33c2239
+docker rm 8edea33c2239
+```
+
+## 3. Other compilation considerations
+
+If you want to try to compile this SDK in an environment other than the above two environments, the following are things you may need to pay attention to, for reference only.
+
+### Compiling with Windows Linux Subsystem (WSL)
+
+If you wish to perform the compilation with WSL, there's an small issue building the image.
+The $PATH, due Windows interoperability, has Windows environment variables which include some spaces between the paths.
+
+To solve this problem you need to change the `/etc/wsl.conf` file and add the following lines:
+
+```
+[interop]
+appendWindowsPath = false
+```
+
+After that, you need to reboot the WSL with `wsl.exe --reboot`. Then you able to run the `./build.sh` script or the `build_all` line in the step-by-step compilation method.
+To rollback this change in `/etc/wsl.conf` file set `appendWindowsPath` as true. To reboot the WSL, can you use the Windows PowerShell command `wsl.exe --shutdown` then `wsl.exe`, after that the Windows environment variables become avaliable again in $PATH.
+
+## 4. Image burning
+
+Burning the image requires inputting commands through the serial port. For the use of the serial port, please refer to [here](https://milkv.io/docs/vega/getting-started/setup#serial-console).
+
+To burn the three image files generated by SDK compilation into the Vega device, you need to use the TFTP environment.
+
+### Installing TFTP service in Ubuntu 22.04
+
+Install tftp service:
+```bash
+sudo apt update
+sudo apt install tftpd-hpa
+```
+
+Edit configuration file:
+```
+sudo vi /etc/default/tftpd-hpa
+```
+Modify `TFTP_DIRECTORY` to the directory where the image file is stored, such as the `tftp` directory under the user directory:
+```
+TFTP_USERNAME="tftp"
+TFTP_DIRECTORY="/home/xxx/tftp"
+TFTP_ADDRESS=":69"
+TFTP_OPTIONS="--secure"
+```
+
+Create a tftp directory in the user directory to store files that need to be transferred through the tftp service:
+```bash
+mkdir /home/xxx/tftp
+```
+
+Restart the tftp service:
+```bash
+sudo systemctl restart tftpd-hpa
+```
+
+In the device's u-boot command line, test whether the tftp service in the host Ubuntu is working properly:
+
+- Configure the IP to be used by the current device and the IP of the tftp server:
+ ```
+ setenv ipaddr 192.168.2.2222;setenv serverip 192.168.2.66
+ ```
+- ping host:
+ ```
+ ping 192.168.2.66
+ ```
+ If the ping is successful, the tftp service on Ubuntu is normal.
+
+### Burn Loader
+
+Place `freeloader.bin` in the tftp directory. After the Vega device is powered on, after seeing the following prompt in the serial port, quickly enter `asd` to enter the u-boot terminal:
+
+```
+U-Boot 2020.07-rc2 (Jan 12 2024 - 16:32:24 +0800)
+
+CPU: rv64imafdc
+Model: nuclei,ux600fd
+DRAM: 240 MiB
+Board: Initialized
+NAND: 128 MiB
+Loading Environment from SPI Flash... SF: Detected w25q32 with page size 256 Bytes, erase size 4 KiB, total 4 MiB
+OK
+In: console
+Out: console
+Err: console
+Net: xy1000_eth
+Press asd to abort autoboot in 2 seconds
+=>
+```
+
+Connect the network cable in the same network segment as the TFTP server to any port of Vega, and configure the IP of Vega and the IP of the TFTP server in the u-boot terminal of the serial port. For example, the IP of the TFTP server is `192.168.2.66`, and the IP of Vega Configured as `192.168.2.222`, the command is as follows:
+
+```
+setenv ipaddr 192.168.2.222;setenv serverip 192.168.2.66
+```
+
+Burn `freeloader.bin`:
+```
+run updatefreeloader
+```
+You must wait for the burning to be completed here. When the command line prompt `=>` appears, the burning is completed. After burning `freeloader.bin`, you need to power on again, quickly enter `asd` to enter the u-boot terminal, and continue burning the kernel and file system.
+
+### Burn kernel and file system
+
+Similarly, place the two image files kernel.bin and ubifs.img to be burned in the `tftp` directory. In the u-boot terminal, configure the TFTP-related IP as above:
+```
+setenv ipaddr 192.168.2.222;setenv serverip 192.168.2.66
+```
+
+Burn `kernel.bin`:
+```
+run updateos_nand
+```
+
+Burn `ubifs.img`:
+```
+run updateubifs_boot
+```
+
+Set startup command:
+```
+setenv bootcmd run bootcmd_ubifs_boot
+```
+
+Save environment variables:
+```
+saveenv
+```
+
+start up:
+```
+boot
+```
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/modulesupport.md b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/modulesupport.md
new file mode 100644
index 00000000..8ed0b67b
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/modulesupport.md
@@ -0,0 +1,21 @@
+---
+sidebar_label: 'SFP/SFP+ Modules Support List'
+sidebar_position: 50
+---
+
+# SFP/SFP+ Modules Support List
+
+Milk-V Vega's Gigabit SFP interface has been tested to be compatible with most optical modules on the market. The 10 Gigabit SFP+ interface has compatibility requirements for optical modules.
+
+## 10 Gigabit SFP+ Modules Support List
+
+| No. | Type | Application Code | Description | Brand | wavelength range(nm) | results |
+| --- | ------------- | ---------------- | ----------------------------------- | ------------ | -------------------- | ------- |
+| 1 | TDM SFP+ 10km | 10GBASE-L | HSFP10-2321/10GBASE-LR/SFP+/10km | Hi-Optel | 1310 | PASS |
+| 2 | TDM SFP+ 10km | 10GBASE-L | MTRS-02X13-G/10G/10km/SFP+/LC | Genuine-opto | 1310 | PASS |
+| 3 | SFP+ 850nm | 10GBASE-SR | MTRS-01X11-G/10G/850/300m/SFP+/LC | Genuine-opto | 850 | PASS |
+| 4 | TDM SFP+10km | 10GBASE-L | RTXM228-401/10G/10km/LR/LW/SFP+/LC | WTD | 1310 | PASS |
+| 5 | TDM SFP+10km | 10GBASE-L | TR-PX13L-N00/10G/10km/LR/SFP+/LC | INNO LIGHT | 1310 | PASS |
+| 6 | TDM SFP+10km | I-64.1 | RTXM228-401/10G/10km/1310nm/SFP+/LC | WTD | 1310 | PASS |
+
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/setup.md b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/setup.md
new file mode 100644
index 00000000..c10bc12c
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/getting-started/setup.md
@@ -0,0 +1,116 @@
+---
+sidebar_label: 'Setting Up'
+sidebar_position: 20
+---
+
+# Set up the working environment
+
+Milk-V Vega offers multiple connection and management methods:
+- WEB (Backend administration interface)
+- SSH/Telnet (Manual activation required)
+- UART
+- JTAG
+
+This guide uses Milk-V Mars to demonstrate the setup of Milk-V Vega.
+You can also set up Milk-V Vega using a PC device with a network interface.
+
+## Connect Milk-V Vega
+
+Please use an Ethernet cable to connect the host device (Milk-V Mars) directly to the Milk-V Vega (RJ45 is used here as an example)
+
+![connect](/docs/vega/connect-demo.png)
+
+## WEB
+
+To connect to the WEB management interface, place **your device in the same network segment as Milk-V Vega**.
+
+After the connection, configure the **host device's(Milk-V Mars)** Ethernet as follows:
+
+
+~~~
+IP Address: 192.168.40.1
+Subnet mask: 255.255.255.0
+Default gateway:NULL
+~~~
+
+:::caution
+Milk-V Mars‘s (Host Device) IP Address must not be 192.168.40.253
+:::
+
+After waiting for the settings to take effect, your host device(Milk-V Mars) will be able to connect to Milk-V Vega.
+
+By default, you can check the connection to Milk-V Vega using the command(Host Device/Milk-V Mars) **ping 192.168.40.253**.
+
+Once everything is ready, open your browser (on Host Device/Milk-V Mars) and go to **192.168.40.253**, then enter the default username and password to access the WEB management interface.
+
+~~~
+Milk-V Vega WEB Management
+USERNAME: admin
+PASSWORD: admin
+~~~
+
+![WEB](/docs/vega/webcotrol.webp)
+
+## SSH/Telnet
+
+:::caution
+Enabling SSH/Telnet may increase your network security risk. Please use it cautiously.
+:::
+
+For the security of network devices, Milk-V Vega defaults to closing SSH and Telnet connections. To enable them, follow these steps:
+
+Navigate to **WEB management -> Access Control -> Enable Terminal Configure**.
+
+You can enable SSH and Telnet from there.
+
+![Access Control](/docs/vega/ssh-telnet.webp)
+
+Once everything is ready, use a terminal(Milk-V Mars/Your Device) connection tool and enter the following command:
+
+~~~
+//Terminal on Host Device/Milk-V Mars
+$ssh root@192.168.40.253
+~~~
+
+Log in using the default username and password:
+
+~~~
+Milk-V Vega
+USERNAME: root
+PASSWORD: milkv
+~~~
+
+## Serial Console
+
+The Vega integrates a USB to serial port chip. You only need to use a Type-C data cable to connect the Type-C interface of the computer and Vega.
+
+:::tip
+You only need to connect the serial port when burning the system or debugging the device through the command line. You do not need to connect it when using Vega normally.
+:::
+
+### Using serial port in Linux
+
+In a Linux environment such as Ubuntu system, you can use Vege's integrated serial port without installing a driver. You can use the `lsusb` command to check whether it has been recognized normally under Ubuntu:
+```bash
+$ lsusb
+Bus 001 Device 013: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
+```
+In addition, if you look under `/dev/`, two devices `/dev/ttyUSB0` and `/dev/ttyUSB1` will appear:
+```bash
+$ ls /dev/ttyUSB*
+/dev/ttyUSB0 /dev/ttyUSB1
+```
+The `ttyUSB0` is a serial port device, and you can configure the connection with tools such as `minicom`.
+
+~~~
+Milk-V Vega
+Serial baud rate: 115200
+USERNAME: root
+PASSWORD: milkv
+~~~
+
+### JTAG
+
+`ttyUSB1` is the JTAG debugging interface.
+
+TBD
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/vega/overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/vega/overview.md
new file mode 100644
index 00000000..c359c51a
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/vega/overview.md
@@ -0,0 +1,95 @@
+---
+sidebar_label: '🌍 Overview'
+sidebar_position: 1
+---
+
+# Vega
+
+Version 1.0
+
+-------------------------
+## Introduction
+
+Milk-V Vega offers comprehensive second-layer network protocol processing capabilities, including L2 bridging, L2 multicast, and storm suppression, among others. It supports VLAN functions based on streams, ports, protocols, and subnets. The device also provides support for STP, RSTP, and QinQ functionalities. Additionally, it includes features like defense against DOS attacks, black and white lists, and protocol packet filtering. Milk-V Vega facilitates filtering, link aggregation, OAM message transmission, and port protection functionalities. It further supports both ingress and egress ACL functionalities, as well as Ethernet synchronization and 1588 features.
+![vega-overview](/docs/vega/vega-overview.webp)
+Milk-V Vega is a compact and low-density box-style open-source 10 Gigabit network switch developed by Milk-V for the next generation of network architecture. It serves as a unified platform for various services such as broadband, voice, video, and surveillance. Equipped with domestically produced RISC-V high-reliability network switch chips from China, it simplifies network infrastructure, reduces energy and operational costs, and finds applications in data centers, industrial parks, medium to large enterprise networks, hotels, and educational institutions.
+
+## Fetures
+
+- RISC-V Network Chip - FSL1030M
+ - Operating at 500MHz, the UX608 with TEE supports dual modes of Linux or UCOS.
+ - It integrates 8 channels of Gigabit Ethernet PHY, along with 2 channels of 10 Gigabit SerDes and 4 channels of 1 Gigabit SerDes interfaces.
+ - Flexible business port selection is supported, catering to various application scenarios.
+
+- Compact in size
+ - Supports standard 1U rack
+ - Two units can be installed on each layer
+ ![vega-sideview](/docs/vega/vega-side-view.webp)
+
+- Development-friendly interface
+ - Provides JTAG interface to facilitate underlying development
+ - Provides RS232 and I2C interfaces for easy access to other sensors
+
+- Suitable for various networking scenarios
+ - 2x 10GbE SFP+ optical ports
+ - 4x 1GbE SFP optical ports
+ - 8x 1GbE RJ45 Ethernet ports
+
+- Designed for Open Source
+ - Based on open source Linux, convenient for secondary development and DIY.
+ - Open openSBI, u-boot, Linux kernel source code, provide cross-compile toolchain.
+ - Provide interface SDKs and APIs to flexibly realize business configurations.
+
+- Network Redundancy and Protection
+ - Spanning Tree Protocol (STP)
+ - Rapid Spanning Tree Protocol (RSTP)
+ - 1+1 / 1:1 Port Protection, Link Aggregation
+
+- Security and Filtering
+ - QoS based on 802.1p/DSCP
+ - VLAN-based switching, L2 multicast
+
+- Service Quality Enhancement
+ - Defense against DoS attacks, protocol packet filtering
+ - Blacklist / whitelist, IEEE802.1x
+
+- Advanced Feature Support
+ - On-chip packet buffering, ACL, QinQ
+ - Hierarchical Policing support
+ - VLAN based on port, protocol, IP subnet, and flow
+
+- Flexible Queue Scheduling
+ - 8 queues per port, multiple scheduling methods (SP / WRR / DWRR)
+ - Hybrid scheduling for optimized performance
+
+- Traffic Shaping and Control
+ - Port-based single-rate shaping
+ - Queue-based dual-rate shaping
+ - Storm control, L2 bridging
+
+- Management and Monitoring
+ - Mirroring and remote configuration
+ - Periodic hardware-based OAM message transmission
+ - Synchronous Ethernet (SyncE), 1588 functionality
+
+- Easy to Use
+ - Supports remote configuration, provides WEB and SSH access
+ - Provides command line service configuration for VLAN configuration, port mirroring, MAC address learning, traffic control, etc.
+
+## Hardware
+
+| Milk-V Vega | Specification |
+| -------------------------------------- | ------------------- |
+| CPU Performance | 400MHz |
+| Maximum Frame Length | 16000 bytes |
+| On-chip Buffer | 1.5MB |
+| MAC Address Depth | 16K |
+| VLAN | 4K |
+| L2 Multicast | 4K |
+| ACL | 256 |
+| Meter Minimum Granularity | 8Kbps |
+| Flow-based Policing Entries | 4K |
+| Typical Main Control Power Consumption | 4.5W |
+| Network Connectors | 2x 10GbE SFP+ Ports |
+| | 4x 1GbE SFP Ports |
+| | 8x 1GbE RJ45 Ports |
diff --git a/i18n/ja/docusaurus-theme-classic/navbar.json b/i18n/ja/docusaurus-theme-classic/navbar.json
index ae6c5001..51e305d4 100644
--- a/i18n/ja/docusaurus-theme-classic/navbar.json
+++ b/i18n/ja/docusaurus-theme-classic/navbar.json
@@ -3,6 +3,10 @@
"message": "ホーム",
"description": "Navbar item with label Home"
},
+ "item.label.About": {
+ "message": "私達について",
+ "description": "Navbar item with label About"
+ },
"item.label.Duo": {
"message": "Duo",
"description": "Navbar item with label Duo"
@@ -24,7 +28,39 @@
"description": "Navbar item with label Docs"
},
"item.label.Products": {
- "message": "製品",
- "description": "Navbar item with label Docs"
+ "message": "プロダクト",
+ "description": "Navbar item with label Products"
+ },
+ "logo.alt": {
+ "message": "milkv.io",
+ "description": "The alt text of navbar logo"
+ },
+ "item.label.Chips": {
+ "message": "チップ",
+ "description": "Navbar item with label Chips"
+ },
+ "item.label.Mars CM": {
+ "message": "Mars CM",
+ "description": "Navbar item with label Mars CM"
+ },
+ "item.label.Meles": {
+ "message": "Meles",
+ "description": "Navbar item with label Meles"
+ },
+ "item.label.Vega": {
+ "message": "Vega",
+ "description": "Navbar item with label Vega"
+ },
+ "item.label.SG2000": {
+ "message": "SG2000",
+ "description": "Navbar item with label SG2000"
+ },
+ "item.label.SG2002": {
+ "message": "SG2002",
+ "description": "Navbar item with label SG2002"
+ },
+ "item.label.CV1800B": {
+ "message": "CV1800B",
+ "description": "Navbar item with label CV1800B"
}
}