您的位置:首页 > 其它

.Net Micro Framework 模拟器详解 – 基本原理

2008-08-13 23:17 435 查看
使用.Net Micro Framework 模拟器 – 基本原理

摘要:虚拟仪器(VI)技术在很多高成本的工业项目中扮演着越来越重要的角色,在电子产品的开发中,各种模拟器也为广大开发者方提供了便利,提高了生产力。本文介绍了微软最新的嵌入式开发框架.Net Micro Framework的模拟器。阐述了模拟器的启动过程,链接组件和注册信息等基本工作过程和原理。

Keywords

.Net Micro Framework, Hardware Emulator, Start Up, Component, Registry

[b][b].Net MF模拟器简介[/b][/b]



.Net MF模拟器是一个.Net MF CLR的Windows 版的运行环境。运行时的核心部分(执行引擎,类型系统和GC等)和基础类库都和在实际设备上跑的MF一样。两者不同之处在于HAL层(Hardware Abstract Layer)。模拟器的HAL层并不是实际的硬件设备驱动,而是由Windows提供的驱动代替。这里充分体现了MF的架构中层与层之间高度分离的作用,为模拟的真实性和准确性提供了基础。

下图说明了.Net Micro Framework模拟器的逻辑结构

protected virtual void LoadDefaultComponents()

实际上LoadDefaultComponents()就是在为默认的组件进行注册。

如果是手动注册,需要注意的是,如果一个组件包含于另一个组件那么子组件注册的同时需要提供父组件给RegisterComponent的一个重载方法。在调用UnregisterComponent移除组件的时候,所有链接到它的子组件都会被自动删除。例如MemoryManager组件,它有两个子组件RamManager 和 FlashManager。当我们移除MemoryManager时,RamManager 和 FlashManager也会被移除。

访问已注册组件

已注册的模拟器组件可以通过Emulator类的FindComponentById方法来访问。我们经常会调用这个函数来对指定的组件进行初始化。例如在SDK提供的SampleEmulator中我们可以看到这样一个函数:

private void InitializeButton(Button button, string componentId, Keys key)

FindComponentById还有一个比较常用的用途就是用于在初始化的时候检查必备的组件。例如以下代码所示:

public override void InitializeComponent()

好了,今天暂且写到这里,关于模拟器还有很多值得探讨的地方,欢迎有兴趣的朋友与我交流。

参考资料:

MS .Net Micro Framework team

Windows Embedded blog From china

MVP 刘洪峰的blog

.Net MF国内的资源站点Winbile.Net(正在改版)

Windows Embedded 在博客园的团队blog

[书籍]Embedded Programming with the .Net Micro Framework

[书籍]Expert .Net Micro Framework

Enjoy !

黄季冬
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: