Commit Graph

98 Commits

Author SHA1 Message Date
G S Niteesh Babu
f867e7b6f4 libtests/ofw01: Added a test for RTEMS OFW
This commit adds a basic test that tests all the implemented
RTEMS OFW functions.
2020-12-27 10:05:09 +01:00
G S Niteesh Babu
9d2ed41fcb bsps/shared/ofw: Implement RTEMS OFW interface
RTEMS OFW is a FDT only implementation of the OpenFirmWare
interface. This API is created to be compatible with FreeBSD
OpenFirmWare interface. The main intention is to make
porting of FreeBSD drivers to RTEMS easier.

Most functions implemented have an direct one-one mapping
with the original OFW API and some extra auxiliary functions
were implemented to make working with device trees easier in
RTEMS.

Update #3784
2020-12-27 10:05:02 +01:00
Sebastian Huber
81c7f5be92 arm/fvp: New BSP
This BSP supports the Arm Fixed Virtual Platform.  Only the Cortex-R52
processor configuration is supported by the BSP.  It should be easy to
add support for other variants if needed.

Update #4202.
2020-12-23 09:24:49 +01:00
Sebastian Huber
9f3a08ef2d bsps: Use header file for GIC architecture support
This avoids a function call overhead in the interrupt dispatching.

Update #4202.
2020-12-23 09:24:49 +01:00
Sebastian Huber
272534eb72 bsps/arm: Set VBAR in start.S
Set the VBAR to the vector table in the start section before
bsp_start_hook_0() is called to earlier handle exceptions in RTEMS.

Set the VBAR to the normal vector table in start.S for the main
processor.  Secondary processors set it in bsp_start_hook_0().

Update #4202.
2020-12-23 09:19:17 +01:00
Sebastian Huber
854ea2b4d8 arm: Add support for Arm PMSAv8-32
Update #4202.
2020-12-22 13:02:41 +01:00
Sebastian Huber
d3f2ecc87a build: Fix duplicate install of jffs2.h 2020-12-16 07:12:25 +01:00
Christian Mauderer
9b3def237a bsps/arm/imx*: Fix location of shared headers
When moving the headers from the imx BSP to the shared area, the wrong
directory has been selected. This patch fixes that problem.

Update #4180
2020-12-14 11:29:36 +01:00
Christian Mauderer
b63a187ec0 bsps/imxrt: Split up dts.
This allows simpler creation of own dts files for custom boards.

Update #4180
2020-12-14 11:10:38 +01:00
Christian Mauderer
1618e69f0e shell: Add i2c and spi commands
This adds some commands that are usefull for debugging simple serial
interfaces.

Even if they are a complete re-implementation, the i2c* commands use a
simmilar call like the Linux i2c tools.
2020-12-14 10:48:57 +01:00
Sebastian Huber
bb57361bfd build: Clarify ARM_MMU_USE_SMALL_PAGES description 2020-12-11 11:40:35 +01:00
Jan Sommer
cadbd7d150 bsp/xilinx_zynq: Enable support for 4kiB MMU pages
- Disabled by default
- Enable using ARM_MMU_USE_SMALL_PAGES option

Close 4192.
2020-12-11 11:40:35 +01:00
Sebastian Huber
617aeaf572 bsps/arm: Move BSP_START_IN_HYP_SUPPORT option
Clarify documentation.

Update #4202.
2020-12-10 07:58:03 +01:00
Sebastian Huber
bd7bef528d bsps/arm: Support system level ARM Generic Timer
Update #4202.
2020-12-10 07:58:03 +01:00
Sebastian Huber
5efa15b49d bsps/arm: Unify ARM Generic Timer options
Update #4202.
2020-12-10 07:58:03 +01:00
Sebastian Huber
293cde73f3 build: Exclude performance-0 in small mem BSPs 2020-12-10 07:58:03 +01:00
Kinsey Moore
2365c93745 spec: Move zynq-uart into its own object
Currently, zynq-uart code is always built and has some requirements for
BSPs that use it. Instead of making all BSPs satisfy that requirement or
working around it by setting defaults, this moves the zynq-uart code
into its own spec build object so it can be included if needed.
2020-12-04 12:42:06 -06:00
Kinsey Moore
74c1c4021b spec/optconminor: Fix value type
The option for defining the console minor should be an integer, not a
boolean.
2020-12-04 07:57:15 -06:00
Kinsey Moore
a92d4ae685 Add AArch64 ZynpMP BSP
This adds a BSP family that runs on the Xilinx Ultrascale+ MPSOC
(ZynqMP) family of chips. It is configured to be usable on the Qemu
ZCU102 machine definition and should be almost trivially portable to
ZynqMP development boards and custom hardware. It is also configured to
be usable with libbsd.
2020-12-04 07:57:15 -06:00
Kinsey Moore
dfa34e0dbb spec/a53: Fix SPDX lines 2020-12-02 18:51:40 -06:00
Kinsey Moore
a151ee167e bsps: Move ARM GICv2 driver to bsps/shared
This moves the ARM GICv2 driver to bsps/shared to be usable by AArch64
code.
2020-12-02 18:51:40 -06:00
Kinsey Moore
f0859573f9 bsps: Move zynq-uart to bsps/shared
This moves the zynq-uart driver from bsps/arm/shared to bsps/shared to
accomodate use by AArch64 BSPs.
2020-12-02 18:51:40 -06:00
Sebastian Huber
7f1ba9c75c build: Add <rtems/rtems/clockimpl.h> 2020-12-02 11:41:09 +01:00
Sebastian Huber
3732c93182 posix: Delete unused _POSIX_Fatal_error() 2020-12-02 07:45:52 +01:00
Sebastian Huber
b48b1808a1 score: Delete empty pheapinit.c 2020-12-02 07:45:52 +01:00
Sebastian Huber
657e30c135 config: CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
In order to better support applications which use the new
rtems_task_construct() directive add the
CONFIGURE_INIT_TASK_CONSTURCT_STORAGE_SIZE configuration option.  If
this option is specified, then the Classic API initialization task is
constructed with rtems_task_construct().

