一、什么是嵌入式开发?
嵌入式开发有很多个层次,大致有以下步骤: 硬件道路: 第一步: 嵌入式开发 pcb设计,一般为开发板的电路裁减和扩充,由开发板原理图为基础,画出PCB和封装库,设计自己的电路。 第二步: SOPC技术,一般为FPGA,CPLD开发,利用VHDL等硬件描述语言做专用arm芯片开发,写出自己的逻辑电路,基于ALTER或XILINUX的FPGA做开发。Arm9 第三步: SOC设计,分前端,后端实现,这是硬件设计的核心技术:芯片设计.能做到这步,已经不属于平凡的技术人员。arm9开发板 软件道路: 第一步:bootloader的编写,修改, 通过这步熟悉ARM硬件结构,学习ARM汇编语言,阅读ARM的芯片手册,感觉就是像操作51单片机一样操作ARM芯片.这一步最好的两个参考资料就是:芯片手册和bootloader源代码。 第二步:系统移植, 驱动开发, 我只做过linux方向,所以也推荐学习嵌入式linux系统,作为标准体系,他开源而且可以获得大量学习资料.操作系统是整个计算机科学的核心,熟悉 kernel实属不易,kernel, 驱动 开发的学习,没有什么捷径,只有多读代码,多写代码,熟悉系统API.. understanding linux kernel , linux device driver 都是不可多得的好书,值得一看。 第三步:应用程序的编写,各种GUI的移植,qt , minigui都被大量采用,两种思想都类似,熟悉一种就可以。 软件道路中,驱动系统应该是最深入的部分,不是短时间可以掌握的,需要有勇气和耐心。嵌入式开发,软硬结合,因为硬件条件比PC差很多,所以肯定会遇见不少问题,因此实践的勇气更加重要.有问题就解决问题,无数次的实验,也许是解决问题的必由之路
二、主板里的芯片到底指哪些?
平常我们所说的主板芯片,一般是指主板所采用的芯片组,如P35、P965、945P、780G、C78……等等都是芯片组。芯片组目前又有南北桥双芯片设计的,如P35、P965等都是,也有单芯片设计的,NVIDIA很多芯片组就是单芯片设计的。
另外,主板上的芯片有时候还包括集成声卡、网卡等。
三、将设计基本分为两部分:芯片硬件设计和软件协同设计。你说了芯片硬件设计,那软件设计呢?
软件的设计主要是:
1. 驱动软件,配置芯片的硬件完成相应的功能。
2. 系统控制软件,控制整个系统,根据系统功能和流程,进行任务的分发和调度。
3. 应用软件,完成软件跟底层驱动软件的接口,并跟用户进行交互,完成用户需要的功能。
四、什么是ic,是什么行业?
IC与CI的区别。
-----------------------------
IC设计,Integrated Circuit Design,或称为集成电路设计,是电子工程学和计算机工程学的一个学科,其主要内容是运用专业的逻辑和电路设计技术设计集成电路(IC)。
专业知识
IC设计涉及硬件软件两方面专业知识。硬件包括数字逻辑电路的原理和应用、模拟电路、高频电路等。软件包括基础的数字逻辑描述语言,如VHDL等,微机汇编语言及C语言。作为初学者,需要了解IC设计的基本流程:基本清楚系统、前端、后端设计和验证的过程,IC设计同半导体物理、通信或多媒体系统设计之间的关系,了解数字电路、混合信号的基本设计过程。
----------------------------
整体形象的塑造——CI设计
CI是英文CorporateIdentity(字面意思“企业识别”)的缩写
CI是一种系统的名牌商标动作战略,是企业的目标、理念、行动、表现等为一体所共有的统一要领,是企业在内外交流活动中,把企业整体向上推进的经营策略中重要的一环。CI设计的底流是企业基盘整体的主脑部分。企业实施CI战略,往往能使企业组织在各方面发生积极性的变化,从而综合作用于企业的相关组织和个人,产生全方位的功效。CI设计时60年代由美国首先提出,70年代在日本得以广泛推广和应用,它是现代企业走向整体化、形象化和系统管理的一种全新的概念。其定义是:将企业经营理念于精神文化,运用整体传达系统(特别是视觉传达系统),传达给企业内部与大众,并使其对企业生产一致的认同感或价值观,从而达到形成良好的企业形象和促销产品的设计系统。
五、举例说明产品设计可以分为哪几个阶段
电子产品设计阶段的成本控制
尽量使用各种EDA(电子设计自动化)工具。综合使用各种EDA工具来完成设计,可以大幅度加快开发进度,减少差错,提高工程质量。一提起EDA工具很多人就会想起Protel、Orcad、Pads等电路板布线软件。其实这些工具不仅包含原理图和电路板布线,一般也包含了可编程逻辑器件(PLD)设计、信号仿真等模块,充分利用这些功能往往可以在设计阶段就发现很多构思和图纸上的缺陷。对减少设计阶段的返工和修改有事半功倍的效果。此外,还有一些别的种类的软件,虽然不是专门的电子设计软件,但我们依然可以借用。比如:如果项目中包含了复杂一些的数学算法(如模糊逻辑和人工神经元算法等),我们还可以动用专门的数学CAD软件――MATLAB先仿真一下你的信号处理流程,然后根据仿真的结果来设计相关的硬件和软件。就节约了很多在目标机上反复写片、反复调试算法的时间。
在设计电路的时候,修改硬件在所难免。为了便于电路修改,要注意电路的可塑性。电路的可塑性是指电路的可修改能力。如果电路便于修改,会减少很多开发人员更改电路的低级劳动。提高电路的可塑性一般有以下几种方法:
1. 能够使用软件实现的功能不要用硬件实现。由于硬件和软件的物理结构的差异,在修改硬件的时候要付出比软件多得多的代价。用软件代替硬件后还能降低产成品的成本,便于批量生产和销售。
2. 如果电路中有CMOS、TTL电路要尽量使用PLD(可编程逻辑器件)来实现,因为PLD本身具有可修改的特性。用它们实现数字逻辑后,要改变逻辑关系的时候,只要在计算机上修改它们的逻辑描述文件,然后经过编译、写片就得到一片新的逻辑关系的集成电路。就像修改软件一样容易。用PLD代替不同的普通数字集成电路后,有利于减少元器件种类。方便采购和库存管理。
3. 试制过程中适当在电路板上多留一些资源,比如PLD的容量要比你预期的容量稍大一些,单片机的ROM、RAM、I/O端口等资源都要留适当的空余。因为在设计过程中随时会有很多不可预见的情况发生,解决这些问题,通常会增加对硬件资源的需求量。如果没有在电路板上保留适当的冗余资源,将不得不在电路板外面再搭一块小电路板。事实证明,这样修改电路不仅容易给电路引入干扰信号,而且会大幅度降低试制样机的可靠性,同时会使技术人员的很多时间花费在反复修改电路的简单劳动上。
编写单片机的软件的时候,应该尽量使用高级语言来编写。现在许多开发单片机的技术人员依然保留了80年代的开发方法。使用汇编语言,逐条指令编写,并且手工分配单片机中的内存资源。这种方法在写小规模软件还可以,可一旦软件规模变大之后,由于汇编语言的低可读性、低结构性往往会让设计人员被自己软件中的复杂的逻辑关系搞得晕头转向,在一个软件的逻辑关系混乱后,要保证写出来的软件能安全运转是很困难的。 我们推荐使用C语言来写软件单片机代码。(对于常见的8051系列,我们一般使用KEIL、FLANKLIN 等软件。其它类型的单片机一般都有其配套的C语言编译器,该型号单片机的经销商一般可提供)用C语言有这么几个好处:
1. 可以大幅度加快开发进度。
2. 可以实现软件的结构化编程,它使得软件的逻辑结构变得清晰、有条理。
3. 在写一些数学算法和循环、判断语句的时候有比汇编语言高得多的效率。
4. 省去了人工分配内存资源的工作,在汇编语言中我们不得不为每一个子程序来分配储存变量的空间,这是一个复杂、乏味又容易出差错的工作。而使用C语言后你只要在代码中申明一下变量的类型,编译器就会自动为你分配寄存器和内存,低级重复易出差错的事情都由计算机代劳了。根本不要人工干预。
5. 因为循环、判断语句和变量名字都使用自然语言,因此写出来代码的可维护性和软件可读性很好。这样当需要更换软件开发人员的时候,可以比较容易地进行代码移交和消化。即使没有更换人员,他们在维护自己的代码的时候也比较容易。
6. 当写好了一个算法后,以后需要在不同种类的CPU上也需要这个算法时,可以直接引用原来的代码,再配合这种CPU专用的编译器重新编译就可以了。这样可以实现软件的低成本跨平台移植。而汇编语言在这种情况下,除了重新写代码,没有别的办法。因为C语言的这种特性,如果在设计复杂算法时(比如视频/音频信号处理、模糊逻辑和人工神经元算法等),可以在PC机上使用Visual C++、C++ Build等x86平台的C语言编译器设计、调试该算法的代码,调试成功后就可以移植到单片机的软件系统中去。由于PC机上有充足的系统资源,开发调试进度会有大幅度的提高,这样就节约了软件的时间成本。
7. 在团体写作的软件中,软件接口容易做到规范统一。
虽然使用C语言写出来的代码会比汇编语言所占用的空间要大5%~20%,但是由于半导体技术的发展,芯片的容量和速度有了大幅度的提高。在这种情况下,代码占用的空间差异已经不是很关键的了。相比之下,我们更应该注重软件是否可以长期稳定运行的能力,注重使用先进开发工具所带来的时间成本的优势。