| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖, 1 人收藏
标题:【请教】小弟想接触嵌入式开发,请问高手们要如何入门
只看楼主 加入收藏
Kiss_零
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:164
专家分:125
注 册:2008-11-21
结帖率:100%
收藏(1)
 问题点数:0 回复次数:4 
【请教】小弟想接触嵌入式开发,请问高手们要如何入门
之前是做C#的,最近一直有想从事windows CE平台下的嵌入式开发。硬件这一块我之前几乎没有接触过,所以想请问一下,改看些什么书,如何入门,谢谢!
搜索更多相关主题的帖子: 嵌入式 入门 开发 
2009-09-22 22:36
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
    实际的开发当中,一般人都用不到多复杂的数据结构。比如,对于90%以上的开发人员来说,很少会用到树和图的,用得多的也就是数组和链表。但是掌握好数据结构和基础算法很有必要,会让你在看代码的时候,理解得更快,自己写代码的时候,效率更好——做嵌入式软件不光是堆砌代码,也是在设计一个产品,当你在采用某种算法的时候,心里也要清楚采用它的原因,抛弃其他算法的理由。
    嵌入式设备上的操作系统纷繁复杂,简单的只有连OS都谈不上的控制程序,复杂的诸如智能手机上的复杂OS。大部分嵌入式产品,都需要自己设计或者移植OS的。幸好现在有Linux出现,让一切都相对容易。没事的时候,找本Linux的书来翻翻,装个Linux来玩玩,还是大有裨益的。
     
     
    嵌入式开发的工具,无论是硬件工具,还是软件工具,都很多很多。接触某个具体的工作,就会用到相应的各种工具。掌握工具需要一定的时间,但是总的来说,工具的使用掌握起来还是很容易,操作它们和操作普通软件也差不了多少。知道什么时候该用什么工具,怎样地充分利用它们来提高开发效率以及程序的运行效率,这才是问题的关键。几年工作经验下来,我们需要提高的是对做的行业的了解,分析问题解决问题能力的提高,至于会用什么什么,这个虽然也比较重要,但是在这个工具更新和房价上涨并驾齐驱的时代,并不是夸奖炫耀的资本。
    工作的过程当中,可以回过头来联系以前学校学的知识,很多时候都会有恍然大悟的感觉——当初接受了大量的“是什么”,现在要多多想想“为什么”。比如操作系统,课堂上面我们学了很多基本概念,知道啥叫进程,啥叫线程,知道它们的用途,似乎也知道有关它们的一切。如果自己要做嵌入式OS的移植开发,有时不得不深入分析内核代码,才知道进程和线程远比想象中的要复杂,光是描述它数据结构就一大堆;还有,不是有了进程这个概念,就一定要用多进程;有了线程,就一定要用多线程。还是一句话,知道什么时候该用什么,才用什么。
    不断学习,不断实践,不断总结,会有很大的收获的。
 
   
    调试属于实践的一个环节,但是有必要拿来单独阐述。
    做嵌入式,大概有20%的时间是开发,80%的时间是在调试。调试是一个经验活,做得越多,越容易发现问题的所在,越容易修复系统的 BUG。调试需要合适的软件硬件调试工具,同时也需要具备很强的分析推断能力。
    充分利用工具,挖掘每一样工具的潜能,是嵌入式开发人员进行调试的基本功。现在的嵌入式系统一般都带有硬件的调试接口,比如JTAG接口。结合专业的调试工具,比如TRACE32,能够方便地在PC上对嵌入式设备中的程序进行跟踪调试,甚至对每条指令的运行都了如指掌。但是很多调试工具太昂贵,价格动不动成千上万。如果在大公司工作,一般都会使用此类工具,因为这样的公司不会在乎这点钱的。但是如果在小公司,或者你实在很牛,要单枪匹马去接一个小项目,从成本的考虑来看,就有可能不会用到它们。如果是那样的话,可能需要自己做一些调试工具,硬件上可能会自制一些简单的夹具或者数据线,软件上可能会自己写一些debugger程序,然后用串口或者USB等廉价连接设备来进行通讯。实在想省事,就简单接一条串口到PC,多用打印语句来跟踪程序运行情况吧。如果代码框架足够好,且打印用宏开关来控制,同样能够起到很好的调试效果。当然,条件允许的话,更好的调试手段会大大提高开发效率的。
    调试是嵌入式开发的一个主要工作,也是打造高手的必经之路。调试好比侦探破案一样,看上去枯燥,实际很有意思。观察现象,分析推理,动用一切手段,从一堆貌似没有规律的数据中找出规律,最后定位出问题的所在。

啰罗嗦嗦说了许多,实际上我也是个菜鸟。希望能对楼主有帮助。
收到的鲜花
  • flyingcloude2009-10-05 11:10 送鲜花  5朵   附言:好文章

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-09-23 08:18
Kiss_零
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:164
专家分:125
注 册:2008-11-21
收藏
得分:0 
using System;
namespace 菜鸟
{
    class Program
    {
        static void Main(string[] arg)
        {
            while(1)
            {
                Console.WriteLine("Thanks!");
            }
        }
    }
}
2009-09-23 23:02
Kiss_零
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:164
专家分:125
注 册:2008-11-21
收藏
得分:0 
希望各位能够踊跃发言,助小弟一臂之力,不胜感激!
2009-09-23 23:03
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
嵌入式上的系统帮你隔离了绝大部分硬件,所以不需要你对硬件有多深入的了解,看看芯片指令就可以了. 一般都是ARM芯片,书很多.
C/C++ ARM指令 VS IDA ...这些好象都需要吧. 熟悉windows内核的话,转到CE和mobile 都应该很容易
反正俺觉得在操作系统上写程序,首先就要先了解操作系统,最少也要知道系统提供的功能调用.

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2009-09-24 03:40
快速回复:【请教】小弟想接触嵌入式开发,请问高手们要如何入门
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025718 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved