02 2009 档案

摘要:在我工作的第二年(1997年),我第一次私下完全独立地设计制作了一款模块冷水机组单片机集中控制系统,由单片控制系统根据环境的实际负荷智能控制多台冷水机组协调平衡运行。我记得自己是按以下步骤开展工作的:1)详细了解控制对象,制定出控制器的模拟输入/输出数量以及数字输入/输出数量;2)制定输入与输出的控制逻辑关系;3)参考以前类似产品的设计资料;4)制定出整体设计方案;5)广泛查阅相关芯片的数据手册以及市场供应情况;6)完成芯片选型,采购芯片;7)绘制电路原理图;8)照芯片制作封装图,绘制PCB图;9)找制板厂制作PCB电路板,自己开始写程序代码(都是汇编);10)自己焊接;11)使用仿真调试器. 阅读全文
posted @ 2009-02-27 14:18 我的javaIT 阅读(388) 评论(0) 推荐(0)
摘要:以下是我根据10多年电路设计与调试经历总结出的一点经验和感想,姑且叫它“电路原理图设计审核规范”吧,只是一家之言,摘录到这里仅供读者参考。 1)详细理解设计需求,从需求中整理出电路功能模块和性能指标要求。 2)根据功能和性能需求制定总体设计方案,对CPU进行选型,CPU选型有以下几点要求: a)性价比高; b)容易开发:体现在硬件调试工具种类多,参考设计多,软件资源丰富,成功案例多; c)可扩展性好。 3)针对已经选定的CPU芯片,选择一个与我们需求比较接近的成功参考设计,一般CPU生产商或他们的合作方都会对每款CPU芯片做若干款开发板进行验证,比如AMCC的PPC440EP就有yosemi. 阅读全文
posted @ 2009-02-27 09:16 我的javaIT 阅读(273) 评论(0) 推荐(0)
摘要:嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新型号的不断涌现和不断更新,目前市面上的嵌入式系统调试仿真工具也层出不穷,这些调试仿真工具因其功能、性能、通用性的不同价格也相差非常悬殊,从几十元的简易JTAG调试器到几万元甚至几十万元的高端调试仿真器应有尽有,以前这方面的工具大部分都是进口的,现在国内有些公司也开始开发这方面的工具,而且性价比很好,只是国内做的大部分都是专用的,通用的比较少,因为通用的应用也很少,而且价格昂贵。 下面列举一些我曾经用过的调试仿真工具: 1)MCS-51单片机调试仿真系统MDS-55-B5. 阅读全文
posted @ 2009-02-26 09:32 我的javaIT 阅读(321) 评论(0) 推荐(0)
摘要:嵌入式系统开发过程实际上就是一个调试诊断的过程,而且调试诊断将一直伴随着一个产品的终身,即使是最成熟的产品也偶尔会出现这样或那样的问题,这都需要开发人员去诊断、排查。 嵌入式系统的调试包括硬件调试、软件调试以及综合调试。硬件调试一般是指系统刚开发出来时上电前后的检查,包括: 1)上电前检查电源和地是否短路,目视检查是否有虚焊、漏焊; 2)上电后检查时钟线上的频率和波形、幅度是否正常,各电源电压是否稳定正常,各芯片温度是否正常,各指示灯是否正常。软件调试一般是指保证硬件一切正常的情况下验证程序执行的时序是否正确,逻辑和结果是否与设计要求相符,能否满足功能和性能要求等。软件调试的方法有很多,包括: 阅读全文
posted @ 2009-02-25 14:41 我的javaIT 阅读(360) 评论(0) 推荐(0)
摘要:嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看!1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?7) Linux的内核空间和用户空间是如何划分的(以32位系统为例)?8) vmalloc()申请的内存有什么特点?9) 用户程序使用malloc()申请到的内存空间在什么范围?10) 在支持并 阅读全文
posted @ 2009-02-25 09:48 我的javaIT 阅读(173) 评论(0) 推荐(0)
摘要:本文节选自王洪辉老师的《嵌入式系统Linux内核开发实战指南(ARM平台)》一书前言(序) 2007年8月,我从上家公司辞职出来,放弃了刚上市公司骨干中层干部的职位,放弃了丰厚的待遇。 自1996年毕业以来,我一直从事嵌入式系统和Linux内核一线技术开发工作,我所承担的任务和项目基本都是由自己独立完成,即使担任了硬件部主管或技术总监职务,我对自己专长的工作仍是亲历亲为的;一方面,自己热爱这项工作,每攻克一个难题都能体验到莫大的成就感(相信技术工程师都有过这种体会);另一方面,目前国内做嵌入式系统和Linux内核开发的工程师供不应求,水平高的更是奇缺,相关职位的待遇相对其他职位的偏高,少招一个 阅读全文
posted @ 2009-02-24 08:30 我的javaIT 阅读(206) 评论(0) 推荐(0)
摘要:嵌入式系统Linux内核开发学习指导框图以下框图摘自王洪辉老师的《嵌入式系统Linux内核开发实战指南(ARM平台)》一书 阅读全文
posted @ 2009-02-23 14:56 我的javaIT 阅读(231) 评论(0) 推荐(0)
摘要:存储位置优化——把视图状态信息保存在服务端而非客户端本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 视图状态信息默认情况下是存储在客户端的,不占用服务端资源(这里是指持续地占用服务器资源一定时间,视图状态只是在页面呈现时,服务端正反向解析视图状态内容占用一会服务器内存,当页面呈现完成后则会把视图存储到页面上的隐藏控件域中)。当页面结构比较复杂时,会导致视图信息字节数比较大,则会产生带宽瓶颈。为了解决这个问题我们可以选择把视图信息存储到服务器端,或数据库中,或文件等存储介质。这一节我们就以把视图状态存储到服务端Session中为例,说明其实现方法。新建一个页面Ses 阅读全文
posted @ 2009-02-23 08:18 我的javaIT 阅读(147) 评论(0) 推荐(0)
摘要:清除页面状态本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书在控件开发时,有时候需要清除子控件的页面状态,比如在创建子控件时,以下是一个在数据绑定时清除视图并创建子控件的应用场景:/// <summary>/// 获得本书更多内容,请看:/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx/// </summary>public override void DataBind(){ base.OnDataBinding(EventArgs.Empty); Contr 阅读全文
posted @ 2009-02-20 14:41 我的javaIT 阅读(171) 评论(0) 推荐(0)
摘要:在ASP.NET中加密页面机制 本节介绍ASP.NET对视图信息的加密功能。Page.RegisterRequiresViewStateEncryption方法就是将控件注册为需要视图状态加密的控件。如果您要开发用于处理潜在的敏感信息的自定义控件,请调用RegisterRequiresViewStateEncryption方法向页注册控件,并确保该控件的视图状态信息已加密。RegisterRequiresViewStateEncryption方法必须在页生命周期的PreRender阶段中或该阶段之前调用,下面在前面ViewStateControl控件中重写OnPreRender方法并加入视图. 阅读全文
posted @ 2009-02-20 08:58 我的javaIT 阅读(199) 评论(0) 推荐(0)
摘要:在禁用视图状态的情况下仍然使用ViewState对象本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 当开发人员禁用了页面或控件视图状态时。控件开发人员一般在无奈情况下会使用控件状态,要重写LoadControlState,SaveControlState,还有一个OnInit方法,这样固然完全可以实现控件重要数据的控件状态数据保存。但一般LoadControlState和SaveControlState方法都要开发人员自定义编程,比较麻烦,更适合对控件中复杂的自定义类型数据进行对象序列化操作,比如一些简单的类型如:string,int,bool,color,dat 阅读全文
posted @ 2009-02-19 13:27 我的javaIT 阅读(139) 评论(0) 推荐(0)
摘要:分块存储视图状态数据本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书如果隐藏域中的数据量过大,某些代理和防火墙将阻止对包含这些数据的页的访问。由于最大数量会随所采用的防火墙和代理的不同而不同,较大的隐藏域可能会出现偶发性问题。如果您需要存储大量的数据项,可以打开视图状态分块,这样会自动将数据分割到多个隐藏域。ASP.NET框架提供了MaxPageStateFieldLength属性,用来获取或设置页状态字段的最大长度。其属性值表示页面状态字段的最大长度,以字节为单位。微软官方网站以及很多文章介绍说,通过设置Page.MaxPageStateFieldLength属性 阅读全文
posted @ 2009-02-19 08:41 我的javaIT 阅读(160) 评论(0) 推荐(0)
摘要:简单类型视图状态应用本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 视图状态默认支持很多类型的数据存储,其中基本类型的有字符串、数字、布尔值、颜色、日期、字节,以及各种类型的数组等。以下是一个最常见的典型用法:public string Text{ get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; }}在上面代码中有个ViewState的 阅读全文
posted @ 2009-02-18 14:31 我的javaIT 阅读(201) 评论(0) 推荐(0)
摘要:视图状态机制下的IStateManager接口本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 .NET框架为自定义视图状态管理提供了System.Web.UI.IStateManager接口,定义了任何类为支持服务器控件的视图状态管理而必须实现的属性和方法,服务器控件的视图状态由控件属性的累计值组成。该接口包括保存并加载服务器控件的视图状态值的方法,以及一个指示控件跟踪其视图状态的更改的方法。此接口的成员与Control类中的对应方法具有相同的语义。若要自定义ASP.NET应用程序管理服务器控件视图状态的方式,必须创建一个实现此接口的类。代码如下:/// < 阅读全文
posted @ 2009-02-18 08:41 我的javaIT 阅读(161) 评论(0) 推荐(0)
摘要:在ASP.NET的复合组件中实现冒泡处理机制本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 在复合控件中,如果子控件之间结构比较复杂,并且很多情况下是多层次的结构,比如在GridView主控件中包括模板容器控件,模板容器控件中又包含命令按钮控件,且控件比较多,在这种情况下如果再使用前面讲的事件机制会比较麻烦;且代码看起来比较乱,因为要为每个按钮注册一个事件(GridView的按钮列的按钮数取决于每页的记录数,有多少行就有多少按钮)。基于此,ASP.NET框架提供了冒泡法,即事件向上冒泡,其核心是使用.NETFramework提供的事件上传机制。这种机制允许子控件将 阅读全文
posted @ 2009-02-17 13:56 我的javaIT 阅读(128) 评论(0) 推荐(0)
摘要:定制自己的委托和事件参数类本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件的事件,在引发事件时传递的参数为EventArgs.Empty,如下所示:OnTextChanged(EventArgs.Empty); 这是因为控件KingTextBox的TextChanged事件比较简单,这里不需要参数对象传递数据。但像一些复杂的控件比如GridView的按钮命令事件,必须得有参数命令表示单击了哪个按钮;翻页事件,需要EventArgs参数对象把当前页信息传递到页面后台代码的事件体的第二个 阅读全文
posted @ 2009-02-17 08:46 我的javaIT 阅读(168) 评论(0) 推荐(0)
摘要:复合控件的事件处理本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书复合控件的事件处理按实现功能可分为三种:(1)复合控件中子控件的内部事件处理。(2)包含处理机制—子控件事件中调用主控件委托的事件实例。(3)冒泡处理机制。接下来的三节就分别说明这三种事件处理方式机制是如何实现的。5.3.3.1 复合控件中子控件的内部事件处理这是最简单的处理方式。复合控件中的子控件事件是单独存在的,与主控件没有任何关系,并且它们各自完成自己的功能,使用方法也很简单,就像以往直接在页面中使用事件一样。这一节主要以CalculatorControl控件为示例演示这种类型事件的用法。首先看 阅读全文
posted @ 2009-02-16 13:20 我的javaIT 阅读(172) 评论(0) 推荐(0)
摘要:高效率事件集合对象本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 在之前讲的几个例子中,使用的是最普通的定义事件方法,比如KingTextBox中事件是这样定义的:/// <summary>/// 获得本书更多内容,请看:/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx/// </summary>public event EventHandler TextChanged;protected virtual void OnTextChanged(EventAr 阅读全文
posted @ 2009-02-16 08:24 我的javaIT 阅读(138) 评论(0) 推荐(0)
摘要:客户端回发/回调揭密本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 对于服务端控件元素,比如ASP.NET的Button标准服务端控件在提交时可以自动把请求发送到服务端处理,这样的控件我们不用自己处理它们的事件回发;但对于呈现不引起回发的HTML元素,如“文本框”(TextBox)或“链接按钮”(LinkButton),而希望由控件启动回发,则可以在ASP.NET中通过依靠客户端脚本的事件结构进行编程来实现这一功能。 完整地处理一个事件则还需要回发和捕捉。捕捉是IPostBackEventHandler接口的事情,上一节讲得比较清楚了,这一节主要讲回发(客户端回发 阅读全文
posted @ 2009-02-13 13:45 我的javaIT 阅读(139) 评论(0) 推荐(0)
摘要:客户端回传事件接口IPostBackEventHandler本文节选自《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书 要使控件捕获回发事件,控件必须实现System.Web.UI.IPostBackEventHandler 接口。此接口约定允许控件在服务器上引发事件来响应来自客户端的回发。IPostBackEventHandler接口包含一个方法。/// <summary>/// 获得本书更多内容,请看:/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx/// </summa 阅读全文
posted @ 2009-02-13 08:27 我的javaIT 阅读(157) 评论(0) 推荐(0)