os: make platform_drv package ready for ARM

* Make target binaries independent of board SPECS
* Name binaries of one architecture unambigously
* Extend include path to match board specifics
* Adapt run-scripts to use the right binary

Ref #2190
Ref #3180
This commit is contained in:
Stefan Kalkowski 2019-04-23 11:07:51 +02:00 committed by Christian Helmuth
parent c55663b923
commit 911f4ada0a
9 changed files with 32 additions and 26 deletions

View File

@ -108,9 +108,18 @@ proc append_platform_drv_build_components {} {
append build_components { } [platform_drv_build_components]
}
proc platform_drv_binary {} {
if {[have_spec arndale] } { return arndale_platform_drv }
if {[have_spec imx53] } { return imx53_platform_drv }
if {[have_spec odroid_x2]} { return odroid_x2_platform_drv }
if {[have_spec rpi] } { return rpi_platform_drv }
if {[have_spec x86] } { return platform_drv }
return no_platform_drv_available
}
proc platform_drv_boot_modules {} {
set drv_boot_modules ""
lappend_if [have_platform_drv] drv_boot_modules platform_drv
lappend_if [have_platform_drv] drv_boot_modules [platform_drv_binary]
lappend_if [have_spec x86] drv_boot_modules report_rom
if {[have_spec x86]} {
@ -262,6 +271,7 @@ proc platform_drv_config {} {
append drv_config {
<start name="platform_drv" } [platform_drv_priority] { caps="800">
<binary name="} [platform_drv_binary] {"/>
<resource name="RAM" quantum="4M" constrain_phys="yes"/>
<provides>
<service name="Platform"/>}

View File

@ -17,7 +17,7 @@
#include <base/capability.h>
#include <base/rpc.h>
#include <dataspace/capability.h>
#include <platform/framebuffer_info.h>
#include <spec/rpi/platform/framebuffer_info.h>
namespace Platform {
using namespace Genode;

View File

@ -1,4 +1,5 @@
base
os
platform_session
regulator_session
report_session

View File

@ -9,8 +9,9 @@ set build_components {
drivers/sd_card
test/block/client
}
lappend_if [have_spec arndale] build_components drivers/platform
lappend_if [have_spec rpi] build_components drivers/platform
source ${genode_dir}/repos/base/run/platform_drv.inc
append_platform_drv_build_components
build $build_components
create_boot_directory
@ -36,12 +37,7 @@ set config {
</default-route>
<default caps="100"/> }
append_if [expr [have_spec arndale] || [have_spec rpi]] config {
<start name="platform_drv">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Regulator"/>
<service name="Platform"/> </provides>
</start>}
append_platform_drv_config
append config {
<start name="timer">
@ -70,9 +66,8 @@ set boot_modules {
sd_card_drv
test-block-client
}
lappend_if [have_spec arndale] boot_modules platform_drv
lappend_if [have_spec rpi] boot_modules platform_drv
append_platform_drv_boot_modules
set disk_image "bin/sd_card.img"
build_boot_image $boot_modules

View File

@ -148,7 +148,7 @@ append_if $mmc_rootfs config {
<resource name="RAM" quantum="3M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="platform_drv">
<start name="imx53_platform_drv">
<resource name="RAM" quantum="3M"/>
<provides>
<service name="Regulator"/>
@ -228,7 +228,7 @@ if { $mmc_rootfs } {
# add components that enable MMC access via parvirtualized block
lappend boot_modules timer
lappend boot_modules platform_drv
lappend boot_modules imx53_platform_drv
lappend boot_modules sd_card_drv
lappend boot_modules part_block

View File

@ -1,5 +1,5 @@
TARGET = platform_drv
REQUIRES = arndale
TARGET = arndale_platform_drv
REQUIRES = arm_v7
SRC_CC = main.cc
INC_DIR += ${PRG_DIR}
INC_DIR += ${PRG_DIR} $(call select_from_repositories,include/spec/exynos5)
LIBS = base

View File

@ -1,5 +1,5 @@
TARGET = platform_drv
REQUIRES = imx53
TARGET = imx53_platform_drv
REQUIRES = arm_v7
SRC_CC = main.cc
INC_DIR += ${PRG_DIR}
INC_DIR += ${PRG_DIR} $(call select_from_repositories,include/spec/imx53)
LIBS = base

View File

@ -1,5 +1,5 @@
TARGET = platform_drv
REQUIRES = odroid_x2
TARGET = odroid_x2_platform_drv
REQUIRES = arm_v7
SRC_CC = main.cc
INC_DIR += ${PRG_DIR}
INC_DIR += ${PRG_DIR} $(call select_from_repositories,include/spec/exynos4)
LIBS = base

View File

@ -1,7 +1,7 @@
TARGET = platform_drv
REQUIRES = rpi
TARGET = rpi_platform_drv
REQUIRES = arm_v6
SRC_CC = main.cc
INC_DIR += ${PRG_DIR}
INC_DIR += ${PRG_DIR} $(call select_from_repositories,include/spec/rpi)
LIBS = base
# enable C++11 support