We use cookies to improve your experience, deliver personalized content and ads, and analyze website performance. By clicking “Accept All”, you agree to our use of cookies as described in our Privacy Policy
my_sensor_partition.c :
#include "psa/service.h" #include "my_sensor_driver.h" psa_signal_t signals = 0;
To allow Non-Secure access, set non_secure_clients: true in the manifest. Then generate veneers. Non-secure client code: #include "psa_manifest/sid.h" // Auto-generated #include "my_sensor_partition_veneers.h" void app_main() int32_t temp; psa_status_t status = my_sensor_read(&temp); if (status == PSA_SUCCESS) printf("Temp: %d\n", temp);
while (1) signals = psa_wait(PSA_WAIT_ANY, BLOCKING); if (signals & MY_SENSOR_READ_SIGNAL) psa_msg_t msg; psa_get(MY_SENSOR_READ_SIGNAL, &msg); int32_t temp; my_sensor_read(&temp); psa_write(msg.handle, 0, &temp, sizeof(temp)); psa_reply(msg.handle, PSA_SUCCESS);
my_sensor_partition/ ├── CMakeLists.txt ├── my_sensor_driver.h ├── my_sensor_driver.c ├── my_sensor_partition.c └── my_sensor_partition.yaml my_sensor_partition.yaml :
#include "my_sensor_driver.h" #include "i2c_secure_driver.h" // hypothetical secure I2C driver psa_status_t my_sensor_read(int32_t *temperature) raw[1]); return PSA_SUCCESS;