0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Nitrogen8M SBC上運(yùn)行VxWorks 7

冬至子 ? 來(lái)源:北南南北 ? 作者:gaitpu ? 2023-06-15 14:31 ? 次閱讀

為什么使用Nitrogen8M單板計(jì)算機(jī)

Boundary Devices公司推出的Nitrogen8M單板計(jì)算機(jī)是一個(gè)非常出色的開(kāi)發(fā)板,我們已經(jīng)在許多Linux驅(qū)動(dòng)程序項(xiàng)目中使用它作為開(kāi)發(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年代初以來(lái),我們一直在編寫(xiě)VxWorks板級(jí)支持包(BSP)和驅(qū)動(dòng)程序,所以我知道我們是有可能讓VxWorks 7跑在NXP i.MX8M上的。VxWorks 7的創(chuàng)新之一是為各種片上系統(tǒng)(SoC)設(shè)備引入了平臺(tái)(處理器)支持層,從而使向新板子的移植工作變得更加容易。通過(guò)將板子具體的硬件配置從BSP中移出并移進(jìn)設(shè)備樹(shù)中,可以幫助簡(jiǎn)化移植工作。

由于大多數(shù)外圍設(shè)備都集成到處理器中,因此除了配置一個(gè)設(shè)備樹(shù)以運(yùn)行基本內(nèi)核外,幾乎沒(méi)有其他事情可做了。當(dāng)然,最魔幻的在于細(xì)節(jié)部分。絕大多數(shù)的定制化板子都是為特定市場(chǎng)上的某一個(gè)工作而設(shè)計(jì)的,因此使內(nèi)核運(yùn)行通常只是任何項(xiàng)目的開(kāi)始而已。

VxWorks 7支持NXP i.MX8M SoC以及許多NXP的評(píng)估板,這是我的起點(diǎn)。我為Nitrogen8M單板創(chuàng)建了一個(gè)簡(jiǎn)單的設(shè)備樹(shù),并在現(xiàn)有的i.MX8M板級(jí)文件中添加了一些基本的板子具體的定義。然后,我編譯了一個(gè)內(nèi)核映像,生成了一個(gè)帶有集成設(shè)備樹(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命令來(lái)運(yùn)行它,由于設(shè)備樹(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.

- >

以上都很簡(jiǎn)單,只花了幾個(gè)小時(shí)。但是,我們現(xiàn)在有的只是內(nèi)核和以太網(wǎng)的支持,這只是一個(gè)開(kāi)始,還不足以支持復(fù)雜的應(yīng)用程序。

增加USB 3的支持

增加USB 3支持會(huì)如何呢?USB主機(jī)控制器已集成到處理器中,原則上也應(yīng)該很容易,只需將正確的驅(qū)動(dòng)程序添加到內(nèi)核配置并更新設(shè)備樹(shù)即可。

我插入了一個(gè)U盤(pán),期望能檢測(cè)到它并列出其中的內(nèi)容,結(jié)果什么動(dòng)靜也沒(méi)有!我檢查了驅(qū)動(dòng)程序和內(nèi)核配置,看起來(lái)都沒(méi)問(wèn)題,那出問(wèn)題的地方可能是哪兒呢?

我把USB的調(diào)試信息打開(kāi),并重新編譯了VxWorks內(nèi)核,重新啟動(dòng)運(yùn)行帶有調(diào)試功能的內(nèi)核,當(dāng)我插入U(xiǎn)盤(pán)的時(shí)候,USB主機(jī)控制器沒(méi)有識(shí)別到任何的設(shè)備插入事件,這是確定無(wú)疑的了。

看來(lái)是時(shí)候要更仔細(xì)研究一下硬件了!

Nitrogen8M上的USB 3主機(jī)控制器

Nitrogen8M有兩個(gè)USB 3主機(jī)控制器,一個(gè)連接到了USB 3的Mini Type B的連接器,用于OTG連接。另一個(gè)連接到板載USB 3 hub(Renesas uPD720210),其提供了三個(gè)板載的USB端口。

幸運(yùn)的是,Boundary Devices公司提供了板子的原理圖,這很有趣:

圖片

Nitrogen 8M on-board USB3 hub

Hub有一個(gè)復(fù)位引腳,器件的數(shù)據(jù)手冊(cè)說(shuō)這是一個(gè)低電平有效的復(fù)位信號(hào),我的猜測(cè)是Hub被一直置于復(fù)位狀態(tài),因此我需要將該信號(hào)驅(qū)動(dòng)為高電平才能使其退出復(fù)位狀態(tài)。

復(fù)位信號(hào)是從哪兒來(lái)的呢?再看一下板子的原理圖:

圖片

GPIO pin driving USB hub reset

一點(diǎn)也不奇怪,該復(fù)位信號(hào)確實(shí)來(lái)自處理器的一個(gè)GPIO引腳。幸運(yùn)的是,VxWorks 7對(duì)i.MX8M平臺(tái)的支持包含了一個(gè)GPIO的驅(qū)動(dòng)程序,我將此驅(qū)動(dòng)程序添加到了內(nèi)核的配置中,然后,我在Nitrogen8M設(shè)備樹(shù)中添加了一個(gè)引腳配置,以在啟動(dòng)過(guò)程中將GPIO1的引腳14設(shè)置為高電平。

完整的設(shè)備樹(shù)如下所示:

/* nitrogen8m.dts - Boundary Devices Nitrogen8M SBC device tree source */
/*
modification history
--------------------
29apr20,jge created
*/
/dts-v1/;
#include "prjParams.h"
#include "imx8mq.dtsi"
#include "imx8mq-clocks.dtsi"
#include "imx8mq-iomux.dtsi"
/ {
 model = "Boundary Devices Nitrogen8M SBC - ARMv8";
 aliases
 {
 ethernet0 = &enet0;
 serial0 = &uart1;
 };
 memory
 {
 device_type = "memory";
 reg = < 0x0 0x40000000 0x0 0x80000000 >;
 };
 /*
 * U-Boot only fixes up bootargs if  environment variable is set
 * when VxWorks kernel is configured in independent DTB mode.
 */
 chosen
 {
 bootargs = "enet(0,0)host:vxWorks h=192.168.10.20 e=192.168.10.10:ffffff00
g=192.168.10.1 u=target pw=vxTarget";
 stdout-path = "serial0";
 };
 };
&enet0
 {
 phy0: ethernet-phy@0
 {
 compatible = "atheros,ar8035";
 reg = < 0 >;
 };
 };
&iomux
 {
 iomux_usb2: iomux_usb2
 {
 pin-set = <
 0x060 0x2C8 0x000 0x0 0x0 0x16
 >;
 };
};
&gpio1
 {
 status = "okay";
 pinmux-0 = < &iomux_usb2 >;
 usb_hub_resetb
 {
 gpio-hog;
 gpios = < 14 >;
 output-high;
 };
 };

重新編譯內(nèi)核并再次引導(dǎo)后,我們可以看到以下信息:

## 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: May 1 2020 13:59:07
         \\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: 1984MB
       ED&R Policy Mode: Deployed

 Adding 10204 symbols for standalone.

- >

板子啟動(dòng)后,我看到USB存儲(chǔ)設(shè)備中的LED燈在閃爍,在shell下使用devs顯示內(nèi)核設(shè)備列表也確認(rèn)了這一點(diǎn),該列表顯示了USB設(shè)備上存在兩個(gè)已掛載的文件系統(tǒng)分區(qū)。

- > devs
drv refs name
  1 [ 3] /
  2 [ 3] /bd0:1 == > /bd0a
  2 [ 3] /bd0:2 == > /bd0b
  5 [ 3] /bd0a
  6 [ 3] /bd0b
 10 [ 3] /input/event
  0 [ 3] /null
  3 [ 3] /ttyS0
  2 [ 3] /tyCo/0 == > /ttyS0
 12 [ 3] host:
value = -140737484449152 = 0xffff8000003b9a80
- >
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227235
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5288

    瀏覽量

    169672
  • USB控制器
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    11837
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27181
  • 片上系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    26666
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    VxWorks映象的分類(lèi)

    的上層應(yīng)用程序顯得不是很方便。2、 基于ROM的VxWorks映象這是一種運(yùn)行于RAM中,但起初存放于ROM中的VxWorks映象。即該映象需要和搬移程序一起固化BOOT中。目標(biāo)板
    發(fā)表于 08-25 11:20

    vxworks smp

    使用OpenGL ES2.0的圖形程序vxworks smp下運(yùn)行時(shí)如何解決CPU占用率過(guò)高現(xiàn)象?(版本是vxworks 6.9,使用的是風(fēng)河workbench 3.3自帶的ARMA
    發(fā)表于 11-06 22:13

    請(qǐng)問(wèn)一下GD32F350芯片是怎樣8M運(yùn)行

    請(qǐng)問(wèn)一下GD32F350芯片是怎樣8M運(yùn)行的?有哪些流程?
    發(fā)表于 11-01 06:44

    如何同時(shí)cortex A53運(yùn)行Linux和在cortex M7運(yùn)行FreeRTOS?

    對(duì)于機(jī)器人項(xiàng)目,我需要同時(shí) cortex A53 運(yùn)行 Linux 和在 cortex M7 運(yùn)行
    發(fā)表于 03-21 08:29

    imx8mp運(yùn)行M7聲卡時(shí)出現(xiàn)問(wèn)題如何解決?

    開(kāi)發(fā)板運(yùn)行M7程序參考IMX_LINUX_USERS_GUIDE.pdf。內(nèi)核版本 Linux imx8mpevk 5.15.32-l
    發(fā)表于 03-28 06:10

    S32G M7_0和M7_1內(nèi)核獨(dú)立/并行運(yùn)行,M7_1 (VM1) 未正常運(yùn)行怎么解決?

    我的系統(tǒng)中存在 2 個(gè)虛擬機(jī), VM0 用于 Core0 (M7_0), VM1 用于 Core1(
    發(fā)表于 05-04 07:21

    如何使LLCE_CANM7上工作以進(jìn)行多重引導(dǎo) (M7/A53)?

    LLCE_CAN loopback example。 如果 A53 正在啟動(dòng)進(jìn)入操作系統(tǒng),M7 將意外停止。 這是我的問(wèn)題: M7 正常運(yùn)行需要檢查哪些配置? 有沒(méi)有可能讓LLCE_CAN控制器0-
    發(fā)表于 06-08 09:03

    VxWorks系統(tǒng)基于M總線(xiàn)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    研究基于VxWorks嵌入式實(shí)時(shí)系統(tǒng)下M 總線(xiàn)控制系統(tǒng)的軟件設(shè)計(jì)思想和實(shí)現(xiàn)方法.該系統(tǒng)需要設(shè)置兩個(gè)各自獨(dú)立運(yùn)行的實(shí)時(shí)任務(wù). 達(dá)到對(duì)外部設(shè)備進(jìn)行控制的功能.第1個(gè)任務(wù)負(fù)責(zé)收集
    發(fā)表于 12-16 14:12 ?8次下載

    VxWorksAT91FR40162的BSP定制

    討論BSP 的概念以及ARM 芯片AT91FR40162 的特點(diǎn);研究BSP 定制過(guò)程中需要清楚的VxWorks映像的生成和種類(lèi), 以及系統(tǒng)的啟動(dòng)流程; 著重研究VxWorks 操作系統(tǒng)
    發(fā)表于 04-15 10:28 ?6次下載

    VxWorksPowerPC系統(tǒng)的移植與實(shí)現(xiàn)

    使用WindRiver 公司提供的 Torrnado 集成開(kāi)發(fā)工具,將VxWorks 移植到PowerPc 處理器,將移植結(jié)果應(yīng)用在跑馬燈的實(shí)現(xiàn),運(yùn)行正常,表明移植成功。關(guān)鍵字:
    發(fā)表于 06-23 13:08 ?44次下載

    VxWorks系統(tǒng)基于M總線(xiàn)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    研究基于VxWorks嵌入式實(shí)時(shí)系統(tǒng)下M 總線(xiàn)控制系統(tǒng)的軟件設(shè)計(jì)思想和實(shí)現(xiàn)方法.該系統(tǒng)需要設(shè)置兩個(gè)各自獨(dú)立運(yùn)行的實(shí)時(shí)任務(wù). 達(dá)到對(duì)外部設(shè)備進(jìn)行控制的功能.第1個(gè)任務(wù)負(fù)責(zé)收集
    發(fā)表于 01-09 15:04 ?23次下載

    VxWorksAT91RM9200的BSP設(shè)計(jì)

    摘要:闡述VxWorks實(shí)時(shí)操作系統(tǒng)中板級(jí)支持包BSP的概念和作用;研究VxWorks映像的生成和分類(lèi),以及系統(tǒng)的啟動(dòng)流程;著重介紹VxWorks操作系統(tǒng)ARM9芯片AT9lRM92
    發(fā)表于 07-29 14:37 ?37次下載

    ARM平臺(tái)上運(yùn)行Xen 可同時(shí)管理linux和VxWorks

    首先來(lái)看一下Xen的應(yīng)用場(chǎng)景,然后我們朝著Zynq上進(jìn)行延伸。風(fēng)河剛剛發(fā)布了一篇博客,主要是描述ARM cortex-A53處理器同時(shí)運(yùn)行VxWorks和Linux。若想使
    的頭像 發(fā)表于 02-03 16:56 ?7079次閱讀
    ARM平臺(tái)上<b class='flag-5'>運(yùn)行</b>Xen 可同時(shí)管理linux和<b class='flag-5'>VxWorks</b>

    nitrogen基于vue的純前端mac版桌面

    gitee-nitrogen.zip
    發(fā)表于 04-18 11:43 ?0次下載
    <b class='flag-5'>nitrogen</b>基于vue的純前端mac版桌面

    貿(mào)澤開(kāi)售加快工業(yè)IoT設(shè)備開(kāi)發(fā)的 Boundary Devices Nitrogen8M Plus SMARC

    Nitrogen8M Plus SMARC。Nitrogren8M Plus SMARC是一款符合SMARC 2.1行業(yè)標(biāo)準(zhǔn)的高性能系統(tǒng)級(jí)模塊 (SoM),與SMARC載板相結(jié)合可組成單板計(jì)算機(jī),大大加快產(chǎn)品上市
    發(fā)表于 03-15 17:23 ?338次閱讀