Add Documentation for no-std

Acked-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Yuan Zhuang <yuanz@apache.org>
diff --git a/README.md b/README.md
index 5c0aa53..17cd7ee 100644
--- a/README.md
+++ b/README.md
@@ -14,9 +14,17 @@
 libraries (i.e., crates). Teaclave TrustZone SDK is a sub-project of [Apache
 Teaclave (incubating)](https://teaclave.apache.org/).
 
+Teaclave TrustZone SDK provides two development modes for Rust TAs: `no-std` 
+(check out the `no-std` branch) and `std` (check out the `master` branch). 
+We recommend using `no-std` by default. For a detailed comparison, please refer
+to [Comparison](#comparison).
+
 ## Table of Contents
 
-- [Quick start with the OP-TEE Repo for QEMUv8](#quick-start-with-the-op-tee-repo-for-qemuv8)
+- [TA Development Modes](#ta-development-modes)
+  - [Comparison](#comparison)
+  - [Supported Examples](#supported-examples)
+- [Quick Start with the OP-TEE Repo for QEMUv8](#quick-start-with-the-op-tee-repo-for-qemuv8)
 - [Getting started](#getting-started)
   - [Environment](#environment)
     - [Develop with QEMUv8](#develop-with-qemuv8)
@@ -25,11 +33,48 @@
   - [Run Rust Applications](#run-rust-applications)
     - [Run Rust Applications in QEMUv8](#run-rust-applications-in-qemuv8)
     - [Run Rust Applications on other platforms](#run-rust-applications-on-other-platforms)
+  - [Test](#test)
 - [Documentation](#documentation)
 - [Publication](#publication)
 - [Contributing](#contributing)
 - [Community](#community)
 
+
+## TA Development Modes
+
+### Comparison
+
+#### `no-std`
+
+- **Pros**:
+  - Reuses standard Rust tier-1 toolchain targets (`aarch64-unknown-linux-gnu`, 
+    `arm-unknown-linux-gnueabihf`).
+  - Significant performance improvements.
+  - Substantial reduction in binary size.
+  
+- **Cons**:
+  - Limited support for third-party crates. In the no-std mode, Trusted Applications
+   (TAs) are unable to utilize crates dependent on the standard library (std).
+
+#### `std`
+
+- **Pros**:
+  - Enables the utilization of more third-party crates, including those requiring
+    `std`, such as `serde_json` and `rustls`, which are essential for functionality.
+  
+- **Cons**:
+  - Manual porting of `std` with infrequent updates. Currently using `std` version
+   `1.56.1` and `Rust` version `nightly-2021-09-20`. (Planned to update)
+
+### Supported Examples
+
+- **Common**: See
+  [Overview of OP-TEE Rust Examples](https://teaclave.apache.org/trustzone-sdk-docs/overview-of-optee-rust-examples/).
+
+- **`no-std`**: Excludes `test_serde`, `test_tcp_client`, `test_udp_socket`,
+  `test_message_passing_interface`, `test_tls_client`, `test_tls_server`.
+
+
 ## Quick start with the OP-TEE Repo for QEMUv8
 
 Teaclave TrustZone SDK has been integrated into the OP-TEE Repo since OP-TEE
@@ -38,6 +83,9 @@
 documentation](https://optee.readthedocs.io/en/latest/building/optee_with_rust.html)
 to set up the OP-TEE repo and try the Rust examples!
 
+UPDATES: The `no-std` TA has replaced the original `std` TAs since OP-TEE 
+Release 4.1.0 (19/Jan/24).
+
 ## Getting started
 
 ### Environment
@@ -215,6 +263,12 @@
 
 Copy the applications to your platform and run.
 
+### Test
+
+In the `tests/` directory, we offer comprehensive tests for examples. The 
+applications can run on a pre-built QEMU image, independently of cloning the 
+OP-TEE repo. You can compose a simple test here to validate your application.
+
 ## Documentation
 
 - [Overview of OP-TEE Rust