diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h index c85d29317b..ef09fd7f0b 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h @@ -78,6 +78,10 @@ struct flash_s { uint8_t not_used; }; +struct trng_s { + uint8_t not_used; +}; + #include "gpio_object.h" #ifdef __cplusplus diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c new file mode 100644 index 0000000000..ef2e278cbe --- /dev/null +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017-2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing software + * distributed under the License is distributed on an "AS IS" BASIS + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "trng_api.h" +#include "device.h" +#include + +/** NOTE: FastModel are software models not contain any TRNG peripheral + * So C library srand() and rand() are used to simulate TRNG device + */ + +void trng_init(trng_t *obj) +{ + srand(0); + (void)obj; +} + + +void trng_free(trng_t *obj) +{ + (void)obj; +} + +/** Get random data from TRNG peripheral + * + * @param obj The TRNG object + * @param output The pointer to an output array + * @param length The size of output data, to avoid buffer overwrite + * @param output_length The length of generated data + * @return 0 success, -1 fail + */ +int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t *output_length) +{ + (void)obj; + + for (int i = 0; i < length; ++i) { + output[i] = rand() % 256; + } + *output_length = length; + + return 0; +} diff --git a/targets/targets.json b/targets/targets.json index 56864901a8..10b765ff8b 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -8609,7 +8609,7 @@ "ARM_FM": { "inherits": ["Target"], "public": false, - "extra_labels": ["ARM_FM"] + "extra_labels": ["ARM_FM","PSA"] }, "FVP_MPS2": { "inherits": ["ARM_FM"], @@ -8633,6 +8633,7 @@ "SPI", "SPISLAVE", "TSC", + "TRNG", "USTICKER" ], "release_versions": ["5"],