電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 2451|回復: 0
收起左側(cè)

嵌入式培訓教程_Mac上做嵌入式開發(fā)

[復制鏈接]

2607

主題

2607

帖子

7472

積分

高級會員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-8-6 14:51:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
嵌入式培訓教程_Mac上做嵌入式開發(fā),   



前言

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



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



本文所舉例子,是千千萬萬種嵌入式芯片的一種,并不具備普遍性,但讀完本文應該也會讓你略有收獲。



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

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

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



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

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



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



舉個列子:雖然手機屬于嵌入式設備,但目前人數(shù)眾多的APP開發(fā)者不屬于嵌入式開發(fā),而是屬于應用開發(fā)人員(因為他們都是基于手機操作系統(tǒng)進行編程的)。但手機廠家中那些開發(fā)手機底層驅(qū)動和底層應用的人員則屬于嵌入式開發(fā)。



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



什么是交叉編譯?

簡單來說,在C語言(包括但不限于)編譯過程中會分為四個階段: 預處理 -> 編譯 -> 匯編 -> 鏈接



  


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



  






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

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

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

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

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



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



nRF51822開發(fā)工具

如果你想要跟隨本文一起實驗,首先,你需要購入一塊nRF51822開發(fā)板,像這樣的:

  


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

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



  


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



  


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



  




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



  


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

安裝編譯器嵌入式暖風機的拆卸, 嵌入式馬桶嵌入多少, 嵌入式與矩陣式區(qū)別, 嵌入式軟件總監(jiān), 什么叫嵌入式床, 嵌入式座便器多少錢, 嵌入式地腳線工藝, 嵌入式win7裁剪, 嵌入式狀態(tài)切換, 嵌入式自主創(chuàng)業(yè), 委托嵌入式開發(fā)費用, 中科院嵌入式方向, 參加嵌入式培訓內(nèi)容, 嵌入式軟件版本說明, 嵌入式系統(tǒng)與英語, 嵌入式陶瓷點火, 手機嵌入式系統(tǒng)介紹,

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

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



  


編譯例子

進入到下載好的SDK中,找一個例子,如:

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


編譯完成后,會生成相對應的bin文件:

  



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

J-Link方式寫入

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

  


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

JLinkExe -device nrf51822_xxaa -if swd -speed 4000



  



-device 指定了芯片類型,J-Link支持的開發(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是啟動。

當flash出現(xiàn)錯誤時,我們需要擦除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 “l(fā)oadbin $(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 #燒錄系統(tǒng)內(nèi)核


即可完成固件的燒寫。



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

使用道具 舉報

發(fā)表回復

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表