电子说
Boundary Devices公司推出的Nitrogen8M单板计算机是一个非常出色的开发板,我们已经在许多Linux驱动程序项目中使用它作为开发平台,它具有一个四核的NXP i.MX8M处理器,2 GB RAM,以太网,USB 3等。
我有一个同事最近正在参与一个VxWorks 7项目,项目是关于i.MX8M的客制化设计,这让我在想,在Nitrogen8M上运行VxWorks会有多容易呢?
自90年代初以来,我们一直在编写VxWorks板级支持包(BSP)和驱动程序,所以我知道我们是有可能让VxWorks 7跑在NXP i.MX8M上的。VxWorks 7的创新之一是为各种片上系统(SoC)设备引入了平台(处理器)支持层,从而使向新板子的移植工作变得更加容易。通过将板子具体的硬件配置从BSP中移出并移进设备树中,可以帮助简化移植工作。
由于大多数外围设备都集成到处理器中,因此除了配置一个设备树以运行基本内核外,几乎没有其他事情可做了。当然,最魔幻的在于细节部分。绝大多数的定制化板子都是为特定市场上的某一个工作而设计的,因此使内核运行通常只是任何项目的开始而已。
VxWorks 7支持NXP i.MX8M SoC以及许多NXP的评估板,这是我的起点。我为Nitrogen8M单板创建了一个简单的设备树,并在现有的i.MX8M板级文件中添加了一些基本的板子具体的定义。然后,我编译了一个内核映像,生成了一个带有集成设备树的U-Boot兼容的ELF文件。
现在,使用U-Boot tftpboot命令将VxWorks映像加载到板子上:
= > tftp 43000000 uVxWorks
Using FEC device
TFTP from server 192.168.10.20; our IP address is 192.168.10.10
Filename 'uVxWorks'.
Load address: 0x43000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
########################################
7 MiB/s
done
Bytes transferred = 4395496 (4311e8 hex)
下面使用bootm命令来运行它,由于设备树已集成到VxWorks内核映像中,因此我只需要指定加载地址:
= > bootm 43000000
## Booting kernel from Legacy Image at 43000000 ...
Image Name: vxworks
Image Type: AArch64 VxWorks Kernel Image (uncompressed)
Data Size: 4395432 Bytes = 4.2 MiB
Load Address: 40100000
Entry Point: 40100000
Verifying Checksum ... OK
Loading Kernel Image ... OK
## Starting vxWorks at 0x40100000, device tree at 0x00000000 ...
Target Name: vxTarget
_________ _________
\\77777777\\ /77777777/
\\77777777\\ /77777777/
\\77777777\\ /77777777/
\\77777777\\ /77777777/
\\77777777\\ \\7777777/
\\77777777\\ \\77777/ VxWorks 7 SMP 64-bit
\\77777777\\ \\777/
\\77777777\\ \\7/ Core Kernel version: 3.1.1.0
\\77777777\\ - Build date: Apr 29 2020 10:55:31
\\77777777\\
\\7777777/ Copyright Wind River Systems, Inc.
\\77777/ - 1984-2020
\\777/ /7\\
\\7/ /777\\
- -------
Board: Boundary Devices Nitrogen8M SBC - ARMv8
CPU Count: 4
OS Memory Size: 2048MB
ED&R Policy Mode: Deployed
Adding 9129 symbols for standalone.
- >