Chinaunix

标题: Hello World,编程你有过思想吗? [打印本页]

作者: CUTianrui007    时间: 2015-06-17 08:50
标题: Hello World,编程你有过思想吗?
获奖名单已公布http://bbs.chinaunix.net/thread-4181928-1-1.html

话题背景

编程思想听着很高大上,好像只有在PC机或大型嵌入式系统中才会用到。平时的单片机编程中,一般人都认为是比较简单的,直接写驱动,写应用就可以,几乎用不到什么架构和OS,更加谈不上什么思想了。但是高手照样也能在单片机玩面向对象,玩UML,数据流。关键就在于你从哪个角度来发掘单片机资源,从哪个角度来设计软件了。这就是编程思想的力量。其实,单片机编程的本质上也就是编程思想运用。结合工作实际,大家讨论以下问题。




讨论话题
1、你在对单片机编程时,有没有用过什么软件架构或软件平台?大概描述下平台或架构是什么样的
2、在单片机上使用编程思想,你学得有必要吗?你所认为的编程思想是什么?
3、单片机编程一般都是底层比较复杂些,各个寄存器很多很多,且一个系统中的单片机寄存器又有些差别,如何设计一个思想,实现单片机底层程序在同一系统不同单片机间进行快速移植?
4、你在单片机项目中有上过OS吗?是抢占式还是非抢占式的?使用OS的好处是什么?
5、如果引入OS,那么你想使用OS的哪些机制?这些机制的具体用途是什么?举例说明



讨论时间
2015年6月17日--2015年7月5日



活动奖励
活动结束后将选取3名讨论精彩的童鞋,每人赠送图书《单片机编程魔法师之高级裸编程思想》一本作为奖励。



奖品简介

作者: 余灿基   
出版社:电子工业出版社
出版日期:2014 年9月
开本:16开
页码:280
版次:1-1



内容简介

本书以单片机裸环境为基础,为编程者定义了一个微操作系统(MOS)的编程环境,并面向应用中不断提高的需求对编程策略进行了深度剖析与研究,从而分离出数据驱动、并行多任务、面向对象等重要编程思想。这些思想既可独立运用,又可有机结合成一个体系,是我们实践中解决问题的致胜法宝。本书以实例为基础,分6章对这一思想体系进行了阐述。阐述通常以提出问题开始,然后针对解决问题的现状,从心理学的角度对问题展开讨论,力求将容易遇见的问题一网打尽。本书通过一些列的优化过程对思想要点进行完整描述,然后通过软件仿真手段给读者一个清晰的认识,并在最后进行归纳总结。




样章试读
单片机编程魔法师之高级裸编程思想试读样章.pdf (1004.47 KB, 下载次数: 312)








关注CU官方微信“ChinaUnix”微博“ChinaUnix官方微博



我们会及时为您公布最近活动的获奖名单以及最新的活动资讯,更多精彩内容,敬请期待。
作者: 流氓无产者    时间: 2015-06-17 09:19
抽象啊,公用啊,图省事,才是码农的王道
作者: seesea2517    时间: 2015-06-17 13:45
编程思想嘛,只要是编程就都用得上,而且还能扩展到生活上呢。
说到单片机间的快速移植,我觉得arduino的思想就很值得借鉴,通过封装把底层寄存器等的操作隐藏了,使用者只需要用统一的编程语言统一的语法进行编程就可以了,对于不同的单片机在编译时选择相应的型号就可以编译出来了。最初只在avr上实现,现在不是也有了stm的,当逐渐成为一种标准的时候,大家都去支持它了,伽利略、爱迪生,都可以使用统一的方法来给它编程了。
作者: cu_shell    时间: 2015-06-17 18:31
这个太专业了,完全看不懂,纯支持。。
作者: forgaoqiang    时间: 2015-06-17 18:37
同感 没有太多接触过嵌入式的领域(当然路由器除外)

cu_shell 发表于 2015-06-17 18:31
这个太专业了,完全看不懂,纯支持。。

作者: 蛮多肉    时间: 2015-06-17 23:36
好活动,支持.......
作者: CUTianrui007    时间: 2015-06-18 08:58
回复 5# forgaoqiang


    路由器也算是嵌入工啊
作者: 刺客阿地    时间: 2015-06-18 09:23
有点深奥。。支持下。
作者: CUTianrui007    时间: 2015-06-18 09:56
大家怎么都不以敢于试试啊
作者: seesea2517    时间: 2015-06-18 10:31
回复 3# seesea2517


