Skip to content

Commit

Permalink
Release 6.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
TiejunMS committed Oct 26, 2022
1 parent cec32ac commit 1f89b39
Show file tree
Hide file tree
Showing 122 changed files with 17,871 additions and 17,685 deletions.
140 changes: 70 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,107 +6,107 @@ Azure RTOS GUIX Studio provides a complete, embedded graphical user interface (G

The Azure RTOS GUIX Studio installer is available here: https://aka.ms/azrtos-guix-installer.

## Documentation
Here are the key features and modules of GUIX:

Documentation for this library can be found here: http://docs.microsoft.com/azure/rtos/guix
![GUIX Key Features](./docs/guix-features.png)

# Understanding inter-component dependencies
## Getting Started

The main components of Azure RTOS are each provided in their own repository, but there are dependencies between them--shown in the following graph--that are important to understand when setting up your builds.
Azure RTOS GUIX as part of Azure RTOS has been integrated to the semiconductor's SDKs and development environment. You can develop using the tools of choice from [NXP](https://www.nxp.com/design/software/embedded-software/azure-rtos-for-nxp-microcontrollers:AZURE-RTOS), [Renesas](https://github.com/renesas/azure-rtos) and [Microchip](https://mu.microchip.com/get-started-simplifying-your-iot-design-with-azure-rtos).

![dependency graph](docs/deps.png)
We also [samples](https://github.com/azure-rtos/samples) using hero development boards from semiconductors you can build and test with.

See [Overview of Azure RTOS GUIX](https://learn.microsoft.com/azure/rtos/guix/overview-guix) for the high-level overview, and all documentation and APIs can be found in: [Azure RTOS GUIX documentation](https://learn.microsoft.com/azure/rtos/guix/).

# Building and using the library
## Repository Structure and Usage

## Prerequisites
### Directory layout

Install the following tools:
.
├── cmake # CMakeList files for building the project
├── common # Core GUIX files
├── fonts # Fonts required by GUIX
├── graphics # Graphic assets
├── ports # Architecture and compiler specific files
├── samples # Sample codes
├── tutorials # More sample codes
├── LICENSE.txt # License terms
├── LICENSE-HARDWARE.txt # Licensed hardware from semiconductors
├── CONTRIBUTING.md # Contribution guidance
└── SECURITY.md # Microsoft repo security guidance

* [CMake](https://cmake.org/download/) version 3.0 or later
* [GCC compilers for arm-none-eabi](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads)
* [Ninja](https://ninja-build.org/)
### Branches & Releases

## Cloning the repo
The master branch has the most recent code with all new features and bug fixes. It does not represent the latest General Availability (GA) release of the library. Each official release (preview or GA) will be tagged to mark the commit and push it into the Github releases tab, e.g. `v6.2-rel`.

```bash
$ git clone https://github.com/azure-rtos/guix.git
```
## Component dependencies

## Building as a static library
The main components of Azure RTOS are each provided in their own repository, but there are dependencies between them, as shown in the following graph. This is important to understand when setting up your builds.

Each component of Azure RTOS comes with a composible CMake-based build system that supports many different MCUs and host systems. Integrating any of these components into your device app code is as simple as adding a git submodule and then including it in your build using the CMake command `add_subdirectory()`.
![dependency graph](docs/deps.png)

While the typical usage pattern is to include threadx into your device code source tree to be built & linked with your code, you can compile this project as a standalone static library to confirm your build is set up correctly.
> You will have to take the dependency graph above into account when building anything other than ThreadX itself.
```bash
$ cmake -Bbuild -DCMAKE_TOOLCHAIN_FILE=cmake/cortex_m4.cmake -GNinja .
### Building and using the library

$ cmake --build ./build
```
Instruction for building the GUIX as static library using Arm GNU Toolchain and CMake. If you are using toolchain and IDE from semiconductor, you might follow its own instructions to use Azure RTOS components as explained in the [Getting Started](#getting-started) section.

NOTE: You will have to take the dependency graph above into account when building anything other than threadx itself.
1. Install the following tools:

# Repository Structure and Usage
* [CMake](https://cmake.org/download/) version 3.0 or later
* [Arm GNU Toolchain for arm-none-eabi](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads)
* [Ninja](https://ninja-build.org/)

## Branches & Releases
1. Build the [ThreadX library](https://github.com/azure-rtos/threadx#building-and-using-the-library) as the dependency.

The master branch has the most recent code with all new features and bug fixes. It does not represent the latest General Availability (GA) release of the library.
1. Cloning the repo.

## Releases
```bash
$ git clone https://github.com/azure-rtos/guix.git
```

Each official release (preview or GA) will be tagged to mark the commit and push it into the Github releases tab, e.g. `v6.0-rel`.
1. Define the features and addons you need in `gx_user.h` and build together with the component source code. You can refer to [`gx_user_sample.h`](https://github.com/azure-rtos/guix/blob/master/common/inc/gx_user_sample.h) as an example.

## Directory layout
1. Building as a static library

```
- cmake
- common
- inc
- src
- ports
- cortex_m0/gnu
- inc
- src
- cortex_m3/gnu
- inc
- src
- cortex_m4/gnu
- inc
- src
- cortex_m7/gnu
- inc
- src
- samples
```
Each component of Azure RTOS comes with a composable CMake-based build system that supports many different MCUs and host systems. Integrating any of these components into your device app code is as simple as adding a git submodule and then including it in your build using the CMake `add_subdirectory()`.
# Security
While the typical usage pattern is to include GUIX into your device code source tree to be built & linked with your code, you can compile this project as a standalone static library to confirm your build is set up correctly.
Azure RTOS provides OEMs with components to secure communication and to create code and data isolation using underlying MCU/MPU hardware protection mechanisms. It is ultimately the responsibility of the device builder to ensure the device fully meets the evolving security requirements associated with its specific use case.
An example of building the library for Cortex-M4:
```bash
$ cmake -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=cmake/cortex_m4.cmake .

$ cmake --build ./build
```

# Licensing
## Professional support

License terms for using Azure RTOS are defined in the LICENSE.txt file of this repo. Please refer to this file for all definitive licensing information. No additional license fees are required for deploying Azure RTOS on hardware defined in the LICENSED-HARDWARE.txt file. If you are using hardware not defined in the LICENSED-HARDWARE.txt file or have licensing questions in general, please contact Microsoft directly at https://aka.ms/azrtos-license.
[Professional support plans](https://azure.microsoft.com/support/options/) are available from Microsoft. For community support and others, see the [Resources](#resources) section below.

# Contribution, feedback, issues, and professional support
## Licensing

If you encounter any bugs, have suggestions for new features, or if you would like to become an active contributor to this project, please follow the instructions provided in the contribution guideline for the corresponding repo.
License terms for using Azure RTOS are defined in the LICENSE.txt file of this repo. Please refer to this file for all definitive licensing information. No additional license fees are required for deploying Azure RTOS on hardware defined in the [LICENSED-HARDWARE.txt](./LICENSED-HARDWARE.txt) file. If you are using hardware not listed in the file or having licensing questions in general, please contact Microsoft directly at https://aka.ms/azrtos-license.

For basic support, click Issues in the command bar or post a question to [Stack Overflow](http://stackoverflow.com/questions/tagged/azure-rtos+threadx) using the `threadx` and `azure-rtos` tags.
## Resources

Professional support plans (https://azure.microsoft.com/en-us/support/options/) are available from Microsoft.
The following are references to additional Azure RTOS resources:

- **Product introduction and white papers**: https://azure.com/rtos
- **General technical questions**: https://aka.ms/QnA/azure-rtos
- **Product issues and bugs, or feature requests**: https://github.com/azure-rtos/guix/issues
- **Licensing and sales questions**: https://aka.ms/azrtos-license
- **Product roadmap and support policy**: https://aka.ms/azrtos/lts
- **Blogs and videos**: http://msiotblog.com and https://aka.ms/iotshow
- **Azure RTOS TraceX Installer**: https://aka.ms/azrtos-tracex-installer

You can also check [previous questions](https://stackoverflow.com/questions/tagged/azure-rtos+guix) or ask new ones on StackOverflow using the `azure-rtos` and `guix` tags.

## Security

Azure RTOS provides OEMs with components to secure communication and to create code and data isolation using underlying MCU/MPU hardware protection mechanisms. It is ultimately the responsibility of the device builder to ensure the device fully meets the evolving security requirements associated with its specific use case.

# Additional Resources
## Contribution

The following are references to additional Azure RTOS and Azure IoT in general:
| Content | Link |
|---|---|
| TraceX Installer | https://aka.ms/azrtos-tracex-installer |
| Azure RTOS Documentation and Guides: | https://docs.microsoft.com/azure/rtos |
| Azure RTOS Website: | https://azure.microsoft.com/services/rtos/ |
| Azure RTOS Sales Questions: | https://aka.ms/azrtos-license |
| Azure RTOS Product Support Policy | https://aka.ms/azrtos/lts |
| Azure RTOS Functional Safety Artifacts | https://aka.ms/azrtos/tuv |
| For technical questions check out Microsoft Q/A for Azure IoT | https://aka.ms/QnA/azure-rtos |
| Internet of Things Show for latest announcements and online training | https://aka.ms/iotshow |
| IoT Tech Community | https://aka.ms/community/azure-rtos |
Please follow the instructions provided in the [CONTRIBUTING.md](./CONTRIBUTING.md) for the corresponding repository.
12 changes: 8 additions & 4 deletions common/inc/gx_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */
/* */
/* gx_api.h PORTABLE C */
/* 6.1.12 */
/* 6.2.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
Expand Down Expand Up @@ -96,6 +96,11 @@
/* added new style */
/* GX_STYLE_REPEAT_SELECT, */
/* resulting in version 6.1.12 */
/* 10-31-2022 Kenneth Maxwell Modified comment(s), */
/* removed unused style flag */
/* GX_SCROLLBAR_BACKGROUND_ */
/* TILE, */
/* resulting in version 6.2.0 */
/* */
/**************************************************************************/

Expand All @@ -118,8 +123,8 @@ extern "C" {

#define AZURE_RTOS_GUIX
#define GUIX_MAJOR_VERSION 6
#define GUIX_MINOR_VERSION 1
#define GUIX_PATCH_VERSION 12
#define GUIX_MINOR_VERSION 2
#define GUIX_PATCH_VERSION 0

/* The following symbols are defined for backward compatibility reasons.*/
#define __PRODUCT_GUIX__
Expand Down Expand Up @@ -872,7 +877,6 @@ typedef struct GX_STRING_STRUCT

/* Define Scroll Bar styles. */

#define GX_SCROLLBAR_BACKGROUND_TILE 0x00010000UL
#define GX_SCROLLBAR_RELATIVE_THUMB 0x00020000UL
#define GX_SCROLLBAR_END_BUTTONS 0x00040000UL
#define GX_SCROLLBAR_VERTICAL 0x01000000UL
Expand Down
32 changes: 20 additions & 12 deletions common/inc/gx_image_reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* gx_image_reader.h PORTABLE C */
/* 6.1.7 */
/* 6.2.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
Expand All @@ -48,6 +48,10 @@
/* improved png decoding */
/* performance, */
/* resulting in version 6.1.7 */
/* 10-31-2022 Kenneth Maxwell Modified comment(s), */
/* added definitions for fixed */
/* size table dimensions, */
/* resulting in version 6.2.0 */
/* */
/**************************************************************************/
#if defined(GX_SOFTWARE_DECODER_SUPPORT)
Expand All @@ -72,41 +76,45 @@
#define GX_PNG_HUFFMAN_LIT_TABLE_SIZE 286
#define GX_PNG_HUFFMAN_LIT_CODE_LEN_TABLE_SIZE 288
#define GX_PNG_HUFFMAN_DIST_CODE_LEN_TABLE_SIZE 32
#define GX_PNG_HUFFMAN_DIST_TABLE_SIZE 30
#define GX_PNG_PALETTE_TABLE_SIZE 256
#define GX_PNG_SCRATCH_BUFFER_SIZE (GX_PNG_CRC_TABLE_SIZE + \
GX_PNG_HUFFMAN_LIT_TABLE_SIZE + \
GX_PNG_HUFFMAN_LIT_CODE_LEN_TABLE_SIZE + \
GX_PNG_HUFFMAN_DIST_CODE_LEN_TABLE_SIZE + \
GX_PNG_PALETTE_TABLE_SIZE)
#define JPG_MAX_COMPONENTS 3
#define HUFF_TABLE_DIMENSION 2
#define JPG_QUANT_TABLE_DIMENSION 4

/* Control block used internally for jpeg reader. */

typedef struct GX_JPEG_INFO_STRUCT
{
UINT (*gx_jpeg_mcu_draw)(struct GX_JPEG_INFO_STRUCT *, INT, INT);
USHORT gx_jpeg_width;
USHORT gx_jpeg_height;
INT gx_jpeg_num_of_components;
GX_UBYTE gx_jpeg_sample_factor[3];
GX_UBYTE gx_jpeg_component_id[3];
GX_UBYTE gx_jpeg_qantization_table_index[3];
GX_UBYTE gx_jpeg_dc_table_index[3];
GX_UBYTE gx_jpeg_ac_table_index[3];
INT gx_jpeg_quantization_table[4][64];
INT *gx_jpeg_huffman_table[2][2];
GX_VALUE gx_jpeg_huffman_bits_count[2][2][16];
GX_UBYTE gx_jpeg_sample_factor[JPG_MAX_COMPONENTS];
GX_UBYTE gx_jpeg_component_id[JPG_MAX_COMPONENTS];
GX_UBYTE gx_jpeg_qantization_table_index[JPG_MAX_COMPONENTS];
GX_UBYTE gx_jpeg_dc_table_index[JPG_MAX_COMPONENTS];
GX_UBYTE gx_jpeg_ac_table_index[JPG_MAX_COMPONENTS];
INT gx_jpeg_quantization_table[JPG_QUANT_TABLE_DIMENSION][64];
INT *gx_jpeg_huffman_table[HUFF_TABLE_DIMENSION][HUFF_TABLE_DIMENSION];
GX_VALUE gx_jpeg_huffman_bits_count[HUFF_TABLE_DIMENSION][HUFF_TABLE_DIMENSION][16];
INT gx_jpeg_restart_interval;
GX_UBYTE gx_jpeg_Y_block[256];
GX_UBYTE gx_jpeg_Cr_block[64];
GX_UBYTE gx_jpeg_Cb_block[64];
INT gx_jpeg_pre_dc[3];
INT gx_jpeg_pre_dc[JPG_MAX_COMPONENTS];
INT gx_jpeg_vecter[64];
GX_UBYTE *gx_jpeg_data;
INT gx_jpeg_data_size;
INT gx_jpeg_data_index;
GX_UBYTE *gx_jpeg_decoded_data;
UINT gx_jpeg_decoded_data_size;
GX_DRAW_CONTEXT *gx_jpeg_draw_context;
UINT (*gx_jpeg_mcu_draw)(struct GX_JPEG_INFO_STRUCT *, INT, INT);
INT gx_jpeg_draw_xpos;
INT gx_jpeg_draw_ypos;
} GX_JPEG_INFO;
Expand Down Expand Up @@ -134,7 +142,7 @@ typedef struct GX_PNG_STRUCT
INT *gx_png_huffman_lit_table; /* 286 */
INT *gx_png_huffman_lit_code_len; /* 286 */
INT gx_png_huffman_lit_bits_count[17];
INT gx_png_huffman_dist_table[30];
INT gx_png_huffman_dist_table[GX_PNG_HUFFMAN_DIST_TABLE_SIZE];
INT *gx_png_huffman_dist_code_len; /* 32 */
INT gx_png_huffman_dist_bits_count[17];
GX_COLOR *gx_png_palette_table; /* 256 */
Expand Down
8 changes: 6 additions & 2 deletions common/inc/gx_scroll_wheel.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
/* COMPONENT DEFINITION RELEASE */
/* */
/* gx_scroll_wheel.h PORTABLE C */
/* 6.1.7 */
/* 6.2.0 */
/* AUTHOR */
/* */
/* Kenneth Maxwell, Microsoft Corporation */
Expand All @@ -50,6 +50,10 @@
/* generic scroll wheel, */
/* resulting in version 6.1.7 */
/* */
/* 10-31-2022 Kenneth Maxwell Modified comment(s), */
/* changed prototype for */
/* generic_scroll_wheel_scroll,*/
/* resulting in version 6.2.0 */
/**************************************************************************/

#ifndef GX_SCROLL_WHEEL_H
Expand Down Expand Up @@ -139,7 +143,7 @@ VOID _gx_generic_scroll_wheel_down_wrap(GX_GENERIC_SCROLL_WHEEL *wheel);
VOID _gx_generic_scroll_wheel_draw(GX_GENERIC_SCROLL_WHEEL *wheel);
UINT _gx_generic_scroll_wheel_event_process(GX_GENERIC_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr);
UINT _gx_generic_scroll_wheel_row_height_set(GX_GENERIC_SCROLL_WHEEL *wheel, GX_VALUE row_height);
VOID _gx_generic_scroll_wheel_scroll(GX_GENERIC_SCROLL_WHEEL *wheel, GX_VALUE shift);
INT _gx_generic_scroll_wheel_scroll(GX_GENERIC_SCROLL_WHEEL *wheel, GX_VALUE shift);
UINT _gx_generic_scroll_wheel_total_rows_set(GX_GENERIC_SCROLL_WHEEL *wheel, INT count);
VOID _gx_generic_scroll_wheel_up_wrap(GX_GENERIC_SCROLL_WHEEL *wheel);
GX_BOOL _gx_generic_scroll_wheel_wrap_style_check(GX_GENERIC_SCROLL_WHEEL *wheel);
Expand Down
Loading

0 comments on commit 1f89b39

Please sign in to comment.