QNX实时操作系统学习笔记之嵌入式系统(二)

时间:2021-09-11 19:52:45

QNX实时操作系统学习笔记之嵌入式系统(二)

BSP

一个BSP一般包括:IPL,startup,默认的buildfile,网络支持,具体开发板设备驱动,系统管理器,公用工程等。一般情况下BSP是以源代码的形式给出的,除非对源代码有限制的,只会以二进制形式给出。
一般把安装BSP的路径成为bsp_working_dir,包含以下子路径:src,prebuit,install,images.
—————————————————————————————————————————————————
images路径是最终boot images存放的地址,它包含了运行image(s)的makefile。这个路径中的其他文件包括了custombuildfiles(for flash等),EFS buildfiles,IPL build scripts。
prebuilt路径包含prebuilt二进制文件以及和BSP一起的头文件。在BSP被build之前,prebuilt路径中的所有文件都被复制到install路径中,包括路径结构。
install路径在BSPbuild过程的开始得到安置,prebuilt中所有的文件都被复制,所有产生的二进制文件在compile的同时都被安装到这。当mikifs执行的时候,install路径中的文件首先被使用。
——————————————————————————————————————————————-——
以上部分是在使用command来编译BSP的时候需要用的。

将OS镜像下载到开发板: 编译好OS镜像后,就要将它下载到开发板。可以用IDE通过串口将镜像下载,或者用TFTP网络接口,如果开发板没有ROM监视器,可能就不能使用IDE的下载功能。可以使用别的方式下载,例如JTAG
flash文件系统:flash文件系统驱动在NORflash存储设备上补充一个POSIX-like文件系统。对于不同的嵌入式系统硬件例如PCMCIA存储卡,有很多种 文件系统驱动的版本。命名方式是devf-系统名。例如devf-800fads驱动就是800FADS PowerPC评估板的驱动。
flash文件系统驱动支持一种以上的逻辑闪存驱动。每一种逻辑驱动成为一个socket,由相邻的同类闪存区域组成。例如,在一个在不同的地址中包含两种类型的闪存设备的系统,一个是用来启动镜像,另一个是flash文件系统,每一个闪存设备将会出现在不同的socket中。每个socket可能被分为一个或多个分区。QNX支持两种分区,裸分区(raw partitions)和flash文件系统分区。
裸分区是socket中不包含flash文件系统的任意分区,flash文件系统驱动不会识别除了flash文件系统的任何文件系统类型,一个裸分区可能包含了一个镜像文件系统或一些应用专用的数据。
flash文件系统分区包含了POSIX-like闪存文件系统,它用QNX专有的格式将文件系统数据保存在flash设备中。这个格式和MicrosoftFFS2或PCMCIA FTL规格是不兼容的。
flash文件系统允许文件和路径随意创建删除。它支持所有标准的POSIX公用工程,如ls,mkdir,rm,ln,mv,cp,也有一些用于管理flash文件系统的QNX Neutrino公用工程。
flashctl:擦除,格式化和列出flash分区。
deflate:压缩flash文件系统的文件。
mkefs:创建flash文件系统镜像文件。
flash文件系统支持所有标准的POSXI I/O函数,例如open()close()read()write().特殊的功能也是被支持的,例如擦除使用devctl().
flash文件系统源:每一个BSP包含了合适的flash文件系统驱动的二进制和源代码,但是QNX软件开发平台包含了相关了头文件和库文件。
如何创建一个分区:
启动flash文件系统驱动;
擦除整个flash;
格式化分区;
slay(杀死,杀戮)flash文件系统驱动;
重启flash文件系统驱动。
以下是Renesas Biscayne 开发板的例子,它可以从DMON或flash启动:
1.要从DMON开始启动,输入以下的命令启动flash文件系统驱动:
devf-generic -s0xe800000,32M &
2.要从flash启动,输入以下命令:
devf-generic -s0x0,32M
现在应该可以看到一个fs0p0入口在/dev下面。
3.要为分区准备区域,必须擦除整个flash。输入以下命令:
flashctl -p/dev/fs0 -ev
4.格式化分区,输入以下命令:
flashctl -p/dev/fs0p0 -f
5.slay flash文件系统驱动:
slay devf-generic
6.最后,重启驱动:devf-generic &
现在,可以看到以下入口:
/dev/fs0p0        OS镜像(32MB)
/dev/fs0p1        flash文件系统分区(32MB)