日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]目前嵌入式開(kāi)發(fā)平臺(tái)按照性能可以分為兩類,一種是CPU只有數(shù)十兆的單片機(jī),一種是比較高級(jí)的可以跑Linux甚至Android的嵌入式平臺(tái)(其實(shí)iPhone、Android手機(jī)都屬于嵌入式產(chǎn)品)。

前言

目前嵌入式開(kāi)發(fā)平臺(tái)按照性能可以分為兩類,一種是CPU只有數(shù)十兆的單片機(jī),一種是比較高級(jí)的可以跑Linux甚至Android的嵌入式平臺(tái)(其實(shí)iPhone、Android手機(jī)都屬于嵌入式產(chǎn)品)。

后者一般基于Linux/unix操作系統(tǒng)做交叉編譯,但是前者往往更多的是在Keil上做開(kāi)發(fā),但由于本人個(gè)人關(guān)系,比較不喜歡Keil界面,所以一般在做嵌入式開(kāi)發(fā)的時(shí)候,都會(huì)優(yōu)先考慮是否有Linux/unix類的SDK(指包含編譯工具)。但似乎Mac OSX上做嵌入式開(kāi)發(fā)的人員較稀少,hum...因此資料也會(huì)相對(duì)較少。

本文所舉例子,是千千萬(wàn)萬(wàn)種嵌入式芯片的一種,并不具備普遍性,但讀完本文應(yīng)該也會(huì)讓你略有收獲。

系統(tǒng)環(huán)境

操作系統(tǒng): OS X EI Capitan (10.11.5)

硬件平臺(tái): nRF51822 (Nordic BLE 芯片)開(kāi)發(fā)板

什么是嵌入式開(kāi)發(fā) ?

基于嵌入式平臺(tái)所進(jìn)行的底層開(kāi)發(fā),我們稱之為“嵌入式開(kāi)發(fā)”。

那么現(xiàn)在傳說(shuō)中的程序猿,哪些猿類是屬于嵌入式開(kāi)發(fā)的呢?

舉個(gè)列子:雖然手機(jī)屬于嵌入式設(shè)備,但目前人數(shù)眾多的APP開(kāi)發(fā)者不屬于嵌入式開(kāi)發(fā),而是屬于應(yīng)用開(kāi)發(fā)人員(因?yàn)樗麄兌际腔谑謾C(jī)操作系統(tǒng)進(jìn)行編程的)。但手機(jī)廠家中那些開(kāi)發(fā)手機(jī)底層驅(qū)動(dòng)和底層應(yīng)用的人員則屬于嵌入式開(kāi)發(fā)。

目前,因近幾年移動(dòng)互聯(lián)網(wǎng)的大力發(fā)展,使得 Web猿 和 APP猿 族群最為龐大。

什么是交叉編譯?

簡(jiǎn)單來(lái)說(shuō),在C語(yǔ)言(包括但不限于)編譯過(guò)程中會(huì)分為四個(gè)階段: 預(yù)處理 -> 編譯 -> 匯編 -> 鏈接