Update #4181.
2020-11-26 11:10:22 +01:00
Sebastian Huber
bc175a1cab Avoid INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL
Replace a runtime check with a compile time assertion.  This makes the
INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL obsolete.

Update #4181.
2020-11-26 11:10:21 +01:00
Kinsey Moore
22c3d4f2ed spec/a53: Set conditionally failing test state
The spintrcritical03-05 and psx12 tests are known to fail on Qemu when
the host system is heavily loaded. A single run of Qemu per core
during a testsuite run tends to yield positive results, but any
additional load on a system will result in test failures.

This patch also applies the correct expected test state for intermittent
failures so that those tests will still build.
2020-11-24 10:06:49 -06:00
Kinsey Moore
1cbe5773ab spec/aarch64: Only apply SUBALIGN(4) to ILP32
The SUBALIGN(4) required on rtemsroset and rtemsrwset for ILP32 builds
was previously present on LP64 builds and causes no issues within RTEMS,
but causes relocation/alignment issues when building libbsd. This
restricts those alignment changes to ILP32 builds.
2020-11-23 09:57:45 -06:00
Kinsey Moore
0c7bb0ebbd spec/aarch64: Ensure that libbsd can build properly
These files are required for libbsd to build against the AArch64 A53
BSPs.
2020-11-23 09:57:45 -06:00
Christian Mauderer
7141afbb0e bsp/imxrt: Add new BSP
Update #4180
2020-11-20 08:53:19 +01:00
Christian Mauderer
b169095c7d cpu/armv7m: Add table based init for ARMV7M_MPU
Modify the MPU functions of the stm32h7 BSP to be table based and
available for all ARMV7M BSPs.

Update #4180
2020-11-20 08:53:18 +01:00
Christian Mauderer
6cece58544 bsps/imx: Move imx-gpio to arm/shared
Update #4180
2020-11-20 08:53:18 +01:00
Christian Mauderer
e00f443428 imx: Move imx_iomux to arm/shared
Update #4180
2020-11-20 08:53:18 +01:00
Sebastian Huber
c5af8aa070 config: Simplify task stack allocator init
Replace runtime checks with compile time assertions.  This makes the
INTERNAL_ERROR_BAD_STACK_HOOK obsolete.
2020-11-19 17:41:07 +01:00
Sebastian Huber
d6f13a468e validation/ts-performance-0: Add partition tests 2020-11-19 08:39:02 +01:00
Sebastian Huber
35c52a51b9 validation/ts-performance-0: Add test suite
Share a default test suite with ts-validation-0.
2020-11-19 08:39:02 +01:00
Sebastian Huber
8882635636 libtest: Add primitive test case memory allocator
This primitive test case memory allocator uses memory from the low-level
memory information provided by the BSP.  At the beginning of each test
case, the memory available to the test case is reinitialized.  This
allows the use of a simple allocate only allocator.
2020-11-19 08:39:02 +01:00
Sebastian Huber
eae22cc03e libtest: Make test case allocator configurable 2020-11-19 08:39:02 +01:00
Sebastian Huber
90b2dbecc2 build: Remove duplicate ARM_MMU_USE_SMALL_PAGES 2020-11-19 08:39:02 +01:00
Sebastian Huber
f435bdd545 dl06: Do not include loaded objs in base image 2020-11-11 08:30:41 +01:00
Jiri Gaisler
4c2d5f271b Add correct link address for griscv waf build 2020-11-09 09:35:11 +01:00
Jiri Gaisler
b4c29b54e7 Add networking support for griscv bsp
* Only GRETH device supported for now
	* Fix endian problem in GRETH driver
	* Remove SPARC assembly from greth.c
	* Builds with both autoconf and waf
