This commit is contained in:
wonderfullook
2022-12-16 18:39:05 +08:00
parent 51ac6a91fd
commit e2eb36e812
10 changed files with 653 additions and 73 deletions

View File

@@ -104,13 +104,6 @@ Video of M1s Dock and M0SenseM1s Dock is before 3:15and time after 3:15 is
### Function block
<!-- <table width=40%>
<tr>
<td><img alt="m1s_dock_function_block_top" src="./../../../zh/maix/m1s/assets/m1s_dock/m1s_dock_function_block_top.jpg"></td>
<td><img alt="m1s_dock_function_block_top" src="./../../../zh/maix/m1s/assets/m1s_dock/m1s_dock_function_block_top.jpg"></td>
</tr>
</table> -->
<img alt="m1s_dock_function_block_top" src="./../../../zh/maix/m1s/assets/m1s_dock/m1s_dock_function_block_top.jpg" width=20%>
<img alt="m1s_dock_function_block_top" src="./../../../zh/maix/m1s/assets/m1s_dock/m1s_dock_function_block_top.jpg" width=20%>
@@ -124,20 +117,20 @@ Video of M1s Dock and M0SenseM1s Dock is before 3:15and time after 3:15 is
## Comparison
| Item | Maix Bit | ESP32 cam | M1s Dock |
| :------ | :----------------------- | :---------------------------- | :----------------------------------------- |
| MainChip | K210 | ESP32 | M1s(BL808) |
| Camera | 0.3MP DVP GC0328 | 2MP DVP OV2640 with flash LED | 2MP MIPI OV2685(two-side) with flash LED |
| Screen | 2.4 inch 320x240 | | 1.68 inch 280x240 capacitive touch screen |
| Audio | I2S MEMS MIC | | Analog MEMS MIC + LineOut |
| SD Card Slot | SPI mode | SPI mode | · SDHC mode <br>· JTAG mode |
| Key | Reset <br> Boot | Reset | · Reset <br>· Boot <br>· User x 2 |
| USB | USB to Serial x 1 | | · USB to Dual Serial x 1 <br>· USB OTG HS |
| Other | | | 4P x 1.25mm connectorUART port |
| Pin 2 x 18 pins <br>· bread board friendly| 2 x 8 pins |· 2 x 16 pins<br>· bread board friendly |
| JTAG | | | Optional TF2JTAG |
| SHell | | | Optional |
| 尺寸 | 25 x 53 mm | 27 x 41 mm | 27 x 55 mm |
| Item | Maix Bit | ESP32 cam | M1s Dock |
| :----------- | :--------------------------------------- | :---------------------------- | :---------------------------------------- |
| MainChip | K210 | ESP32 | M1s(BL808) |
| Camera | 0.3MP DVP GC0328 | 2MP DVP OV2640 with flash LED | 2MP MIPI OV2685(two-side) with flash LED |
| Screen | 2.4 inch 320x240 | | 1.68 inch 280x240 capacitive touch screen |
| Audio | I2S MEMS MIC | | Analog MEMS MIC + LineOut |
| SD Card Slot | SPI mode | SPI mode | · SDHC mode <br>· JTAG mode |
| Key | Reset <br> Boot | Reset | · Reset <br>· Boot <br>· User x 2 |
| USB | USB to Serial x 1 | | · USB to Dual Serial x 1 <br>· USB OTG HS |
| Other | | | 4P x 1.25mm connectorUART port |
| Pin | · 2 x 18 pins <br>· bread board friendly | 2 x 8 pins | · 2 x 16 pins<br>· bread board friendly |
| JTAG | | | Optional TF2JTAG |
| Shell | | | Optional |
| Size | 25 x 53 mm | 27 x 41 mm | 27 x 55 mm |
## Software
@@ -177,6 +170,112 @@ Video of M1s Dock and M0SenseM1s Dock is before 3:15and time after 3:15 is
</tbody>
</table>
## Operators list
<table>
<thead>
<tr>
<th>Type</th>
<th>Operators</th>
<th>Applicable Subset Spec.</th>
<th>Processor</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="10">Convolution</td>
<td rowspan="4">Conv </td>
<td>Kernel: 1x1,3x3,5x5,7x7</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1, 2x2</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="4">Depthwise Conv</td>
<td>Kernel: 1x1,3x3 (5x5, 7x7 TBD)</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1 (2x2 TBD)</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="2">Transpose Conv</td>
<td>Kernel: 3x3</td>
<td rowspan="2">strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="4">Pooling</td>
<td rowspan="2">MaxPool (NPU TBD)</td>
<td>Kerenl: 2x2</td>
<td rowspan="2">DSP</td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="2">MaxPool</td>
<td>Kerenl: 3x3</td>
<td rowspan="2">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td rowspan="2">Activation</td>
<td>Relu</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Relu 6</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td rowspan="5">Other processing</td>
<td>BatchNormalization</td>
<td>fused with conv</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Add (shortcut)</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Concat (route)</td>
<td>Channel wise (AXIS 3 in BHWC)</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Fully Connected</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Upsample</td>
<td>Nearest</td>
<td>:strong:<code>NPU</code></td>
</tr>
</tbody>
</table>
## Links
- [Datasheet](https://dl.sipeed.com/shareURL/MAIX/M1s/M1s_Dock/1_Specification)
@@ -190,7 +289,7 @@ Video of M1s Dock and M0SenseM1s Dock is before 3:15and time after 3:15 is
---
- [SDK](https://github.com/sipeed/M1s_BL808_SDK) (Github)
- [SDK](https://github.com/sipeed/M1s_BL808_SDK) (Github)
- [Examples](https://github.com/sipeed/M1s_BL808_example)Github
- [Linux](https://github.com/sipeed/M1s_BL808_Linux_SDK)Github
- [Telegram](https://t.me/sipeed)
@@ -198,7 +297,6 @@ Video of M1s Dock and M0SenseM1s Dock is before 3:15and time after 3:15 is
- [Reddit](https://www.reddit.com/r/Sipeed/)
- [Online model platform](https://maixhub.com/)
## Attention
<table>

View File

@@ -239,6 +239,112 @@ Visit Schematic for details[Click me](https://dl.sipeed.com/shareURL/MAIX/M1s
</tbody>
</table>
## Operators list
<table>
<thead>
<tr>
<th>Type</th>
<th>Operators</th>
<th>Applicable Subset Spec.</th>
<th>Processor</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="10">Convolution</td>
<td rowspan="4">Conv </td>
<td>Kernel: 1x1,3x3,5x5,7x7</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1, 2x2</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="4">Depthwise Conv</td>
<td>Kernel: 1x1,3x3 (5x5, 7x7 TBD)</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1 (2x2 TBD)</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="2">Transpose Conv</td>
<td>Kernel: 3x3</td>
<td rowspan="2">strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="4">Pooling</td>
<td rowspan="2">MaxPool (NPU TBD)</td>
<td>Kerenl: 2x2</td>
<td rowspan="2">DSP</td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="2">MaxPool</td>
<td>Kerenl: 3x3</td>
<td rowspan="2">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td rowspan="2">Activation</td>
<td>Relu</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Relu 6</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td rowspan="5">Other processing</td>
<td>BatchNormalization</td>
<td>fused with conv</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Add (shortcut)</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Concat (route)</td>
<td>Channel wise (AXIS 3 in BHWC)</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Fully Connected</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Upsample</td>
<td>Nearest</td>
<td>:strong:<code>NPU</code></td>
</tr>
</tbody>
</table>
## Links
- [Datasheet](https://dl.sipeed.com/shareURL/MAIX/M1s/M1s/1_Specification)

View File

@@ -18,7 +18,7 @@ The led lights up when M0sense is powered on, and the screen displays spectrum d
## Burn by U-Disk
M0sense can be burned by draging and dropoing firmware to u-disk.
M0sense can be burned by dragging and dropping firmware to u-disk.
Hold BOOT key, then click RST key once, a removable disk is shown in computer.
@@ -28,9 +28,9 @@ Just drag the firmware you want to burn and drop it in the removable disk, the r
![m0sense_drag_burn](./../../../zh/maixzero/sense/assets/start/m0sense_drag_burn.gif)
Here are some demos [Click me](https://dl.sipeed.com/shareURL/Maix-Zero/Maix-Zero/7_Example_demos), just use them by draging and dropoing firmware to u-disk to see their result, the source codes are in [github](https://github.com/sipeed/M0sense_BL702_example).
Here are some demos [Click me](https://dl.sipeed.com/shareURL/Maix-Zero/Maix-Zero/7_Example_demos), just use them by dragging and dropping firmware to u-disk to see their result, the source codes are in [github](https://github.com/sipeed/M0sense_BL702_example).
And the result of each demo is as following:
And the result of each demo is as follows:
### hello_world.uf2
@@ -40,7 +40,7 @@ Run serial application, and open the serial port, `Hello, World` is being printe
### blink_baremetal.uf2
Draging and dropoing this file to u-disk, then repower M0sense, LED flashes, open the serial port the LED states are printed.
Dragging and dropping this file to u-disk, then repower M0sense, LED flashes, open the serial port and the LED states are printed.
- Open the serial port
@@ -52,7 +52,7 @@ Draging and dropoing this file to u-disk, then repower M0sense, LED flashes, ope
### blink_rtos.uf2
This demo is the same effect as the privious one, but this demo is based on RTOS.
This demo has the same effect as the previous one, but this demo is based on RTOS.
- Open the serial port
@@ -88,7 +88,7 @@ The detailed usage can be analysised by reading <a href="https://github.com/Sipe
### audio_recording.uf2
Burn this demo to M0sense, the 16bit pcm format data of onboard microphone is printed by serial port.
Burn this demo to M0sense, the 16bit pcm format data of the onboard microphone is printed by serial port.
![audio_recording](./../../../zh/maixzero/sense/assets/start/audio_recording.gif)
@@ -185,7 +185,7 @@ M0sense_BL702_example/
Make sure you are in `M0sense_BL702_example` dictionary.
Before put the patch, we need set username and email, just set what you like.
Before putting the patch, we need to set username and email, just set what you like.
```bash
cd bl_mcu_sdk
@@ -199,7 +199,7 @@ cd ..
./build.sh patch
```
When it shows `Apply patch for you!`, we succeed doing this.
When it shows `Apply patch for you!`, we succeed in doing this.
![m0sense_patch](./../../../zh/maixzero/sense/assets/start/m0sense_patch.jpg)
@@ -238,7 +238,7 @@ If not set the path right, the command `riscv64-unknown-elf-gcc` will be shown n
Before compiling demo first time, we need to compile the firmware conversion application on the computer for dragging and burning firmware by u-disk.
Run followinf command in the dictionary of `M0sense_BL702_example` .
Run following command in the dictionary of `M0sense_BL702_example` .
```bash
sudo apt install gcc # Install gcc

View File

@@ -71,7 +71,7 @@
"file": "maix/m1s/m1s_module.md"
},
{
"label": "M1s Board",
"label": "M1s Dock",
"items": [
{
"label": "Introduction",
@@ -99,6 +99,10 @@
{
"label": "M0sense Board",
"file": "./maixzero/sense/maix_zero_sense.md"
},
{
"label": "M0sense Guide",
"file": "./maixzero/sense/start.md"
}
]
}

View File

@@ -33,13 +33,13 @@ M1s Dock 和 M0Sense 总览3:15 之前的都是 M1s Dock。
## 板卡特点
- 主芯片 BL808 RISC-V 480Mhz + NPU BLAI-100
- 板载 USB 转 UART 调试器(可实现一键点击烧录,无需按实体按键)
- 板载显示屏座子(可选配 1.69 寸 240x280 电容触摸屏)
- 板载 MIPI 摄像头座子(可选配 200W 像素摄像头)
- 支持 2.4G WIFI / BT / BLE
- 板载 1 个模拟麦克风、1 个 LED、1 个 TF 卡座
- 引出一路 USB-OTG 到 USB Type-C 接口
- 主芯片 BL808 RISC-V 480Mhz + NPU BLAI-100
- 板载 USB 转 UART 调试器(可实现一键点击烧录,无需按实体按键)
- 板载显示屏座子(可选配 1.69 寸 240x280 电容触摸屏)
- 板载 MIPI 摄像头座子(可选配 200W 像素摄像头)
- 支持 2.4G WIFI / BT / BLE
- 板载 1 个模拟麦克风、1 个 LED、1 个 TF 卡座
- 引出一路 USB-OTG 到 USB Type-C 接口
### 硬件参数
@@ -115,14 +115,6 @@ M1s Dock 和 M0Sense 总览3:15 之前的都是 M1s Dock。
### 外设框图
<!-- <table>
<tr>
<td><img alt="m1s_dock_function_block_top" src="./assets/m1s_dock/m1s_dock_function_block_top.jpg" width=40%></td>
<td><img alt="m1s_dock_function_block_top" src="./assets/m1s_dock/m1s_dock_function_block_top.jpg" width=40%></td>
</tr>
</table> -->
<img alt="m1s_dock_function_block_top" src="./assets/m1s_dock/m1s_dock_function_block_top.jpg" width=20%>
<img alt="m1s_dock_function_block_top" src="./assets/m1s_dock/m1s_dock_function_block_top.jpg" width=20%>
@@ -136,20 +128,20 @@ M1s Dock 和 M0Sense 总览3:15 之前的都是 M1s Dock。
## 产品对比
| 项目 | Maix Bit | ESP32 cam | M1s Dock |
| :------ | :----------------------- | :---------------------------- | :----------------------------------------- |
| 处理器 | K210 | ESP32 | M1s(BL808) |
| 摄像头 | 0.3MP DVP GC0328 | 2MP DVP OV2640 with flash LED | 2MP MIPI OV2685(two-side) with flash LED |
| 显示屏 | 2.4 inch 320x240 | | 1.68 inch 280x240 带电容触摸 |
| 音频 | I2S MEMS MIC | | Analog MEMS MIC + LineOut |
| SD 卡槽 | SPI 模式 | SPI 模式 | · SDHC 模式 <br>· JTAG 模式 |
| 按键 | Reset <br> Boot | Reset | · Reset <br>· Boot <br>· User x 2 |
| USB | USB to Serial x 1 | | · USB to Dual Serial x 1 <br>· USB OTG HS |
| 其他 | | | 4P x 1.25mm 连接器(串口) |
| 引脚 | 2 x 18 pins,可用于面包板 | 2 x 8 pins | 2 x 16 pins,可用于面包板 |
| JTAG | | | 可选 TF2JTAG |
| 外壳 | | | 可选 |
| 尺寸 | 25 x 53 mm | 27 x 41 mm | 27 x 55 mm |
| 项目 | Maix Bit | ESP32 cam | M1s Dock |
| :------ | :----------------------- | :---------------------------- | :---------------------------------------- |
| 处理器 | K210 | ESP32 | M1s(BL808) |
| 摄像头 | 0.3MP DVP GC0328 | 2MP DVP OV2640 with flash LED | 2MP MIPI OV2685(two-side) with flash LED |
| 显示屏 | 2.4 inch 320x240 | | 1.68 inch 280x240 带电容触摸 |
| 音频 | I2S MEMS MIC | | Analog MEMS MIC + LineOut |
| SD 卡槽 | SPI 模式 | SPI 模式 | · SDHC 模式 <br>· JTAG 模式 |
| 按键 | Reset <br> Boot | Reset | · Reset <br>· Boot <br>· User x 2 |
| USB | USB to Serial x 1 | | · USB to Dual Serial x 1 <br>· USB OTG HS |
| 其他 | | | 4P x 1.25mm 连接器(串口) |
| 引脚 | 2 x 18 pins,可用于面包板 | 2 x 8 pins | 2 x 16 pins,可用于面包板 |
| JTAG | | | 可选 TF2JTAG |
| 外壳 | | | 可选 |
| 尺寸 | 25 x 53 mm | 27 x 41 mm | 27 x 55 mm |
## 软件描述
@@ -187,6 +179,112 @@ M1s Dock 和 M0Sense 总览3:15 之前的都是 M1s Dock。
</tbody>
</table>
## 支持算子列表
<table>
<thead>
<tr>
<th>Type</th>
<th>Operators</th>
<th>Applicable Subset Spec.</th>
<th>Processor</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="10">Convolution</td>
<td rowspan="4">Conv </td>
<td>Kernel: 1x1,3x3,5x5,7x7</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1, 2x2</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="4">Depthwise Conv</td>
<td>Kernel: 1x1,3x3 (5x5, 7x7 TBD)</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1 (2x2 TBD)</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="2">Transpose Conv</td>
<td>Kernel: 3x3</td>
<td rowspan="2">strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="4">Pooling</td>
<td rowspan="2">MaxPool (NPU TBD)</td>
<td>Kerenl: 2x2</td>
<td rowspan="2">DSP</td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="2">MaxPool</td>
<td>Kerenl: 3x3</td>
<td rowspan="2">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td rowspan="2">Activation</td>
<td>Relu</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Relu 6</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td rowspan="5">Other processing</td>
<td>BatchNormalization</td>
<td>fused with conv</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Add (shortcut)</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Concat (route)</td>
<td>Channel wise (AXIS 3 in BHWC)</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Fully Connected</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Upsample</td>
<td>Nearest</td>
<td>:strong:<code>NPU</code></td>
</tr>
</tbody>
</table>
## 补充资料
- [规格书](https://dl.sipeed.com/shareURL/MAIX/M1s/M1s_Dock/1_Specification)
@@ -200,7 +298,7 @@ M1s Dock 和 M0Sense 总览3:15 之前的都是 M1s Dock。
---
- [SDK](https://gitee.com/sipeed/M1s_BL808_SDK) (gitee)
- [SDK](https://gitee.com/sipeed/M1s_BL808_SDK) (gitee)
- [Examples](https://gitee.com/sipeed/M1s_BL808_example)gitee
- [Linux](https://github.com/sipeed/M1s_BL808_Linux_SDK)Github
- 交流 QQ 群:`816177882` 。[点我加群](https://jq.qq.com/?_wv=1027&k=0fOkj3EB)

View File

@@ -244,6 +244,112 @@ Sipeed M1s 模组是基于[博流智能科技](http://www.bouffalolab.com/)的 B
</tbody>
</table>
## 支持算子列表
<table>
<thead>
<tr>
<th>Type</th>
<th>Operators</th>
<th>Applicable Subset Spec.</th>
<th>Processor</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="10">Convolution</td>
<td rowspan="4">Conv </td>
<td>Kernel: 1x1,3x3,5x5,7x7</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1, 2x2</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="4">Depthwise Conv</td>
<td>Kernel: 1x1,3x3 (5x5, 7x7 TBD)</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1 (2x2 TBD)</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="2">Transpose Conv</td>
<td>Kernel: 3x3</td>
<td rowspan="2">strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="4">Pooling</td>
<td rowspan="2">MaxPool (NPU TBD)</td>
<td>Kerenl: 2x2</td>
<td rowspan="2">DSP</td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="2">MaxPool</td>
<td>Kerenl: 3x3</td>
<td rowspan="2">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td rowspan="2">Activation</td>
<td>Relu</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Relu 6</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td rowspan="5">Other processing</td>
<td>BatchNormalization</td>
<td>fused with conv</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Add (shortcut)</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Concat (route)</td>
<td>Channel wise (AXIS 3 in BHWC)</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Fully Connected</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Upsample</td>
<td>Nearest</td>
<td>:strong:<code>NPU</code></td>
</tr>
</tbody>
</table>
## 模组资料
- [规格书](https://dl.sipeed.com/shareURL/MAIX/M1s/M1s/1_Specification)

View File

@@ -75,7 +75,7 @@ M1s Dock 设计精巧,可以用来所很多有意思的事,这里简单说
烧录进 M1s Dock 后,屏幕显示着 lvgl 测试效果,设置波特率为 2000000串口号较小的串口打印着最后一次触摸屏幕位置。
<img src="./assets/start/example_lvgl.gif" alt="example_lvgl" width="45%">
<img src="./assets/start/example_lvgl.jpg" alt="example_lvgl" width="45%">
<img src="./assets/start/example_lvgl.jpg" alt="example_lvgl" width="45%">
### image_processing_demo
@@ -84,7 +84,7 @@ M1s Dock 设计精巧,可以用来所很多有意思的事,这里简单说
烧录进 M1s Dock 后,屏幕上显示摄像头画面,按下两侧的按键可以切换不同的图像算子。设置波特率为 2000000串口号较小的串口显示着上次按键和其他信息。
<img src="./assets/start/example_image_processing_demo.jpg" alt="example_image_processing_demo" width="45%">
<img src="./assets/start/example_image_processing_demo_uart.jpg" alt="example_image_processing_demo_uart" width="45%">
<img src="./assets/start/example_image_processing_demo_uart.jpg" alt="example_image_processing_demo_uart" width="45%">
### tinymaix_mnist_demo
@@ -93,7 +93,7 @@ M1s Dock 设计精巧,可以用来所很多有意思的事,这里简单说
烧录进 M1s Dock 后,屏幕中间的红框识别数字。设置波特率为 2000000串口号较小的串口打印着识别信息。
<img src="./assets/start/example_tinymaix_mnist_demo.jpg" alt="example_tinymaix_mnist_demo" width="45%">
<img src="./assets/start/example_tinymaix_mnist_demo_uart.jpg" alt="example_tinymaix_mnist_demo_uart" width="45%">
<img src="./assets/start/example_tinymaix_mnist_demo_uart.jpg" alt="example_tinymaix_mnist_demo_uart" width="45%">
### pikascript_demo
@@ -102,6 +102,7 @@ M1s Dock 设计精巧,可以用来所很多有意思的事,这里简单说
烧录进 M1s Dock 后,屏幕白屏,无内容。设置波特率为 2000000打开串口号较小的串口来进行命令行交互。
在命令行中输入这些指令:
```bash
arc = lv.arc(lv.scr_act())
arc.set_end_angle(200)
@@ -133,7 +134,7 @@ arc.center()
![application](./assets/start/application.png)
启动软件后选择 bl808 ,紧接着软件的 IOT 页面选择分区表文件[点我下载](https://dl.sipeed.com/fileList/MAIX/M1s/M1s_Dock/7_Firmware/partition/partition_cfg_16M_m1sdock.toml)(图里②)。
启动软件后选择 bl808 ,紧接着软件的 IOT 页面选择分区表文件[点我下载](https://dl.sipeed.com/fileList/MAIX/M1s/M1s_Dock/7_Firmware/partition/partition_cfg_16M_m1sdock.toml)(图里 ②)。
<table>
<tr>
@@ -260,7 +261,7 @@ git clone https://gitee.com/sipeed/M1s_BL808_SDK.git
最终结构树如下
```bash
sipeed@DESKTOP:~$ tree -L 1
sipeed@DESKTOP:~$ tree -L 1
.
├── M1s_BL808_example # 例程文件夹
└── M1s_BL808_SDK # SDK 文件夹
@@ -324,7 +325,7 @@ export BL_SDK_PATH=/home/lee/bl808/M1s_BL808_SDK
执行 M1s_BL808_example/c906_app 目录下的 build.sh ,后面追加上想要编译的 demo 就可以完成了。
Demo 如下编辑于2022-12-13
Demo 如下(编辑于 2022-12-13
```bash
c906_app
@@ -365,6 +366,7 @@ cd M1s_BL808_example/c906_app
cd M1s_BL808_example/e907_app
./build.sh firmware
```
然后编译出来的固件就会在 M1s_BL808_example/e907_app/build_out 目录下,名称为 `firmware.bin`,博流官方的烧录工具烧录进去即可。
### 常见问题
@@ -410,7 +412,7 @@ cd M1s_BL808_example/e907_app
前往 [下载站](https://dl.sipeed.com/shareURL/MAIX/M1s/M1s_Dock/9_Driver/cklink) 下载适合自己电脑的驱动。
#### 安装驱动
#### Windows
解压 `T-Head-DebugServer-windows` 压缩包后,运行加压后的 `Setup` 程序来安装驱动。
@@ -432,7 +434,7 @@ cd M1s_BL808_example/e907_app
![cklink_windows_driver_desktop_icon](./assets/start/cklink_windows_driver_desktop_icon.jpg)
#### 安装驱动
#### Linux
获得驱动:[点我](https://dl.sipeed.com/shareURL/MAIX/M1s/M1s_Dock/9_Driver/cklink)
@@ -524,11 +526,13 @@ sudo ./T-Head-DebugServer-linux-x86_64-V5.16.5-20221021.sh -i
```bash
.\DebugServerConsole.exe -h
```
![cklink_jtag_windows_debugserverconsole_help](./assets/start/cklink_jtag_windows_debugserverconsole_help.jpg)
```bash
.\DebugServerConsole.exe -port 65535
```
![cklink_jtag_windows_debugserverconsole_port](./assets/start/cklink_jtag_windows_debugserverconsole_port.jpg)
就可以通过 65535 端口来调试了。
@@ -544,6 +548,115 @@ sudo ./T-Head-DebugServer-linux-x86_64-V5.16.5-20221021.sh -i
```bash
DebugServerConsole -port 12345
```
![cklink_jtag_linux_debugserverconsole](./assets/start/cklink_jtag_linux_debugserverconsole.jpg)
## blai_npu
## blai_npu
### 支持算子
<table>
<thead>
<tr>
<th>Type</th>
<th>Operators</th>
<th>Applicable Subset Spec.</th>
<th>Processor</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="10">Convolution</td>
<td rowspan="4">Conv </td>
<td>Kernel: 1x1,3x3,5x5,7x7</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1, 2x2</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="4">Depthwise Conv</td>
<td>Kernel: 1x1,3x3 (5x5, 7x7 TBD)</td>
<td rowspan="4">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td>Dilation: 1x1 (2x2 TBD)</td>
</tr>
<tr>
<td>Pad: same</td>
</tr>
<tr>
<td rowspan="2">Transpose Conv</td>
<td>Kernel: 3x3</td>
<td rowspan="2">strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="4">Pooling</td>
<td rowspan="2">MaxPool (NPU TBD)</td>
<td>Kerenl: 2x2</td>
<td rowspan="2">DSP</td>
</tr>
<tr>
<td>Stride: 2x2</td>
</tr>
<tr>
<td rowspan="2">MaxPool</td>
<td>Kerenl: 3x3</td>
<td rowspan="2">:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Stride: 1x1, 2x2</td>
</tr>
<tr>
<td rowspan="2">Activation</td>
<td>Relu</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Relu 6</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td rowspan="5">Other processing</td>
<td>BatchNormalization</td>
<td>fused with conv</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Add (shortcut)</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Concat (route)</td>
<td>Channel wise (AXIS 3 in BHWC)</td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Fully Connected</td>
<td></td>
<td>:strong:<code>NPU</code></td>
</tr>
<tr>
<td>Upsample</td>
<td>Nearest</td>
<td>:strong:<code>NPU</code></td>
</tr>
</tbody>
</table>

View File

@@ -120,7 +120,9 @@
"dark": true,
"env":{
"main_color": "#FF6B63"
}
},
"code_highlight_css": "/static/css/prism.css",
"code_highlight_js": "/static/js/prism.js"
}
},
"teedoc-plugin-search":{

6
static/css/prism.css Normal file
View File

@@ -0,0 +1,6 @@
/* PrismJS 1.29.0
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+bash+c+cpp+cmake+coffeescript+docker+go+ini+java+json+json5+kotlin+latex+less+lua+makefile+markdown+markup-templating+objectivec+php+powershell+python+jsx+tsx+ruby+rust+sass+scss+shell-session+sql+swift+textile+typescript+verilog+yaml&plugins=line-numbers+highlight-keywords+toolbar+copy-to-clipboard+match-braces */
code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}
pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}
div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}
.token.punctuation.brace-hover,.token.punctuation.brace-selected{outline:solid 1px}.rainbow-braces .token.punctuation.brace-level-1,.rainbow-braces .token.punctuation.brace-level-5,.rainbow-braces .token.punctuation.brace-level-9{color:#e50;opacity:1}.rainbow-braces .token.punctuation.brace-level-10,.rainbow-braces .token.punctuation.brace-level-2,.rainbow-braces .token.punctuation.brace-level-6{color:#0b3;opacity:1}.rainbow-braces .token.punctuation.brace-level-11,.rainbow-braces .token.punctuation.brace-level-3,.rainbow-braces .token.punctuation.brace-level-7{color:#26f;opacity:1}.rainbow-braces .token.punctuation.brace-level-12,.rainbow-braces .token.punctuation.brace-level-4,.rainbow-braces .token.punctuation.brace-level-8{color:#e0e;opacity:1}

47
static/js/prism.js Normal file

File diff suppressed because one or more lines are too long