OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6011|回复: 13

单片机操作系统可不可以这样设计?

[复制链接]

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
发表于 2016-8-2 22:06:12 | 显示全部楼层 |阅读模式
      随着单片机程序规模不断增长,原有通过一个while(1)循环设计程序的方法已经很难满足需求了,或许你足够厉害,但是这样的代码设计下,维护起来也非常困难。
      解决方案当然是引入单片机操作系统,但是现在的单片机操作系统还是有入门门槛的,忽然增加的一堆代码已经让很多初学者很难适应了。我们能不能借鉴Windows和Linux的程序设计思路,让单片机操作系统可以独立编译,有独立的程序空间,可以独立运行,当然,也能够动态地装载应用程序。这样,应用程序代码可以大规模缩小,更轻的负担,也就更容易上手,达到快速开发的目的。
     当然,笔者在论坛上提出这个问题的时候,早已探究到了一套完整的解决方法,先投石问路下,已下单了一块F407正点原子开发板,到手后开始制作教程,分享给大家。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12216
金钱
12216
注册时间
2015-11-5
在线时间
2117 小时
发表于 2016-8-2 23:38:45 | 显示全部楼层
本帖最后由 FreeRTOS 于 2016-8-2 23:46 编辑
chuyan 发表于 2016-8-2 23:09
1、本人已经多年没有从事过MCU相关的开发工作了,广告对于个人来说没有任何意义,纯属个人爱好;
2、简 ...

1、你资料上重点阐述了你们的图形化编程,比如JAVA
2、不知道你搞了那么多年Linux对底层有多少理解,目前单片机的内存管理方案都是通过申请一个大数组来由程序管理的,说白了就是使用一片内存来作为内存堆,你所说的动态申请难道不是使用内存RAM?既然说了动态申请,那就跟单片机所用的内存管理一样了,都是动态申请的。例如每创建一个任务,操作系统都会从内存堆里动态分配TCB和进程堆栈,而分配到的内存地址范围是未知的。
3、没理解你的“Linux内核代码很庞大,但是应用程序只有几kb“,粗略的来看,应用程序的大小不会因为我使用哪个操作系统而改变,不管你用的是Linux还是ucos,应用程序难道会从100KB缩小成1KB???
4、你所说的可以追踪到“每个线程的CPU占用率”只是单纯支持Linux么?如果对于不同的操作系统还得重新修改软件以支持对应的功能,你确定你一个人能干的完?freertos官方也提供了一个十分强大的工具用来统计和维护整个系统的,哪怕我们再牛逼,短时间内也比不上官方提供的软件好使吧


拿来长岛冰茶换我半晚安睡
回复 支持 1 反对 0

使用道具 举报

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
 楼主| 发表于 2016-8-2 22:17:54 | 显示全部楼层
      这只是一个引论而已,更多干货还在附件中,谢谢大家支持。

圆景.rar

3.94 MB, 下载次数: 279

基于MCU开发的操作系统描述

回复 支持 1 反对 0

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12216
金钱
12216
注册时间
2015-11-5
在线时间
2117 小时
发表于 2016-8-2 22:55:36 | 显示全部楼层
把你的资料看完了,总结几点:
1、卖广告的
2、又是一个处于顶层来思考底层的思维模式,卖的广告跟LabView和PLC编程很像,都是打算图形化完成编程
3、文中的“MCU开发困境--无法清除僵尸进程”我无法苟同,比如freertos在任务删除后是完全可以回收所有内存的,不存在所谓的僵尸线程
4、我书读得少,请教下“独立的程序空间”到底如何让“应用程序代码可以大规模缩小”?难道你的编译器能让100条机器码浓缩成1条?
5、请问这套东东如何适用于目前大多数主流的小型嵌入式操作系统?如UCOS、FreeRTOS、RT-Thread、RTX、uclinux等?如果我要追踪某个任务的最大堆栈使用量,又或者追踪CPU的使用率,请问能否支持?
拿来长岛冰茶换我半晚安睡
回复 支持 反对

使用道具 举报

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
 楼主| 发表于 2016-8-2 23:09:26 | 显示全部楼层
FreeRTOS 发表于 2016-8-2 22:55
把你的资料看完了,总结几点:
1、卖广告的
2、又是一个处于顶层来思考底层的思维模式,卖的广告跟LabVie ...

