Commit 28dc0979 authored by Daniel Silveira's avatar Daniel Silveira

Merge branch 'dev' into 'master'

Merge dev to master AIR v5.5.1

See merge request AIR/air-dev!41
parents 72115f4a 622d95f6
......@@ -7,6 +7,10 @@
*.out
*.ralf
*.txt
*.bin
*.gz
*.img
*.elf
# Makefiles
Makefile
......@@ -24,7 +28,7 @@ b-*/
# 'configure' generated files
.config
air/.air_config
air/pmk/arch/sparc/include/asm_offsets.h
air/pmk/arch/**/include/asm_offsets.h
# Examples generated files
air/examples/**/*.a
......@@ -42,8 +46,69 @@ air/examples/**/rtems_config.h
.*-swp
tags
# Doxygen output directory
doc/
#Netbeans
nbproject
# Eclipse
# Created by https://www.gitignore.io/api/eclipse
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
#TASTE
......@@ -55,3 +120,18 @@ oldI*
#AIV
aiv
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
# End of https://www.gitignore.io/api/eclipse
/air/tools/configurator/nbproject/private/
/air/examples/validation/TEST-DEF-00009/doit.sh
/air/examples/validation/TEST-DEF-00009/testScp.sh
/air/examples/validation/testsuite/
/air/tools/test_generator/nbproject/private/
This diff is collapsed.
......@@ -4,3 +4,6 @@
[submodule "air/pos/rtems5"]
path = air/pos/rtems5
url = https://spass-git-ext.gmv.com/AIR/rtems5.git
[submodule "air/examples/private-example"]
path = air/examples/private-example
url = https://spass-git-ext.gmv.com/AIR/private-example.git
# Changelog
All notable changes to AIR will be documented in this file.
## [V5.5.1] - 2020-06-20
### Added
- AIR build supports multicore (up to 4 cores), recommend to build with make -j4
- AIR for ARM with RTEMS 5 (stable in single core)
### Changed
- Reviewed and fixed examples not working
### Removed
- Experimental examples what were not working
## [V5.5.0] - 2020-04-20
### Added
- AIR main validation tests migrated to Gitlab CI/CD
- How to use ARM instructions
## [V5.4.0] - 2020-03-10
### Added
- Add stable AIR for ARM for Bare
- Add CAN device driver for ARM
- Adds air_syscall_end_window that terminates partition execution on current window
### Changed
- AIR validated under MORA-TSP activity
- Partitions are able to provide information of completion of activities
- Clarify partition state under air.h. There are 5 states: INIT-NOT_RUN-RUNNING-READY-HALTED
- Improve partition status information: add current partition executing window and state information
- AIR usage examples cleanup while improving mms example and adding shared memory example
- RTEMS5 POS compatible with RTEMS toolchain of September 2019, rtems-5.1-2019.07.25.
## [V5.3.2] - 2019-09-19
### Add
- AIR supports UART device driver
## [V5.3.1] - 2019-07-19
### Changed
- AIR supported RTOS as submodules
## [V5.3.0] - 2019-02-01
### Added
- AIR Supports SMP + AMP scenarios with RTEMS 5
## Changed
- Correct HM error while we were restoring a window underflow whenever we interrupt a preemptible syscall such as write/read ports.
## [V5.2.0] - 2018-08-31
### Added
- AIR support gcov usage
### Changed
- Add improved 1553 milbus and CAN driver for SPARC
## [V5.1.0] - 2018-07-5
### Added
- AIR with RTEMS 5 single-core tested and stable
## [V5.0.0] - 2018-01-25
### Added
- AIR with RTEMS 5 as POS paravirtualized, first non-stable version
- Add Spacewire device driver
## [V4.3.0] - 2017-05-19
### Added
- AIR improved support to LEON4 FPU
## [V4.3.0] - 2016-09-4
### Added
- AIR costumized for usage in ATB's.
## [V4.1.0] - 2015-11-19
### Added
- AIR new API compatible with HAIR
## [V4.0.0] - 2014-01-20
### Added
- AIR supports multi-core for NGMP/GR740
- AIR fully validated with RTEMS48i
## [V3.1.0] - 2012-03-30
### Added
- AIR fully validated including RTEMS48i (IMASP Finael Release)
- Support to LEON3 Processor
## [V3.0.0] - 2012-03-30
### Added
- AIR fully validated including RTEMS48i (IMASP First Release)
- Add cache support
## [V2.0.0] - 2011-09-23
### Added
- AIR with paravirtualized RTEMS 48i
## [V1.0.0] - 2011-01-25
## Added
- AIR first version, hypervisor with a BARE OS and ARINC653 syscall via IMASPEX
- Supports LEON2 Processor
This source diff could not be displayed because it is too large. You can view the blob instead.
# Welcome to AIR
# Welcome to AIR v5.5.1
AIR has a user manual at https://gmvdrive.gmv.com/index.php/s/eScXCAybbecmT9b
You have two way of getting AIR
1) AIR is integrrated in TASTE toolchain available at https://taste.tuxfamily.org/
2) Download from repository where following instructions apply:
You have two ways of getting AIR
1) AIR is intregrated in TASTE toolchain available at https://taste.tuxfamily.org/
2) Download from repository (email to airproduct@gmv.com to register)
Below is an examplo on installing and using AIR.
This example is usu SPARC target, if ARM read section 4.2.1 of user manual.
To install AIR after cloning from git, you should do the following:
## 1 - Install RTEMS toolchain for RTEMS 5
Execute the following:
```
git clone git://git.rtems.org/rtems-source-builder.git rsb
$ cd rsb
$ ./source-builder/sb-check
$ cd rtems
$ ../source-builder/sb-set-builder --prefix=/opt/rtems/5 5/rtems-sparc
cd rsb
./source-builder/sb-check
cd rtems
../source-builder/sb-set-builder --prefix=/opt/rtems/5 5/rtems-sparc
```
Currently supported toolchain version : rtems-5.1-2019.07.25
......@@ -30,16 +30,20 @@ AIR configure requires python-mako, if not installed execute (in case of Debian)
Clone AIR repo for example in */home/taste/work/*
git clone https://spass-git-ext.gmv.com/AIR/AIR.git
Add the *air_repo/air* to the PATH env variable, we recommend doing the following way in .bashrc file:
export AIR=/home/taste/work/air/air
export AIR=/home/taste/work/AIR/air
export PATH=$PATH:$AIR
git clone https://spass-git-ext.gmv.com/AIR/AIR.git
RTEMS 5 tool chain should be in the PATH, e.g:
`export PATH=$PATH:/opt/rtems/5/bin`
AIR supports the following paravirtualized RTOS versions
- RTEMS 4.8i
- RTEMS 4.8i (Edisoft)
- RTEMS 5
- BARE OS (Metal-bare)
AIR paravirtualized RTOS are obtained via git submodules. For example to use AIR
RTEMS 5 version please execute in *air_repo/air*
......@@ -47,30 +51,29 @@ RTEMS 5 version please execute in *air_repo/air*
git submodule init air/pos/rtems5
git submodule update
### Using AIR configurator tool
## 3 - Using AIR configurator tool
On *air_repo/air* execute
./configure
Configurator interface will enquire the user for options (architecture, BSP, FPU, Cache, Debugger, RTOS). For example
Press 0 for sparc
* Press 0 for sparc
* Press 2 for leon4
* Press 0 for fpu enabled
* Press 0 for GRMON
* Press 1 to install all RTOS
Press 2 for leon4
Press 0 for fpu enabled
After configurator finishes execute:
Press 0 for GRMON
```
make clean
make
```
Press 1 to install all RTOS
...
After configurator finishes execute
make
### To build an example ready to run on a target board
## 4- Build an example ready to run on a target board
Then go to any example inside *air_repo/air/examples*
Execute
......@@ -87,10 +90,7 @@ Executing
will create the respective binary in the created *executables* folder.
## Support
Email to dtms@gmv.com or raise issue at our Gitlab
## Updating AIR repo to AIR v5.3 and configurator v4.3
## 5 - Updating AIR repo to AIR v5.4.0 and configurator v4.3
Since configurator v4.2 the RTOS paravirtualized versions are obtained via git submodules.
Pulling new AIR content into old AIR repo will generate conflicts. To get a new clean
AIR repo please execute (please backup any working folder)
......@@ -99,3 +99,12 @@ AIR repo please execute (please backup any working folder)
git reset origin/master --hard
Further information email air-product@gmv.com
## 6 - Support
### Via Gitlab
Users can submit issues on gitlab, where they can follow development team addressing them.
Gitlab address:
https://spass-git-ext.gmv.com/AIR
### Via Email
Email to airproduct@gmv.com or raise issue at our Gitlab
# Ignore bash files of gitlab runner
*.bash
*.py
......@@ -11,11 +11,11 @@ This folder contain examples for using AIR, they are the following:
*iop_can* - CAN communication example, using IOP Partition
*iop_example* - Ethernet communication example, using IOP Partition
*iop_spw* - Spacewire communication example, using IOP Partition
*math* - Example using math library
*math* - Example using math library (printf is not working properly)
*mms* - Example of using multiple module schedules (MMS)
*periodic* - Example using RTEMS periodic tasks
*ports* - Example of using Queuing and Sampling Ports
*posix* - Example of using POSIX threads
*smp* - Multicore example with SMP and AMP
*testsuites* - Some of RTEMS testsuite
*shm* - Shared Memory Example
*testsuites* - Some of examples of the RTEMS testsuite (includes SMP and AMP multicore example in AIR)
......@@ -15,7 +15,7 @@
<Cache>CODE; DATA</Cache>
<Memory Size="0x100000" />
<Permissions>
FPU_CONTROL; CACHE_CONTROL; GLOBAL_TIME; SET_TOD; SET_PARTITION_MODE;
FPU_CONTROL; CACHE_CONTROL; GLOBAL_TIME; SET_TOD; SET_PARTITION_MODE; MODULE_CONTROL;
</Permissions>
</PartitionConfiguration>
</Partition>
......@@ -31,4 +31,4 @@
<!-- module configuration -->
<AIR_Configuration TicksPerSecond="100" RequiredCores="1"/>
</ARINC_653_Module>
\ No newline at end of file
</ARINC_653_Module>
......@@ -106,5 +106,5 @@ char message[] = {
void entry_point() {
air_syscall_print(message, sizeof(message));
for (;;);
air_syscall_shutdown_module();
}
*/o-optimize
**/o-optimize
o-optimize/
......@@ -5,12 +5,12 @@
<Partition PartitionIdentifier="1" PartitionName="part0"
Criticality="LEVEL_A" EntryPoint="entry_point" SystemPartition="false">
<PartitionConfiguration Personality="RTEMS5" Cores="1" Mode="source">
<Libs>LIBAIR; LIBPRINTF</Libs>
<Libs>LIBAIR; LIBPRINTF; LIBCOV</Libs>
<Devices></Devices>
<Cache>CODE; DATA</Cache>
<Memory Size="0x900000" />
<Permissions>
FPU_CONTROL; GLOBAL_TIME; CACHE_CONTROL; SET_TOD; SET_PARTITION_MODE;
FPU_CONTROL; GLOBAL_TIME; CACHE_CONTROL; SET_TOD; SET_PARTITION_MODE; MODULE_CONTROL;
</Permissions>
</PartitionConfiguration>
</Partition>
......
......@@ -111,5 +111,6 @@ void __gcov_exit()
tmp = tmp->next;
}
air_syscall_shutdown_module();
}
......@@ -13,7 +13,6 @@
#define CONFIGURE_INIT
#include <air.h>
#define RTEMS48I
#ifdef RTEMS48I
#include <pprintf.h>
......@@ -38,24 +37,23 @@ static char *my_ctime( time_t t )
void entry_point(void)
{
int i=0;
while(i<15)
while(i<3)
{
#ifdef RTEMS48I
pprintf( "\n\n*** RTEMS48I HELLO WORLD TEST **********\n" );
pprintf( "\n\n*** RTEMS48I COVERAGE_ENABLED TEST **********\n" );
#else
struct timespec start;
clock_gettime( CLOCK_REALTIME, &start );
<