Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ ENV DEBIAN_FRONTEND noninteractive
WORKDIR /app
COPY . /app

RUN apt update && apt-get install -y cmake git gcc-arm-none-eabi locales python python-pip
RUN apt update && apt-get install -y cmake git wget locales python python-pip
RUN mkdir ~/Downloads && cd ~/Downloads && wget -O gcc.tar.bz2 https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2?revision=bc2c96c0-14b5-4bb4-9f18-bceb4050fee7?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,7-2018-q2-update
RUN cd ~/Downloads && tar -xjvf gcc.tar.bz2
RUN cd ~/Downloads && rsync -a gcc-arm-none-eabi-7-2018-q2-update/ /usr/local/
RUN apt install -y libbz2-1.0 libncurses5 libz1 valgrind astyle clang libudev-dev python-urllib3 libssl1.0-dev
RUN apt install -y libbz2-dev libbz2-dev libbz2-1.0 libncurses5 libz1 valgrind astyle clang libudev-dev python-urllib3
RUN pip install --prefix /usr/local cpp-coveralls
Expand Down
4 changes: 2 additions & 2 deletions firmware.ld
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ SEARCH_DIR(.)
MEMORY
{
rom (rx) : ORIGIN = 0x00409000, LENGTH = 0x00037000
ramf (rx) : ORIGIN = 0x20000000, LENGTH = 0x000000fc
ram (rw) : ORIGIN = 0x200000fc, LENGTH = 0x0000FF04
ramf (rx) : ORIGIN = 0x20000000, LENGTH = 0x000000f8
ram (rw) : ORIGIN = 0x200000f8, LENGTH = 0x0000FF08
}

__stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 0x2800;
Expand Down
16 changes: 7 additions & 9 deletions src/mpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,30 +82,28 @@ extern uint32_t _ebss;
extern uint32_t _sbss;
extern uint32_t _sdata;
extern uint32_t _sstack;
extern uint32_t __stack_size__;

/**
* Enables execution protection for the SRAM region.
*/
static void mpu_sram_nx(void)
{
// Configure SRAM region, protect from execution
MPU->RBAR = IRAM_ADDR | MPU_REGION_VALID | rn_sram;
MPU->RASR = MPU_REGION_ENABLE | MPU_REGION_NORMAL | mpu_region_size(
IRAM_SIZE) | MPU_REGION_STATE_RO;

MPU->RBAR = (uint32_t) &_sdata | MPU_REGION_VALID | rn_data;
MPU->RASR = MPU_REGION_ENABLE | MPU_REGION_NORMAL | mpu_region_size((
uint32_t) &_erelocate -
(uint32_t) &_sdata) | MPU_REGION_STATE_RW | MPU_REGION_STATE_XN;
MPU->RASR = MPU_REGION_ENABLE | MPU_REGION_NORMAL | mpu_region_size(
(uint32_t) &_sbss - (uint32_t) &_sdata) | MPU_REGION_STATE_RW | MPU_REGION_STATE_XN;

MPU->RBAR = (uint32_t) &_sbss | MPU_REGION_VALID | rn_bss;
MPU->RASR = MPU_REGION_ENABLE | MPU_REGION_NORMAL |
mpu_region_size((uint32_t) &_ebss - (uint32_t) &_sbss) |
MPU_REGION_STATE_RW;
MPU->RASR = MPU_REGION_ENABLE | MPU_REGION_NORMAL | mpu_region_size(
(uint32_t) &_sstack - (uint32_t) &_sbss) | MPU_REGION_STATE_RW | MPU_REGION_STATE_XN;

MPU->RBAR = (uint32_t) &_sstack | MPU_REGION_VALID | rn_stack;
MPU->RASR = MPU_REGION_ENABLE | MPU_REGION_NORMAL | mpu_region_size((
IRAM_ADDR + IRAM_SIZE) -
(uint32_t) &_sstack) | MPU_REGION_STATE_RW | MPU_REGION_STATE_XN;
uint32_t) __stack_size__) | MPU_REGION_STATE_RW;
}

/**
Expand Down