樹莓派提高實時性

2021-08-17 16:51:17 字數 3230 閱讀 2018

首先你可以根據指令 htop ,看到4個cpu

首先有倆個思路,第一種提高這個程序的優先順序,使cpu全速執行這個程序,這個是隨機分配到某個cpu上,執行

函式原型:

#include 

#include

int test1(const

int pri)

pri= 0 (預設) to 99 (最高)

返回 0,成功; -1, 失敗;

函式只需要放在程式的初始化位子,就行;

第二種

將樹莓派單獨預留出乙個cpu,單獨的執行這個實時的程序

首先在/boot/cmdline.txt 中末尾新增

isolcpus=x,x為遮蔽的核心 x=3時為樹莓派中的最後乙個cpu

然後將程式掛載在剛剛禁用的cpu上,使cpu全速執行這個程式

#define __use_gnu

#include

.h>

void test2()

}

這裡需要定義 __use_gnu

在 sched.h中(片斷擷取)

#ifdef __use_gnu

/* access macros for `cpu_set'. */

# define cpu_setsize __cpu_setsize

# define cpu_set(cpu, cpusetp) __cpu_set_s (cpu, sizeof (cpu_set_t), cpusetp)

# define cpu_clr(cpu, cpusetp) __cpu_clr_s (cpu, sizeof (cpu_set_t), cpusetp)

# define cpu_isset(cpu, cpusetp) __cpu_isset_s (cpu, sizeof (cpu_set_t), \

cpusetp)

# define cpu_zero(cpusetp) __cpu_zero_s (sizeof (cpu_set_t), cpusetp)

# define cpu_count(cpusetp) __cpu_count_s (sizeof (cpu_set_t), cpusetp)

# define cpu_set_s(cpu, setsize, cpusetp) __cpu_set_s (cpu, setsize, cpusetp)

# define cpu_clr_s(cpu, setsize, cpusetp) __cpu_clr_s (cpu, setsize, cpusetp)

# define cpu_isset_s(cpu, setsize, cpusetp) __cpu_isset_s (cpu, setsize, \

cpusetp)

# define cpu_zero_s(setsize, cpusetp) __cpu_zero_s (setsize, cpusetp)

# define cpu_count_s(setsize, cpusetp) __cpu_count_s (setsize, cpusetp)

# define cpu_equal(cpusetp1, cpusetp2) \

__cpu_equal_s (sizeof (cpu_set_t), cpusetp1, cpusetp2)

# define cpu_equal_s(setsize, cpusetp1, cpusetp2) \

__cpu_equal_s (setsize, cpusetp1, cpusetp2)

# define cpu_and(destset, srcset1, srcset2) \

__cpu_op_s (sizeof (cpu_set_t), destset, srcset1, srcset2, &)

# define cpu_or(destset, srcset1, srcset2) \

__cpu_op_s (sizeof (cpu_set_t), destset, srcset1, srcset2, |)

# define cpu_xor(destset, srcset1, srcset2) \

__cpu_op_s (sizeof (cpu_set_t), destset, srcset1, srcset2, ^)

# define cpu_and_s(setsize, destset, srcset1, srcset2) \

__cpu_op_s (setsize, destset, srcset1, srcset2, &)

# define cpu_or_s(setsize, destset, srcset1, srcset2) \

__cpu_op_s (setsize, destset, srcset1, srcset2, |)

# define cpu_xor_s(setsize, destset, srcset1, srcset2) \

__cpu_op_s (setsize, destset, srcset1, srcset2, ^)

# define cpu_alloc_size(count) __cpu_alloc_size (count)

# define cpu_alloc(count) __cpu_alloc (count)

# define cpu_free(cpuset) __cpu_free (cpuset)

/* set the cpu affinity for a task */

extern

int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,

const cpu_set_t *__cpuset) __throw;

/* get the cpu affinity for a task */

extern

int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,

cpu_set_t *__cpuset) __throw;

#endif

所以想使用掛載在cpu上的函式的時候,需要定義 __use_gnu,也同樣的只需要在程式初始化的時候,新增就可以了

倆者也可以同時新增在一起。

樹莓派 初嚐樹莓派

樹莓派是一款信用卡大小的微型電腦,可以說是 麻雀雖小,五臟俱全 作為一台功能完整的超小型電腦,也採用馮 諾依曼體系,就是包含了控制器 運算器 儲存器 輸入裝置 輸出裝置。只不過樹莓派把整個硬體系統整合在了一塊電路板上,這被稱為soc system on chip 比如華為手機所採用的麒麟處理器就是s...

樹莓派zero mysql 樹莓派zero初步除錯

回家之前就從網上購買了一堆裝置,回去也不能閒著,可以利用家裡相對齊全的準備安裝除錯。結果人還沒回來,東西先到了。購買的核心裝備是樹莓派zero w,雖然已經知道它比家族大哥樹莓派小不少,但拿到手裡還是驚奇它的小巧。在效能相對低下的情況下,zero感覺反而應該有更大的應用。其他的配件都是圍繞zero購...

樹莓派 關於樹莓派掉電問題

樹莓派沒有電池,所以斷電斷網情況下,時間會停留在上次關機的時間。如果再次開機,有網路的情況下,可以進行時間同步。但是極端情況下,沒有網路,就只能手動去修改 而沒網的情況下,客戶不懂linux,不會手動修改,那只能使用電池解決方案。可以用這東西 cr1220電池是鋰二氧化錳一次性電池,不可充電,標稱電...