Ada on ARM Cortex

Go To Last Post
167 posts / 0 new

Pages

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brutte wrote:
After that - there is an STM32F4-Discovery blinky example with tutorial included and it "blinks out of the box"!

Electronic Design

ARMed and Ready

Sep 19, 2014

http://electronicdesign.com/dev-tools/armed-and-ready

...

I have also been successful in porting it to the STM32F417 Evaluation board and to the STM32F429 Discovery board. 

...

Ada on this 429 board is very nice!

...

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ada on an Atmel SAM3X8E :

Inspirel banner

Ada on ARM Cortex-M

tutorial with Arduino Due examples

http://www.inspirel.com/articles/Ada_On_Cortex.html

The URL sequence to the above :

Planet Ada

http://planet.ada.wtf/

Ada Resource Association

Ada Information Clearinghouse

Learning websites recently added

by brukardt

May 5 2015

http://www.adaic.org/2015/05/websites-recently-added/

Other :

Arduino

Arduino Due

http://www.arduino.cc/en/Main/ArduinoBoardDue

Inspirel banner

About Us

http://www.inspirel.com/about_us.html

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ada on a Texas Instruments ARM Cortex-R4F, the RM46L852 (dual ARM Cortex-R4F, ECC flash, ECC local SRAM, FPU, MPU, 16-bit EMIF) :

Hackaday

Ada on an RM46 launchpad

A safety language on a safety processor.

https://hackaday.io/project/6178-ada-on-an-rm46-launchpad

(approx. 08-June-2015)

It's a Work-In-Progress though well along.


Texas Instruments

Hercules RM46x LaunchPad (LAUNCHXL2-RM46)

http://www.ti.com/ww/en/launchpad/launchpads-hercules-launchxl2-rm46.html

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

AdaCore

Press

AdaCore Introduces GNAT GPL 2015 for the Raspberry Pi 2

Latest version of AdaCore cross-development environment targets students and other developers of nonproprietary software

New York City and Paris, Sep 1, 2015

https://www.adacore.com/press/adacore-introduces-gnat-gpl-2015-for-the-raspberry-pi-2

...

With the release of GNAT GPL for Bare Board ARM in 2014, an implementation on the Raspberry Pi 2 running Linux on ARM was a natural follow-up

...

Raspberry Pi Foundation

Raspberry Pi 2 Model B

https://www.raspberrypi.org/products/raspberry-pi-2-model-b/

...

  • A 900MHz quad-core ARM Cortex-A7 CPU

...

"Dare to be naïve." - Buckminster Fuller

Last Edited: Sat. Sep 19, 2015 - 11:19 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
... and code written in SPARK had 1/100 the errors of DO-178B certified code written in C.

The AdaCore Blog

New Book About SPARK 2014

by Yannick Moy

Sep 13, 2015

http://blog.adacore.com/new-book-about-spark-2014

...

Prof. John McCormick from University of Northern Iowa and Prof. Peter Chapin from Vermont Technical College have written a truly essential book for getting up to speed with formal verification using SPARK.

...

I see this book as a glorified User's Guide to SPARK, and I recommend it to anybody who either wants to have a first look at SPARK, or actually starts using it for real.

...

For those in academia who would like to teach SPARK, the book is ideally structured with a summary and exercises closing each chapter.

...

