cortex-m0

Cortex-M0 ARM-GCC 编译链接选项

为君一笑 提交于 2019-12-09 17:09:58
经过两周的努力,使用ARM-GCC编译出来的文件终于可以下载到板子上跑起来了,关于编译器的配置解释如下: 编译环境: windows+cygwin 使用编译器:arm-none-eabi-gcc-4.6: https://launchpad.net/gcc-arm-embedded/4.6/2011-q4-major 编译选项: -Wall 打开waring -fsigned-char 将char做为signed -fno-builtin 不使用build in函数(glibc函数) -ffunction-sections 将函数放到自己的section中(链接时配合--gc-sections可以移除没有使用的函数) -fdata-sections 将data放到自己的section中(链接时配合--gc-sections可以移除没有使用的data) -mcpu=cortex-m0 cpu类型cortex-m0 -mthumb 指定arm指令集 thumb(16bit/32bit混合指令集) 链接选项: -mcpu=cortex-m0 cpu类型cortex-m0 -mthumb 指定arm指令集 thumb(16bit/32bit混合指令集) -nostartfiles 不使用编译器默认的ld文件和startup文件 -Wl,-Map=$(IMG_PATH)/$(IMG_MAP)

Cortex-M0 & LPC11U 中断向量

大城市里の小女人 提交于 2019-12-05 05:05:36
1.异常分类及地址 Cortex-M0 中断向量表地址固定为0x00000000,向量表大小为48*4字节,其中: 0 处放的是main stack的初始化sp指 1~15 是内核自己使用的excption 16~47 是外设使用 Reset:芯片复位时从Reset存放的地址开始执行。 NMI: 不可屏蔽中断,优先级最高,不会被抢断,不能被屏蔽。 HardFault: 操作过程中出错时产生。 SVCall: 系统调用,由SVC指令触发。应用于OS中call内核函数或者驱动。 PendSV:中断驱动的系统级服务。应用于OS中任务切换。 SysTick: 系统定时器触发。应用于OS Tick。 IRQ:可用于芯片的其它外设中断。例如I2C,USB等等.. 2.异常的优先级: 3. Cortex-M0 中断特点 支持4个优先级。 出入中断的现场保护由硬件完成。 末尾连锁 — 这个机制加速了异常的处理。当一个异常处理程序结束时,如果一个挂起的异常满足异常进入的要求,就跳过堆栈弹出,控制权移交给新的异常处理程序。 迟来(Late-arriving) — 这个机制加速了抢占的处理。如果一个高优先级的异常在前个异常正在保存状态的过程中出现,处理器就转去处理更高优先级的异常。状态保存不受迟来异常的影响,因为两个异常保存的状态相同。从迟来异常的常处理程序返回时,要遵守正常的末尾连锁规则。