首页 | 供应信息 | 求购信息  | 下载系统 | 技术资讯 | 企业信息 | 产品信息 | 论文信息 | 展会信息 | 在线工具
作者: 发布时间:2016-12-11 来源:韬睿(上海)计算机科技有限公司 繁体版
1). 概述Windows十多年之前,为了演示我们的 计算机模块 ,或者称为 系统模块(SoM),我们编写了一些WinCE 的代码。例如 GPIO、I2C、模拟输入等。当时我们只是为了纯粹的演示目的,并没有关系诸如维护、不同模块之间的兼容性等

1). 概述0ob自动化在线网

Windows十多年之前,为了演示我们的 计算机模块 ,或者称为 系统模块(SoM),我们编写了一些WinCE 的代码。例如 GPIO、I2C、模拟输入等。当时我们只是为了纯粹的演示目的,并没有关系诸如维护、不同模块之间的兼容性等问题。然而,这些演示程序却被大量 Windows Embedded Compact 用户所采用。我们收到越来越多的技术支持和功能要求,于是我们开始将其集成到演示代码中去。最终,我们有了今天的针对基于 PXA 和 Tegra® 系统模块的库文件包。通过这些库文件可以可靠和方便地使用我们的模块。但是,迭代维护和为新功能提供 API 却没有那么容易。0ob自动化在线网


0ob自动化在线网

当我们为我们的模块系列家族添加新的处理器(片上系统或者 SoC),我们决定停止扩展旧的 API,而是采用一套全新的 API,我们可以把过去获得的经验都倾注其中。我们称这套新的库文件包为“Toradex CE Libraries”。该库文件包的目标和我们原来的一样:使我们的用户能够方便地使用系统模块的功能。0ob自动化在线网


0ob自动化在线网

但是,我们三个非常重要的要求:0ob自动化在线网


0ob自动化在线网

./ 可扩展,并可兼容的 API0ob自动化在线网

./ 允许通过注册表配置库文件0ob自动化在线网

./ 易于维护0ob自动化在线网

我们将在新的库文件包中满足三个所有的要求。0ob自动化在线网


0ob自动化在线网

2). 可扩展,并可兼容的API0ob自动化在线网

为了保持我们的 API 满足将来的需求,我们决定引入两套调用 API。第一种是通常的做法,使用字符串或者整数将信息传递给库。下面演示了如何将一个系统模块的引脚设置为 GPIO 输入,并调用 SetConfigString 函数激活下拉电阻:0ob自动化在线网

-----------------------------0ob自动化在线网

// Set pin to alternate function GPIO,Input with pull-down0ob自动化在线网

success = Gpio_SetConfigString(hGpio, io1,NULL, L"altfn=ioAltFnGpio,dir=in,pull=down", StoreVolatile);0ob自动化在线网

-----------------------------0ob自动化在线网


0ob自动化在线网

另外一个例子是调用 SetConfigInt 函数将 I2C 控制器的速率设置为 400KHz:0ob自动化在线网

-----------------------------0ob自动化在线网

// Set I2C speed to 400KHz0ob自动化在线网

success = I2c_SetConfigInt(i2c,L"BitRateHz", 400000, StoreVolatile);0ob自动化在线网

-----------------------------0ob自动化在线网

采用字符串的方法允许我们保持 API 的 100% 兼容,并且在将来可以添加现在系统模块还没有的更多功能。0ob自动化在线网


0ob自动化在线网

第二套调用的 API 主要出于性能或者采用标准函数的原因。下面是一个 GPIO 库文件中修改一个 GPIO 的函数例程。调用 SetConfigString 或者 Set ConfigInt 可以实现同样的目的,出于性能考虑,我们提供了不需要字符串解析的函数。0ob自动化在线网

-----------------------------0ob自动化在线网

// Set it to Output,  High0ob自动化在线网

Gpio_ConfigureAsGpio(hGpio, io1);0ob自动化在线网

Gpio_SetDir         (hGpio, io1, ioOutput);0ob自动化在线网

Gpio_SetLevel       (hGpio, io1, ioHigh);0ob自动化在线网

-----------------------------0ob自动化在线网


0ob自动化在线网

我们看看采用标准函数读取 I2C 的例程。因为性能缘故,我们决定不采用一般字符串的方法(例如上的 Get/SetConfig),但是由于读 I2C(以及类似的函数)已经固定,无法针对将来的 SoC 做改变。0ob自动化在线网

-----------------------------0ob自动化在线网

returnValue = I2c_Read(i2c, (DWORD*) data,8);0ob自动化在线网

-----------------------------0ob自动化在线网


0ob自动化在线网

3). 允许通过注册表配置库文件0ob自动化在线网

正如前面看到的,我们可以通过字符串和整数配置库文件。例如也可以在注册表中配置 SPI 库使用特定 SPI 接口、片选信号、波特率等,在你的应用启动的时候加载配置。如果你采用下面的方法加载库:0ob自动化在线网

-----------------------------0ob自动化在线网

hSPI = Spi_Init(L"SPI2");0ob自动化在线网

-----------------------------0ob自动化在线网

库文件会自动从注册表下面的位置加载配置:0ob自动化在线网

-----------------------------0ob自动化在线网

[HKEY_LOCAL_MACHINE/SOFTWARE/Toradex/SPI2]0ob自动化在线网

BitRateHz=5000000ob自动化在线网

DmaEnable=10ob自动化在线网

etc.0ob自动化在线网

-----------------------------0ob自动化在线网

你也许会想,这有什么好处。其中一个很好的优势是,可以针对不同设备只维护一个应用。例如,你可以在基于 NXP®(或者可以写为高通)i.MX6 处理器以及 NXP Vybrid 系统模块上使用相同的应用。模块之间唯一的不同是引脚配置,现在这些可以保持在注册表中。剩余的部分完全相同,因此允许你在不同的系统模块上使用一个二进制应用,使得您的开发更加容易。0ob自动化在线网


0ob自动化在线网

4). 易于维护0ob自动化在线网

在本文的最后我想重点介绍“为维护而设计”方面。为了我们能够简单、安全地维护,我们根据每一种 SoC 将库文件分为单独的源代码文件。这确保我们能够在修复漏洞或者增加 SoC 相关功能的时候,保持其他 SoC 部分的代码不变。这降低了破坏现有代码的风险,因此也使得我们的软件总体上更加稳健。0ob自动化在线网


0ob自动化在线网

5). 参考0ob自动化在线网

您可以在我们的开发者中心 中找到所支持功能的列表以及下载库文件、API说明等。0ob自动化在线网

同样欢迎您查看我们的library roadmap,我们公开了所以已知的问题和我们计划解决的时间。0ob自动化在线网

0ob自动化在线网



Toradex WinCE 库演进:新的库文件方法说明
评论】【加入收藏夹】【 】【关闭
※ 相关信息
无相关信息
※ 其他信息
访问数: | 共有条评论
发表评论
用户名:
密码:
验证码: 看不清楚,点击刷新
匿名发表

 搜索新闻
[提交投稿]  [管理投稿]
 最新新闻
 热点新闻
数据加载中..

网站地图
Autooo.Net 版权所有
Copyright © 2007--2016 All rights reserved