Merge pull request #9395 from jflyper/bfdev-g4-memprot

[G4] MEMPROT support
This commit is contained in:
Michael Keller 2020-01-24 12:52:47 +13:00 committed by GitHub
commit e5205dfafb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,74 @@
/*
* This file is part of Cleanflight and Betaflight.
*
* Cleanflight and Betaflight are free software. You can redistribute
* this software and/or modify this software under the terms of the
* GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* Cleanflight and Betaflight are distributed in the hope that they
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software.
*
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "platform.h"
#include "memprot.h"
// Defined in linker script
extern uint8_t dma_ram_r_start;
extern uint8_t dma_ram_r_end;
extern uint8_t dma_ram_w_start;
extern uint8_t dma_ram_w_end;
extern uint8_t dma_ram_rw_start;
extern uint8_t dma_ram_rw_end;
mpuRegion_t mpuRegions[] = {
{
// DMA_RAM_R
// DMA receive buffer in SRAM
.start = (uint32_t)&dma_ram_r_start,
.end = (uint32_t)&dma_ram_r_end,
.size = 0, // Size determined by ".end"
.perm = MPU_REGION_FULL_ACCESS,
.exec = MPU_INSTRUCTION_ACCESS_ENABLE,
.shareable = MPU_ACCESS_SHAREABLE,
.cacheable = MPU_ACCESS_NOT_CACHEABLE,
.bufferable = MPU_ACCESS_BUFFERABLE,
},
{
// DMA_RAM_W
// DMA transmit buffer in SRAM
.start = (uint32_t)&dma_ram_w_start,
.end = (uint32_t)&dma_ram_w_end,
.size = 0, // Size determined by ".end"
.perm = MPU_REGION_FULL_ACCESS,
.exec = MPU_INSTRUCTION_ACCESS_ENABLE,
.shareable = MPU_ACCESS_SHAREABLE,
.cacheable = MPU_ACCESS_CACHEABLE,
.bufferable = MPU_ACCESS_NOT_BUFFERABLE,
},
{
// DMA_RAM_RW
// DMA transmit and receive buffer in SRAM
.start = (uint32_t)&dma_ram_rw_start,
.end = (uint32_t)&dma_ram_rw_end,
.size = 0, // Size determined by ".end"
.perm = MPU_REGION_FULL_ACCESS,
.exec = MPU_INSTRUCTION_ACCESS_ENABLE,
.shareable = MPU_ACCESS_SHAREABLE,
.cacheable = MPU_ACCESS_NOT_CACHEABLE,
.bufferable = MPU_ACCESS_NOT_BUFFERABLE,
},
};
unsigned mpuRegionCount = ARRAYLEN(mpuRegions);