1、本人已经多年没有从事过MCU相关的开发工作了,广告对于个人来说没有任何意义,纯属个人爱好;
2、简单的事情往往最复杂,我从来不推荐图形化编程,只是降低开发者门槛;
3、请问freertos任务线程栈是采用全局变量还是动态申请?
4、Linux内核代码很庞大,但是应用程序只有几kb,我借鉴的就是这种思想。
5、现在已经可以追踪每个线程的CPU占用率,11年的版本已经加上了栈维测功能,堆嘛,要加维测的话,可以细化到每个block被哪些线程占用了。
回复 支持 反对

使用道具 举报

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
 楼主| 发表于 2016-8-2 23:53:38 | 显示全部楼层
FreeRTOS 发表于 2016-8-2 23:38
1、你资料上重点阐述了你们的图形化编程,比如JAVA
2、不知道你搞了那么多年Linux对底层有多少理解,目 ...

太晚了,我仅回答一个问题吧:Java是面向对象编程,从来不是图像化编程。
回复 支持 反对

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7956
金钱
7956
注册时间
2014-8-13
在线时间
1590 小时
发表于 2016-8-3 11:15:16 | 显示全部楼层
本帖最后由 mack13013 于 2016-8-3 12:14 编辑

看LZ的意思就是想统一一个操作系统,对外提供API,这样就可以实现“Linux内核代码很庞大,但是应用程序只有几kb”,
甚至包括java和远程调试。

说几点感想:
1、LZ对C语言和java的差异过于夸大(个人感觉)。java的程序员理解C或者C的程序员理解java都没有什么问题。
2、使用了你的操作系统,仍然要自己写自己系统的驱动,你的系统提供驱动明显不现实(MCU千差万别,即使是同一个MCU,、
在不同板子上有不同外设,这样的驱动没有那个公司能够统一提供)。你的系统提供的就3个功能:任务调度、内存管理、远程调试,
或许还要算上java或者lua等平台支持。前面三个功能很多嵌入式操作系统已经支持了,你需要比现有的做的更好(至少某一方面更好)才行。
3、存在的必要性:其实我是不太推荐嵌入式操作系统的,小系统直接裸奔,复杂的话,我就直接上嵌入式Linux(毕竟研究一个嵌入OS的时间和
精力用来做linux也差不多了,如果你只是简单使用嵌入OS的话,调试会更麻烦,还不如研究透他)
4、底层的封装和隔离,会给调试带来更大困难。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2016-8-3 21:12:58 来自手机 | 显示全部楼层
最近用uc/os-2挺顺手的,移植简单,随意剪裁,节拍可调,中断+DMA。上半年花了3月多研究调度器,现在看来全是浪费时间。成熟产品为什么不用呢?
回复 支持 反对

使用道具 举报

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
 楼主| 发表于 2016-8-3 21:28:03 | 显示全部楼层
wangyan915205 发表于 2016-8-3 21:12
最近用uc/os-2挺顺手的,移植简单,随意剪裁,节拍可调,中断+DMA。上半年花了3月多研究调度器,现在看来全 ...

成熟的产品完全可以用,初衷只是想降低开发门槛而已。
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2016-5-22
在线时间
21 小时
发表于 2016-8-4 11:12:26 | 显示全部楼层
感觉好多前辈技术大牛啊...但是这个ppt 是没你们的技术那么帅
回复 支持 反对

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1367
注册时间
2014-2-13
在线时间
169 小时
发表于 2016-8-4 12:28:25 | 显示全部楼层
想在单片机上做虚拟机?资源消耗太大了吧
回复 支持 反对

使用道具 举报

4

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2016-8-2
在线时间
13 小时
 楼主| 发表于 2016-8-4 21:32:22 | 显示全部楼层
solo 发表于 2016-8-4 12:28
想在单片机上做虚拟机?资源消耗太大了吧

单片机十几K的RAM还是拿得出来的,只是步骤有点繁琐。
回复 支持 反对

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2016-8-4 21:54:40 | 显示全部楼层
点赞吧
回复 支持 反对

使用道具 举报

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-4-17
在线时间
32 小时
发表于 2016-8-4 23:32:32 | 显示全部楼层
大神级别的交谈。如果一个系统能够通过简短的指令或者代码自动创建一个所需项目的话,那确实很牛,如果思路已经清晰的话,那就搞出来吧,毕竟国外牛人用一年时间就创造了ucos,国内就没有人比他们厉害吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 00:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表