2020-11-09 09:35:11 +01:00
Sebastian Huber
7f0379c8dd libtrace: Move _Record_Stream_header_initialize()
This fixes the build if no function sections are used.
2020-11-09 08:10:57 +01:00
Sebastian Huber
99494370d6 bsp/stm32h7: New BSP
Update #3910.
2020-10-27 06:11:45 +01:00
Sebastian Huber
1db60dffec build: Move drivers without SMP support
This fixes warnings like this:

warning: implicit declaration of function 'rtems_interrupt_disable'
warning: implicit declaration of function 'rtems_interrupt_enable'
warning: implicit declaration of function 'rtems_interrupt_flash'
2020-10-12 16:17:44 +02:00
Sebastian Huber
1229817a2f build: Fix format 2020-10-12 16:17:44 +02:00
Frank Kühndel
a479686c11 shell: Remove not functioning fdisk mount/unmount
The shell has an 'fdisk' command which has sub-commands 'mount' and 'unmount'.
These two sub-commands have a bug which causes them to be not able
to mount anything. This proposed patch removes the buggy file
cpukit/libblock/src/bdpart-mount.c and the mount/unmount commands
from 'fdisk' as bug fix. The 'fdisk' command itself is not removed.
The reasons for removing the sub-commands (instead of fixing the issue) are:

  1) The bug has been introduced on 2010-May-31 with commit
     29e92b090c. Since ten years no one
     can use this feature, nor has anybody complained about it.

  2) Besides of the 'fdisk' 'mount' sub-command, the shell has the
     usual 'mount' and 'unmount' commands which can serve as
     substitutes.

  3) There are additional minor issues (see further down) which needed to
     be addressed when the file will be kept.

What follows below is the precise bug description.

The bug is in function rtems_bdpart_mount() which is only be used
by the 'fdisk' shell command to mount all partitions of a disk with a
single command:

> fdisk DISK_NAME mount
>         mounts the file system of each partition of the disk
>
> fdisk DISK_NAME unmount
>         unmounts the file system of each partition of the disk

The whole command does not work because in file
cpukit/libblock/src/bdpart-mount.c line 103 specifies the file system type
of each partition to be "msdos". Yet, "msdos" does not exist. The name
must be "dosfs".

Beside of this fundamental problem, there are more issues with the code
in bdpart-mount.c:

  1) The function returns RTEMS_SUCCESSFUL despite the mount always fails.

  2) The reason for errors is not written to the terminal.

  3) The directory '/mnt' is created but not deleted later on (failure or not).

  3) There is no documentation about this special 'fdisk' feature in the
     RTEMS Shell Guide ('fdisk' is mentioned but its documentation is a
     bit short):
     https://docs.rtems.org/branches/master/shell/
     file_and_directory.html#fdisk-format-disk

  4) Only "msdos" formatted partitions can be mounted and all partitions
     are mounted read-only. This is hard coded and cannot be changed by
     options. Moreover, there is no information about this to the user of
     the shell (i.e. using 'fdisk' mount requires insider knowledge).

How to reproduce:

  1) For testing, I use the 'testsuites/samples/fileio.exe' sample with qemu:

> cd rtems
> env QEMU_AUDIO_DRV="none" qemu-system-arm -net none -nographic \
> -M realview-pbx-a9 -m 256M -kernel \
> build/arm/realview_pbx_a9_qemu/testsuites/samples/fileio.exe

  2) Type any key to stop the timer and enter the sample tool.
     Type 's' to enter the shell, login as 'root' with the password
     shown in the terminal.

  3) Type the following shell commands (they create a RAM disk,
     partition it, register it, format it and try to mount it):

> mkrd
> fdisk /dev/rda fat32 16 write mbr
> fdisk /dev/rda register
> mkdos /dev/rda1
> fdisk /dev/rda mount

  4) The last line above is the command which fails - without an error
  message. There exists a '/mnt' directory but no '/mnt/rda1' directory
  as it should be:

> ls -la /mnt

  5) If you change line 103 of 'cpukit/libblock/src/bdpart-mount.c'
     from "msdos" to "dosfs", compile and build the executable and
     re-run the above test, '/mnt/rda1' exists (but the file system
     is mounted read-only).

Close #4131
2020-10-12 13:18:27 +02:00
Sebastian Huber
3bbd47638f build: Add test excludes for RTEMS_PROFILING 2020-10-10 14:54:36 +02:00
Sebastian Huber
e261df005a build: Add test excludes for rcxx01 2020-10-10 14:48:01 +02:00