RTEMS-libbsd实现FDT support for BBB
来源:互联网 发布:长歌门成女捏脸数据 编辑:程序博客网 时间:2024/05/16 17:12
上篇博文描述了如何在RTEMS上实现FDT,这篇文章将展示如何在RTEMS-libbsd上实现FDT support。
rtems-libbsd 管理总线的实现在nexus-devices.h文件中,也就是: rtemsbsd/include/bsp/nexus-devices.h
/* * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 * 82178 Puchheim * Germany * <rtems@embedded-brains.de> * * Copyright (c) 2016 Chris Johns <chrisj@rtems.org> All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#if !defined(BSP_NEXUS_DEVICES_h)#define BSP_NEXUS_DEVICES_h#include <bsp.h>#include <rtems/bsd/bsd.h>#include <machine/rtems-bsd-nexus-bus.h>#if defined(LIBBSP_ARM_REALVIEW_PBX_A9_BSP_H)#include <bsp/irq.h>RTEMS_BSD_DRIVER_SMC0(0x4e000000, RVPBXA9_IRQ_ETHERNET);#elif defined(LIBBSP_ARM_LPC32XX_BSP_H)#include <bsp/irq.h>RTEMS_BSD_DRIVER_LPC32XX_PWR;RTEMS_BSD_DRIVER_LPC32XX_LPE;RTEMS_BSD_DRIVER_ICSPHY;RTEMS_BSD_DRIVER_LPC32XX_OHCI;SYSINIT_DRIVER_REFERENCE(usbus, ohci);RTEMS_BSD_DRIVER_USB;RTEMS_BSD_DRIVER_USB_MASS;#elif defined(LIBBSP_M68K_GENMCF548X_BSP_H)RTEMS_BSD_DRIVER_FEC;#elif defined(LIBBSP_ARM_XILINX_ZYNQ_BSP_H)#include <bsp/irq.h>RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR;RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0(ZYNQ_IRQ_ETHERNET_0);RTEMS_BSD_DRIVER_E1000PHY;#elif defined(LIBBSP_ARM_ATSAM_BSP_H)RTEMS_BSD_DRIVER_USB;RTEMS_BSD_DRIVER_USB_MASS;#elif defined(LIBBSP_ARM_ALTERA_CYCLONE_V_BSP_H)#include <bsp/socal/hps.h>#include <bsp/irq.h>RTEMS_BSD_DRIVER_DWC0((unsigned long) ALT_EMAC1_ADDR, ALT_INT_INTERRUPT_EMAC1_IRQ);RTEMS_BSD_DRIVER_MIPHY;RTEMS_BSD_DRIVER_DWCOTG0((unsigned long) ALT_USB1_ADDR, ALT_INT_INTERRUPT_USB1_IRQ);RTEMS_BSD_DRIVER_DWC_MMC;RTEMS_BSD_DRIVER_MMC;RTEMS_BSD_DRIVER_USB;RTEMS_BSD_DRIVER_USB_MASS;#elif defined(LIBBSP_ARM_LPC24XX_BSP_H)RTEMS_BSD_DEFINE_NEXUS_DEVICE(ohci, 0, 0, NULL);SYSINIT_DRIVER_REFERENCE(usbus, ohci);RTEMS_BSD_DRIVER_USB;RTEMS_BSD_DRIVER_USB_MASS;#elif defined(LIBBSP_I386_PC386_BSP_H)RTEMS_BSD_DRIVER_PC_LEGACY;RTEMS_BSD_DRIVER_PCI_LEM;RTEMS_BSD_DRIVER_PCI_IGB;RTEMS_BSD_DRIVER_PCI_EM;RTEMS_BSD_DRIVER_PCI_RE;RTEMS_BSD_DRIVER_REPHY;#elif defined(LIBBSP_POWERPC_QORIQ_BSP_H)#if !QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)#include <bsp/irq.h>RTEMS_BSD_DEFINE_NEXUS_DEVICE(ofwbus, 0, 0, NULL);SYSINIT_DRIVER_REFERENCE(simplebus, ofwbus);SYSINIT_DRIVER_REFERENCE(tsec, simplebus);SYSINIT_DRIVER_REFERENCE(ukphy, miibus);#endif /* !QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT) */#endif#endif
可以看出里面并没有包含对BBB的支持,因此需要添加以下字段:
#elif defined(LIBBSP_ARM_BEAGLE_BSP_H)
然后就是添加总线支持,FreeBSD的设备树是root_bus是总线,然后nexus挂载在root_bus,然后ofwbus挂载在nexus上,接着simplebus挂在ofwbus上。然后其他的uhub或者其他设备挂载在simplebus上。
因此需要添加如下代码:
RTEMS_BSD_DEFINE_NEXUS_DEVICE(ofwbus, 0, 0, NULL);SYSINIT_DRIVER_REFERENCE(simplebus, ofwbus);SYSINIT_DRIVER_REFERENCE(ti_scm, simplebus);SYSINIT_DRIVER_REFERENCE(am335x_prcm, simplebus);SYSINIT_DRIVER_REFERENCE(usbss, simplebus);SYSINIT_DRIVER_REFERENCE(musbotg, usbss);
第一行表示将ofwbus挂载在nexus上,后面几行则是其他挂载关系。这样就能在bsp层实现FDT support。
除此之外,查看opt_platform.h文件,可以看出,如果需要使能FDT,还应该定义宏BSP_FDT_IS_SUPPORTED。
因此我们需要在rtems 源码的bsp.h中添加:
#define BSP_FDT_IS_SUPPORTED
以上就是RTEMS-libbsd添加FDT支持的方法。
阅读全文
0 0
- RTEMS-libbsd实现FDT support for BBB
- RTEMS实现FDT support for Beaglebone
- Add Copy headers support for RTEMS-libbsd
- RTEMS USB support for BBB 文档
- 添加WEP 加密WiFi支持 for RTEMS-libbsd on BBB BSP
- RTEMS-libbsd 实现beaglebone black USB驱动
- 添加OpenSSL库支持for WPA on RTEMS-libbsd
- RTEMS-libbsd 解决无法使用中断问题
- RTEMS-libbsd 生成驱动设备firmware
- Port WPA supplicant to RTEMS-libbsd
- Add wpa_supplicant_fork command on RTEMS-libbsd
- 基于ubuntu的rtems-libbsd编译运行beagleboneblack bsp
- RTEMS-BBB(二):工具链安装
- RTEMS-BBB(三):源码和BSP
- RTEMS-BBB(四):rki镜像
- RTEMS-BBB(五):SD卡
- RTEMS-BBB(七):LED点亮
- RTEMS-BBB(八):UART扩展:准备
- RecyclerView的一些小问题
- npm ERR! Windows_NT 6.3.9600 无法下载节点
- HBASE 找不到zookeeper节点
- Unity基于UGUI的多行多列ListView
- 输入框输入值自动格式化,每4位加空格或-
- RTEMS-libbsd实现FDT support for BBB
- Android高德地图如何让轨迹全部显示在屏幕内 且自动缩放
- jquery on()事件 append追加内容事件失效处理
- Spring的定时任务
- OpenCV各类滤波概述
- B站视频开源代码flv.js的使用部署心得(代码案例应用)
- IAR for MSP430查看编写程序的大小
- Redis知识框架
- 安装hadoop-2.6.5,zookeeper-3.4.9,hbase-1.2.4,sqoop-1.99.7,snappy压缩配置