Linux 的魅力: 开发 Nokia N800

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

现在,分析代码:

清单 1. hello, world!

                #include <stdio.h>/* stop me if you've heard this one */intmain(void) {            printf("hello, world!\n");            return 0; }

将样例代码清单保存倒一个文件。下面是复杂的部分,交叉编译:

清单 2. 交叉编译

                [sbox-SDK_ARMEL: ~] > cc -o hello hello.c[sbox-SDK_ARMEL: ~] > file hellohello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.4.17,  dynamically linked (uses shared libs), not stripped[sbox-SDK_armEL: ~] > ./hellohello, world!

就这么简单。您可能想知道如何将该文件放到 tablet 上?如果 tablet 上安装了 shell,并且两个插槽上都安装了 SD 卡,那么很简单:将 tablet 插入 Linux box,在出现的驱动器上装载该文件系统,并复制该文件。卸载、拔除然后观察,驱动器就能神奇地重新装载到 tablet 上。当然,文件在该处的某些位置没有执行权限,但是可以将其复制到卡以外,然后使用 chmod +x

这对一个文件可行,假设您已经安装了一个终端程序。这种情况下,由于该程序实际上不必在 shell 中运行,所以这样做比较合理。

然而,在实际的应用程序中,您不希望这么做,图形应用程序尤其如此。对于这种情况,您将希望创建合适的软件包文件(N800 使用 Debian 软件包)并让用户以正确的方式安装。那么,当它正常工作起来而不是采用 quick hack 时,就不会像目前这样。

创建 maemo 软件包

developerWorks 拥有关于创建 Debian 软件包的最好文档(请参阅 参考资料)。当然,针对 maemo 有更多,因为将程序安装到 /usr/bin 是不够的;还需要一种方式使 UI 识别软件包并运行它。本文中到 “hello, world!” 样例应用程序的链接不会正常工作,但是没关系;只需在 scratchbox 环境中执行 apt-get source hello-world-app。该软件包布置所有内容,包括图标和启动程序配置。

构建它相当简单:运行 autogen.sh 以生成配置脚本,然后运行 dpkg-buildpackage -rfakeroot。如果因为 $PATH 中没有 dpkg-buildpackage 而失败,请运行 sb-menu,并确保安装了 debian devkit。不要 安装 debian-sarge devkit;它会使 Debian 工具认为您在构建 arm 架构而不是 armel,这样就不能尽善尽美了。而且,N800 会拒绝安装您的软件包,因为它们针对不兼容的架构。因此,不要这样做。

Maemo 应用程序是使用 Gtk widget 构建的。还有一点不可思议的地方是 “osso_…” 系列函数,它们是常规 Gnome dbus 函数的包装器。如果不使用这些函数,您的应用程序可能不能在 maemo 环境中正常工作。“hello world” 样例是了解该环境的好起点。观察它,构建软件包,并确保适应这种方式。

了解这些内容之后,让我们构建一些应用程序。虽然 Hello World 应用程序是非常完善的示例,但是它的内容过多。一般的应用程序不需要在控制面板的状态栏上显示,如 DBUS 服务和常规应用程序以及主页上的 applet 那样。实际上,通常显示一个或两个程序就足够了。此外,执行以上所有工作的需要解答了为何将应用程序实现为所有不同组件使用的共享库。这是共享代码并使各个示例着重处理其实现所特有任务的最简单途径。它适合教学和作为示例;不一定是应用程序的最佳模板。但我们的目标是什么应用程序呢?

N800 有一项十分简洁的功能:一架小型的弹出式照相机。默认情况下,如果通过弹出将其打开,它会立即启动一个小型的交互式聊天程序。很简洁,但是不太灵活。拥有一个可以抓拍单张图片并且自动将其上载到远程站点的应用程序可能会更好。这利用了 N800 连接各种网络的便捷,并对要发送哪些帧提供了更多控制。

这实际上是一个相当棘手的过程,因此我不会开发一个完美的 app。而将重点研究使其运行起来的基本要素。方便的是,大部分工作已经以 gstreamer 的方式完成了,gstreamer 是处理媒体流的库。目标是以特定的间隔从照相机提取帧并将其保存到某个位置,另一台机子更好,并且可能还允许用户通过按一个按钮来保存帧。

结束语

在本系列的第 2 部分中,将研究一个程序,它实际完成构建 gstreamer 管道以便从 Web 照相机向屏幕或另一个系统传输图像的核心工作。目标是从照相机获得图像,将其转换成 JPEG 并上载到某个位置。

同时,如果您不熟悉 gstreamer,请继续阅读相关知识。 Gstreamer 环境有很大一组概念需要掌握。另外,请花一些时间安装一个终端程序;推荐使用 osso-xterm。

通常,Nokia N800 是便携式 Internet tablet,允许通过以下技术访问 Web:

高分辨率宽屏幕显示 Opera 8 浏览器 Adobe Flash 9 浏览器插件 Internet 通信 Skype 支持 带有集成 Webcam 的 Internet 电话 即时消息 多协议电子邮件客户端 全屏幕拇指键盘 立体声扬声器 Media player UPnP 架构 Real Rhapsody 可扩展的大容量内存 800 x 480-象素、65,536-色 触摸屏

标准的银色/黑色款规格:

体积:137cc 重量:206g 长:75mm 宽:144mm

它的内存是 DDR RAM 128MB;还有 Flash 256MB 和 128 MiniSD 扩展。两个内置内存卡插槽兼容 SD、MicroSD、MiniSD、MMC 和 RS-MMC。最多支持 8GB 内存卡。超过 2GB 的 SD 卡必须是 SDHC 兼容的。

BP-5L 电池可使浏览时间长达 3.5 小时(待机 13 天)。

内在设置支持以下文件格式:

音频:AAC、AMR、AWB、M4A、MP2、MP3、RA(RealAudio)、WAV、WMA 图像:BMP、GIF、ICO、JPEG、PNG、TIFF、SVG-tiny 视频:3GP、AVI、H.263、MPEG-1、MPEG-4、RV(Real Video) Internet 音频播放清单:M3U、PLS

连接方式:

WLAN:802.11b/g Bluetooth 规格:2.0(针对 Internet 连接和通过电话传输文件) Nokia AV connector 3.5mm。支持的模式:拨号网络、文件传输、通用访问、SIM 访问、对象推送模式、人机接口模式和串口模式 针对 PC 连接的 USB 2.0 高速设备模式

[1][2]

不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧

Linux 的魅力: 开发 Nokia N800

相关文章:

你感兴趣的文章:

标签云: