赞
踩
利用QNX的模块性和和可裁剪性,其嵌入过程一般是:
构建Buildfile -> 编译buildfile生成系统映象文件 -> 启动目标系统 ->嵌入式系统软件设计。
其中的关键是构建Buildfile[19]。通常一个嵌入式系统需要一个可启动的操作系统映象文件(OS Image)。对于基于QNX的嵌入式一个应用系统,就是根据所选择的CPU类型以及应用程序所需要的操作系统模块来定制嵌入式系统。构建Buildfile的过程就是配置操作系统映象的过程。简单来说Buildfile是一个产生映象文件所需遵守的一组规则、准则。Buildfile由三部分组成,其结构如下:
l bootstrap script(启动引导脚本)
l startup script(启动脚本)
l file list(文件列表)
不同的CPU其启动的方式不同,相应的启动引导程序也就不同。启动引导脚本bootstrap script的作用就是配置和CPU相适应的微内核。一个典型的启动引导脚本如下:
[virtual=x86,bios +compress] .bootstrap = {
startup-bios -s 64k -D 8250.3f 8.57600 -A
PATH=/proc/boot procnto
}
在这个例子中,第一行说明它是一个启动引导文件。其中“virtual” 表明该Buildfile将构造一个与启动时产生的虚拟地址空间相对应的启动映象。关键词“x86,bios” 则分别指处理器(x86)和机器类型(通过bios启动)。而“+compress”使得映象文件被压缩,以产生更小的映象文件。startup-bios是运行于具有BIOS的PC兼容系统的可执行程序,主要负责利用BIOS检测PC硬件资源,在这里主要是提取映象,将其置于RAM的相应位置,做基本的配置并运行内核。该例中“-s 64k”表明复制ROM中第一段64k视频BIOS到RAM使其更快的执行,即所谓的ROM BIOS映射。第二项参数表明以57600波特率打开第一个串口作为一个调试通道,其调试输出可以在另一台通过计算机数据传输线(null modem cable)连接的PC上捕捉到。最后一项参数则是实时系统中比较典型的情形,其作用是在任何异常内核终止后系统均立即重启动。“PATH=/proc/boot” 确定了PATH环境变量。“procnto” 是微内核和进程管理器,包括QNX 6 微内核,进程管理,内存管理以及路径名管理,每个利用mkifs工具的可启动映象都必须具有procnto。需要注意的是在bootstrap中,第一个可执行程序必须是startup-*,而最后一个必须是procnto!
启动脚本是在进程管理启动后的一系列将要被执行的命令列表。一个简单的script如下:
[+script] .script = {
devc-con &
reopen /dev/con
+session] sh
}
可以在这里进行配置网络,设置显示卡等操作。通常我们自己编写的需要开机自动执行的程序也放在这里,详细例子见开发案例。
文件列表是上面的系统程序和用户程序执行所必须的一些文件列表,尤其是一些共享库。由于用户程序是用C语言开发的,所以必须至少包括一个标准C共享库。例如(“#”后的内容为注释):
#include the C shared library
libc.so
#create a symlink called ldqnx.so.2 to it
[type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so
其中[type=link]行是用一个ldqnx.so.2重新定位libc.so。如果不知道在映象文件中都是需要哪些共享库,可以利用“objdump” utility(实用程序)来显示相关的需求信息。假如我们用到了ping命令,可以在终端执行:
# objdump -x ‘which ping’ | grep NEEDED
回车,将显示信息:
objdump: /usr/bin/ping: no symbols
NEEDED libsocket.so.2
NEEDED libc.so.2
表明ping命令需要libsocket.so.2和libc.so.2,再利用objdump
# objdump -x /lib/libsocket.so.2 | grep NEEDED
NEEDED libc.so.2
# objdump -x /lib/libc.so.2 | grep NEEDED
即是说libsocket.so.2需要libc.so.2,而libc.so.2不需要任何其他的库。那么如果包括ping在映象中,就必须在文件列表中列出libsocket.so.2和libc.so.2。
有了Buildfile,我们就可以通过“mkifs”utility生成启动映象文件,其语法格式是:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。