You may also get a free copy of the book from Cambridge University Press to evaluate it for your course (see the publisher's webpage).

...

Cambridge University Press logo

Programming Languages and Applied Logic

Building High Integrity Applications with SPARK

http://www.cambridge.org/us/academic/subjects/computer-science/programming-languages-and-applied-logic/building-high-integrity-applications-spark

  • Date Published: August 2015

Building High Integrity Applications with SPARK

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The AdaCore Blog
Make with Ada: Formal proof on my wrist
by Fabien Chouteau
Nov 10, 2015
http://blog.adacore.com/make-with-ada-formal-proof-on-my-wrist
When the Pebble Time kickstarter went through the roof, I ...
https://www.pebble.com/pebble-time-smartwatch-features
...
Binding the C API to Ada
...
To use this binding I decided to port the formally proven Tetris written in SPARK by Yannick and Tristan.
...
The formal proof is focused on things that are impossible to test, in our case, the game system.
Can you think of a way to test that the code will reject invalid moves on any piece, in any orientation, at any position and for every board state possible (that's trillions or quadrillions of combinations)?  
...
This application was released on the Pebble app store under the name of PATRIS, and as of today more than 660 users downloaded it.
...
Persistent storage
...
Sources
...
(YouTube video)
...


Pebble watch from Santa - loving it already

by clawson

https://www.avrfreaks.net/forum/pebble-watch-santa-loving-it-already

"Dare to be naïve." - Buckminster Fuller

Last Edited: Thu. Nov 19, 2015 - 01:12 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

EE Times

Bringing Ada and GNAT to DIYers on Raspberry Pi

by Bernard Cole, Contributing Editor
9/15/2015 00:01 AM EDT

http://www.eetimes.com/author.asp?section_id=36&doc_id=1327687

The latest version of the AdaCore cross-development environment for Raspberry Pi 2 micro-PC allows students and other DIY developers to do software development in Ada, C, C++ or any combination of these.

...

"understanding just a single language promotes solutions that only approach a problem from a single perspective.

Knowing multiple languages allows the problem to be looked at from a variety of perspectives so that multiple solutions can be compared and the most natural solution for the problem can be selected."

- Greg Gicca, currently director of marketing at Verocel, previously director of safety and security product marketing at AdaCore

...

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The AdaCore Blog

Porting the Ada Runtime to a new ARM board

Jan 12, 2016

by Jérôme Lambourg (senior engineer, AdaCore)

http://blog.adacore.com/porting-the-ada-runtime-to-a-new-arm-board

...

Final words and refinements

...

Although part of the initial run-time for the STM32F429-Disco is delivered with GNAT, it is not necessarily well optimized (some missing interrupts and a non-optimal clock speed in particular).

So I included the sfp and full ravenscar run-times for it as well in the final source packages.

...

To go further in customized run-time, you can refer to the following documentation: ...

Attachments

...

  • STM32F429I-Discovery
  • STM32F469I-Discovery

  • STM32F746G-Discovery

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

AdaCore

Public Ada Training

https://www.adacore.com/public-ada-training/

April 11-15, 2016

UK Yeovil, US NYC

... hands-on lab sessions using the latest AdaCore tools and the STM32F4 Discovery Board, introduces software developers to the principal features of the Ada language with a special focus on embedded systems.

...

No previous Ada experience is required.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

IoT content from Electronic Design

Comparing Ada and C

Both languages approach the reliability vs. efficiency tradeoff from different angles, but each has a place in embedded-systems programming.

Jan 27, 2016

by (AdaCore, Senior Technical Staff)

http://electronicdesign.com/iot/comparing-ada-and-c

...

"I am using it on more than two dozen different ARM boards and love having tasking without a separate RTOS and not having to spend near as much time with a debugger." - Jerry Petrey

...

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Fascinating. Has anyone seen an Ada file system? Pretty much eliminates the need for an operating system.

 

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

bobgardner wrote:
Has anyone seen an Ada file system?
Partially; AdaCore has some packages that improve file system speed and abstract the file system for portability between operating systems (virtual files).

I have not used those but instead the usual method via Ada Text_IO (Ada -> complete Ada run-time -> RTOS or OS).

bobgardner wrote:
Pretty much eliminates the need for an operating system.
Dependent on the Ada run-time as described in its Footprint Profile.

For most embedded systems that don't have the Ada run-time on an RTOS there's either no file system (Zero Footprint Profile or ZFP) or a minimal one.

For ZFP, some ways around are :

  • RTOS - the Ada procedure and its ZFP run-time in a process, thread, or task within an RTOS; to and from the file I/O via the RTOS messaging or mailbox functions and Ada's C interface package.
  • C library - via Ada's C interface if the C library is per the pre-conditions for ZFP.

Otherwise, a typical GCC-based Ada has the Ada run-time on POSIX.

Therefore, a reasonably complete file system is available via an OS or some RTOS; an example is the port to Raspberry Pi 2.

 


http://libre.adacore.com/developers/documentation

http://libre.adacore.com/tools/gnat-component-collection/

Logo

GNATColl 17.0w documentation

6. Mmap: Reading and Writing Files

http://docs.adacore.com/gnatcoll-docs/mmap.html

...

GNATColl’s GNATCOLL.Mmap package provides a high-level abstraction on top of the mmap system call.

...

Logo

GNATColl 17.0w documentation

13. VFS: Manipulating Files

http://docs.adacore.com/gnatcoll-docs/vfs.html

...

13.3. Virtual files

...

Logo

GNAT User's Guide Supplement for GNAT Pro Safety-Critical and GNAT Pro High-Security 17.0w documentation

4. The Predefined Profiles

http://docs.adacore.com/gnathie_ug-docs/html/gnathie_ug/gnathie_ug/the_predefined_profiles.html

 http://www.adacore.com/press/adacore-introduces-gnat-gpl-2015-for-the-raspberry-pi-2/

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Mar 28, 2016 - 06:56 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Libre

Libre News

http://libre.adacore.com/news/

GNAT and SPARK GPL 2016 released!

New board support :

https://github.com/AdaCore/Ada_Drivers_Library/tree/master/boards/OpenMV2

OpenMV

Small - Affordable - Expandable

Machine Vision with Python!

About

https://openmv.io/about/

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

ARM Connected Community

Embedded: Ada Driver Library for ARM Cortex-M/R...

by Fabien Chouteau (AdaCore)

Jul 8, 2016

https://community.arm.com/groups/embedded/blog/2016/07/08/ada-driver-library

... (STM) with the intent of supporting additional Cortex-M and Cortex-R vendors in the future.

...

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The AdaCore Blog

GNAT GPL 2017 is out!

by Pierre-Marie de Rodat, Nicolas Setton

Jun 15, 2017

http://blog.adacore.com/gnat-gpl-2017-is-out

...

 

This release supports the ARM ELF bare metal target, hosted on Windows and Linux, as well as the following native platforms:

  • Mac OS (64 bits)
  • Linux (64 bits)
  • Windows (32 bits)

 

The GNATemulator technology has been added to the bare metal target, making it easier to develop and test on those platforms.

The compiler toolchain is now based on GCC 6. The native runtime comes with a Zero Foot Print runtime, and the ARM ELF compiler comes with runtimes for a variety of boards, including support for the Raspberry Pi 2.

The latest version of the GPS IDE comes with many bug fixes and enhancements, notably in the areas of debugger integration and support for bare-metal development.

...


http://libre.adacore.com/

http://docs.adacore.com/gnatemulator-docs/arm-elf-example.html

https://github.com/AdaCore/embedded-runtimes

http://libre.adacore.com/tools/gps/

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Libre has been folded into AdaCore.

AdaCore

Community
https://www.adacore.com/community

The Ada community is passionate about building dependable, high-integrity software.

...

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The AdaCore Blog

GNAT Community 2018 is here!

by Emma AdbyFabien Chouteau

Jun 26, 2018

https://blog.adacore.com/gnat-community-2018

...

 

What’s new?

 

BBC micro:bit first class support

We decided to adopt the micro:bit as our reference platform for teaching embedded Ada and SPARK. We chose the micro:bit for its worldwide availability, great value for a low price and the included hardware debugger. You can get one at:

...

 

RISC-V support

...

 

Find SPARK included in the package by default

...

 

Windows 64bit is finally here

...

 

Arm-elf hosted on Mac

...

P.S.

Another US source for BBC micro:bit is SparkFun via Mouser.

micro:bit - SparkFun Electronics

https://www.sparkfun.com/categories/284

https://www.mouser.com/new/sparkfun/sparkfun-bbc-microbit/

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The AdaCore Blog

Ada on the micro:bit

by Fabien Chouteau

Feb 26, 2018

https://blog.adacore.com/ada-on-the-microbit

Updated July 2018

...

 

In the meantime, here is an example of the kind of project that you can do with Ada on the Micro:Bit

[video 3m47s]

[open the video's comments to see the reply from Wintergatan]

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I guess this whole thread started before there was an ARM Cortex forum - but should it now be moved to the ARM Cortex forum ... ?

 

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

No as AdaCore Community doesn't have much SAM (SAM 4S, SAM G55)

An advantage of a thread move would be to make it public by moving it out of the private Off Topic sub-forum.

 

https://github.com/AdaCore/bb-runtimes/tree/community-2018/arm/sam

via https://www.adacore.com/community

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

in addition to GNAT Community 2018, today's e-mail has :

...

 

Learn.adacore.com

As an added bonus to this year’s GNAT Community 2018 release, we are very happy to announce the launch of learn.adacore.com, an interactive learning platform designed to teach the Ada and SPARK programming languages!

This new website is designed for individuals who want to get up and running with Ada/SPARK, and also for teams or teachers looking for training or tutorial material. Read more about it here.

Feeling inspired and want to start Making with Ada today? Get started early for this year’s Make With Ada Competition! https://www.makewithada.org/

 

...

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Is AdaCore seeing much Ada being used on ARM, including the smaller M parts?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
Is AdaCore seeing much Ada being used on ARM, ...
A guess is a relative yes as AdaCore recently added several levels to their GNAT Pro product including a reduced price developer version (arm, RISC-V); 'relative' as PowerPC was primary (avionics, vehtronics, mechatronics)

kk6gm wrote:
... including the smaller M parts?
Yes at least for GNAT Community 2018 and arm Cortex-M0 (BBC micro:bit); 2017 and earlier was mostly on ST arm Cortex-M development boards.

 


AdaCore​

GNAT Pro Comparison

https://www.adacore.com/gnatpro/comparison

Electronic Design

Electronic Design

GNAT Pro Developer Cuts Ada, SPARK Development Costs

The affordability of AdaCore’s GNAT Pro Developer opens the door to more programmers who’d like to take advantage of Ada and SPARK.

by William Wong

Dec 07, 2017

https://www.electronicdesign.com/embedded-revolution/gnat-pro-developer-cuts-ada-spark-development-costs

...

AdaCore recently revamped and partitioned the product line into four editions: GNAT Pro Assurance, GNAT Pro Enterprise, GNAT Pro Developer, and the free, open-source GNAT Pro Community.

...

 

Developer and Community

The new Developer edition targets new Ada and SPARK developers.

...

Its pricing is on par with commercial C/C++ development suites. It provides direct support and access to the continuous patched releases. The community edition gets updated, but with a longer update cycle [1y].

...

All editions support bare-metal Arm platforms as well as embedded Linux. And all but the Community edition support QNX. This is significant, since QNX is used in high-reliability and safety application areas such as automotive.

...

Companies looking to develop safe, secure, bug-free code for their applications should consider the advantages of using Ada and SPARK. Getting started is now more economical.

 

arm Cortex-M1 in FPGA :

https://github.com/AdaCore/bb-runtimes/tree/community-2018/arm/igloo

https://www.microsemi.com/product-directory/fpgas/1689-igloo#igloo-e

 

nRF51 (arm Cortex-M0) on BBC micro:bit :

https://github.com/AdaCore/bb-runtimes/tree/community-2018/arm/nordic

https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822

 

Edit : 2nd URL

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Fri. Jul 27, 2018 - 10:50 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Electronic Design

Electronic Design

You Can Now Learn SPARK and Ada Online

AdaCore’s "learn.adacore.com" site teaches Ada and SPARK programming using interactive sessions.

by William Wong

Jul 26, 2018

https://www.electronicdesign.com/embedded-revolution/you-can-now-learn-spark-and-ada-online

...

If you like some heavy reading, then check out John Barne’s Programming in Ada 2012. This rather hefty book is in depth and a useful reference, but not a great idea for novice Ada programmers.

Instead, I recommend AdaCore’s new learn.adacore.com website (Fig. 1)

...

The Ada and SPARK courses are extensive but not exhaustive.

...

[AdaCore's CWE mitigations]

...

 

P.S.

Using programming languages like C and C++ to develop these types of applications [safe, secure, and reliable], so that developers can improve the quality of their code, usually means relying on additional software such as static-analysis tools.

lint and assert go a long way at zero price and low cost.

Static-analysis tools may implement software development process requirements for safety and/or security.

 

P.P.S.

Ada and it subset, SPARK, incorporate most features addressed by static-analysis tools.

One of the Ada static-analysis tools :

https://www.adacore.com/codepeer

 


What is "Static Code Analysis"?

by ka7ehk

https://www.avrfreaks.net/forum/what-static-code-analysis

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

GNAT Community 2019 is here! - The AdaCore Blog

by Nicolas Setton

Jun 05, 2019

...

  • RISC-V hosted on Linux

  • ARM 32 bits hosted on 64-bit Linux, Mac, and Windows

...

 

Check out the README for some additional platform-specific notes.

[macOS - Xcode 10 or subsequent is required, OpenSUSE - an ld correction, Linux - a udev USB how to]

 

...

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Do you know if the CCG (Common Code Generator), that translates an Ada subset into C, is available in the community version?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Not available in GNAT Community Edition though CCG should be in GNAT Pro Developer as that can also build C.

Haven't inquired the price of GNAT Pro Developer though it was created to reduce the gap between GNAT Community Edition and GNAT Pro Enterprise (that's expensive)

 

1. Getting Started — GNAT Pro Common Code Generator User's Guide Supplement 20.0w documentation

(nearly complete fixed point math, last chance exception handling that's akin to how exceptions are done in C, no overflow checks so consider enabling assertions)

 

GNAT Pro Comparison - Adacore

 

more :

https://www.avrfreaks.net/forum/jack-ganssles-reason-8-why-embedded-software-projects-run-trouble#comment-2594186

 


AVR - IIRC, there's a post in this forum stating a successful build of AVR GNAT from FSF GCC 8 or from GNAT Community Edition; AVR-Ada was recently updated.

CCG would be a fit for PIC, PIC24, and dsPIC; PIC32 - MIPS is in FSF GCC so simply build the Ada part of FSF GCC (runtime would be some effort though doable for some functionality besides Zero Footprint Profile [ZFP])

SAM - a few are already there; for others :

bb-runtimes/doc/porting_runtime_for_cortex_m at community-2018 · AdaCore/bb-runtimes · GitHub

RISC-V - that may take some thought (CPU configuration is very flexible)

MSP430TM - in FSF GCC (add the Ada part to the C part, likely will be ZFP)

 

https://sourceforge.net/p/avr-ada/mailman/avr-ada-devel/?viewmonth=201903

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

SAM - a few are already there;

additional is

https://github.com/AdaCore/bb-runtimes/tree/master/arm/sam/samv71

 

Add Microsemi CoreCortexM1 BSP · AdaCore/bb-runtimes@1fd54d0 · GitHub

 


SAM V MCUs | Microchip Technology

Scale Space Applications with COTS-to-Radiation-Tolerant and Radiation-Hardened Arm® Core MCUs | Microchip Technology

[end of first paragraph]

Based on the automotive-qualified SAMV71, the SAMV71Q21RT radiation-tolerant and SAMRH71 radiation-hardened MCUs implement the widely deployed Arm® Cortex®-M7 System on Chip (SoC), enabling more integration, cost reduction and higher performance in space systems.

FPGAs | Microsemi

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

kk6gm wrote:
Ada has been used in military and space systems that had much less memory than the parts we can now buy for a few dollars.
Some traction somewhat due to new customers.

Witnessing the Emergence of a New Ada Era - The AdaCore Blog

by Quentin Ochem

Jan 21, 2020

...

Even if we’ve been able to report some successes over the years, we were falling short of the critical mass.

Or so it seemed.

The tide has turned. 

...

 

The Established User Base

[avionics, defense]

...

Some applications are still maintained today on hardware dating as far back as Motorola 68K or Intel i386 series, while others are deployed on the latest ARM Cortex or RISC-V cores.

...

 

The Emerging Adopters

[academia, automotive, medical devices (Real Heart, ECG : Hillrom | Enhancing outcomes for patients and their caregivers), security]

[standards lead to requirements : reliability, safety, security]

...

 

Wrapping Up

...

Everything considered, this is a very exciting time for the Ada and SPARK languages. 

...

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

"Dare to be naïve." - Buckminster Fuller

Last Edited: Thu. Oct 15, 2020 - 11:03 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

"Dare to be naïve." - Buckminster Fuller

Pages