mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-22 20:59:03 +00:00
[sync] sync from internal repo
* use nuttx libc, disable system libc * use tlsf as default * update lhal flash driver * add example readme * add flash ini for new flash tool * add fw header for new flash tool
This commit is contained in:
parent
89592fc9a3
commit
356f258e83
554 changed files with 79150 additions and 46596 deletions
44
examples/peripherals/adc/adc_dma/README.md
Normal file
44
examples/peripherals/adc/adc_dma/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# adc_dma
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/adc/adc_dma/flash_prog_cfg.ini
Normal file
11
examples/peripherals/adc/adc_dma/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/adc*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
43
examples/peripherals/adc/adc_int/README.md
Normal file
43
examples/peripherals/adc/adc_int/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# adc_int
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/adc/adc_int/flash_prog_cfg.ini
Normal file
11
examples/peripherals/adc/adc_int/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/adc*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/adc/adc_poll/README.md
Normal file
44
examples/peripherals/adc/adc_poll/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# adc_poll
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/adc/adc_poll/flash_prog_cfg.ini
Normal file
11
examples/peripherals/adc/adc_poll/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/adc*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/adc/adc_poll_diff_mode/README.md
Normal file
44
examples/peripherals/adc/adc_poll_diff_mode/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# adc_poll_diff_mode
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/adc*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/adc/adc_tsen/README.md
Normal file
44
examples/peripherals/adc/adc_tsen/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# adc_tsen
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/adc/adc_tsen/flash_prog_cfg.ini
Normal file
11
examples/peripherals/adc/adc_tsen/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/adc*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/adc/adc_vbat/README.md
Normal file
44
examples/peripherals/adc/adc_vbat/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# adc_vbat
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/adc/adc_vbat/flash_prog_cfg.ini
Normal file
11
examples/peripherals/adc/adc_vbat/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/adc*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
43
examples/peripherals/cam/cam_crop/README.md
Normal file
43
examples/peripherals/cam/cam_crop/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# cam_crop
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/cam/cam_crop/flash_prog_cfg.ini
Normal file
11
examples/peripherals/cam/cam_crop/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/cam*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -39,6 +39,7 @@ int main(void)
|
|||
|
||||
memcpy(&cam_config, sensor_config, IMAGE_SENSOR_INFO_COPY_SIZE);
|
||||
cam_config.with_mjpeg = false;
|
||||
cam_config.input_source = CAM_INPUT_SOURCE_DVP;
|
||||
cam_config.output_format = CAM_OUTPUT_FORMAT_AUTO;
|
||||
cam_config.output_bufaddr = BFLB_PSRAM_BASE;
|
||||
cam_config.output_bufsize = CROP_WQVGA_X * CROP_WQVGA_Y * 8;
|
||||
|
|
43
examples/peripherals/cam/cam_int/README.md
Normal file
43
examples/peripherals/cam/cam_int/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# cam_int
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/cam/cam_int/flash_prog_cfg.ini
Normal file
11
examples/peripherals/cam/cam_int/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/cam*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -47,6 +47,7 @@ int main(void)
|
|||
|
||||
memcpy(&cam_config, sensor_config, IMAGE_SENSOR_INFO_COPY_SIZE);
|
||||
cam_config.with_mjpeg = false;
|
||||
cam_config.input_source = CAM_INPUT_SOURCE_DVP;
|
||||
cam_config.output_format = CAM_OUTPUT_FORMAT_AUTO;
|
||||
cam_config.output_bufaddr = BFLB_PSRAM_BASE;
|
||||
cam_config.output_bufsize = cam_config.resolution_x * cam_config.resolution_y * 12;
|
||||
|
|
43
examples/peripherals/cam/cam_normal/README.md
Normal file
43
examples/peripherals/cam/cam_normal/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# cam_normal
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/cam/cam_normal/flash_prog_cfg.ini
Normal file
11
examples/peripherals/cam/cam_normal/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/cam*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -32,6 +32,7 @@ int main(void)
|
|||
|
||||
memcpy(&cam_config, sensor_config, IMAGE_SENSOR_INFO_COPY_SIZE);
|
||||
cam_config.with_mjpeg = false;
|
||||
cam_config.input_source = CAM_INPUT_SOURCE_DVP;
|
||||
cam_config.output_format = CAM_OUTPUT_FORMAT_AUTO;
|
||||
cam_config.output_bufaddr = BFLB_PSRAM_BASE;
|
||||
cam_config.output_bufsize = cam_config.resolution_x * cam_config.resolution_y * 8;
|
||||
|
|
43
examples/peripherals/cam/cam_yuv420/README.md
Normal file
43
examples/peripherals/cam/cam_yuv420/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# cam_yuv420
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/cam/cam_yuv420/flash_prog_cfg.ini
Normal file
11
examples/peripherals/cam/cam_yuv420/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/cam*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -35,6 +35,7 @@ int main(void)
|
|||
/* Init cam0 for Y */
|
||||
memcpy(&cam_config, sensor_config, IMAGE_SENSOR_INFO_COPY_SIZE);
|
||||
cam_config.with_mjpeg = false;
|
||||
cam_config.input_source = CAM_INPUT_SOURCE_DVP;
|
||||
cam_config.output_format = CAM_OUTPUT_FORMAT_GRAY;
|
||||
cam_config.output_bufaddr = BFLB_PSRAM_BASE;
|
||||
cam_config.output_bufsize = cam_config.resolution_x * cam_config.resolution_y * 6;
|
||||
|
|
44
examples/peripherals/cks/cks_dma/README.md
Normal file
44
examples/peripherals/cks/cks_dma/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# cks_dma
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/cks/cks_dma/flash_prog_cfg.ini
Normal file
11
examples/peripherals/cks/cks_dma/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/cks*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/cks/cks_normal/README.md
Normal file
44
examples/peripherals/cks/cks_normal/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# cks_normal
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/cks/cks_normal/flash_prog_cfg.ini
Normal file
11
examples/peripherals/cks/cks_normal/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/cks*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -6,4 +6,4 @@ find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
|
|||
|
||||
sdk_set_main_file(main.c)
|
||||
|
||||
project(flash_xip_read_write)
|
||||
project(csi_normal)
|
14
examples/peripherals/csi/csi_normal/Makefile
Normal file
14
examples/peripherals/csi/csi_normal/Makefile
Normal file
|
@ -0,0 +1,14 @@
|
|||
SDK_DEMO_PATH ?= .
|
||||
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../../../..
|
||||
|
||||
export BL_SDK_BASE
|
||||
|
||||
CHIP ?= bl808
|
||||
BOARD ?= bl808dk
|
||||
CPU_ID ?= m0
|
||||
CROSS_COMPILE ?= riscv64-unknown-elf-
|
||||
|
||||
# add custom cmake definition
|
||||
#cmake_definition+=-Dxxx=sss
|
||||
|
||||
include $(BL_SDK_BASE)/project.build
|
23
examples/peripherals/csi/csi_normal/README.md
Normal file
23
examples/peripherals/csi/csi_normal/README.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
# csi_normal
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/csi/csi_normal/flash_prog_cfg.ini
Normal file
11
examples/peripherals/csi/csi_normal/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/csi_normal*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
73
examples/peripherals/csi/csi_normal/main.c
Normal file
73
examples/peripherals/csi/csi_normal/main.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
#include "bflb_mtimer.h"
|
||||
#include "bflb_i2c.h"
|
||||
#include "bflb_cam.h"
|
||||
#include "bflb_csi.h"
|
||||
#include "image_sensor.h"
|
||||
#include "board.h"
|
||||
|
||||
#define CAM_FRAME_COUNT_USE 50
|
||||
|
||||
static struct bflb_device_s *i2c0;
|
||||
static struct bflb_device_s *cam0;
|
||||
static struct bflb_device_s *csi;
|
||||
|
||||
static struct bflb_cam_config_s cam_config;
|
||||
static struct bflb_csi_config_s csi_config;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
uint32_t i, pic_size;
|
||||
uint8_t *pic;
|
||||
struct image_sensor_config_s *sensor_config;
|
||||
|
||||
board_init();
|
||||
board_csi_gpio_init();
|
||||
|
||||
i2c0 = bflb_device_get_by_name("i2c0");
|
||||
cam0 = bflb_device_get_by_name("cam0");
|
||||
csi = bflb_device_get_by_name("csi");
|
||||
|
||||
csi_config.lane_number = CSI_LANE_NUMBER_2;
|
||||
csi_config.tx_clk_escape = 24000000;
|
||||
csi_config.data_rate = 520000000;
|
||||
bflb_csi_init(csi, &csi_config);
|
||||
bflb_csi_start(csi);
|
||||
|
||||
if(image_sensor_scan(i2c0, &sensor_config)){
|
||||
printf("\r\nSensor name: %s\r\n", sensor_config->name);
|
||||
}else{
|
||||
printf("\r\nError! Can't identify sensor!\r\n");
|
||||
while(1){}
|
||||
}
|
||||
|
||||
bflb_csi_set_line_threshold(csi, sensor_config->resolution_x, sensor_config->pixel_clock, 80000000);
|
||||
|
||||
memcpy(&cam_config, sensor_config, IMAGE_SENSOR_INFO_COPY_SIZE);
|
||||
cam_config.with_mjpeg = false;
|
||||
cam_config.input_source = CAM_INPUT_SOURCE_CSI;
|
||||
cam_config.output_format = CAM_OUTPUT_FORMAT_AUTO;
|
||||
cam_config.output_bufaddr = BFLB_PSRAM_BASE;
|
||||
cam_config.output_bufsize = cam_config.resolution_x * cam_config.resolution_y * 8;
|
||||
bflb_cam_init(cam0, &cam_config);
|
||||
bflb_cam_start(cam0);
|
||||
|
||||
for (i = 0; i < CAM_FRAME_COUNT_USE; i++) {
|
||||
while(bflb_cam_get_frame_count(cam0) == 0){}
|
||||
pic_size = bflb_cam_get_frame_info(cam0, &pic);
|
||||
bflb_cam_pop_one_frame(cam0);
|
||||
printf("pop picture %d: 0x%08x, len: %d\r\n", i, (uint32_t)pic, pic_size);
|
||||
}
|
||||
|
||||
bflb_cam_stop(cam0);
|
||||
|
||||
//for (i = 0; i < pic_size; i++) {
|
||||
// printf("%02x", pic[i]);
|
||||
//}
|
||||
//printf("\r\n");
|
||||
|
||||
printf("end\r\n");
|
||||
|
||||
while (1) {
|
||||
bflb_mtimer_delay_ms(1000);
|
||||
}
|
||||
}
|
3
examples/peripherals/csi/csi_normal/proj.conf
Normal file
3
examples/peripherals/csi/csi_normal/proj.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
set(CONFIG_BSP_IMAGE_SENSOR 1)
|
||||
set(CONFIG_PSRAM 1)
|
||||
set(CONFIG_BSP_CSI 1)
|
44
examples/peripherals/dac/dac_dma/README.md
Normal file
44
examples/peripherals/dac/dac_dma/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# dac_dma
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/dac/dac_dma/flash_prog_cfg.ini
Normal file
11
examples/peripherals/dac/dac_dma/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/dac*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/dac/dac_polling/README.md
Normal file
44
examples/peripherals/dac/dac_polling/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# dac_polling
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/dac/dac_polling/flash_prog_cfg.ini
Normal file
11
examples/peripherals/dac/dac_polling/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/dac*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/dma/dma_normal/README.md
Normal file
44
examples/peripherals/dma/dma_normal/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# dma_normal
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq in dma0~dma1, should use dma2 |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/dma/dma_normal/flash_prog_cfg.ini
Normal file
11
examples/peripherals/dma/dma_normal/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/dma*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/dma/dma_normal_cycle/README.md
Normal file
44
examples/peripherals/dma/dma_normal_cycle/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# dma_normal_cycle
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq in dma0~dma1, should use dma2 |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/dma/dma_normal_cycle/flash_prog_cfg.ini
Normal file
11
examples/peripherals/dma/dma_normal_cycle/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/dma*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/dma/dma_reduce_or_add/README.md
Normal file
44
examples/peripherals/dma/dma_reduce_or_add/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# dma_reduce_or_add
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq in dma0~dma1, should use dma2 |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/dma*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/efuse/efuse_rw/README.md
Normal file
44
examples/peripherals/efuse/efuse_rw/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# efuse_rw
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/efuse/efuse_rw/flash_prog_cfg.ini
Normal file
11
examples/peripherals/efuse/efuse_rw/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/efuse*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/efuse/efuse_trim/README.md
Normal file
44
examples/peripherals/efuse/efuse_trim/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# efuse_trim
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/efuse/efuse_trim/flash_prog_cfg.ini
Normal file
11
examples/peripherals/efuse/efuse_trim/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/efuse*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
36
examples/peripherals/emac/emac_basic/README.md
Normal file
36
examples/peripherals/emac/emac_basic/README.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
# emac_basic
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/emac/emac_basic/flash_prog_cfg.ini
Normal file
11
examples/peripherals/emac/emac_basic/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/lwip_http_server_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -39,25 +39,29 @@
|
|||
*
|
||||
* See http://www.freertos.org/a00110.html.
|
||||
*----------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
|
||||
#ifdef BL702
|
||||
#if defined(BL602) || defined(BL702) || defined(BL702L)
|
||||
#define configMTIME_BASE_ADDRESS (0x02000000UL + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS (0x02000000UL + 0x4000UL)
|
||||
#else
|
||||
#define configMTIME_BASE_ADDRESS (0xE0000000UL + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS (0xE0000000UL + 0x4000UL)
|
||||
#if __riscv_xlen == 64
|
||||
#define configMTIME_BASE_ADDRESS (0)
|
||||
#define configMTIMECMP_BASE_ADDRESS ((0xE4000000UL) + 0x4000UL)
|
||||
#else
|
||||
#define configMTIME_BASE_ADDRESS ((0xE0000000UL) + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS ((0xE0000000UL) + 0x4000UL)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configCPU_CLOCK_HZ ((uint32_t)(1 * 1000 * 1000))
|
||||
#define configTICK_RATE_HZ ((TickType_t)1000)
|
||||
#define configMAX_PRIORITIES (7)
|
||||
#define configMINIMAL_STACK_SIZE ((unsigned short)128) /* Only needs to be this high as some demo tasks also use this constant. In production only the idle task would use this. */
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)15 * 1024)
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)24 * 1024)
|
||||
#define configMAX_TASK_NAME_LEN (16)
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
||||
|
@ -68,21 +72,22 @@
|
|||
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_APPLICATION_TASK_TAG 1
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configGENERATE_RUN_TIME_STATS 0
|
||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
||||
#define configUSE_TICKLESS_IDLE 0
|
||||
#define configUSE_POSIX_ERRNO 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
|
||||
/* Software timer definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define configTIMER_QUEUE_LENGTH 8
|
||||
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE)
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define configTIMER_QUEUE_LENGTH 4
|
||||
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE)
|
||||
|
||||
/* Task priorities. Allow these to be overridden. */
|
||||
#ifndef uartPRIMARY_PRIORITY
|
||||
|
@ -108,6 +113,9 @@ to exclude the API function. */
|
|||
header file. */
|
||||
void vApplicationMallocFailedHook(void);
|
||||
void vAssertCalled(void);
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define configASSERT(x) \
|
||||
if ((x) == 0) { \
|
||||
printf("file [%s]\r\n", __FILE__); \
|
||||
|
|
36
examples/peripherals/emac/lwip_http_server/README.md
Normal file
36
examples/peripherals/emac/lwip_http_server/README.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
# lwip_http_server
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/emac_basic_$(CHIPNAME).bin
|
||||
address = 0x000000
|
253
examples/peripherals/emac/lwip_http_server/lwipopts.h
Normal file
253
examples/peripherals/emac/lwip_http_server/lwipopts.h
Normal file
|
@ -0,0 +1,253 @@
|
|||
/**
|
||||
* Copyright (c) 2022 Bouffalolab team
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
/**
|
||||
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||
* use lwIP facilities.
|
||||
*/
|
||||
#define NO_SYS 0
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE (15 * 1024)
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 10
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 6
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 10
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 5
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 10
|
||||
|
||||
/* ---------- IPv4 options ---------- */
|
||||
#define LWIP_IPV4 1
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 0
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF (4 * TCP_MSS)
|
||||
|
||||
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
|
||||
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
|
||||
|
||||
#define TCP_SND_QUEUELEN (2 * TCP_SND_BUF / TCP_MSS)
|
||||
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND (2 * TCP_MSS)
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
||||
@ note: used to allocate Tx pbufs only
|
||||
mix pbuf size is (TCP_WND / TCP_MSS) */
|
||||
#define PBUF_POOL_SIZE (TCP_WND / TCP_MSS)
|
||||
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE 1524
|
||||
|
||||
/* LWIP_SUPPORT_CUSTOM_PBUF == 1: to pass directly MAC Rx buffers to the stack
|
||||
no copy is needed */
|
||||
#define LWIP_SUPPORT_CUSTOM_PBUF 1
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define LWIP_ICMP 1
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
#define LWIP_DHCP 0
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define LWIP_STATS 0
|
||||
|
||||
/* ---------- link callback options ---------- */
|
||||
/* LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
|
||||
* whenever the link changes (i.e., link down)
|
||||
*/
|
||||
#define LWIP_NETIF_LINK_CALLBACK 1
|
||||
|
||||
/*
|
||||
--------------------------------------
|
||||
---------- Checksum options ----------
|
||||
--------------------------------------
|
||||
*/
|
||||
/* LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from application buffers to pbufs. */
|
||||
#define LWIP_CHECKSUM_ON_COPY 0
|
||||
|
||||
#ifdef CHECKSUM_BY_HARDWARE
|
||||
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 0
|
||||
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 0
|
||||
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 0
|
||||
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 0
|
||||
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 0
|
||||
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 0
|
||||
/* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 0
|
||||
#else
|
||||
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
/* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 1
|
||||
#define CHECKSUM_CHECK_ICMP 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------------
|
||||
---------- Sequential layer options ----------
|
||||
----------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||
*/
|
||||
#define LWIP_NETCONN 1
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- Socket options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||
*/
|
||||
#define LWIP_SOCKET 1
|
||||
|
||||
/* ---------------- httpd options --------------- */
|
||||
#define HTTPD_USE_CUSTOM_FSDATA 1
|
||||
|
||||
// /** Set this to 1 to support CGI (old style).*/
|
||||
// #define LWIP_HTTPD_CGI 1
|
||||
|
||||
// /** Set this to 1 to support SSI (Server-Side-Includes)*/
|
||||
// #define LWIP_HTTPD_SSI 0
|
||||
|
||||
// /** Set this to 1 to support HTTP POST */
|
||||
// #define LWIP_HTTPD_SUPPORT_POST 0
|
||||
|
||||
// /** Set this to 0 to not send the SSI tag (default is on, so the tag will
|
||||
// * be sent in the HTML page */
|
||||
// #define LWIP_HTTPD_SSI_INCLUDE_TAG 0
|
||||
|
||||
// /** This is the size of a static buffer used when URIs end with '/'.
|
||||
// * In this buffer, the directory requested is concatenated with all the
|
||||
// * configured default file names.
|
||||
// * Set to 0 to disable checking default filenames on non-root directories.
|
||||
// */
|
||||
// #define LWIP_HTTPD_MAX_REQUEST_URI_LEN 256
|
||||
|
||||
// /** The server port for HTTPD to use */
|
||||
// #define HTTPD_SERVER_PORT LWIP_IANA_PORT_HTTP
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
----------------------------------------
|
||||
*/
|
||||
#define LWIP_DEBUG LWIP_DBG_OFF
|
||||
#define ETHARP_DEBUG LWIP_DBG_OFF
|
||||
#define ICMP_DEBUG LWIP_DBG_OFF
|
||||
#define TCPIP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
|
||||
#define UDP_DEBUG LWIP_DBG_OFF
|
||||
#define SOCKET_DEBUG LWIP_DBG_OFF
|
||||
#define API_LIB_DEBUG LWIP_DBG_OFF
|
||||
#define HTTPD_DEBUG LWIP_DBG_OFF
|
||||
#define PBUF_DEBUG LWIP_DBG_OFF
|
||||
#define IP_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/*
|
||||
---------------------------------
|
||||
---------- OS options ----------
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define TCPIP_THREAD_NAME "TCP/IP"
|
||||
#define TCPIP_THREAD_STACKSIZE 1024
|
||||
#define TCPIP_MBOX_SIZE 50
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 100
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 100
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 100
|
||||
#define DEFAULT_THREAD_STACKSIZE 512
|
||||
#define TCPIP_THREAD_PRIO osPriorityHigh
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -44,14 +44,6 @@
|
|||
/* global network interface struct define */
|
||||
struct netif gnetif;
|
||||
|
||||
/* free rtos heap define */
|
||||
static uint8_t freertos_heap[configTOTAL_HEAP_SIZE];
|
||||
static HeapRegion_t xHeapRegions[] = {
|
||||
{ (uint8_t *)freertos_heap, 0 },
|
||||
{ NULL, 0 }, /* Terminates the array. */
|
||||
{ NULL, 0 } /* Terminates the array. */
|
||||
};
|
||||
|
||||
static StackType_t start_task_stack[512];
|
||||
static StaticTask_t start_task_handle;
|
||||
|
||||
|
@ -132,9 +124,6 @@ int main(void)
|
|||
board_emac_gpio_init();
|
||||
|
||||
printf("EMAC lwip http test case !\r\n");
|
||||
/* freertos heap define */
|
||||
xHeapRegions[0].xSizeInBytes = configTOTAL_HEAP_SIZE;
|
||||
vPortDefineHeapRegions(xHeapRegions);
|
||||
|
||||
// ethernet_lwip_init();
|
||||
vSemaphoreCreateBinary(console_lock);
|
||||
|
|
|
@ -3,4 +3,4 @@ set(CONFIG_BFLOG 0)
|
|||
set(CONFIG_FREERTOS 1)
|
||||
set(CONFIG_LWIP 1)
|
||||
|
||||
set(CONFIG_ETHERNET 1)
|
||||
set(CONFIG_ETHERNET 1)
|
||||
|
|
|
@ -39,25 +39,29 @@
|
|||
*
|
||||
* See http://www.freertos.org/a00110.html.
|
||||
*----------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
|
||||
#ifdef BL702
|
||||
#if defined(BL602) || defined(BL702) || defined(BL702L)
|
||||
#define configMTIME_BASE_ADDRESS (0x02000000UL + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS (0x02000000UL + 0x4000UL)
|
||||
#else
|
||||
#define configMTIME_BASE_ADDRESS (0xE0000000UL + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS (0xE0000000UL + 0x4000UL)
|
||||
#if __riscv_xlen == 64
|
||||
#define configMTIME_BASE_ADDRESS (0)
|
||||
#define configMTIMECMP_BASE_ADDRESS ((0xE4000000UL) + 0x4000UL)
|
||||
#else
|
||||
#define configMTIME_BASE_ADDRESS ((0xE0000000UL) + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS ((0xE0000000UL) + 0x4000UL)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configCPU_CLOCK_HZ ((uint32_t)(1 * 1000 * 1000))
|
||||
#define configTICK_RATE_HZ ((TickType_t)1000)
|
||||
#define configMAX_PRIORITIES (7)
|
||||
#define configMINIMAL_STACK_SIZE ((unsigned short)128) /* Only needs to be this high as some demo tasks also use this constant. In production only the idle task would use this. */
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)15 * 1024)
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)24 * 1024)
|
||||
#define configMAX_TASK_NAME_LEN (16)
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
||||
|
@ -68,21 +72,22 @@
|
|||
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_APPLICATION_TASK_TAG 1
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configGENERATE_RUN_TIME_STATS 0
|
||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
||||
#define configUSE_TICKLESS_IDLE 0
|
||||
#define configUSE_POSIX_ERRNO 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
|
||||
/* Software timer definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define configTIMER_QUEUE_LENGTH 8
|
||||
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE)
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define configTIMER_QUEUE_LENGTH 4
|
||||
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE)
|
||||
|
||||
/* Task priorities. Allow these to be overridden. */
|
||||
#ifndef uartPRIMARY_PRIORITY
|
||||
|
@ -108,6 +113,9 @@ to exclude the API function. */
|
|||
header file. */
|
||||
void vApplicationMallocFailedHook(void);
|
||||
void vAssertCalled(void);
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define configASSERT(x) \
|
||||
if ((x) == 0) { \
|
||||
printf("file [%s]\r\n", __FILE__); \
|
||||
|
|
36
examples/peripherals/emac/lwip_tcp/README.md
Normal file
36
examples/peripherals/emac/lwip_tcp/README.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
# lwip_tcp
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/emac/lwip_tcp/flash_prog_cfg.ini
Normal file
11
examples/peripherals/emac/lwip_tcp/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/lwip_tcp_$(CHIPNAME).bin
|
||||
address = 0x000000
|
253
examples/peripherals/emac/lwip_tcp/lwipopts.h
Normal file
253
examples/peripherals/emac/lwip_tcp/lwipopts.h
Normal file
|
@ -0,0 +1,253 @@
|
|||
/**
|
||||
* Copyright (c) 2022 Bouffalolab team
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
/**
|
||||
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||
* use lwIP facilities.
|
||||
*/
|
||||
#define NO_SYS 0
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE (15 * 1024)
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 10
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 6
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 10
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 5
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 10
|
||||
|
||||
/* ---------- IPv4 options ---------- */
|
||||
#define LWIP_IPV4 1
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 0
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF (4 * TCP_MSS)
|
||||
|
||||
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
|
||||
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
|
||||
|
||||
#define TCP_SND_QUEUELEN (2 * TCP_SND_BUF / TCP_MSS)
|
||||
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND (2 * TCP_MSS)
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
||||
@ note: used to allocate Tx pbufs only
|
||||
mix pbuf size is (TCP_WND / TCP_MSS) */
|
||||
#define PBUF_POOL_SIZE (TCP_WND / TCP_MSS)
|
||||
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE 1524
|
||||
|
||||
/* LWIP_SUPPORT_CUSTOM_PBUF == 1: to pass directly MAC Rx buffers to the stack
|
||||
no copy is needed */
|
||||
#define LWIP_SUPPORT_CUSTOM_PBUF 1
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define LWIP_ICMP 1
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
#define LWIP_DHCP 0
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define LWIP_STATS 0
|
||||
|
||||
/* ---------- link callback options ---------- */
|
||||
/* LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
|
||||
* whenever the link changes (i.e., link down)
|
||||
*/
|
||||
#define LWIP_NETIF_LINK_CALLBACK 1
|
||||
|
||||
/*
|
||||
--------------------------------------
|
||||
---------- Checksum options ----------
|
||||
--------------------------------------
|
||||
*/
|
||||
/* LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from application buffers to pbufs. */
|
||||
#define LWIP_CHECKSUM_ON_COPY 0
|
||||
|
||||
#ifdef CHECKSUM_BY_HARDWARE
|
||||
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 0
|
||||
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 0
|
||||
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 0
|
||||
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 0
|
||||
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 0
|
||||
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 0
|
||||
/* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 0
|
||||
#else
|
||||
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
/* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 1
|
||||
#define CHECKSUM_CHECK_ICMP 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------------
|
||||
---------- Sequential layer options ----------
|
||||
----------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||
*/
|
||||
#define LWIP_NETCONN 1
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- Socket options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||
*/
|
||||
#define LWIP_SOCKET 1
|
||||
|
||||
/* ---------------- httpd options --------------- */
|
||||
#define HTTPD_USE_CUSTOM_FSDATA 1
|
||||
|
||||
// /** Set this to 1 to support CGI (old style).*/
|
||||
// #define LWIP_HTTPD_CGI 1
|
||||
|
||||
// /** Set this to 1 to support SSI (Server-Side-Includes)*/
|
||||
// #define LWIP_HTTPD_SSI 0
|
||||
|
||||
// /** Set this to 1 to support HTTP POST */
|
||||
// #define LWIP_HTTPD_SUPPORT_POST 0
|
||||
|
||||
// /** Set this to 0 to not send the SSI tag (default is on, so the tag will
|
||||
// * be sent in the HTML page */
|
||||
// #define LWIP_HTTPD_SSI_INCLUDE_TAG 0
|
||||
|
||||
// /** This is the size of a static buffer used when URIs end with '/'.
|
||||
// * In this buffer, the directory requested is concatenated with all the
|
||||
// * configured default file names.
|
||||
// * Set to 0 to disable checking default filenames on non-root directories.
|
||||
// */
|
||||
// #define LWIP_HTTPD_MAX_REQUEST_URI_LEN 256
|
||||
|
||||
// /** The server port for HTTPD to use */
|
||||
// #define HTTPD_SERVER_PORT LWIP_IANA_PORT_HTTP
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
----------------------------------------
|
||||
*/
|
||||
#define LWIP_DEBUG LWIP_DBG_OFF
|
||||
#define ETHARP_DEBUG LWIP_DBG_OFF
|
||||
#define ICMP_DEBUG LWIP_DBG_OFF
|
||||
#define TCPIP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
|
||||
#define UDP_DEBUG LWIP_DBG_OFF
|
||||
#define SOCKET_DEBUG LWIP_DBG_OFF
|
||||
#define API_LIB_DEBUG LWIP_DBG_OFF
|
||||
#define HTTPD_DEBUG LWIP_DBG_OFF
|
||||
#define PBUF_DEBUG LWIP_DBG_OFF
|
||||
#define IP_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/*
|
||||
---------------------------------
|
||||
---------- OS options ----------
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define TCPIP_THREAD_NAME "TCP/IP"
|
||||
#define TCPIP_THREAD_STACKSIZE 1024
|
||||
#define TCPIP_MBOX_SIZE 50
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 100
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 100
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 100
|
||||
#define DEFAULT_THREAD_STACKSIZE 512
|
||||
#define TCPIP_THREAD_PRIO osPriorityHigh
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -43,14 +43,6 @@
|
|||
/* global network interface struct define */
|
||||
struct netif gnetif;
|
||||
|
||||
/* free rtos heap define */
|
||||
static uint8_t freertos_heap[configTOTAL_HEAP_SIZE];
|
||||
static HeapRegion_t xHeapRegions[] = {
|
||||
{ (uint8_t *)freertos_heap, 0 },
|
||||
{ NULL, 0 }, /* Terminates the array. */
|
||||
{ NULL, 0 } /* Terminates the array. */
|
||||
};
|
||||
|
||||
/* For emac tx and rx buffer,we put here to make controlling it's size easy */
|
||||
#define ETH_RXBUFNB 5
|
||||
#define ETH_TXBUFNB 5
|
||||
|
@ -118,9 +110,6 @@ int main(void)
|
|||
board_emac_gpio_init();
|
||||
|
||||
printf("EMAC lwip test case !\r\n");
|
||||
/* freertos heap define */
|
||||
xHeapRegions[0].xSizeInBytes = configTOTAL_HEAP_SIZE;
|
||||
vPortDefineHeapRegions(xHeapRegions);
|
||||
|
||||
ethernet_lwip_init();
|
||||
|
||||
|
|
|
@ -3,4 +3,4 @@ set(CONFIG_BFLOG 0)
|
|||
set(CONFIG_FREERTOS 1)
|
||||
set(CONFIG_LWIP 1)
|
||||
|
||||
set(CONFIG_ETHERNET 1)
|
||||
set(CONFIG_ETHERNET 1)
|
||||
|
|
|
@ -39,25 +39,29 @@
|
|||
*
|
||||
* See http://www.freertos.org/a00110.html.
|
||||
*----------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
|
||||
#ifdef BL702
|
||||
#if defined(BL602) || defined(BL702) || defined(BL702L)
|
||||
#define configMTIME_BASE_ADDRESS (0x02000000UL + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS (0x02000000UL + 0x4000UL)
|
||||
#else
|
||||
#define configMTIME_BASE_ADDRESS (0xE0000000UL + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS (0xE0000000UL + 0x4000UL)
|
||||
#if __riscv_xlen == 64
|
||||
#define configMTIME_BASE_ADDRESS (0)
|
||||
#define configMTIMECMP_BASE_ADDRESS ((0xE4000000UL) + 0x4000UL)
|
||||
#else
|
||||
#define configMTIME_BASE_ADDRESS ((0xE0000000UL) + 0xBFF8UL)
|
||||
#define configMTIMECMP_BASE_ADDRESS ((0xE0000000UL) + 0x4000UL)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configCPU_CLOCK_HZ ((uint32_t)(1 * 1000 * 1000))
|
||||
#define configTICK_RATE_HZ ((TickType_t)1000)
|
||||
#define configMAX_PRIORITIES (7)
|
||||
#define configMINIMAL_STACK_SIZE ((unsigned short)128) /* Only needs to be this high as some demo tasks also use this constant. In production only the idle task would use this. */
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)15 * 1024)
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)24 * 1024)
|
||||
#define configMAX_TASK_NAME_LEN (16)
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
||||
|
@ -68,21 +72,22 @@
|
|||
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||
#define configUSE_RECURSIVE_MUTEXES 1
|
||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_APPLICATION_TASK_TAG 1
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configGENERATE_RUN_TIME_STATS 0
|
||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
||||
#define configUSE_TICKLESS_IDLE 0
|
||||
#define configUSE_POSIX_ERRNO 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
|
||||
/* Software timer definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define configTIMER_QUEUE_LENGTH 8
|
||||
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE)
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define configTIMER_QUEUE_LENGTH 4
|
||||
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE)
|
||||
|
||||
/* Task priorities. Allow these to be overridden. */
|
||||
#ifndef uartPRIMARY_PRIORITY
|
||||
|
@ -108,6 +113,9 @@ to exclude the API function. */
|
|||
header file. */
|
||||
void vApplicationMallocFailedHook(void);
|
||||
void vAssertCalled(void);
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define configASSERT(x) \
|
||||
if ((x) == 0) { \
|
||||
printf("file [%s]\r\n", __FILE__); \
|
||||
|
|
36
examples/peripherals/emac/lwip_udp/README.md
Normal file
36
examples/peripherals/emac/lwip_udp/README.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
# lwip_udp
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/emac/lwip_udp/flash_prog_cfg.ini
Normal file
11
examples/peripherals/emac/lwip_udp/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/lwip_udp_$(CHIPNAME).bin
|
||||
address = 0x000000
|
253
examples/peripherals/emac/lwip_udp/lwipopts.h
Normal file
253
examples/peripherals/emac/lwip_udp/lwipopts.h
Normal file
|
@ -0,0 +1,253 @@
|
|||
/**
|
||||
* Copyright (c) 2022 Bouffalolab team
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
/**
|
||||
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||
* use lwIP facilities.
|
||||
*/
|
||||
#define NO_SYS 0
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE (15 * 1024)
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 10
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 6
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 10
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 5
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 10
|
||||
|
||||
/* ---------- IPv4 options ---------- */
|
||||
#define LWIP_IPV4 1
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 0
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF (4 * TCP_MSS)
|
||||
|
||||
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
|
||||
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
|
||||
|
||||
#define TCP_SND_QUEUELEN (2 * TCP_SND_BUF / TCP_MSS)
|
||||
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND (2 * TCP_MSS)
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
||||
@ note: used to allocate Tx pbufs only
|
||||
mix pbuf size is (TCP_WND / TCP_MSS) */
|
||||
#define PBUF_POOL_SIZE (TCP_WND / TCP_MSS)
|
||||
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE 1524
|
||||
|
||||
/* LWIP_SUPPORT_CUSTOM_PBUF == 1: to pass directly MAC Rx buffers to the stack
|
||||
no copy is needed */
|
||||
#define LWIP_SUPPORT_CUSTOM_PBUF 1
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define LWIP_ICMP 1
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
#define LWIP_DHCP 0
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define LWIP_STATS 0
|
||||
|
||||
/* ---------- link callback options ---------- */
|
||||
/* LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
|
||||
* whenever the link changes (i.e., link down)
|
||||
*/
|
||||
#define LWIP_NETIF_LINK_CALLBACK 1
|
||||
|
||||
/*
|
||||
--------------------------------------
|
||||
---------- Checksum options ----------
|
||||
--------------------------------------
|
||||
*/
|
||||
/* LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from application buffers to pbufs. */
|
||||
#define LWIP_CHECKSUM_ON_COPY 0
|
||||
|
||||
#ifdef CHECKSUM_BY_HARDWARE
|
||||
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 0
|
||||
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 0
|
||||
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 0
|
||||
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 0
|
||||
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 0
|
||||
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 0
|
||||
/* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 0
|
||||
#else
|
||||
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
/* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 1
|
||||
#define CHECKSUM_CHECK_ICMP 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------------
|
||||
---------- Sequential layer options ----------
|
||||
----------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||
*/
|
||||
#define LWIP_NETCONN 1
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- Socket options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||
*/
|
||||
#define LWIP_SOCKET 1
|
||||
|
||||
/* ---------------- httpd options --------------- */
|
||||
#define HTTPD_USE_CUSTOM_FSDATA 1
|
||||
|
||||
// /** Set this to 1 to support CGI (old style).*/
|
||||
// #define LWIP_HTTPD_CGI 1
|
||||
|
||||
// /** Set this to 1 to support SSI (Server-Side-Includes)*/
|
||||
// #define LWIP_HTTPD_SSI 0
|
||||
|
||||
// /** Set this to 1 to support HTTP POST */
|
||||
// #define LWIP_HTTPD_SUPPORT_POST 0
|
||||
|
||||
// /** Set this to 0 to not send the SSI tag (default is on, so the tag will
|
||||
// * be sent in the HTML page */
|
||||
// #define LWIP_HTTPD_SSI_INCLUDE_TAG 0
|
||||
|
||||
// /** This is the size of a static buffer used when URIs end with '/'.
|
||||
// * In this buffer, the directory requested is concatenated with all the
|
||||
// * configured default file names.
|
||||
// * Set to 0 to disable checking default filenames on non-root directories.
|
||||
// */
|
||||
// #define LWIP_HTTPD_MAX_REQUEST_URI_LEN 256
|
||||
|
||||
// /** The server port for HTTPD to use */
|
||||
// #define HTTPD_SERVER_PORT LWIP_IANA_PORT_HTTP
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
----------------------------------------
|
||||
*/
|
||||
#define LWIP_DEBUG LWIP_DBG_OFF
|
||||
#define ETHARP_DEBUG LWIP_DBG_OFF
|
||||
#define ICMP_DEBUG LWIP_DBG_OFF
|
||||
#define TCPIP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_DEBUG LWIP_DBG_OFF
|
||||
#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
|
||||
#define UDP_DEBUG LWIP_DBG_OFF
|
||||
#define SOCKET_DEBUG LWIP_DBG_OFF
|
||||
#define API_LIB_DEBUG LWIP_DBG_OFF
|
||||
#define HTTPD_DEBUG LWIP_DBG_OFF
|
||||
#define PBUF_DEBUG LWIP_DBG_OFF
|
||||
#define IP_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/*
|
||||
---------------------------------
|
||||
---------- OS options ----------
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define TCPIP_THREAD_NAME "TCP/IP"
|
||||
#define TCPIP_THREAD_STACKSIZE 1024
|
||||
#define TCPIP_MBOX_SIZE 50
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 100
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 100
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 100
|
||||
#define DEFAULT_THREAD_STACKSIZE 512
|
||||
#define TCPIP_THREAD_PRIO osPriorityHigh
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -42,14 +42,6 @@
|
|||
/* global network interface struct define */
|
||||
struct netif gnetif;
|
||||
|
||||
/* free rtos heap define */
|
||||
static uint8_t freertos_heap[configTOTAL_HEAP_SIZE];
|
||||
static HeapRegion_t xHeapRegions[] = {
|
||||
{ (uint8_t *)freertos_heap, 0 },
|
||||
{ NULL, 0 }, /* Terminates the array. */
|
||||
{ NULL, 0 } /* Terminates the array. */
|
||||
};
|
||||
|
||||
/* For emac tx and rx buffer,we put here to make controlling it's size easy */
|
||||
#define ETH_RXBUFNB 5
|
||||
#define ETH_TXBUFNB 5
|
||||
|
@ -117,9 +109,6 @@ int main(void)
|
|||
board_emac_gpio_init();
|
||||
|
||||
printf("EMAC lwip test case !\r\n");
|
||||
/* freertos heap define */
|
||||
xHeapRegions[0].xSizeInBytes = configTOTAL_HEAP_SIZE;
|
||||
vPortDefineHeapRegions(xHeapRegions);
|
||||
|
||||
ethernet_lwip_init();
|
||||
// bflb_emac_stop_tx();
|
||||
|
|
|
@ -3,4 +3,4 @@ set(CONFIG_BFLOG 0)
|
|||
set(CONFIG_FREERTOS 1)
|
||||
set(CONFIG_LWIP 1)
|
||||
|
||||
set(CONFIG_ETHERNET 1)
|
||||
set(CONFIG_ETHERNET 1)
|
||||
|
|
44
examples/peripherals/flash/flash_dma/README.md
Normal file
44
examples/peripherals/flash/flash_dma/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# flash_dma
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/flash/flash_dma/flash_prog_cfg.ini
Normal file
11
examples/peripherals/flash/flash_dma/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/flash*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -2,10 +2,16 @@
|
|||
#include "bflb_dma.h"
|
||||
#include "board.h"
|
||||
|
||||
|
||||
#define FLASH_RW_START_ADDR 0x10000
|
||||
#define DMA_FLASH_ADDR_OFFSET 28 /* 0 or 28 for unaligned case */
|
||||
#define DMA_BUFFER_LENGTH 260
|
||||
#define DMA_FLASH_ADDR_OFFSET 0 /* 0 or 28 */
|
||||
|
||||
static ATTR_NOCACHE_NOINIT_RAM_SECTION uint8_t dst_buffer[DMA_BUFFER_LENGTH];
|
||||
static uint8_t write_buf[DMA_BUFFER_LENGTH];
|
||||
static uint8_t dma_tc_flag0 = 0;
|
||||
struct bflb_device_s *dma0_ch0;
|
||||
static uint64_t start_time;
|
||||
|
||||
static uint8_t src_burst[] = {
|
||||
DMA_BURST_INCR1,
|
||||
|
@ -67,12 +73,6 @@ static uint8_t dst_width[] = {
|
|||
DMA_DATA_WIDTH_32BIT,
|
||||
};
|
||||
|
||||
static uint8_t dma_tc_flag0 = 0;
|
||||
|
||||
struct bflb_device_s *dma0_ch0;
|
||||
|
||||
volatile uint64_t start_time;
|
||||
|
||||
void dma0_ch0_isr(void *arg)
|
||||
{
|
||||
printf("cost time:%d us\r\n", (uint32_t)(bflb_mtimer_get_time_us() - start_time));
|
||||
|
@ -83,18 +83,15 @@ void dma0_ch0_isr(void *arg)
|
|||
int main(void)
|
||||
{
|
||||
board_init();
|
||||
|
||||
uint8_t write_buf[DMA_BUFFER_LENGTH];
|
||||
|
||||
for (uint16_t i = 0; i < DMA_BUFFER_LENGTH; i++) {
|
||||
write_buf[i] = (i & 0xff) + i / 256;
|
||||
}
|
||||
|
||||
/* erase 0x00010000 4k flash */
|
||||
bflb_flash_erase(0x00010000, 4096);
|
||||
/* erase flash */
|
||||
bflb_flash_erase(FLASH_RW_START_ADDR, 4096);
|
||||
|
||||
/* write 0x00010000 flash data */
|
||||
bflb_flash_write(0x00010000, write_buf, sizeof(write_buf)); /* FLASH_XIP_BASE - 0x2000 + 0x00010000 */
|
||||
/* write flash data */
|
||||
bflb_flash_write(FLASH_RW_START_ADDR, write_buf, sizeof(write_buf)); /* FLASH_XIP_BASE - 0x2000 + 0x00010000 */
|
||||
|
||||
dma0_ch0 = bflb_device_get_by_name("dma0_ch0");
|
||||
|
||||
|
@ -120,7 +117,7 @@ int main(void)
|
|||
struct bflb_dma_channel_lli_pool_s lli[1]; /* max trasnfer size 4064 * 1 */
|
||||
struct bflb_dma_channel_lli_transfer_s transfers[1];
|
||||
|
||||
transfers[0].src_addr = (uint32_t)(FLASH_XIP_BASE - bflb_flash_get_image_offset() + 0x00010000 + DMA_FLASH_ADDR_OFFSET);
|
||||
transfers[0].src_addr = (uint32_t)(FLASH_XIP_BASE - bflb_flash_get_image_offset() + FLASH_RW_START_ADDR + DMA_FLASH_ADDR_OFFSET);
|
||||
transfers[0].dst_addr = (uint32_t)dst_buffer;
|
||||
transfers[0].nbytes = DMA_BUFFER_LENGTH - DMA_FLASH_ADDR_OFFSET;
|
||||
|
||||
|
@ -141,7 +138,7 @@ int main(void)
|
|||
}
|
||||
}
|
||||
|
||||
printf("flash test success\r\n");
|
||||
printf("flash dam case success\r\n");
|
||||
while (1) {
|
||||
}
|
||||
}
|
44
examples/peripherals/flash/flash_iomode/README.md
Normal file
44
examples/peripherals/flash/flash_iomode/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# flash_iomode
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/flash/flash_iomode/flash_prog_cfg.ini
Normal file
11
examples/peripherals/flash/flash_iomode/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/flash*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -1,52 +1,67 @@
|
|||
#include "bflb_flash.h"
|
||||
#include "board.h"
|
||||
|
||||
const char *iomode_string[] = { "NIO", "DO", "QO", "DIO", "QIO" };
|
||||
|
||||
#define FLASH_DATA_LEN 4096
|
||||
#define FLASH_RW_START_ADDR 0x10000
|
||||
|
||||
uint8_t write_buf[FLASH_DATA_LEN];
|
||||
uint8_t read_buf[FLASH_DATA_LEN];
|
||||
|
||||
uint64_t start_time;
|
||||
const char *iomode_string[] = { "NIO", "DO", "QO", "DIO", "QIO" };
|
||||
static uint8_t write_buf[FLASH_DATA_LEN];
|
||||
static uint8_t read_buf[FLASH_DATA_LEN];
|
||||
static uint64_t start_time;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
board_init();
|
||||
|
||||
for (uint16_t i = 0; i < FLASH_DATA_LEN; i++) {
|
||||
for (i = 0; i < sizeof(write_buf); i++) {
|
||||
write_buf[i] = i & 0xff;
|
||||
}
|
||||
|
||||
for (uint8_t iomode = FLASH_IOMODE_NIO; iomode <= FLASH_IOMODE_QIO; iomode++) {
|
||||
|
||||
printf("select flash iomode:%s\r\n", iomode_string[iomode]);
|
||||
bflb_flash_set_iomode(iomode);
|
||||
|
||||
start_time = bflb_mtimer_get_time_ms();
|
||||
|
||||
/* erase 0x00010000 4k flash */
|
||||
bflb_flash_erase(0x00010000, 4096);
|
||||
/* erase flash */
|
||||
bflb_flash_erase(FLASH_RW_START_ADDR, sizeof(write_buf));
|
||||
|
||||
/* write 0x00010000 flash data */
|
||||
bflb_flash_write(0x00010000, write_buf, sizeof(write_buf));
|
||||
memset(read_buf, 0, sizeof(read_buf));
|
||||
/* read flash data */
|
||||
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));
|
||||
|
||||
memset(read_buf, 0, FLASH_DATA_LEN);
|
||||
|
||||
/* read 0x00010000 flash data */
|
||||
bflb_flash_read(0x00010000, read_buf, sizeof(read_buf));
|
||||
|
||||
printf("cost time:%lld ms\r\n", (bflb_mtimer_get_time_ms() - start_time));
|
||||
|
||||
for (uint16_t j = 0; j < FLASH_DATA_LEN; j++) {
|
||||
if (read_buf[j] != write_buf[j]) {
|
||||
printf("flash test fail at %d, expect:%d but with %d\r\n", j, write_buf[j], read_buf[j]);
|
||||
for (i = 0; i < sizeof(read_buf); i++) {
|
||||
if (read_buf[i] != 0xff) {
|
||||
printf("flash erase fail at %d, expect:%d but get %d\r\n", i, 0xff, read_buf[i]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* write flash data */
|
||||
bflb_flash_write(FLASH_RW_START_ADDR, write_buf, sizeof(write_buf));
|
||||
|
||||
memset(read_buf, 0, sizeof(read_buf));
|
||||
/* read flash data */
|
||||
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));
|
||||
|
||||
printf("cost time:%lld ms\r\n", (bflb_mtimer_get_time_ms() - start_time));
|
||||
|
||||
for (i = 0; i < sizeof(write_buf); i++) {
|
||||
if (read_buf[i] != write_buf[i]) {
|
||||
printf("flash write fail at %d, expect:%d but get %d\r\n", i, write_buf[i], read_buf[i]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("flash data check success\r\n");
|
||||
}
|
||||
|
||||
printf("flash test success\r\n");
|
||||
printf("flash io case success\r\n");
|
||||
while (1) {
|
||||
}
|
||||
}
|
44
examples/peripherals/flash/flash_read_write/README.md
Normal file
44
examples/peripherals/flash/flash_read_write/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# flash_read_write
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/flash*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
|
@ -1,53 +1,62 @@
|
|||
#include "bflb_flash.h"
|
||||
#include "board.h"
|
||||
|
||||
#define FLASH_TEST_SIZE 1 * 1024 * 1024
|
||||
#define FLASH_RW_TOTAL_SIZE 512 * 1024
|
||||
#define FLASH_RW_START_ADDR 0x10000
|
||||
|
||||
static uint8_t write_buf[256];
|
||||
static uint8_t read_buf[256];
|
||||
|
||||
int main(void)
|
||||
{
|
||||
uint32_t i,j;
|
||||
uint32_t flash_addr;
|
||||
|
||||
board_init();
|
||||
|
||||
uint8_t write_buf[256];
|
||||
uint8_t read_buf[256];
|
||||
|
||||
for (uint16_t i = 0; i < 256; i++) {
|
||||
for (i = 0; i < sizeof(write_buf); i++) {
|
||||
write_buf[i] = i;
|
||||
}
|
||||
|
||||
for (uint32_t i = 1; i < (FLASH_TEST_SIZE / 1024); i++) {
|
||||
printf("test addr:%08x\r\n", (0x00010000 + (i - 1) * 1024));
|
||||
/* erase 0x00010000 4k flash */
|
||||
bflb_flash_erase(0x00010000 + (i - 1) * 1024, i * 1024);
|
||||
for (uint32_t offset = 0; offset < FLASH_RW_TOTAL_SIZE; offset+=sizeof(write_buf)){
|
||||
|
||||
memset(read_buf, 0, 256);
|
||||
flash_addr=FLASH_RW_START_ADDR+offset;
|
||||
printf("erase addr:%08x\r\n", flash_addr);
|
||||
|
||||
/* read 0x00010000 flash data */
|
||||
bflb_flash_read(0x00010000 + (i - 1) * 1024, read_buf, sizeof(read_buf));
|
||||
for (uint16_t j = 0; j < 256; j++) {
|
||||
/* erase flash */
|
||||
bflb_flash_erase(flash_addr,sizeof(write_buf));
|
||||
|
||||
memset(read_buf, 0, sizeof(read_buf));
|
||||
/* read flash data */
|
||||
bflb_flash_read(flash_addr, read_buf, sizeof(read_buf));
|
||||
|
||||
for (j = 0; j < sizeof(read_buf); j++) {
|
||||
if (read_buf[j] != 0xff) {
|
||||
printf("flash test fail at %d, expect:%d but with %d\r\n", j, 0xff, read_buf[j]);
|
||||
printf("flash erase fail at %d, expect:%d but get %d\r\n", j, 0xff, read_buf[j]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
/* write 0x00010000 flash data */
|
||||
bflb_flash_write(0x00010000 + (i - 1) * 1024, write_buf, sizeof(write_buf));
|
||||
|
||||
memset(read_buf, 0, 256);
|
||||
/* write flash data */
|
||||
bflb_flash_write(flash_addr, write_buf, sizeof(write_buf));
|
||||
|
||||
/* read 0x00010000 flash data */
|
||||
bflb_flash_read(0x00010000 + (i - 1) * 1024, read_buf, sizeof(read_buf));
|
||||
memset(read_buf, 0, sizeof(read_buf));
|
||||
/* read flash data */
|
||||
bflb_flash_read(flash_addr, read_buf, sizeof(read_buf));
|
||||
|
||||
for (uint16_t j = 0; j < 256; j++) {
|
||||
for (j = 0; j < sizeof(read_buf); j++) {
|
||||
if (read_buf[j] != write_buf[j]) {
|
||||
printf("flash test fail at %d, expect:%d but with %d\r\n", j, write_buf[j], read_buf[j]);
|
||||
printf("flash read fail at %d, expect:%d but get %d\r\n", j, write_buf[j], read_buf[j]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("check success\r\n");
|
||||
}
|
||||
|
||||
printf("flash test success\r\n");
|
||||
printf("flash read write success\r\n");
|
||||
|
||||
while (1) {
|
||||
}
|
||||
}
|
44
examples/peripherals/flash/flash_secure_read_write/README.md
Normal file
44
examples/peripherals/flash/flash_secure_read_write/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# flash_secure_read_write
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/flash*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
9
examples/peripherals/flash/flash_xip_read/CMakeLists.txt
Normal file
9
examples/peripherals/flash/flash_xip_read/CMakeLists.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
include(proj.conf)
|
||||
|
||||
find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
|
||||
|
||||
sdk_set_main_file(main.c)
|
||||
|
||||
project(flash_xip_read)
|
44
examples/peripherals/flash/flash_xip_read/README.md
Normal file
44
examples/peripherals/flash/flash_xip_read/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# flash_xip_read
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/flash/flash_xip_read/flash_prog_cfg.ini
Normal file
11
examples/peripherals/flash/flash_xip_read/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/flash*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
58
examples/peripherals/flash/flash_xip_read/main.c
Normal file
58
examples/peripherals/flash/flash_xip_read/main.c
Normal file
|
@ -0,0 +1,58 @@
|
|||
#include "bflb_flash.h"
|
||||
#include "bflb_l1c.h"
|
||||
#include "board.h"
|
||||
|
||||
#define FLASH_RW_TOTAL_SIZE 512 * 1024
|
||||
#define FLASH_RW_START_ADDR 0x10000
|
||||
|
||||
static uint8_t write_buf[1024];
|
||||
|
||||
int main(void)
|
||||
{
|
||||
uint8_t *read_buf;
|
||||
uint32_t flash_addr;
|
||||
|
||||
board_init();
|
||||
|
||||
for (uint16_t i = 0; i < sizeof(write_buf); i++) {
|
||||
write_buf[i] = i;
|
||||
}
|
||||
|
||||
for (uint32_t offset = 0; offset < FLASH_RW_TOTAL_SIZE; offset+=sizeof(write_buf)) {
|
||||
|
||||
flash_addr=FLASH_RW_START_ADDR + offset;
|
||||
printf("erase addr:%08x\r\n", flash_addr);
|
||||
|
||||
/* erase flash */
|
||||
bflb_flash_erase(flash_addr , sizeof(write_buf));
|
||||
|
||||
/* read flash data */
|
||||
read_buf = (uint8_t *)(FLASH_XIP_BASE + flash_addr - bflb_flash_get_image_offset());
|
||||
bflb_l1c_dcache_invalidate_range(read_buf, sizeof(write_buf));
|
||||
for (uint16_t j = 0; j < sizeof(write_buf); j++) {
|
||||
if (read_buf[j] != 0xff) {
|
||||
printf("flash erase fail at %d, expect:%d but get %d\r\n", j, 0xff, read_buf[j]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
/* write flash data */
|
||||
bflb_flash_write(flash_addr, write_buf, sizeof(write_buf));
|
||||
|
||||
/* read flash data */
|
||||
bflb_l1c_dcache_invalidate_range(read_buf, sizeof(write_buf));
|
||||
for (uint16_t j = 0; j < sizeof(write_buf); j++) {
|
||||
if (read_buf[j] != write_buf[j]) {
|
||||
printf("flash check fail at %d, expect:%d but get %d\r\n", j, write_buf[j], read_buf[j]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("check success\r\n");
|
||||
}
|
||||
|
||||
printf("flash xip read success\r\n");
|
||||
|
||||
while (1) {
|
||||
}
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
#include "bflb_flash.h"
|
||||
#include "bflb_l1c.h"
|
||||
#include "board.h"
|
||||
|
||||
#define FLASH_TEST_SIZE 1 * 1024 * 1024
|
||||
|
||||
int main(void)
|
||||
{
|
||||
board_init();
|
||||
|
||||
uint8_t write_buf[256];
|
||||
uint8_t *read_buf;
|
||||
|
||||
for (uint16_t i = 0; i < 256; i++) {
|
||||
write_buf[i] = i;
|
||||
}
|
||||
|
||||
for (uint32_t i = 1; i < (FLASH_TEST_SIZE / 1024); i++) {
|
||||
printf("test addr:%08x\r\n", (0x00010000 + (i - 1) * 1024));
|
||||
/* erase 0x00010000 4k flash */
|
||||
bflb_flash_erase(0x00010000 + (i - 1) * 1024, i * 1024);
|
||||
|
||||
/* read 0x00010000 flash data */
|
||||
read_buf = (uint8_t *)(FLASH_XIP_BASE - bflb_flash_get_image_offset() + 0x00010000 + (i - 1) * 1024);
|
||||
bflb_l1c_dcache_invalidate_range(read_buf, 256);
|
||||
for (uint16_t j = 0; j < 256; j++) {
|
||||
if (read_buf[j] != 0xff) {
|
||||
printf("flash test1 fail at %d, expect:%d but with %d\r\n", j, 0xff, read_buf[j]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
/* write 0x00010000 flash data */
|
||||
bflb_flash_write(0x00010000 + (i - 1) * 1024, write_buf, sizeof(write_buf));
|
||||
|
||||
/* read 0x00010000 flash data */
|
||||
read_buf = (uint8_t *)(FLASH_XIP_BASE - bflb_flash_get_image_offset() + 0x00010000 + (i - 1) * 1024);
|
||||
bflb_l1c_dcache_invalidate_range(read_buf, 256);
|
||||
for (uint16_t j = 0; j < 256; j++) {
|
||||
if (read_buf[j] != write_buf[j]) {
|
||||
printf("flash test2 fail at %d, expect:%d but with %d\r\n", j, write_buf[j], read_buf[j]);
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("flash test success\r\n");
|
||||
while (1) {
|
||||
}
|
||||
}
|
44
examples/peripherals/gpio/gpio_input_output/README.md
Normal file
44
examples/peripherals/gpio/gpio_input_output/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# gpio_input_output
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/gpio*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
43
examples/peripherals/gpio/gpio_interrupt/README.md
Normal file
43
examples/peripherals/gpio/gpio_interrupt/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# gpio_interrupt
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/gpio/gpio_interrupt/flash_prog_cfg.ini
Normal file
11
examples/peripherals/gpio/gpio_interrupt/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/gpio*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
30
examples/peripherals/i2c/i2c_10_bit/README.md
Normal file
30
examples/peripherals/i2c/i2c_10_bit/README.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
# i2c_10_bit
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/i2c/i2c_10_bit/flash_prog_cfg.ini
Normal file
11
examples/peripherals/i2c/i2c_10_bit/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/i2c*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/i2c/i2c_eeprom/README.md
Normal file
44
examples/peripherals/i2c/i2c_eeprom/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# i2c_eeprom
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/i2c/i2c_eeprom/flash_prog_cfg.ini
Normal file
11
examples/peripherals/i2c/i2c_eeprom/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/ir*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
44
examples/peripherals/i2c/i2c_eeprom_dma/README.md
Normal file
44
examples/peripherals/i2c/i2c_eeprom_dma/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# i2c_eeprom_dma
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=d0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
11
examples/peripherals/i2c/i2c_eeprom_dma/flash_prog_cfg.ini
Normal file
11
examples/peripherals/i2c/i2c_eeprom_dma/flash_prog_cfg.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/i2c*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
43
examples/peripherals/i2c/i2c_eeprom_interrupt/README.md
Normal file
43
examples/peripherals/i2c/i2c_eeprom_interrupt/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# i2c_eeprom_interrupt
|
||||
|
||||
|
||||
## Support CHIP
|
||||
|
||||
| CHIP | Remark |
|
||||
|:----------------:|:------:|
|
||||
|BL602/BL604 | |
|
||||
|BL702/BL704/BL706 | |
|
||||
|BL616/BL618 | |
|
||||
|BL808 | D0 has no irq |
|
||||
|
||||
## Compile
|
||||
|
||||
- BL602/BL604
|
||||
|
||||
```
|
||||
make CHIP=bl602 BOARD=bl602dk
|
||||
```
|
||||
|
||||
- BL702/BL704/BL706
|
||||
|
||||
```
|
||||
make CHIP=bl702 BOARD=bl702dk
|
||||
```
|
||||
|
||||
- BL616/BL618
|
||||
|
||||
```
|
||||
make CHIP=bl616 BOARD=bl616dk
|
||||
```
|
||||
|
||||
- BL808
|
||||
|
||||
```
|
||||
make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
|
||||
```
|
||||
|
||||
## Flash
|
||||
|
||||
```
|
||||
make flash CHIP=chip_name COMX=xxx # xxx is your com name
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
[cfg]
|
||||
# 0: no erase, 1:programmed section erase, 2: chip erase
|
||||
erase = 1
|
||||
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
|
||||
skip_mode = 0x0, 0x0
|
||||
# 0: not use isp mode, #1: isp mode
|
||||
boot2_isp_mode = 0
|
||||
|
||||
[FW]
|
||||
filedir = ./build/build_out/i2c*_$(CHIPNAME).bin
|
||||
address = 0x000000
|
9
examples/peripherals/i2s/i2s_dma/CMakeLists.txt
Executable file
9
examples/peripherals/i2s/i2s_dma/CMakeLists.txt
Executable file
|
@ -0,0 +1,9 @@
|
|||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
include(proj.conf)
|
||||
|
||||
find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
|
||||
|
||||
sdk_set_main_file(main.c)
|
||||
|
||||
project(spi_dma)
|
13
examples/peripherals/i2s/i2s_dma/Makefile
Executable file
13
examples/peripherals/i2s/i2s_dma/Makefile
Executable file
|
@ -0,0 +1,13 @@
|
|||
SDK_DEMO_PATH ?= .
|
||||
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../../../..
|
||||
|
||||
export BL_SDK_BASE
|
||||
|
||||
CHIP ?= bl616
|
||||
BOARD ?= bl616dk
|
||||
CROSS_COMPILE ?= riscv64-unknown-elf-
|
||||
|
||||
# add custom cmake definition
|
||||
#cmake_definition+=-Dxxx=sss
|
||||
|
||||
include $(BL_SDK_BASE)/project.build
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue