Demo:FreeRTOS:修订间差异

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索
创建页面,内容为“在Bouffalo SDK上使用FreeRTOS APP。”
 
武楷轩留言 | 贡献
添加具体内容。
第1行: 第1行:
在Bouffalo SDK上使用FreeRTOS APP。
在Bouffalo SDK上使用FreeRTOS APP。
=== 源码介绍: ===
该文件的源码在 bouffalo_sdk/examples/freertos/main.c中,该测试 demo 简单测试了一些组件,包括Semaphore,Mutex,Queue,Priority 的基本简单测试。
测试分为两个阶段:
阶段一以消费者生产者模型测试'''信号量'''和'''信号队列'''组件,共生成三个Task。阶段结束后Task自动销毁。
阶段二以共简单共享资源简单测试Task争夺临界资源的方式测试'''互斥量''',途中高优先级的任务将启动并占用CPU一段时间以此测试抢占'''任务调度'''。
=== 源码编译: ===
在该文件夹下有一个README.md文件,该文件中根据不同的开发板型号有不同编译的参数,例如bl616 :<syntaxhighlight lang="bash">
- BL616/BL618
```
make CHIP=bl616 BOARD=bl616dk
```
#以上为README文件中的内容,根据内容直接执行对应make编译指令即可
</syntaxhighlight>make如果成功,你会在终端看到:
[[文件:Make success.png|无|有框]]
Generate .../bouffalo_sdk/examples/freertos/build/build_out/freertos_bl616.bin    '''代表生成了对应可供烧录的固件'''。
=== '''开发板烧录:''' ===
执行make命令后,在该文件夹下会生成一个build目录,在文件夹中有一个生成的固件 freertos_bl616.bin ,该文件用于烧录直接使用(类似于keil生成的.hex文件)。
其具体路径为 '''.../bouffalo_sdk/examples/freertos/build/build_out/freertos_bl616.bin'''
==== 下载烧录工具: ====
下载BLDevCube工具:下载后解压即可直接使用。
https://dev.bouffalolab.com/
'''烧录具体步骤:'''
Step1:打开DevCube选择对应开发板型号。
[[文件:烧录Step1.png|无|缩略图|269x269像素]]
Step2:选择对应的 .bin 文件,选择对应的串口。
'''注意:要选择IOT并勾选enable'''
[[文件:烧录Step2.png|无|缩略图]]
Step3:
'''按住boot键按一下复位键(全程boot键不松开),然后点击Create & Download'''。查看下方的输出信息是否烧录成功。
=== 源码部分输出: ===
<syntaxhighlight lang="bash">[FREERTOS_TEST CONSOLE] ===== PHASE 1: Queue/Semaphore Test =====
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task]: Starting consumer tasks...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task]: Starting producer task...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: task started
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: task started
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: message send success
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: message send success
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: received msg (task:1, ts:1)
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: received msg (task:1, ts:501)
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: message send success
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: received msg (task:1, ts:1001)
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: queue empty
.....
[FREERTOS_TEST CONSOLE] ===== PHASE 2: Priority/Mutex Test =====
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task] Starting High Priority task...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task] Starting Shared Resource tasks...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Attempt to acquire mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Aquired.
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: value = 1
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Holding mutex for 500ms
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Attempt to acquire mutex
.....
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Holding mutex for 500ms
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Attempt to acquire mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [High Priority Task]: High priority task running
[FREERTOS_TEST CONSOLE] [I][MAIN] [High Priority Task]: Completed
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Release mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Aquired.
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: value = 5
.....
[FREERTOS_TEST CONSOLE] ===== END PHASE 2 =====
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Release mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Aquired.
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: value = 11
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Holding mutex for 500ms
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Release mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task] All Test Complete.</syntaxhighlight>

2025年5月30日 (五) 08:11的版本

在Bouffalo SDK上使用FreeRTOS APP。

源码介绍:

该文件的源码在 bouffalo_sdk/examples/freertos/main.c中,该测试 demo 简单测试了一些组件,包括Semaphore,Mutex,Queue,Priority 的基本简单测试。

测试分为两个阶段:

阶段一以消费者生产者模型测试信号量信号队列组件,共生成三个Task。阶段结束后Task自动销毁。

阶段二以共简单共享资源简单测试Task争夺临界资源的方式测试互斥量,途中高优先级的任务将启动并占用CPU一段时间以此测试抢占任务调度

源码编译:

在该文件夹下有一个README.md文件,该文件中根据不同的开发板型号有不同编译的参数,例如bl616 :

- BL616/BL618

```
make CHIP=bl616 BOARD=bl616dk
```
#以上为README文件中的内容,根据内容直接执行对应make编译指令即可

make如果成功,你会在终端看到:

Generate .../bouffalo_sdk/examples/freertos/build/build_out/freertos_bl616.bin 代表生成了对应可供烧录的固件

开发板烧录:

执行make命令后,在该文件夹下会生成一个build目录,在文件夹中有一个生成的固件 freertos_bl616.bin ,该文件用于烧录直接使用(类似于keil生成的.hex文件)。

其具体路径为 .../bouffalo_sdk/examples/freertos/build/build_out/freertos_bl616.bin

下载烧录工具:

下载BLDevCube工具:下载后解压即可直接使用。

https://dev.bouffalolab.com/

烧录具体步骤:

Step1:打开DevCube选择对应开发板型号。

Step2:选择对应的 .bin 文件,选择对应的串口。

注意:要选择IOT并勾选enable

Step3:

按住boot键按一下复位键(全程boot键不松开),然后点击Create & Download。查看下方的输出信息是否烧录成功。

源码部分输出:

[FREERTOS_TEST CONSOLE] ===== PHASE 1: Queue/Semaphore Test =====
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task]: Starting consumer tasks...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task]: Starting producer task...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: task started
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: task started
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: message send success
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: message send success
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: received msg (task:1, ts:1)
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: received msg (task:1, ts:501)
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: message send success
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: received msg (task:1, ts:1001)
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: queue empty
.....
[FREERTOS_TEST CONSOLE] ===== PHASE 2: Priority/Mutex Test =====
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 1]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Consumer 2]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Producer 1]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task] Starting High Priority task...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task] Starting Shared Resource tasks...
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Attempt to acquire mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Aquired.
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: value = 1
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Holding mutex for 500ms
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Attempt to acquire mutex
.....
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Holding mutex for 500ms
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Attempt to acquire mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [High Priority Task]: High priority task running
[FREERTOS_TEST CONSOLE] [I][MAIN] [High Priority Task]: Completed
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Release mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Aquired.
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: value = 5
.....
[FREERTOS_TEST CONSOLE] ===== END PHASE 2 =====
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Release mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Aquired.
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: value = 11
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Holding mutex for 500ms
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 4]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Release mutex
[FREERTOS_TEST CONSOLE] [I][MAIN] [Mutex Task 3]: Exiting due to phase change
[FREERTOS_TEST CONSOLE] [I][MAIN] [Process Task] All Test Complete.