文档章节

mbed building

Jr小王子
 Jr小王子
发布于 2015/05/20 21:06
字数 1779
阅读 303
收藏 0

mbed

arduino的ARM版,API的封装和arduino的很相似,但是要比arduino更有野心。

如果arduino像个玩具,那mbed则像个精美的工业品。对arduino没有贬义,arduino影响了mbed、raspberry。

mbed的API有不少是用C++的封装的,可能吃资源(我没用过C++写过程序不知道)。

mbed也自带rtos,但是否好用留个大神评价吧(我没用过实时系统 — —!)

以下为mbed的美好愿景:

对mbed的分析文:

http://www.mbed.org.cn/archives/mbed-os%E4%BC%9A%E6%88%90%E4%B8%BA%E7%89%A9%E8%81%94%E7%BD%91%E7%9A%84-android-%E5%90%97%EF%BC%9F/



以下内容请大神自行绕路! 

mbed building

关于 mbed building 说明官网也有但是不太全,github上的说明文档讲得比较全面。

https://github.com/mbedmicro/mbed/blob/master/docs/BUILDING.md

  • 前提条件

  1. python2.7

    setuptools(https://pypi.python.org/pypi/setuptools

    pyserial(https://pypi.python.org/pypi/pyserial

    prettytable(https://pypi.python.org/pypi/PrettyTable

    intelHex(https://pypi.python.org/pypi/IntelHex

    jinja2(https://pypi.python.org/pypi/Jinja2

    markupsafe(安装jinja2的时候会附带安装)  

    colorama (https://pypi.python.org/pypi/colorama/)

  2. mbed SDK

    https://github.com/mbedmicro/mbed

  3. C/C++编译器(keil4 and IAR)

  


  • ‍‍‍building‍‍

 先使用github for windows(https://windows.github.com/ 只支持win7以上)下载mbed

(这样不用敲git的命令行)


  • pip

    pip install             安装第三方包

    pip uninstall         卸载第三方包

    pip freeze             按一定格式输出第三方包列表

    pip list                   查看已安装的第三方列表 

    pip show               显示第三方包所在的目录

    pip search             寻找在 PyPI  packages 上第三方包或者包含第三方包名字的文字描述

    pip wheel              不知道何用,没看懂— —!


  • 自动模式

       然后在mbed的根目录下有setup.py文件,它包含了所有依赖的第三方包的信息,

       调用它来自动完成所有依赖的第三方包的安装。

       python的第三方包默认放在  X:\XXX\python2.7.9\Lib\site-packages的目录下

       执行以下操作:

python setup.py install

      安装完成相应的效果:

   

    其实还需要安装jinja2,project.py会用到。

    ---------



  • ‍‍手动模式  (我比较喜欢这种安装方式)

    首先查看一下 pip和setupstools是否需要更新

pip list --outdated

        更新 pip和setuptools      

pip install --upgrade pip
pip install --upgrade setuptools

       安装第三方包

pip install pyserial
pip install prettytable
pip install intelhex
pip install jinja2

      查看第三方包安装情况

  



  • Configure workspace tools to work with your compilers

    需要在mbed/workspace_tools/下创建一个private_settings.py来配置路径来取代settings.py中默认的路径

from os.path import join
 
# ARMCC
armcc = "keil" # "keil", or "standalone", or "ds-5"
#ARM_PATH = "C:/Work/toolchains/ARMCompiler_5.03_117_Windows"
ARM_PATH = "E:/software/keil4/ARM/ARMCC"
ARM_BIN = join(ARM_PATH, "bin")
ARM_INC = join(ARM_PATH, "include")
ARM_LIB = join(ARM_PATH, "lib")
 
ARM_CPPLIB = join(ARM_LIB, "cpplib")
MY_ARM_CLIB = join(ARM_PATH, "lib", "microlib")
 
# GCC ARM
GCC_ARM_PATH = "C:/Work/toolchains/gcc_arm_4_8/4_8_2013q4/bin"
 
# GCC CodeSourcery
GCC_CS_PATH = "C:/Work/toolchains/Sourcery_CodeBench_Lite_for_ARM_EABI/bin"
 
# GCC CodeRed
GCC_CR_PATH = "C:/Work/toolchains/LPCXpresso_6.1.4_194/lpcxpresso/tools/bin"
 
# IAR
#IAR_PATH = "C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.0/arm"
IAR_PATH = "E:/software/IAR/arm/bin/iccarm.exe"
 
SERVER_ADDRESS = "127.0.0.1"
LOCALHOST = "127.0.0.1"
 
# This is moved to separate JSON configuration file used by singletest.py
MUTs = {
}

  

  • ARM_PATH for armcc compiler.

  • GCC_ARM_PATH for GCC ARM compiler.

  • GCC_CS_PATH for GCC CodeSourcery compiler.

  • GCC_CR_PATH for GCC CodeRed compiler.

  • IAR_PATH for IAR compiler.


  • Build Mbed SDK library from sources

       从mbed源码包建立离线SDK库用于你的IDE

  • build.py script

C:\Users\sTAR>F:

F:\>cd F:\github\mbed\workspace_tools

F:\github\mbed\workspace_tools>python build.py -S -f NUCLEO_F103RB
+---------------+-----------+-----------+---------+--------+-----------+--------+------------+---------------+
| Platform      |    ARM    |  GCC_ARM  |   uARM  | GCC_CR |    IAR    | GCC_CS | GCC_CW_EWL | GCC_CW_NEWLIB |
+---------------+-----------+-----------+---------+--------+-----------+--------+------------+---------------+
| NUCLEO_F103RB | Supported | Supported | Default |   -    | Supported |   -    |     -      |       -       |
+---------------+-----------+-----------+---------+--------+-----------+--------+------------+---------------+
*Default - default on-line compiler
*Supported - supported off-line compiler

Total platforms: 1
Total permutations: 4

F:\github\mbed\workspace_tools>python build.py -m NUCLEO_F103RB -r
...


F:\github\mbed\workspace_tools>cd ..

F:\github\mbed>cd build

F:\github\mbed\build>tree
文件夹 PATH 列表
卷序列号为 00000200 C8D9:AEA6
F:.
├─mbed
│  ├─.temp
│  │  └─TARGET_NUCLEO_F103RB
│  │      ├─TOOLCHAIN_ARM_MICRO
│  │      │  └─TARGET_STM
│  │      │      └─TARGET_NUCLEO_F103RB
│  │      │          └─TOOLCHAIN_ARM_MICRO
│  │      ├─TOOLCHAIN_ARM_STD
│  │      │  └─TARGET_STM
│  │      │      └─TARGET_NUCLEO_F103RB
│  │      │          └─TOOLCHAIN_ARM_STD
│  │      ├─TOOLCHAIN_GCC_ARM
│  │      │  └─TARGET_STM
│  │      │      └─TARGET_NUCLEO_F103RB
│  │      │          └─TOOLCHAIN_GCC_ARM
│  │      └─TOOLCHAIN_IAR
│  │          ├─TARGET_STM
│  │          │  └─TARGET_NUCLEO_F103RB
│  │          │      └─TOOLCHAIN_IAR
│  │          └─TOOLCHAIN_IAR
│  └─TARGET_NUCLEO_F103RB
│      ├─TARGET_STM
│      │  └─TARGET_NUCLEO_F103RB
│      ├─TOOLCHAIN_ARM_MICRO
│      ├─TOOLCHAIN_ARM_STD
│      ├─TOOLCHAIN_GCC_ARM
│      └─TOOLCHAIN_IAR
└─rtos
    ├─.temp
    │  └─TARGET_NUCLEO_F103RB
    │      ├─TOOLCHAIN_ARM_MICRO
    │      │  └─TARGET_CORTEX_M
    │      │      └─TARGET_M3
    │      │          └─TOOLCHAIN_ARM
    │      └─TOOLCHAIN_ARM_STD
    │          └─TARGET_CORTEX_M
    │              └─TARGET_M3
    │                  └─TOOLCHAIN_ARM
    ├─TARGET_CORTEX_M
    └─TARGET_NUCLEO_F103RB
        ├─TOOLCHAIN_ARM_MICRO
        └─TOOLCHAIN_ARM_STD

F:\github\mbed\build>

        building完成后

  


  • project.py script

        创建测试用例用于离线IDE

F:\github\mbed\workspace_tools>python project.py -L

[  0] MBED_A1: Basic
[  1] MBED_A2: Semihost file system
[  2] MBED_A3: C++ STL
[  3] MBED_A4: I2C TMP102
[  4] MBED_A5: DigitalIn DigitalOut
[  5] MBED_A6: DigitalInOut
[  6] MBED_A7: InterruptIn
[  7] MBED_A8: Analog
[  8] MBED_A9: Serial Echo at 115200
[  9] MBED_A10: PortOut PortIn
[ 10] MBED_A11: PortInOut
[ 11] MBED_A12: SD File System
[ 12] MBED_A13: I2C MMA7660 accelerometer
[ 13] MBED_A14: I2C Master
[ 14] MBED_A15: I2C Slave
[ 15] MBED_A16: SPI Master
[ 16] MBED_A17: SPI Slave
[ 17] MBED_A18: Interrupt vector relocation
[ 18] MBED_A19: I2C EEPROM read/write test
[ 19] MBED_A20: I2C master/slave test
[ 20] MBED_A21: Call function before main (mbed_main)
[ 21] MBED_A22: SPIFI for LPC4088 (test 1)
[ 22] MBED_A23: SPIFI for LPC4088 (test 2)
[ 23] MBED_A24: Serial echo with RTS/CTS flow control
[ 24] MBED_A25: I2C EEPROM line read/write test
[ 25] MBED_A26: AnalogIn potentiometer test
[ 26] MBED_A27: CAN loopback test
[ 27] MBED_BLINKY: Blinky
[ 28] MBED_BUS: Blinky BUS
[ 29] MBED_BUSOUT: BusOut
[ 30] BENCHMARK_1: Size (c environment)
[ 31] BENCHMARK_2: Size (float math)
[ 32] BENCHMARK_3: Size (printf)
[ 33] BENCHMARK_4: Size (mbed libs)
[ 34] BENCHMARK_5: Size (all)
[ 35] PERF_1: SD Stdio R/W Speed
[ 36] PERF_2: SD FileHandle R/W Speed
[ 37] PERF_3: SD FatFS R/W Speed
[ 38] MBED_1: I2C SRF08
[ 39] MBED_2: stdio
[ 40] MBED_3: PortOut
[ 41] MBED_4: Sleep
[ 42] MBED_5: PWM
[ 43] MBED_6: SW Reset
[ 44] MBED_7: stdio  benchmark
[ 45] MBED_8: SPI
[ 46] MBED_9: Sleep Timeout
[ 47] MBED_10: Hello World
[ 48] MBED_11: Ticker Int
[ 49] MBED_12: C++
[ 50] MBED_13: Heap & Stack
[ 51] MBED_14: Serial Interrupt
[ 52] MBED_15: RPC
[ 53] MBED_16: RTC
[ 54] MBED_17: Serial Interrupt 2
[ 55] MBED_18: Local FS Directory
[ 56] MBED_19: SD FS Directory
[ 57] MBED_20: InterruptIn 2
[ 58] MBED_21: freopen Stream
[ 59] MBED_22: Semihost
[ 60] MBED_23: Ticker Int us
[ 61] MBED_24: Timeout Int us
[ 62] MBED_25: Time us
[ 63] MBED_26: Integer constant division
[ 64] MBED_27: SPI ADXL345
[ 65] MBED_28: Interrupt chaining (InterruptManager)
[ 66] MBED_29: CAN network test
[ 67] MBED_30: CAN network test using interrupts
[ 68] MBED_31: PWM LED test
[ 69] MBED_32: Pin toggling
[ 70] MBED_33: C string operations
[ 71] MBED_34: Ticker Two callbacks
[ 72] MBED_35: SPI C12832 display
[ 73] MBED_36: WFI correct behavior
[ 74] MBED_37: Serial NC RX
[ 75] MBED_38: Serial NC TX
[ 76] CMSIS_RTOS_1: Basic
[ 77] CMSIS_RTOS_2: Mutex
[ 78] CMSIS_RTOS_3: Semaphore
[ 79] CMSIS_RTOS_4: Signals
[ 80] CMSIS_RTOS_5: Queue
[ 81] CMSIS_RTOS_6: Mail
[ 82] CMSIS_RTOS_7: Timer
[ 83] CMSIS_RTOS_8: ISR
[ 84] RTOS_1: Basic thread
[ 85] RTOS_2: Mutex resource lock
[ 86] RTOS_3: Semaphore resource lock
[ 87] RTOS_4: Signals messaging
[ 88] RTOS_5: Queue messaging
[ 89] RTOS_6: Mail messaging
[ 90] RTOS_7: Timer
[ 91] RTOS_8: ISR (Queue)
[ 92] RTOS_9: SD File write-read
[ 93] NET_1: TCP client hello world
[ 94] NET_2: NIST Internet Time Service
[ 95] NET_3: TCP echo server
[ 96] NET_4: TCP echo client
[ 97] NET_5: UDP echo server
[ 98] NET_6: UDP echo client
[ 99] NET_7: HTTP client hello world
[100] NET_8: NTP client
[101] NET_9: Multicast Send
[102] NET_10: Multicast Receive
[103] NET_11: Broadcast Send
[104] NET_12: Broadcast Receive
[105] NET_13: TCP client echo loop
[106] NET_14: UDP PHY/Data link layer
[107] UB_1: u-blox USB modem: HTTP client
[108] UB_2: u-blox USB modem: SMS test
[109] USB_1: Mouse
[110] USB_2: Keyboard
[111] USB_3: Mouse_Keyboard
[112] USB_4: Serial Port
[113] USB_5: Generic HID
[114] USB_6: MIDI
[115] USB_7: AUDIO
[116] CMSIS_DSP_1: FIR
[117] DSP_1: FIR
[118] KL25Z_1: LPTMR
[119] KL25Z_2: PIT
[120] KL25Z_3: TSI Touch Sensor
[121] KL25Z_4: RTC
[122] KL25Z_5: MMA8451Q accelerometer
[123] EXAMPLE_1: /dev/null
[124] EXAMPLE_2: FS + RTOS
[125] UT_1: Basic
[126] UT_2: Semihost file system
[127] UT_3: General tests
[128] UT_BUSIO: BusIn BusOut
[129] UT_I2C_EEPROM_ASYNCH: I2C Asynch eeprom
[130] UT_SERIAL_ASYNCH: Asynch serial test (req 2 serial peripherals)
[131] UT_SPI_ASYNCH: Asynch spi test
[132] UT_LP_TICKER: Low power ticker test
[133] DTCT_1: Simple detect test

F:\github\mbed\workspace_tools>

F:\github\mbed\workspace_tools>python project.py -m NUCLEO_F103RB -i iar -p 45
...
Copy: Ticker.cpp
Copy: Timeout.cpp
Copy: Timer.cpp
Copy: TimerEvent.cpp
Copy: stm32f10x.icf
Copy: main.cpp

Successful exports:
  * NUCLEO_F103RB::iar  F:\github\mbed\build\export\MBED_10_iar_NUCLEO_F103RB.zi
p


F:\github\mbed\build\export>tree
文件夹 PATH 列表
卷序列号为 00000200 C8D9:AEA6
F:.
└─MBED_A1
    ├─env
    └─mbed
        ├─api
        ├─common
        ├─hal
        └─targets
            ├─cmsis
            │  ├─TARGET_STM
            │  │  └─TARGET_NUCLEO_F103RB
            │  │      └─TOOLCHAIN_IAR
            │  └─TOOLCHAIN_IAR
            └─hal
                └─TARGET_STM
                    └─TARGET_NUCLEO_F103RB


  • PS 

      building过程中所犯的低级错误。。。



© 著作权归作者所有

Jr小王子
粉丝 11
博文 119
码字总数 18368
作品 0
深圳
程序员
私信 提问
物联网操作系统 - mbed OS

ARM宣布了针对物联网低功耗设备的操作系统mbed OS。mbed OS部分开源,其余部分控制在ARM手中,理由是为了确保操作系统不会碎片化。ARM声称mbed OS只需要256kb内存,它希望开发商能能使用mbe...

匿名
2014/10/09
17.8K
6
ARM推出Mbed Linux OS

自2014年开始,ARM就推出自家物联网平台Mbed,涵括专用作业系统Mbed OS、服务器以及微控制器。 ARM表示,Mbed Linux OS既延续Mbed OS的特点,同样使用Cortex-A架构。同时,Mbed Linux OS采取...

linuxCool
2018/11/06
73
0
Arm Mbed Connect 开发者技术论坛登陆上海

[活动页面] Arm将于10月22日在上海举办年度技术论坛,同期将针对Mbed Connect举办开发者技术论坛。参加开发者技术论坛,你可以深入了解在如何运用Mbed OS 在Mbed Pelion IoT平台上如何开发可...

zhishengar
2018/10/18
20
0
Arm Mbed Connect 开发者技术论坛登陆上海

[活动页面] Arm将于10月22日在上海举办年度技术论坛,同期将针对Mbed Connect举办开发者技术论坛。参加开发者技术论坛,你可以深入了解在如何运用Mbed OS 在Mbed Pelion IoT平台上如何开发可...

zhishengar
2018/10/18
38
0
mbed-os 5.13.2 发布,来自 ARM 的物联网操作系统

mbed-os 5.13.2 发布了,ARM® mbed™ IoT 设备平台提供了操作系统、云服务、工具和开发人员体系,以便能够大规模创建和部署基于标准的商业 IoT 解决方案。 该版本包含一些质量方面的提升: ...

红薯
08/01
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Eureka应用注册与集群数据同步源码解析

在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean register() t...

Java学习录
10分钟前
1
0
Java描述设计模式(15):责任链模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景描述 1、请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批当 3<day<=5 天,部门经理审批当 day>5 天...

知了一笑
21分钟前
3
0
总结:数组与链表

1、内存申请:数组在内存上是连续的空间;链表,内存地址上可以是不连续的。 2、查询速度:数组可以随机访问,链表必须顺序访问,即从首个元素开始遍历,逐个查找,所以数组查询很快。 3、写入...

浮躁的码农
29分钟前
3
0
HashMap源码分析

read

V丶zxw
47分钟前
5
0
Python字符串或JSON字符串转字典dict、列表list

有3种方法 1、使用ast模块 >>> import ast>>> s = '["test",1]'>>> ast.literal_eval(s)['test',1]>>> s = '{"test":1}'>>> ast.literal_eval(s){'test': 1} 2、eval函数,这个......

编程老陆
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部