MBED包含以下目录
CMSIS: RMCortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层(英文原文为:a vendor-independent hardware abstraction layer for the Cortex-Mprocessor series and defines generic tool interfaces--来自ARM官方定义)。 使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。软件的创建被嵌入式行业公认为主要成本系数。通过在所有Cortex-M 芯片供应商产品中标准化软件接口,这一成本会明显降低,尤其是在创建新项目或将现有软件迁移到新设备时 . 摘录自 https://baike.baidu.com/item/CMSIS/4082822
EVENTS:事件框架
FEATURES:支持的功能,包括BLE、LWIP、TLS等
HAL:MBED定义的硬件适配层。依赖于TARGETS目录提供的硬件适配支持。
PLATFORM: 还不清楚
RTOS:实时操作系统. Official mbed Real Time Operating System based on the RTXimplementation of the CMSIS-RTOS API open standard
TARGETS:特定开发板实现HAL需要的接口、连接脚本文件、使用的CMSIS头文件
代码架构图示如下
软件体系架构
图片源自:https://www.zhihu.com/question/25981847
在KEIL环境下,配置项目属性,设置创建批处理文件
编译完成后,生成命令行批处理xxx.BAT文件.分析该BAT文件,可以看到项目用到的代码文件,以及每个代码文件使用的编译、编译属性、代码对应的依赖关系。也可以看到BIN文件生成时的链接属性,使用的链接脚本等信息。
如:"C:\Keil_23\ARM\ARMCC\Bin\ArmCC" --Via ".\build\aes.__i" 指明编译信息来自.\build\aes.__i文件。
打开.\build\aes.__i文件,可看到,每个选项可参见 《MDK-ARMarmcc编译器——预定义宏》
<http://www.keil.com/support/man/docs/armasm/armasm_dom1361289840200.htm>
--c99
-c
--cpu Cortex-M4.fp
-g
-O0
--apcs=interwork
-I 包含的头文件路径
-D 工程宏定义
--preinclude=mbed_config.h
--no_rtti
--split_sections
-c
--no_depend_system_headers
--md
--apcs=interwork
-o .\build\aes.o 输出文件名
--omf_browse .\build\aes.crf 产生的浏览信息文件
--depend .\build\aes.d 依赖文件,顺序列出了修改了代码后需要编译的文件
"mbed-os/features/mbedtls/src/aes.c" 源代码
批处理文件尾部是连接信息
"C:\Keil_23\ARM\ARMCC\Bin\ArmLink" --Via ".\BUILD\mbed-os-example-blinky.lnp"
打开\BUILD\mbed-os-example-blinky.lnp,可看到详细的链接信息
--cpu=Cortex-M4.fp
需要链接的目标文件
链接使用的SCATTER文件
--scatter "mbed-os/targets/TARGET_NUVOTON/TARGET_NUC472/device/TOOLCHAIN_ARM_STD/TARGET_NU_XRAM_SUPPORTED/NUC472.sct"
--show_full_path --summary_stderr --info summarysizes --map --xref --callgraph --symbols
--info sizes --info totals --info unused --info veneers
--list ".\BUILD\mbed-os-example-blinky.map" -o .\BUILD\mbed-os-example-blinky.axf