LoRaWAN网关---资源互斥与重入函数检查

15 篇文章 1 订阅
5 篇文章 1 订阅

资源互斥与重入函数

资源包括SPI接口、内部共享结构体、共享变量。

资源实在函数内部操作的,包括需要互斥的资源,因此函数和资源互斥一起考虑。

第一、SPI接口互斥检查

  1. 初始化—顺序执行一次,不用考虑。
  2. SX126X线程中断,TxDone,RxDone
  3. Jit线程—sendframe
  4. Up线程—receive和getcurrenttime

同一个线程内按顺序执行,因此不会被多个线程调用的函数不用关心。

共同执行的三个函数,要求可重入+锁住需要互斥的资源,

esp_err_t esp_spi2_wb(spi_device_handle_t lora_spi, uint8_t address, uint8_t *data, uint16_t size  )

esp_err_t esp_spi2_rb(spi_device_handle_t lora_spi, uint8_t address, uint8_t *data, uint16_t size)

esp_err_t esp_spi2_rb2(spi_device_handle_t lora_spi, uint8_t address, uint8_t *datawr, uint8_t *datard, uint16_t size)

--检查Ok

 

 第二、时间计数器互斥检查

只有FreeRTOS tick会更新,其它都是读取,是线程安全的。

SX1302内部会更新。

只在Up线程计算这两个计时器的差值。是线程安全的。

 第三、统计计数器

--计数器初始化,

--计数器增加,

--计数器清零

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值