為什么使用Nitrogen8M單板計(jì)算機(jī)
Boundary Devices公司推出的Nitrogen8M單板計(jì)算機(jī)是一個(gè)非常出色的開發(fā)板,我們已經(jīng)在許多Linux驅(qū)動(dòng)程序項(xiàng)目中使用它作為開發(fā)平臺(tái),它具有一個(gè)四核的NXP i.MX8M處理器,2 GB RAM,以太網(wǎng),USB 3等。
我有一個(gè)同事最近正在參與一個(gè)VxWorks 7項(xiàng)目,項(xiàng)目是關(guān)于i.MX8M的客制化設(shè)計(jì),這讓我在想,在Nitrogen8M上運(yùn)行VxWorks會(huì)有多容易呢?
NXP i.MX8M上跑VxWorks 7
自90年代初以來,我們一直在編寫VxWorks板級(jí)支持包(BSP)和驅(qū)動(dòng)程序,所以我知道我們是有可能讓VxWorks 7跑在NXP i.MX8M上的。VxWorks 7的創(chuàng)新之一是為各種片上系統(tǒng)(SoC)設(shè)備引入了平臺(tái)(處理器)支持層,從而使向新板子的移植工作變得更加容易。通過將板子具體的硬件配置從BSP中移出并移進(jìn)設(shè)備樹中,可以幫助簡化移植工作。
由于大多數(shù)外圍設(shè)備都集成到處理器中,因此除了配置一個(gè)設(shè)備樹以運(yùn)行基本內(nèi)核外,幾乎沒有其他事情可做了。當(dāng)然,最魔幻的在于細(xì)節(jié)部分。絕大多數(shù)的定制化板子都是為特定市場上的某一個(gè)工作而設(shè)計(jì)的,因此使內(nèi)核運(yùn)行通常只是任何項(xiàng)目的開始而已。
VxWorks 7支持NXP i.MX8M SoC以及許多NXP的評(píng)估板,這是我的起點(diǎn)。我為Nitrogen8M單板創(chuàng)建了一個(gè)簡單的設(shè)備樹,并在現(xiàn)有的i.MX8M板級(jí)文件中添加了一些基本的板子具體的定義。然后,我編譯了一個(gè)內(nèi)核映像,生成了一個(gè)帶有集成設(shè)備樹的U-Boot兼容的ELF文件。
加載內(nèi)核
現(xiàn)在,使用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命令來運(yùn)行它,由于設(shè)備樹已集成到VxWorks內(nèi)核映像中,因此我只需要指定加載地址:
= > 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.
- >