changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1621回复:6

本人在一家IC公司做软件,想了解一下IC的开发过程,需要如何学起?

楼主#
更多 发布于:2005-03-17 09:48
本人在一家IC公司做软件,想了解一下IC的开发过程,

需要如何学起?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-17 10:41
你所说的IC如果是集成电路,我可能会有帮助,但现在很多人对IC就有误解
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2005-03-17 14:11
你所说的IC如果是集成电路,我可能会有帮助,但现在很多人对IC就有误解

那请你给我们大家扫扫盲吧......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-17 15:19
[quote]你所说的IC如果是集成电路,我可能会有帮助,但现在很多人对IC就有误解

那请你给我们大家扫扫盲吧...... [/quote]
老大见笑了,老大连人都能修理,还愁这个,我这都是十年前的把式了,毕业设计时搞的是内存控制器,毕业后就没搞过,全报废了,说个大概
IC的设计首先是根据功能分模块,然后进行各个模块的逻辑设计,如真值表,卡诺图,时序设计等,设计出原理图,在计算机上用软件进行逻辑模拟,我当年用的是workview,模拟通过后进行版图设计,当年是按3um工艺设计的,多落后。
现在估计我的这些东西早淘汰了,这就是我说“我可能会有帮助”的原因
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-17 15:57
谁能说说,硬件如何入门,
我想对IC内部有个好的理解,
以便对我写驱动有帮助
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2005-03-17 23:46
涉足嵌入式领域

作者:乾坤一笑

本文选自VC知识库博客园 一笑聊斋

  “嵌入式”是个很火的名词,“嵌入式”也是个很大的话题。我之所以转方向从事嵌入式开发,不仅是看中了它的市场价值(及由此影响到的开发人员的薪水),更重要的是嵌入式开发对开发人员的全方位的素质要求。对于技术人员来说,这种全面的压力是很刺激的,工作也很有激情,嘿嘿。

如果把一个嵌入式产品的开发模块大概划分一下层次,大概是下图这样子的:

MMI(Man Machine Interface)
UI(User Interface)

协议
驱动程序
操作系统、监控程序
电气元件、电路板
  做电路板的,那是硬件开发的工作,对于他们来说,做什么电路板都差不多,感受不到嵌入式的电路板与其它电路板太大的不同;做UI、MMI的,是很上游的,与做Windows下的代码开发也没什么大不同。我觉得最有挑战性的工作是做嵌入式设备的驱动程序,上要考虑如何给UI留个好接口,下要理解板子电路是怎么做的、有多少中断多少寄存器以及怎么调用。如果规模更大一点的板子,比如arm9之类的,又会有一个操作系统层,那就更复杂了,这个后面再说。
  做MMI的,有时候可能比Windows开发还容易些。因为用到的类库、函数库、API函数要比Windows开发要少许多,比较容易全面掌握(从事Windows开发有可能做了2~3年了还摸不清到底有多少个Windows API)。MMI毕竟属于嵌入式开发,它有它自己独特的难度:基本上没有IDE环境――很少能够用上VC6之类的IDE――往往是一个编辑器加上命令行编译器了事,排错比较难。所以,用EVC做嵌入式开发的人员自然是嵌入式开发人员中很幸福的一类人了。:)
  如果选择了做驱动层,那么可就任重而道远了――它的全面性体现在硬件知识、软件知识、综合技能、外语能力。本文也主要想探讨一下这个方面,只当是对我半年的工作做一个总结,同时也对今后的学习方向做一个规划。
  写驱动程序必须了解硬件机理。与PC机的驱动程序开发不同的是,PC上的驱动程序开发一般主要需要PC上装的操作系统的实现和要做驱动的那个外设的硬件构成;而作嵌入式驱动开发很多是没有操作系统的,很多只有一套简单的监控程序,所以需要了解整个板子的硬件构成。这就要求你最起码的几门功课要过关:电路基础、模拟电路技术、数字电路技术。这只是个起步,之后呢,如果做控制类的板子肯定要懂自动控制原理、现代控制理论,如果做通讯类的板子肯定要了解通讯原理、高级通讯原理、信号调制方面的知识,其中知识的复杂不是两三年能搞定的。据个例子说,做手机驱动的如果连直流漂移都不知道,肯定看不懂硬件资料,能写出来代码才怪呢。
  驱动程序是小而精的程序,它要求对数据结构、算法、构架、编译原理各个方面都有深入了解和丰富的实践经验。如果做复杂的带有操作系统的板子,那么肯定还要了解操作系统的内存管理、线程调度等知识。虽然PC机的开发上有很多常用算法模块已经有很优化实现,但是这些代码往往不能直接套用在嵌入式设备的代码里,原因可能因为这段代码太大、太全、或者不符合项目的要求。嵌入式设备的RAM很小,因此我们编写代码必须仔细把握大小,甚至要关注到Byte级。嵌入式系统承受不了很多冗余的代码,所以很多常用算法都没有现成合适的函数库,需要你重新实现,根据硬件有针对性的重新编写。因此,精湛的编码技术、周密的代码规划都是必备的基本功。
  当然最为重要的还是综合能力。比如一串口程序握手时出现错误失败了,原因可能有很多:线断了?接头脱焊了?程序有问题?芯片中代码有问题?等等等等。要做出判断很难。这时候我们就应该具备审查入微的能力,要能仔细判断出问题出在那,或者给出若干种Debug问题的方案逐个去突破。一般来说,我认为在开发过程中用脚本来辅助开发是一种效率很高的手段,比如windows下的wsh或者linux的shell script都能够用来辅助代码的生成,或者用于构建自动测试环境。另外,由于做的很底层,技术很前卫,所以很多情况下我们手头上只有一些硬件的电气资料,或者有一大篇别人编写好的代码去参考。这时候,自学很重要,独立分析别人代码的能力也很重要。诸如SlickEdit、SourceInsight之类的辅助分析工具一定要熟练运用才行。(不过,幸好这些东东看看联机帮助就能搞定了,并不复杂)
  整个研发中最最需要必备的能力就是外语能力了,尤其是英文。因为几乎所有的硬件资料都是纯英文的,等待别人翻译成中文根本不可能(翻译出来估计也都过时了),甚至有些是硬件厂商提供的绝密资料,能指望谁翻译去?我觉得外语能力也是我今后最需要加强的,至少应该以下4点:1) 不借助词典能够基本看懂英文技术文档;2) 老外开讲座的时候能够跟得上并随手做笔记;3) 用英文写工作总结轻松自如,写代码注释表述精确无误;4)和老外电话或者当面聊天很顺当。:) 这个要求确实有点难做到,不过必须做到,否则就是技术进步的绊脚石了。
  好了,罗嗦了半天,说的也很片面。全当是自我总结,也希望对学弟、学妹们有点用,嘿嘿。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-18 09:10
好nb的人啊
游客

返回顶部