但是在以上過(guò)程中,需要占用“大量資源”,在嵌入式設(shè)備(嵌入式設(shè)備的設(shè)計(jì)要訣之一就是能省則?。┲胁⒉痪邆湓撡Y源(如編譯器、足夠快的CPU、內(nèi)存等),所以需要借助我們的PC平臺(tái)進(jìn)行編譯。這種在一種平臺(tái)編譯,另一種平臺(tái)運(yùn)行的編譯,我們稱之為交叉編譯。


程序是怎樣被創(chuàng)造的?

在程序被創(chuàng)造到用戶手上的過(guò)程中,除了系統(tǒng)提供的APIs,程序員需要三種必不可少工具:

輸入工具:代碼編輯器,如 Vim,Notepad++、Sublime

編譯工具:編譯器,可以將人類所寫(xiě)的代碼轉(zhuǎn)化為機(jī)器能懂的二進(jìn)制文件,如 GCC、Clang、Javac

測(cè)試工具:程序所運(yùn)行的環(huán)境,如iPhone、Android、PC(Linux、Mac、Windows)

集成了以上前兩項(xiàng)工具的工具,我們稱之為IDE,如Xcode、Visual Studio 、Eclipse、Keil。

nRF51822開(kāi)發(fā)工具

如果你想要跟隨本文一起實(shí)驗(yàn),首先,你需要購(gòu)入一塊nRF51822開(kāi)發(fā)板,像這樣的:


本文主要介紹Mac上的軟件開(kāi)發(fā)工具,在nRF51822開(kāi)發(fā)過(guò)程中,軟件我們需要SDK、編譯器以及J-Link驅(qū)動(dòng)軟件:

nRF5-SDK:SDK由廠商提供,點(diǎn)擊進(jìn)入官方網(wǎng)站后,選擇目前最新的11.0.0版本進(jìn)行下載:


編譯器:下載好官方SDK后,打開(kāi)SDK中的Makefile.posix文件,可以看到該版本SDK所用的gcc編譯器版本。


進(jìn)入到gcc-arm官網(wǎng)后,選擇相對(duì)應(yīng)版本的編譯器下載(相對(duì)于Linux和Windows的下載量,Mac版本好慘淡... =_=)


J-Link驅(qū)動(dòng):nRF51822采用 J-Link進(jìn)行程序下載,所以我們需要下載Mac版的J-Link驅(qū)動(dòng)。


nRF51822環(huán)境搭建及測(cè)試

安裝編譯器

將下載好的編譯工具鏈解壓到 /usr/local 目錄下:

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


編譯例子

進(jìn)入到下載好的SDK中,找一個(gè)例子,如:

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


編譯完成后,會(huì)生成相對(duì)應(yīng)的bin文件:

下載固件至開(kāi)發(fā)板

J-Link方式寫(xiě)入

在安裝完J-Link_for_mac版工具后,我們可以看到系統(tǒng)中已經(jīng)有了以下命令行工具:


利用命令行進(jìn)入J-Link提供的shell中:

JLinkExe -device nrf51822_xxaa -if swd -speed 4000

-device 指定了芯片類型,J-Link支持的開(kāi)發(fā)板類型可在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是啟動(dòng)。

當(dāng)flash出現(xiàn)錯(cuò)誤時(shí),我們需要擦除falsh,此時(shí)我們要用Magic方法,分別往兩個(gè)地址中寫(xiě)入1和2:

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


可以在Makefile.posix中添加如下命令,讓編譯完成后自動(dòng)燒錄:

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 #燒錄應(yīng)用程序

make flash_softdevice #燒錄系統(tǒng)內(nèi)核


即可完成固件的燒寫(xiě)。

至此,nRF51822 在Mac中的開(kāi)發(fā)環(huán)境搭建完畢。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

德國(guó)康佳特亮相上海工博會(huì),展示多款應(yīng)用就緒的嵌入式解決方案平臺(tái)

關(guān)鍵字: 嵌入式 傳感器 處理器

雙方攜手為客戶打造以存儲(chǔ)為核心的模塊化基礎(chǔ)架構(gòu),支持先進(jìn)的多裸片架構(gòu)設(shè)計(jì)

關(guān)鍵字: 非易失性存儲(chǔ) 半導(dǎo)體 嵌入式

Arm 控股有限公司(納斯達(dá)克股票代碼:ARM,以下簡(jiǎn)稱 Arm)今日宣布推出全新 Arm? Lumex? 計(jì)算子系統(tǒng) (Compute Subsystem, CSS) 平臺(tái),這是一套專為旗艦級(jí)智能手機(jī)及下一代個(gè)人電腦加...

關(guān)鍵字: CPU AI 消費(fèi)電子

Arm 控股有限公司(納斯達(dá)克股票代碼:ARM,以下簡(jiǎn)稱 Arm)今日宣布推出全新 Arm? Lumex?計(jì)算子系統(tǒng) (Compute Subsystem, CSS) 平臺(tái),這是一套專為旗艦級(jí)智能手機(jī)及下一代個(gè)人電腦加速...

關(guān)鍵字: 消費(fèi)電子 CPU AI

本屆年會(huì)將在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)舉行,面向嵌入式設(shè)計(jì)工程師推出25門(mén)技術(shù)課程

關(guān)鍵字: 嵌入式 MCU 模擬

上海2025年9月5日 /美通社/ -- 由紐倫堡會(huì)展(上海)有限公司舉辦的上海國(guó)際嵌入式會(huì)議將于 2025 年 10 月 16-17 日在上海世博展覽館舉辦。 此次會(huì)議將由三個(gè)版塊組成:嵌入式技術(shù)會(huì)議、汽...

關(guān)鍵字: 嵌入式 CE CHINA EMBEDDED

從外部看,電子系統(tǒng)仿佛一個(gè)統(tǒng)一的學(xué)科或設(shè)備,各組成部分協(xié)同工作,渾然一體。然而揭開(kāi)表象,其內(nèi)在卻是另一番景象:一個(gè)碎片化、多層次的世界——其中每一層都獨(dú)立且復(fù)雜,衍生出各自特有的工具、專家、工作流程,甚至哲學(xué)體系。

關(guān)鍵字: 嵌入式 電子系統(tǒng) 半導(dǎo)體

8位單片機(jī)在嵌入式設(shè)計(jì)領(lǐng)域已經(jīng)成為半個(gè)多世紀(jì)以來(lái)的主流選擇。盡管嵌入式系統(tǒng)市場(chǎng)日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對(duì)新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨(dú)立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

深圳2025年8月28日 /美通社/ -- 8月26日,2025 ELEXCON深圳國(guó)際電子展盛大啟幕。本屆大會(huì)以"All for AI"為主題,深圳市德...

關(guān)鍵字: AI 工業(yè)級(jí) SSD 嵌入式
關(guān)閉