Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
写了多少年的PC上的多线程代码,现在看看FreeRTOS的线程调度,感觉很有当年PC多线程的感觉。简单来讲就是非堵塞式近似于同步的异步处理。当年学嵌入式c的时候,1ns的函数运行时我们是计算在内的,当时教程比较严谨。其实在PC OS上并行运行的程序多了以后,1ns的区分是能体验出来的,然后线程交互要花费不只1ns,至少在PC上。FreeRTOS可以看成小型PC OS。PC上的多线程现在多是高级语言打包,很少能见到底层实现。PC上的CPU、RAM可以看作为高级单片机。无论多少个核心,没有完美执行多线程的,多多少少有点分配不均,只是肉眼难看,示波器能看出来。如果在PC上写严格的时间运行程序,都是写的堵塞式单线程程序,这里就有点浪费多核心cpu,这点不如直接用单片机。例如好多优化不好的游戏就这样写的,所谓1核有难,7核围观。
其多工運行基本大概是使用計時器中斷,每隔一定時間做計時器中斷,指向程序分配器,其依據編譯好的執行程序列表分別將後續的執行指標指向個別程序。在切換程序時將所有的暫存器的值全部備份,將下一個程序先前所備份的暫存器值還原,再把執行指標指向下一個程序。
高级中断的应用。瞬间想起了学汇编时处理中断的经历。
高併發必學
謝謝,讓我對一直沒有時間搞懂的FreeRTOS有初步的概念。之前一直認為他像linux一樣是一種作業系統可以讀寫檔案,看來是沒辦法了。
它可以用fatfs讀寫檔案
1:06 8 和 12 的最大公約數是 4,所以你可以寫一個 0.2s 的循環更新狀態,判斷計數器是二的倍數還是三的倍數對 LED 狀態取反……
FreeRTOS 你講得最好,最棒,我最能理解。
最近正好在看AWS的IoT相关的东西,涉及到freeRTOS,谢谢老师的介绍!
我第一次用freeRTOS是在學microros時,影片講得蠻清楚 推推
受益良多,希望能持續介紹這個內容!
終於懂了!! 感謝 老師 :D
感謝孫老師,請問Cypress PSoC也是多線程的嗎? 會不會很難?
我是做互联网相关开发的,对操作系统有一定了解,最近在造一些东西学习单片机,感觉这个视频漏掉了一些缺点信息。一个是多任务切换必然带来额外的性能开销,以及非阻塞 CPU 的挂起再执行计时器跟 阻塞 CPU 计时的准确性可靠性还是有比较大的差别。并发编程的复杂性也很高,不仅是逻辑上的,还有线程安全问题等,所以要实现的东西简单的话还是别用操作系统了
我感觉有点奇怪的是,在单核上切换也任务叫多线程吗,难道不是只是异步执行而已?
@@kafuu1 操作系统发明就是为了多任务,早期CPU也都是单核 甚至性能不如今天的单片机。主要是障眼法,分配计算时间给不同的任务,比如我要从 0 i++ 到 100,你要从 100 i-- 到 0,操作系统会先帮我加到 10,再帮你 减到 90,来回切换,最终我们看到Cpu 在同时干我们两的活。而且很多任务其实在等其他硬件的 IO 更应该让出 CPU 资源,感兴趣可以看看操作系统原理相关书蛮有意思,是个十分复杂有趣的体系
@@kafuu1 操作系统发明就是切换线程分配计算资源的,早期 CPU 都是单核当时奔腾 486 586 什么的没准还比不上今天的单片机性能,不妨碍多任务并发,让你觉得多任务同时进行,可以看看操作系统原理,就比较明白了,操作系统是个复杂精妙有趣的东西
應該是多任務切換
互聯網相关是什麼? 如果是物联网就非常相关了其實rtoS 就是Soc其中一款看功能看需求看開發成本 自己決定用不用可以選擇的太多了 mcu mpu fpga asicMpu支持的ISA, 不同厰商支援的開发工具流程ARM心片天然做好的R系列就是做RTOS的,A系統 For Application 等等
講得很棒,很容易理解
thanks, first time seeing video that explain rtos concept so clearly. like and subscribed.
讲的好。那怎么知道资源不够呢?如果线程多了,时间精度会下降吗?
Nice video, what software you use to make the video ?
太感谢了,太感谢了
容易理解,太棒了
很容易理解,謝謝
能不用freertos就不用rtos,直接开个定时器去定时,然后根据定时器的时间完成时间的问题
希望有更多FreeeRTOS的講解
上一学期操作系统的课就什么都知道了,yt有的是资源,会英文更好
两个灯同时闪烁可以用2个定时器实现吧
這應該不能算多線程只是引入多工的概念,我所知的約20~30年前就有韌體工程師用這概念實現AT89C51的分時多工
算喔多線程可細分出軟體多線程這個分類就是你說的分時多工同時也是常見作業系統會用的排程方式
8051應該都是靠timer中斷,資源不夠也會卡,現在只是修改成好寫容易懂的方式讓os幫你處理更底層的東西
毕业多年都没搞懂,一下子就被孙老师教懂了
谢老師😊😊
这些API跟Linux C/Windows C++的都很像,功能几乎一样,名称也类似
如果每個老師都像你這樣教書,那不會有陳桂林。
信号量?信号灯🚥?
搞笑,点两个灯怎么会卡死,定时都是用中断,异步执行的。M0级别的用rtos就是找抽
能細說嗎
@@b_2u 单片机,中断,去了解一下
单片机版 async/await
谢谢
先按讚,再來看
搞python的感觉还是micropython更容易上手
搞circuitpython吧,更简单
RT是real-time吧?引入了线程和任务,那调度是怎么处理的呢?还能叫real-time吗
real-time 指的是調度器嚴格按照任務的優先級分配 cpu quota,這樣做的好處是高優先級的任務永遠能夠保證按點執行。缺點也很明顯,如果一個高優先級的任務需要等待一個低優先級的任務,且高優先級的任務輪詢低優先級的任務完成狀態,那低優先級的任務會一直讓位給高優先級的任務,從而造成整個系統死鎖。這種現象叫 priority inverse,NASA 的火星車就出過這種事故 😂
孙老师怎么看coroutine?
這玩意兒就是協程呀,本身沒有 context switch,更不是多核環境 😂
我小白一個不知道對不對,這個有點像把中斷都幫你包好包,讓使用者容易使用的概念?
類似實際上在設定裡就可以看到跟中斷有關的code
約等於async
具体每个单片机的实现可能不尽相同,但从操作系统的层级来看就是这么个意思。针对单个核心的线程调度都大差不差
Bare metal上的async
可以用timer
挺好的
有點中斷執行的意思
听起来有点像js
u so goooood
棒
Linux Kernel 6.12 原生支持实时 RT
重要的都沒講 寫一堆LED不就卡死整個系統 真的會寫單片機的人就不會一定要上FreeRTOS
zephyr 更好用, work,net_buf,poll,device等都非常好用.
plc控制成千上万个定时器都不需要多线程,实现一个ton定时器就行了
我的理解是“多任务”
写了多少年的PC上的多线程代码,现在看看FreeRTOS的线程调度,感觉很有当年PC多线程的感觉。简单来讲就是非堵塞式近似于同步的异步处理。当年学嵌入式c的时候,1ns的函数运行时我们是计算在内的,当时教程比较严谨。其实在PC OS上并行运行的程序多了以后,1ns的区分是能体验出来的,然后线程交互要花费不只1ns,至少在PC上。FreeRTOS可以看成小型PC OS。PC上的多线程现在多是高级语言打包,很少能见到底层实现。PC上的CPU、RAM可以看作为高级单片机。无论多少个核心,没有完美执行多线程的,多多少少有点分配不均,只是肉眼难看,示波器能看出来。如果在PC上写严格的时间运行程序,都是写的堵塞式单线程程序,这里就有点浪费多核心cpu,这点不如直接用单片机。例如好多优化不好的游戏就这样写的,所谓1核有难,7核围观。
其多工運行基本大概是使用計時器中斷,每隔一定時間做計時器中斷,指向程序分配器,其依據編譯好的執行程序列表分別將後續的執行指標指向個別程序。在切換程序時將所有的暫存器的值全部備份,將下一個程序先前所備份的暫存器值還原,再把執行指標指向下一個程序。
高级中断的应用。瞬间想起了学汇编时处理中断的经历。
高併發必學
謝謝,讓我對一直沒有時間搞懂的FreeRTOS有初步的概念。之前一直認為他像linux一樣是一種作業系統可以讀寫檔案,看來是沒辦法了。
它可以用fatfs讀寫檔案
1:06 8 和 12 的最大公約數是 4,所以你可以寫一個 0.2s 的循環更新狀態,判斷計數器是二的倍數還是三的倍數對 LED 狀態取反……
FreeRTOS 你講得最好,最棒,我最能理解。
最近正好在看AWS的IoT相关的东西,涉及到freeRTOS,谢谢老师的介绍!
我第一次用freeRTOS是在學microros時,影片講得蠻清楚 推推
受益良多,希望能持續介紹這個內容!
終於懂了!! 感謝 老師 :D
感謝孫老師,請問Cypress PSoC也是多線程的嗎? 會不會很難?
我是做互联网相关开发的,对操作系统有一定了解,最近在造一些东西学习单片机,感觉这个视频漏掉了一些缺点信息。一个是多任务切换必然带来额外的性能开销,以及非阻塞 CPU 的挂起再执行计时器跟 阻塞 CPU 计时的准确性可靠性还是有比较大的差别。并发编程的复杂性也很高,不仅是逻辑上的,还有线程安全问题等,所以要实现的东西简单的话还是别用操作系统了
我感觉有点奇怪的是,在单核上切换也任务叫多线程吗,难道不是只是异步执行而已?
@@kafuu1 操作系统发明就是为了多任务,早期CPU也都是单核 甚至性能不如今天的单片机。主要是障眼法,分配计算时间给不同的任务,比如我要从 0 i++ 到 100,你要从 100 i-- 到 0,操作系统会先帮我加到 10,再帮你 减到 90,来回切换,最终我们看到Cpu 在同时干我们两的活。而且很多任务其实在等其他硬件的 IO 更应该让出 CPU 资源,感兴趣可以看看操作系统原理相关书蛮有意思,是个十分复杂有趣的体系
@@kafuu1 操作系统发明就是切换线程分配计算资源的,早期 CPU 都是单核当时奔腾 486 586 什么的没准还比不上今天的单片机性能,不妨碍多任务并发,让你觉得多任务同时进行,可以看看操作系统原理,就比较明白了,操作系统是个复杂精妙有趣的东西
應該是多任務切換
互聯網相关是什麼? 如果是物联网就非常相关了
其實rtoS 就是Soc其中一款
看功能看需求看開發成本 自己決定用不用
可以選擇的太多了 mcu mpu fpga asic
Mpu支持的ISA, 不同厰商支援的開发工具流程
ARM心片天然做好的R系列就是做RTOS的,A系統 For Application 等等
講得很棒,很容易理解
thanks, first time seeing video that explain rtos concept so clearly. like and subscribed.
讲的好。那怎么知道资源不够呢?如果线程多了,时间精度会下降吗?
Nice video, what software you use to make the video ?
太感谢了,太感谢了
容易理解,太棒了
很容易理解,謝謝
能不用freertos就不用rtos,直接开个定时器去定时,然后根据定时器的时间完成时间的问题
希望有更多FreeeRTOS的講解
上一学期操作系统的课就什么都知道了,yt有的是资源,会英文更好
两个灯同时闪烁可以用2个定时器实现吧
這應該不能算多線程
只是引入多工的概念,我所知的約20~30年前就有韌體工程師用這概念實現AT89C51的分時多工
算喔
多線程可細分出軟體多線程這個分類
就是你說的分時多工
同時也是常見作業系統會用的排程方式
8051應該都是靠timer中斷,資源不夠也會卡,現在只是修改成好寫容易懂的方式讓os幫你處理更底層的東西
毕业多年都没搞懂,一下子就被孙老师教懂了
谢老師😊😊
这些API跟Linux C/Windows C++的都很像,功能几乎一样,名称也类似
如果每個老師都像你這樣教書,那不會有陳桂林。
信号量?信号灯🚥?
搞笑,点两个灯怎么会卡死,定时都是用中断,异步执行的。M0级别的用rtos就是找抽
能細說嗎
@@b_2u 单片机,中断,去了解一下
单片机版 async/await
谢谢
先按讚,再來看
搞python的感觉还是micropython更容易上手
搞circuitpython吧,更简单
RT是real-time吧?引入了线程和任务,那调度是怎么处理的呢?还能叫real-time吗
real-time 指的是調度器嚴格按照任務的優先級分配 cpu quota,這樣做的好處是高優先級的任務永遠能夠保證按點執行。缺點也很明顯,如果一個高優先級的任務需要等待一個低優先級的任務,且高優先級的任務輪詢低優先級的任務完成狀態,那低優先級的任務會一直讓位給高優先級的任務,從而造成整個系統死鎖。這種現象叫 priority inverse,NASA 的火星車就出過這種事故 😂
孙老师怎么看coroutine?
這玩意兒就是協程呀,本身沒有 context switch,更不是多核環境 😂
我小白一個不知道對不對,這個有點像把中斷都幫你包好包,讓使用者容易使用的概念?
類似
實際上在設定裡就可以看到跟中斷有關的code
約等於async
具体每个单片机的实现可能不尽相同,但从操作系统的层级来看就是这么个意思。针对单个核心的线程调度都大差不差
Bare metal上的async
可以用timer
挺好的
有點中斷執行的意思
听起来有点像js
u so goooood
棒
Linux Kernel 6.12 原生支持实时 RT
重要的都沒講 寫一堆LED不就卡死整個系統 真的會寫單片機的人就不會一定要上FreeRTOS
zephyr 更好用, work,net_buf,poll,device等都非常好用.
plc控制成千上万个定时器都不需要多线程,实现一个ton定时器就行了
我的理解是“多任务”