发表于:2010/8/26 13:27:15
#0楼
随笔:嵌入式系统的开发自1998年从我刚开始接触z80,51的时代以汇编语言为主导的年代到现在除了在小型家电(这些量超大,价格超敏感)的领域还是以汇编语言为主导之外,嵌入式微控制器系统的编程都是以c语言作为主力军(c++无论在代码的移植性,还是他的运行时的体积和效率,和c相比还是太复杂、太大和本身占用的资源太多了,当然c++在微处理器系统上能运行的很好,我这里专指“微控制器”)。
随着时代的发展,硬件和软件的设计都向着功能化、模块化的方向发展,以直面越来越复杂的需求和日以苛刻的交付时限;在我不断地交叉于上位机编程和嵌入式系统的软硬件设计中发现以前上位机软件和嵌入式软件的开发的明显界线在渐渐变小,嵌入式软件的软件开发在越来越重视软件的复用,这一方面得益于芯片技术的飞速进化,一方面是由于芯片功能和速度的飞速提升所必然的需求的复杂性的大大提高。
所以,在复杂项目的选型上,即要考虑mcu的供货、性价比、还要考虑软件开发上的开发效率。arm公司就是捉住了这一点,使得基于arm核心的芯片占领了越来越大的市场分额,我们只要掌握了一个内核,就能根据需求来选型各个厂商的基于该内核的mcu,而且只要一个ulink2,统一的ide(mdk,当然iar for arm也很强势)再加上统一的rtx、基于该rtx的tcp/ip, file system,can interface,usb device interface etc.我们只要写好物理层的api,就能实现…. my good… nxp,stm32,atmegl的软件中最为复杂的部分的移植。换句话说,嵌入式软件开发在向着“基于接口”的编程方向发展,个人感觉比上位机软件更为超前,上位机软件中总是强调“面向对象”,其实,面向对象也有着它本身的局限性,因为在不同的领域,抽象出的模型有些直接套上面向对象的编程模型并不是最好的(有时效果还相反),比如对向测控领域的lab view就是基于数据流的模型. 喔!!!,我现在对于几年前的关于linux的创始人开发运行于linux的“软件版本控制”开源程序时和论坛上的一些人的针锋相对的言辞有了更深的理解。
linux 的“软件版本控制”软件是用c写的,但c++一派说,现在什么年代了还用c,应用c++(面向对象嘛,好coool喔!),c过时了。还记得linux说的一个重点是,他从不用c++,一直都用c,没觉得有什么不好的(我当时感觉,大部分书啊什么得都是在说c种种的不好,c++、java,c#(不可否认,很优雅很高效(指开发效率)!!,是c系列+java的优质后代。)才是现在的主流,是不是linux错了,钻牛角尖!!)。
随着不断深入的学习,再加上工作的经验,发现站在linux的角度上看,他是对的(如果你站在反方的立场上看,也是对的),得确,c是一面向过程的语言,但它本身是简洁和高效的(用于代替汇编嘛),这一点使得它具有比c++、java、c#等有着天身的易于移植性。而且专业的的c程序员能很好地用指针函数加上指针数组和结构,能抽象出面向对象的多态(也叫运行时绑定)特性,乃至所有的对向对象的特性,但这需要对面向对象编程有着更为震撼的理解才行,所以c++、java、c#才得以出现,基于市场的需求,并不是每个程序员都要成为专业程序员,他有可能是某个领域的专家,他只想写程序来解决问题,而不是非要成为专家级程序员,换句话说,对于很多人,c太过天马行空,给程序员太多的自由,这基于开发出c语言的人的第一假设“
你知道你在做什么,而且会带来怎样的后果
”,想想看,这是一个多么困难的要求!!,当然,c在用对象的思想写程序时会感觉要转几个弯,没有c++等天生就是为对象编程而生的感觉(这也是反方的立场也是对的理由)。
1)
[URL=http://www.keil.com/rl-arm/rl-gettingstarted.asp]
a10 rl-arm getting started guide cool
[/URL]
//这是目前作为rl-arm系统学习和 in-depth 的最好book,而且是keil官方的,网页中还有20mb的例程(
[URL=http://www.keil.com/download/docs/403.asp]
rl-arm getting started guide examples
[/URL]
)代码下载。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=122130&Name=zjcsharp
随着时代的发展,硬件和软件的设计都向着功能化、模块化的方向发展,以直面越来越复杂的需求和日以苛刻的交付时限;在我不断地交叉于上位机编程和嵌入式系统的软硬件设计中发现以前上位机软件和嵌入式软件的开发的明显界线在渐渐变小,嵌入式软件的软件开发在越来越重视软件的复用,这一方面得益于芯片技术的飞速进化,一方面是由于芯片功能和速度的飞速提升所必然的需求的复杂性的大大提高。
所以,在复杂项目的选型上,即要考虑mcu的供货、性价比、还要考虑软件开发上的开发效率。arm公司就是捉住了这一点,使得基于arm核心的芯片占领了越来越大的市场分额,我们只要掌握了一个内核,就能根据需求来选型各个厂商的基于该内核的mcu,而且只要一个ulink2,统一的ide(mdk,当然iar for arm也很强势)再加上统一的rtx、基于该rtx的tcp/ip, file system,can interface,usb device interface etc.我们只要写好物理层的api,就能实现…. my good… nxp,stm32,atmegl的软件中最为复杂的部分的移植。换句话说,嵌入式软件开发在向着“基于接口”的编程方向发展,个人感觉比上位机软件更为超前,上位机软件中总是强调“面向对象”,其实,面向对象也有着它本身的局限性,因为在不同的领域,抽象出的模型有些直接套上面向对象的编程模型并不是最好的(有时效果还相反),比如对向测控领域的lab view就是基于数据流的模型. 喔!!!,我现在对于几年前的关于linux的创始人开发运行于linux的“软件版本控制”开源程序时和论坛上的一些人的针锋相对的言辞有了更深的理解。
linux 的“软件版本控制”软件是用c写的,但c++一派说,现在什么年代了还用c,应用c++(面向对象嘛,好coool喔!),c过时了。还记得linux说的一个重点是,他从不用c++,一直都用c,没觉得有什么不好的(我当时感觉,大部分书啊什么得都是在说c种种的不好,c++、java,c#(不可否认,很优雅很高效(指开发效率)!!,是c系列+java的优质后代。)才是现在的主流,是不是linux错了,钻牛角尖!!)。
随着不断深入的学习,再加上工作的经验,发现站在linux的角度上看,他是对的(如果你站在反方的立场上看,也是对的),得确,c是一面向过程的语言,但它本身是简洁和高效的(用于代替汇编嘛),这一点使得它具有比c++、java、c#等有着天身的易于移植性。而且专业的的c程序员能很好地用指针函数加上指针数组和结构,能抽象出面向对象的多态(也叫运行时绑定)特性,乃至所有的对向对象的特性,但这需要对面向对象编程有着更为震撼的理解才行,所以c++、java、c#才得以出现,基于市场的需求,并不是每个程序员都要成为专业程序员,他有可能是某个领域的专家,他只想写程序来解决问题,而不是非要成为专家级程序员,换句话说,对于很多人,c太过天马行空,给程序员太多的自由,这基于开发出c语言的人的第一假设“
你知道你在做什么,而且会带来怎样的后果
”,想想看,这是一个多么困难的要求!!,当然,c在用对象的思想写程序时会感觉要转几个弯,没有c++等天生就是为对象编程而生的感觉(这也是反方的立场也是对的理由)。
1)
[URL=http://www.keil.com/rl-arm/rl-gettingstarted.asp]
a10 rl-arm getting started guide cool
[/URL]
//这是目前作为rl-arm系统学习和 in-depth 的最好book,而且是keil官方的,网页中还有20mb的例程(
[URL=http://www.keil.com/download/docs/403.asp]
rl-arm getting started guide examples
[/URL]
)代码下载。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=122130&Name=zjcsharp