OS 的使用目的就是解放功能实现者的工作,最重要的就是任务调度了,以及提供一些驱动和访问接口,简化外围设备的访问。
说到 OS,如果是简单的东西,用简单的单片机,直接裸跑就可以实现功能了,再上os的话又占用了本来就紧张的资源还影响了实时性。比如 51 的 RTX51,占用了程序空间和定时器,换来了任务调度的一点便利,用不用还是看个人取舍了。arm 的话就有些复杂了,不上操作系统的话复杂功能的开发难度就比较大,而且本身资源也多了,这时候上系统也是大势所趋,实时性要求高点的RT-Thread、uCOS、FreeRTOS都是比较常见的选择,实时性要求不那么高的,选择一些嵌入式的linux或winCE;需要给用户提供完美的操作体验的上安卓系统。
作者: a8764    时间: 2015-06-18 15:58
1、你在对单片机编程时,有没有用过什么软件架构或软件平台?大概描述下平台或架构是什么样的
    使用过的软件架构只有--有限状态机,应为单片机应用的场合一般功能都是特定的,有限的,大部分都能用有限个状态描述清楚,从而能用有限状态机的方法提高代码的可移植性和可维护性,其他的软件平台有UC-OS II也算是个平台吧,这个只是个实时的OS内核,其他的应用还需要自己去写才能用,这个应用的场合就会更大,功能更丰富的地方。
2、在单片机上使用编程思想,你学得有必要吗?你所认为的编程思想是什么?
    有必要的,节省开发时间,提高开发效率,而且经过测试验证的代码是可靠的。我认为编程思想有面向过程、面向对象这两种,在单片机上用的最多的就是C语言的面向过程了,把具体的事情分步骤按流程用C语言实现。
3、单片机编程一般都是底层比较复杂些,各个寄存器很多很多,且一个系统中的单片机寄存器又有些差别,如何设计一个思想,实现单片机底层程序在同一系统不同单片机间进行快速移植?
    同上,现在有UC-OS II 这个操作系统内核,可以解决可移植性的问题,但是再小的应用就可能不太适合了
4、你在单片机项目中有上过OS吗?是抢占式还是非抢占式的?使用OS的好处是什么?
    UC-OS II,抢占式的,OS的好处就是程序员不用花太多的精力在内存管理上,内存管理就直接丢给OS就可以了。
5、如果引入OS,那么你想使用OS的哪些机制?这些机制的具体用途是什么?举例说明
    内存管理、进程调度。

作者: heguangwu    时间: 2015-06-19 10:00
从我之前很短的单片机底层编程以及后面在arduino上的编程经验上乱谈:
1、你在对单片机编程时,有没有用过什么软件架构或软件平台?大概描述下平台或架构是什么样的
说句实话,之前单片机编程功能都很简单,要用啥子架构和平台,当然如果是基于arduino的话那就可以认为平台就是arduino

2、在单片机上使用编程思想,你学得有必要吗?你所认为的编程思想是什么?
没太大必要,除非是单片机的概念是ARM之类的,否则在有限的资源情况下,编程思想显得很空洞

3、单片机编程一般都是底层比较复杂些,各个寄存器很多很多,且一个系统中的单片机寄存器又有些差别,如何设计一个思想,实现单片机底层程序在同一系统不同单片机间进行快速移植?
思路就是arduino,组成一个类似OS但其实是一个库的方式,而且软硬件都要开源,这样就轻松搞定

4、你在单片机项目中有上过OS吗?是抢占式还是非抢占式的?使用OS的好处是什么?
如果说ARM也是单片机的话确实用过,上面的OS就是Linux,另外我不知道arduino算不算

5、如果引入OS,那么你想使用OS的哪些机制?这些机制的具体用途是什么?举例说明
在资源有限、功能单一的情况下引入OS没多大必要,而如果是功能复杂,资源又比较富裕的情况下肯定要引入OS,毕竟OS上编程开发效率更高,机制我实在想不出来有什么好的机制,我唯一想到的就是低功耗,现在单片机都要求长时间运行,而且很多都是户外没有电源单靠电池供电的场景
作者: shang2010    时间: 2015-06-29 23:39
比较冷门啊,还是我太封闭了

感觉现在搞硬件的才是高大上
作者: forgaoqiang    时间: 2015-07-01 09:10
活动略显冷清呀 应该有很多搞嵌入式的吧 再次支持一下 实在不行 我也发表下 业余人士的观点




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2