如何在mac上做嵌入式开发?

OSX上做嵌入式开发的人员较稀少,hum.基于嵌入式平台所进行的底层开发,我们称之为“嵌入式开发”。举个列子:虽然手机属于嵌入式设备,但目前人数众多的APP开发者不属于嵌入式开发,而是属于应用开发人员(因为他们都是基于手机操作系统进行编程的)。但手机厂家中那些开发手机底层驱动和底层应用的人员则属于嵌入式开发。...

C先生/文

生于患难,死于安宁。

前言

目前,嵌入式开发平台按性能可分为两大类。一种是CPU只有几十兆的单片机,​​另一种是比较先进的嵌入式平台,可以运行Linux甚至是(其实手机就是嵌入式产品)。

后者一般是基于Linux/unix操作系统进行交叉编译,但前者往往更多是在Keil上开发,但由于我个人的关系,我不太喜欢Keil接口,所以我一般优先考虑嵌入式发展。考虑是否有类似Linux/unix的SDK(指包含编译工具)。不过貌似做嵌入式开发的人比较少,嗯……所以资料会比较少。

本文中的例子是千千万万个嵌入式芯片中的一个,并不通用,但是看完这篇文章,你应该会有所收获。

系统环境 什么是嵌入式开发?

基于嵌入式平台的底层开发称为“嵌入式开发”。

那么现在传说中的程序员,哪些猿类属于嵌入式开发呢?

例如:虽然手机是嵌入式设备,但目前大量的APP开发者不属于嵌入式开发,而是属于应用开发者(因为都是基于手机操作系统编程的)。但是,手机厂商开发手机底层驱动和底层应用的,属于嵌入式开发。

mac做视频的软件_mac做开发的软件有哪些软件_mac做图片的软件

目前,由于近年来移动互联网的蓬勃发展,Web猿和APP猿群体是最大的。

什么是交叉编译?

总之,C语言的编译过程(包括但不限于)将分为四个阶段:**预处理->编译->汇编->链接**

但是,在上述过程中,需要占用“大量资源”mac做开发的软件有哪些软件,这在嵌入式设备中是不可用的(嵌入式设备的设计技巧之一就是尽可能节省)(例如编译器、足够快的 CPU、内存等)),所以需要借助我们的PC平台进行编译。这种在一个平台上编译并在另一个平台上运行的编译称为交叉编译。

程序是如何创建的?

在将程序创建到用户手中的过程中,除了系统提供的 API 之外,程序员还需要三个必不可少的工具:

集成上述前两个工具的工具称为 IDE,例如 Xcode、Keil。

mac做视频的软件_mac做开发的软件有哪些软件_mac做图片的软件

开发工具

如果你想试验这篇文章,首先你需要买一块开发板,像这样:

本文主要介绍mac上软件的开发工具。在开发过程中,软件我们需要SDK、编译器和J-Link驱动软件:

环境设置和测试

**安装编译器**

将下载好的编译工具链解压到/usr/local目录下:

  sudo tar -jxvf gcc-arm-none-eabi-4_9-2015q1-20150306-mac.tar.bz2 /usr/local/

执行后检查是否成功:

编译示例

去下载好的SDKmac做开发的软件有哪些软件,找个例子,比如:

 cd  $(nRF_51SDK)/examples/ble_peripheral/ble_app_beacon/pca10028/s130/armgcc
 make all

编译完成后会生成对应的bin文件:

下载固件到板

安装J版工具后,我们可以看到系统中已经有以下命令行工具:

使用命令行进入J-Link提供的shell:

JLinkExe -device nrf51822_xxaa -if swd -speed 4000

- 指定芯片类型,可以在ces上查询J-Link支持的开发板类型。

输入烧录命令:

 J-Link >loadbin s130_nrf51_2.0.0_softdevice.hex 0
 J-Link>loadbin  nrf51422_xxac_s130.hex 0x1B000
 J-Link>r 
 J-Link>go

为烧录命令,*.hex 为烧录固件和烧录地址。r 被重置,go 是开始。

当闪存出现错误时,我们需要擦除闪存。这时候,我们使用Magic方法分别将1和2写入两个地址:

 J-Link>w4 4001e504 2
 J-Link>w4 4001e50c 1 

可以在.posix中添加如下命令,编译完成后自动烧录:

GNU_INSTALL_ROOT := /usr/local/gcc-arm-none-eabi-4_8-2014q2
GNU_VERSION := 4.8.3
GNU_PREFIX := arm-none-eabi
GDB_PORT_NUMBER := 9992
FLASH_START_ADDR = $(shell $(OBJDUMP) -h         \
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out -j .text | grep .text | awk '{print $$4}')
JLINK_OPTS = -device nrf51822 -if swd -speed 4000
JLINK_GDB_OPTS = -noir
JLINK = JLinkExe $(JLINK_OPTS)
JLINKD_GDB = JLinkGDBServer $(JLINK_GDB_OPTS)
flash-jlink: flash.jlink
    $(JLINK) flash.jlink
flash.jlink:
    printf "loadbin $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin $(FLASH_START_ADDR)\nr\ng\nexit\n" > flash.jlink
erase-all: erase-all.jlink
    $(JLINK) erase-all.jlink
erase-all.jlink:
    # Write to NVMC to enable erase, do erase all, wait for completion. reset
    printf "w4 4001e504 2\nw4 4001e50c 1\nsleep 100\nr\nexit\n" > erase-all.jlink
run-debug:
    $(JLINKD_GDB) $(JLINK_OPTS) $(JLINK_GDB_OPTS) -port $(GDB_PORT_NUMBER)
.PHONY:  flash-jlink flash.jlink erase-all erase-all.jlink run-debug

命令行工具在官方固件下载list: 和 .

用于刻录程序和合并十六进制文件。安装好工具和工具后,我们只需要在上面的项目目录中进入:

    make flash #烧录应用程序
    make flash_softdevice #烧录系统内核

固件编程即可完成。

超过

至此,mac中的开发环境搭建完毕。

相关文章

发表评论