k210_双核测试【转】
-
转自:https://zhen8838.github.io/2018/11/12/k210-double-core/
k210由两个核组成,我想测试一下两个核的运行情况。编写了以下程序:
/* * @Author: Zheng Qihang * @Date: 2018-11-11 20:10:46 * @Last Modified by: Zheng Qihang * @Last Modified time: 2018-11-11 20:10:46 */ #include "bsp.h" #include <stdio.h> volatile int core0_value= 0; volatile int core1_value= 0; volatile int global_value= 0; int core1_function(void *ctx) { uint64_t core= current_coreid(); printf("Core %ld Hello world\n", core); while (1) { core1_value++; global_value++; msleep(500); if (core1_value % 5 == 0) { printf("core1 %d global %d\n", core1_value, global_value); } }; } int main() { uint64_t core= current_coreid(); printf("Core %ld Hello world\n", core); register_core1(core1_function, NULL); while (1) { core0_value++; global_value--; msleep(500); if (core0_value % 5 == 0) { printf("core0 %d global %d\n", core0_value, global_value); } }; }
编译运行
➜ build cmake .. -DPROJ=double_core && make && make clean ➜ build python3 isp.py -p /dev/ttyUSB0 -b 115200 double_core.bin [INFO] Rebooting... Core 0 Hello world Core 1 Hello world core0 5 global 0 core1 5 global -1 core0 10 global 0 core1 10 global -1 core0 15 global 0 core1 15 global -1 core0 20 global 0 core1 20 global -1
思考
发现两个核应该是以同一个速度进行运行的,并且是同时运行的,对全局变量具有相同的权限。但是对于同一个外设,同一时间的优先级还是未知的。