单片机也能跑多线程?5分钟带你入门FreeRTOS

  Рет қаралды 30,344

 工科男孙老师

工科男孙老师

Күн бұрын

Пікірлер: 76
@dayworkhard
@dayworkhard 4 ай бұрын
写了多少年的PC上的多线程代码,现在看看FreeRTOS的线程调度,感觉很有当年PC多线程的感觉。简单来讲就是非堵塞式近似于同步的异步处理。当年学嵌入式c的时候,1ns的函数运行时我们是计算在内的,当时教程比较严谨。其实在PC OS上并行运行的程序多了以后,1ns的区分是能体验出来的,然后线程交互要花费不只1ns,至少在PC上。FreeRTOS可以看成小型PC OS。PC上的多线程现在多是高级语言打包,很少能见到底层实现。PC上的CPU、RAM可以看作为高级单片机。无论多少个核心,没有完美执行多线程的,多多少少有点分配不均,只是肉眼难看,示波器能看出来。如果在PC上写严格的时间运行程序,都是写的堵塞式单线程程序,这里就有点浪费多核心cpu,这点不如直接用单片机。例如好多优化不好的游戏就这样写的,所谓1核有难,7核围观。
@徐志達
@徐志達 5 ай бұрын
其多工運行基本大概是使用計時器中斷,每隔一定時間做計時器中斷,指向程序分配器,其依據編譯好的執行程序列表分別將後續的執行指標指向個別程序。在切換程序時將所有的暫存器的值全部備份,將下一個程序先前所備份的暫存器值還原,再把執行指標指向下一個程序。
@techd9861
@techd9861 5 ай бұрын
高级中断的应用。瞬间想起了学汇编时处理中断的经历。
@TMJ123
@TMJ123 4 ай бұрын
高併發必學
@hengfeb
@hengfeb 5 ай бұрын
FreeRTOS 你講得最好,最棒,我最能理解。
@bwshiau5354
@bwshiau5354 5 ай бұрын
謝謝,讓我對一直沒有時間搞懂的FreeRTOS有初步的概念。之前一直認為他像linux一樣是一種作業系統可以讀寫檔案,看來是沒辦法了。
@林天逸
@林天逸 5 ай бұрын
它可以用fatfs讀寫檔案
@marvinalone
@marvinalone Ай бұрын
最近正好在看AWS的IoT相关的东西,涉及到freeRTOS,谢谢老师的介绍!
@weeixunzht
@weeixunzht 5 ай бұрын
受益良多,希望能持續介紹這個內容!
@leatea520
@leatea520 5 ай бұрын
講得很棒,很容易理解
@XX-ff6kx
@XX-ff6kx 5 ай бұрын
我第一次用freeRTOS是在學microros時,影片講得蠻清楚 推推
@sgwong513
@sgwong513 5 ай бұрын
thanks, first time seeing video that explain rtos concept so clearly. like and subscribed.
@tommymairo8964
@tommymairo8964 11 күн бұрын
1:06 8 和 12 的最大公約數是 4,所以你可以寫一個 0.2s 的循環更新狀態,判斷計數器是二的倍數還是三的倍數對 LED 狀態取反……
@wildoxlin
@wildoxlin 5 ай бұрын
容易理解,太棒了
@lililichunwei
@lililichunwei 5 ай бұрын
很容易理解,謝謝
@xfp5012
@xfp5012 21 күн бұрын
能不用freertos就不用rtos,直接开个定时器去定时,然后根据定时器的时间完成时间的问题
@BigBigSmile
@BigBigSmile 5 ай бұрын
太感谢了,太感谢了
@Heryun_CD4
@Heryun_CD4 4 ай бұрын
感謝孫老師,請問Cypress PSoC也是多線程的嗎? 會不會很難?
@Chen-zd6rx
@Chen-zd6rx 5 ай бұрын
這應該不能算多線程 只是引入多工的概念,我所知的約20~30年前就有韌體工程師用這概念實現AT89C51的分時多工
@osasosas4313
@osasosas4313 5 ай бұрын
算喔 多線程可細分出軟體多線程這個分類 就是你說的分時多工 同時也是常見作業系統會用的排程方式
@JK-pz1ld
@JK-pz1ld 5 ай бұрын
8051應該都是靠timer中斷,資源不夠也會卡,現在只是修改成好寫容易懂的方式讓os幫你處理更底層的東西
@soapsam4383
@soapsam4383 5 ай бұрын
两个灯同时闪烁可以用2个定时器实现吧
@unnamed2047
@unnamed2047 5 ай бұрын
我是做互联网相关开发的,对操作系统有一定了解,最近在造一些东西学习单片机,感觉这个视频漏掉了一些缺点信息。一个是多任务切换必然带来额外的性能开销,以及非阻塞 CPU 的挂起再执行计时器跟 阻塞 CPU 计时的准确性可靠性还是有比较大的差别。并发编程的复杂性也很高,不仅是逻辑上的,还有线程安全问题等,所以要实现的东西简单的话还是别用操作系统了
@kafuu1
@kafuu1 5 ай бұрын
我感觉有点奇怪的是,在单核上切换也任务叫多线程吗,难道不是只是异步执行而已?
@unnamed2047
@unnamed2047 5 ай бұрын
@@kafuu1 操作系统发明就是为了多任务,早期CPU也都是单核 甚至性能不如今天的单片机。主要是障眼法,分配计算时间给不同的任务,比如我要从 0 i++ 到 100,你要从 100 i-- 到 0,操作系统会先帮我加到 10,再帮你 减到 90,来回切换,最终我们看到Cpu 在同时干我们两的活。而且很多任务其实在等其他硬件的 IO 更应该让出 CPU 资源,感兴趣可以看看操作系统原理相关书蛮有意思,是个十分复杂有趣的体系
@unnamed2047
@unnamed2047 5 ай бұрын
@@kafuu1 操作系统发明就是切换线程分配计算资源的,早期 CPU 都是单核当时奔腾 486 586 什么的没准还比不上今天的单片机性能,不妨碍多任务并发,让你觉得多任务同时进行,可以看看操作系统原理,就比较明白了,操作系统是个复杂精妙有趣的东西
@hookchen7128
@hookchen7128 5 ай бұрын
應該是多任務切換
@cccc-zg1wx
@cccc-zg1wx 5 ай бұрын
互聯網相关是什麼? 如果是物联网就非常相关了 其實rtoS 就是Soc其中一款 看功能看需求看開發成本 自己決定用不用 可以選擇的太多了 mcu mpu fpga asic Mpu支持的ISA, 不同厰商支援的開发工具流程 ARM心片天然做好的R系列就是做RTOS的,A系統 For Application 等等
@MarvbitProject
@MarvbitProject 5 ай бұрын
Nice video, what software you use to make the video ?
@jairwen82
@jairwen82 4 ай бұрын
讲的好。那怎么知道资源不够呢?如果线程多了,时间精度会下降吗?
@liweilin6649
@liweilin6649 5 ай бұрын
希望有更多FreeeRTOS的講解
@atussentinel
@atussentinel 5 ай бұрын
上一学期操作系统的课就什么都知道了,yt有的是资源,会英文更好
@陈大文-u7q
@陈大文-u7q 5 ай бұрын
毕业多年都没搞懂,一下子就被孙老师教懂了
@RockyChen1205
@RockyChen1205 5 ай бұрын
先按讚,再來看
@hengfeb
@hengfeb 4 ай бұрын
如果每個老師都像你這樣教書,那不會有陳桂林。
@hongentsai4489
@hongentsai4489 5 ай бұрын
挺好的
@sunnypig6382
@sunnypig6382 5 ай бұрын
谢老師😊😊
@一二-g6c
@一二-g6c 14 күн бұрын
zephyr 更好用, work,net_buf,poll,device等都非常好用.
@neilg2256
@neilg2256 5 ай бұрын
这些API跟Linux C/Windows C++的都很像,功能几乎一样,名称也类似
@etherdream5906
@etherdream5906 Ай бұрын
单片机版 async/await
@zhaochengcheng3245
@zhaochengcheng3245 5 ай бұрын
谢谢
@doutu4624
@doutu4624 5 ай бұрын
搞python的感觉还是micropython更容易上手
@NoProblem76
@NoProblem76 5 ай бұрын
搞circuitpython吧,更简单
@rosspanda4042
@rosspanda4042 5 ай бұрын
搞笑,点两个灯怎么会卡死,定时都是用中断,异步执行的。M0级别的用rtos就是找抽
@b_2u
@b_2u 5 ай бұрын
能細說嗎
@rosspanda4042
@rosspanda4042 5 ай бұрын
@@b_2u 单片机,中断,去了解一下
@lukefan715
@lukefan715 Ай бұрын
u so goooood
@DC-xt3ui
@DC-xt3ui 5 ай бұрын
我小白一個不知道對不對,這個有點像把中斷都幫你包好包,讓使用者容易使用的概念?
@osasosas4313
@osasosas4313 5 ай бұрын
類似 實際上在設定裡就可以看到跟中斷有關的code
@無名氏-l1c
@無名氏-l1c 5 ай бұрын
約等於async
@atussentinel
@atussentinel 5 ай бұрын
具体每个单片机的实现可能不尽相同,但从操作系统的层级来看就是这么个意思。针对单个核心的线程调度都大差不差
@b_2u
@b_2u 5 ай бұрын
Bare metal上的async
@nobody2937
@nobody2937 5 ай бұрын
信号量?信号灯🚥?
@yabincheng4171
@yabincheng4171 5 ай бұрын
@Tim88666
@Tim88666 5 ай бұрын
听起来有点像js
@ymz9184
@ymz9184 5 ай бұрын
可以用timer
@SimonJinyuLiu
@SimonJinyuLiu 5 ай бұрын
RT是real-time吧?引入了线程和任务,那调度是怎么处理的呢?还能叫real-time吗
@tommymairo8964
@tommymairo8964 11 күн бұрын
real-time 指的是調度器嚴格按照任務的優先級分配 cpu quota,這樣做的好處是高優先級的任務永遠能夠保證按點執行。缺點也很明顯,如果一個高優先級的任務需要等待一個低優先級的任務,且高優先級的任務輪詢低優先級的任務完成狀態,那低優先級的任務會一直讓位給高優先級的任務,從而造成整個系統死鎖。這種現象叫 priority inverse,NASA 的火星車就出過這種事故 😂
@NoProblem76
@NoProblem76 5 ай бұрын
孙老师怎么看coroutine?
@tommymairo8964
@tommymairo8964 11 күн бұрын
這玩意兒就是協程呀,本身沒有 context switch,更不是多核環境 😂
@yuyaolin7861
@yuyaolin7861 5 ай бұрын
有點中斷執行的意思
@gnawacceber
@gnawacceber 5 ай бұрын
重要的都沒講 寫一堆LED不就卡死整個系統 真的會寫單片機的人就不會一定要上FreeRTOS
@KL-gc2hx
@KL-gc2hx 5 ай бұрын
plc控制成千上万个定时器都不需要多线程,实现一个ton定时器就行了
@zxz4129
@zxz4129 5 ай бұрын
我的理解是“多任务”
UART那么好用,为什么单片机还需要I2C和SPI?
4:28
工科男孙老师
Рет қаралды 31 М.
She's very CREATIVE💡💦 #camping #survival #bushcraft #outdoors #lifehack
00:26
Man Mocks Wife's Exercise Routine, Faces Embarrassment at Work #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 6 МЛН
Life hack 😂 Watermelon magic box! #shorts by Leisi Crazy
00:17
Leisi Crazy
Рет қаралды 61 МЛН
【知识】扔掉教科书 ,5 分钟带你入门 MOS 管
6:50
工科男孙老师 频道迁移中
Рет қаралды 197 М.
电子小白学不会运放?一开始掌握这两个用法就够了!
6:42
Edge AI 開發板挑選完整指南
16:39
VisCircuit 電路筆記
Рет қаралды 3,9 М.
可怕!CPU暗藏了这些未公开的指令!
7:21
轩辕的编程宇宙
Рет қаралды 18 М.
天才设计!手机充电器的原理竟然这么巧妙。
5:27
工科男孙老师
Рет қаралды 111 М.
可能是全世界最受欢迎的开发板!Arduino有何魔力?
10:01
芯片输入为啥要接0.1uf的电容?为啥不是10uf?
4:42
工科男孙老师
Рет қаралды 43 М.
She's very CREATIVE💡💦 #camping #survival #bushcraft #outdoors #lifehack
00:26