当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]目前嵌入式开发平台按照性能可以分为两类,一种是CPU只有数十兆的单片机,一种是比较高级的可以跑Linux甚至Android的嵌入式平台(其实iPhone、Android手机都属于嵌入式产品)。

前言

目前嵌入式开发平台按照性能可以分为两类,一种是CPU只有数十兆的单片机,一种是比较高级的可以跑Linux甚至Android的嵌入式平台(其实iPhone、Android手机都属于嵌入式产品)。

后者一般基于Linux/unix操作系统做交叉编译,但是前者往往更多的是在Keil上做开发,但由于本人个人关系,比较不喜欢Keil界面,所以一般在做嵌入式开发的时候,都会优先考虑是否有Linux/unix类的SDK(指包含编译工具)。但似乎Mac OSX上做嵌入式开发的人员较稀少,hum...因此资料也会相对较少。

本文所举例子,是千千万万种嵌入式芯片的一种,并不具备普遍性,但读完本文应该也会让你略有收获。

系统环境

操作系统: OS X EI Capitan (10.11.5)

硬件平台: nRF51822 (Nordic BLE 芯片)开发板

什么是嵌入式开发 ?

基于嵌入式平台所进行的底层开发,我们称之为“嵌入式开发”。

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

举个列子:虽然手机属于嵌入式设备,但目前人数众多的APP开发者不属于嵌入式开发,而是属于应用开发人员(因为他们都是基于手机操作系统进行编程的)。但手机厂家中那些开发手机底层驱动和底层应用的人员则属于嵌入式开发。

目前,因近几年移动互联网的大力发展,使得 Web猿 和 APP猿 族群最为庞大。

什么是交叉编译?

简单来说,在C语言(包括但不限于)编译过程中会分为四个阶段: 预处理 -> 编译 -> 汇编 -> 链接


但是在以上过程中,需要占用“大量资源”,在嵌入式设备(嵌入式设备的设计要诀之一就是能省则省)中并不具备该资源(如编译器、足够快的CPU、内存等),所以需要借助我们的PC平台进行编译。这种在一种平台编译,另一种平台运行的编译,我们称之为交叉编译。


程序是怎样被创造的?

在程序被创造到用户手上的过程中,除了系统提供的APIs,程序员需要三种必不可少工具:

输入工具:代码编辑器,如 Vim,Notepad++、Sublime

编译工具:编译器,可以将人类所写的代码转化为机器能懂的二进制文件,如 GCC、Clang、Javac

测试工具:程序所运行的环境,如iPhone、Android、PC(Linux、Mac、Windows)

集成了以上前两项工具的工具,我们称之为IDE,如Xcode、Visual Studio 、Eclipse、Keil。

nRF51822开发工具

如果你想要跟随本文一起实验,首先,你需要购入一块nRF51822开发板,像这样的:


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

nRF5-SDK:SDK由厂商提供,点击进入官方网站后,选择目前最新的11.0.0版本进行下载:


编译器:下载好官方SDK后,打开SDK中的Makefile.posix文件,可以看到该版本SDK所用的gcc编译器版本。


进入到gcc-arm官网后,选择相对应版本的编译器下载(相对于Linux和Windows的下载量,Mac版本好惨淡... =_=)


J-Link驱动:nRF51822采用 J-Link进行程序下载,所以我们需要下载Mac版的J-Link驱动。


nRF51822环境搭建及测试

安装编译器

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

sudo tar -jxvf gcc-arm-none-eabi-4_9-2015q1-20150306-mac.tar.bz2 /usr/local/
执行后查看是否成功:


编译例子

进入到下载好的SDK中,找一个例子,如:

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


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

下载固件至开发板

J-Link方式写入

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


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

JLinkExe -device nrf51822_xxaa -if swd -speed 4000

-device 指定了芯片类型,J-Link支持的开发板类型可在jlink_supported_devices查询。

输入烧录命令:

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


loadbin是烧录的命令,*.hex是烧录的固件,0x1B000是烧录地址。r是reset,go是启动。

当flash出现错误时,我们需要擦除falsh,此时我们要用Magic方法,分别往两个地址中写入1和2:

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


可以在Makefile.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)nrngnexitn" > 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 2nw4 4001e50c 1nsleep 100nrnexitn" > 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

利用官方提供的命令行工具

在 官方固件下载列表中提供了命令行工具:nrfjprog and mergehex。


其中nrfjprog用于烧录程序,mergehex用于合并hex文件。安装好nrfjprog和mergehex工具后,我们只需要在上述的工程目录下,输入:

make flash #烧录应用程序

make flash_softdevice #烧录系统内核


即可完成固件的烧写。

至此,nRF51822 在Mac中的开发环境搭建完毕。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