為什么使用Nitrogen8M單板計算機
Boundary Devices公司推出的Nitrogen8M單板計算機是一個非常出色的開發板,我們已經在許多Linux驅動程序項目中使用它作為開發平臺,它具有一個四核的NXP i.MX8M處理器,2 GB RAM,以太網,USB 3等。
我有一個同事最近正在參與一個VxWorks 7項目,項目是關于i.MX8M的客制化設計,這讓我在想,在Nitrogen8M上運行VxWorks會有多容易呢?
NXP i.MX8M上跑VxWorks 7
自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.
- >