金南京 发表于 2024-3-17 15:32:58

感觉自己又闹了个笑话,{:4_167:};不过有这么多大神的讨论,深感欣慰,尤其姚总:“从 汇编 到 C51, 不走弯路”,听你的乖乖的从基础做起,谢谢大家

杨为民 发表于 2024-3-18 10:44:44

feiyu 发表于 2024-3-16 21:34
初学者肯定先裸机编程,啥基础没有,拿什么搞os

(1)这个论点不完全对,依赖具体于是什么需求和是什么OS。我看到一群50/60岁的大妈直接学自动档的驾照,她们也没有从摩托车或者手动档开始学。

(2)谁入门时能在PC机上或者树莓派单片机上先编个裸机程序试试?很难的,需要的硬件基础知识不是一般的多。但是入门时完全可以在Windows或者Linux这样的OS上面学习编写自己的用户程序。
(3)STC单片机目前的硬件基础和在其上运行的RTOS都可以支持初学者从OS框架开始入门学习和进行实际项目编程了。
(4)我观察只是对于“初学者从OS框架开始入门学习单片机程序设计”这个主题既没有提供合适的RTOS框架给用户,也没有足够的配套教材和课程给初学者,因此大家只能是靠自己摸爬滚打,从裸机编程开始学习单片机编程了。

tzz1983 发表于 2024-3-18 11:30:08

本帖最后由 tzz1983 于 2024-3-18 11:33 编辑

杨为民 发表于 2024-3-18 10:44
(1)这个论点不完全对,依赖具体于是什么需求和是什么OS。我看到一群50/60岁的大妈直接学自动档的驾照, ...
杨老师说的对,初学者是可以从OS框架开始编程的,并且用OS用还会比祼机更容易。

这就好比用手机,如果你只是使用,而不是去研究手机是怎么实现的,那么摸几天自然就熟悉了。

现在的问题是: 单片机比较接近底层,使用单片机的这群人本身就是姣姣者。
通常他们在刚接触单片机和RTOS的时候,不满足于只知其然,不知所所然。
然后就陷入了这样一个怪圈,本来我是知道该这样用的,然后我还想知道OS是怎么实现这种功能的,
再然后发现,实现的机制比较复杂,最后的结果是短时间内无法完全了解OS这个机制,此时又对应用就会产生怀疑,不放心。
最后是把 应用 和 OS本身 混淆在一起了,症结就卡在这了。

如果只是用RTOS,那还是比较简单的。

比如只用一个任务,那不是和祼机编程完全一样吗?
循序渐进,再加一个任务,再用用阻塞功能,再用用简单的记数信号量。然后OS不就用起来了吗

呼吁初学RTOS者,一步一步的来,先学简单应用,逐步加入自己的应用,用的过程中遇到问题才去查相关的资料。

最忌好高骛远,一开始就想把OS的机制全研究透。

熟悉用以后再去慢慢了解OS的实现机制,并且也要一个板块一个板块的熟悉,想一口气全吃掉那自然是很难的。

最后,出了问题多往自己身上找原因,不要经常怀疑编译器和OS本身有BUG, 初学者能找到成熟的OS和编译器的BUG,那是机会非常少的事情

晓飛飛 发表于 2024-3-18 12:26:33

个人观点是,低端的单片机可以使用 中断+状态机+DMA能解决绝大部分的问题,而且运行效率极高。
高端的单片机建议直接用库+实时OS,没必要裸跑。

金南京 发表于 2024-3-18 19:04:32

晓飛飛 发表于 2024-3-18 12:26
个人观点是,低端的单片机可以使用 中断+状态机+DMA能解决绝大部分的问题,而且运行效率极高。
高端的单片 ...

谢谢

wan123456 发表于 2024-3-18 19:37:48

裸机编程吧…

feiyu 发表于 2024-3-18 19:41:38

本帖最后由 feiyu 于 2024-3-18 19:43 编辑

杨为民 发表于 2024-3-18 10:44
(1)这个论点不完全对,依赖具体于是什么需求和是什么OS。我看到一群50/60岁的大妈直接学自动档的驾照, ...
既然他问出了跑裸机和跑OS那种主流这个问题,还说自己是初学者,那我只能认为他是刚接触单片机的小白,项目也就跑过流水灯这些。这种情况在我个人观点里是必不可能给他推荐OS,单片机开发基本都是跟电路、芯片打交道。寄存器、外设、时序都不知道干嘛的,再加一层OS,出问题都不知道怎么找,到最后大概率是一团乱麻。你拿widows、Linux这种,带API甚至根本不用管底层的来对比,我感觉不是很恰当。

晓飛飛 发表于 2024-3-18 19:54:13

feiyu 发表于 2024-3-18 19:41
既然他问出了跑裸机和跑OS那种主流这个问题,还说自己是初学者,那我只能认为他是刚接触单片机的小白,项 ...

既然都圈定范围是C51了,那芯片配置都不可能太高,优先推荐裸机就可以了,中断、状态机、DMA用的好的话,即使挂很多外设也能流畅并发,要想发挥芯片大部分的潜能,非裸机莫属。
玩OS推荐那些选择内置了Systick定时器的MCU,否则意义不是很大。

杨为民 发表于 2024-3-18 20:16:27

feiyu 发表于 2024-3-18 19:41
既然他问出了跑裸机和跑OS那种主流这个问题,还说自己是初学者,那我只能认为他是刚接触单片机的小白,项 ...
“再加一层OS,出问题都不知道怎么找”,关键是什么样的“OS”

(1)其实使用C51就有好几种很简单RTOS框架可以使用。
(2)即使不用RTOS这种OS框架,对于裸机编程,用计算机操作系统术语来说,从“main”函数开始的程序被称为“后台任务”,每一个中断服务程序ISR被称为一个“前台任务”。因此裸机编程只要包含中断程序,本身就是属于“前后台多任务OS”,所以使用C51裸机编程仍然使用了“OS框架”。
(3)本论坛里已经有了两个裸机编程的“前后台多任务OS”框架介绍,
      一个是STC官方库函数使用的框架,
      一个是坛友写的“最佳入门多线程示例讲解-核心代码简单易懂,
         仅44行代码 ”(https://www.stcaimcu.com/forum.p ... 4197&extra=page%3D1),
      大家可以去看看


金南京 发表于 2024-3-19 03:17:49

杨为民 发表于 2024-3-18 20:16
“再加一层OS,出问题都不知道怎么找”,关键是什么样的“OS”

(1)其实使用C51就有好几种很简单RTOS框 ...

你的回答我听懂了,谢谢大佬
页: 1 [2] 3
查看完整版本: C51程序的编写有的用框架式、有的用嵌入式那种更为主流