RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

樹(shù)莓派裸機(jī)開(kāi)發(fā)步驟

嵌入式IoT ? 來(lái)源:嵌入式IoT ? 作者:嵌入式IoT ? 2020-09-25 15:48 ? 次閱讀

樹(shù)莓派4裸機(jī)基礎(chǔ)教程:環(huán)境搭建

1.文章目的

2.樹(shù)莓派4B的硬件配置

3.第一個(gè)基礎(chǔ)工程構(gòu)建

3.1 環(huán)境準(zhǔn)備

3.2 源代碼下載

3.3 代碼編譯與程序下載

3.4 樹(shù)莓派硬件鏈接

4.優(yōu)化調(diào)試手段

4.1 修改sd卡文件中的config.txt文件

4.2 修改網(wǎng)絡(luò)環(huán)境

4.3 修改代碼的鏈接地址

5.小結(jié)

1.文章目的

樹(shù)莓派4作為一款學(xué)習(xí)嵌入式arm開(kāi)發(fā)的開(kāi)發(fā)板,是非常不錯(cuò)的選擇。嵌入式開(kāi)發(fā)往往需要的不僅僅是理論知識(shí),還需要?jiǎng)邮植僮?,然后?shí)際體驗(yàn)效果。由于目前開(kāi)發(fā)板要么資料太少,要么板子太貴,或者可玩性太低,所以嵌入式的入門和深入一直都是非常困難的問(wèn)題。我寫(xiě)樹(shù)莓派4裸機(jī)基礎(chǔ)教程、樹(shù)莓派4驅(qū)動(dòng)進(jìn)階、樹(shù)莓派4的RTOS這一些列的文章,也是希望借此機(jī)會(huì),和大家分享一下嵌入式開(kāi)發(fā)過(guò)程的方方面面,也希望對(duì)學(xué)習(xí)嵌入式感興趣的人在閱讀完成這些文章中會(huì)有所收獲。由于樹(shù)莓派4的外設(shè),相對(duì)于前代的樹(shù)莓派2、樹(shù)莓派3等標(biāo)準(zhǔn)許多,完全可以作為學(xué)習(xí)嵌入式,學(xué)習(xí)arm編程的不錯(cuò)選擇。所謂萬(wàn)變不離其宗,學(xué)會(huì)樹(shù)莓派4的嵌入式開(kāi)發(fā),以后做其他的芯片的底層開(kāi)發(fā)時(shí),也是可以借鑒這種思想的。

寫(xiě)這些東西的目的全憑自己的興趣愛(ài)好,在工作之余培養(yǎng)自己的文檔寫(xiě)作能力與專業(yè)技能,如果有涉及到不正確的觀點(diǎn)和知識(shí)點(diǎn)的地方還請(qǐng)多多指教。

2.樹(shù)莓派4B的硬件配置

樹(shù)莓派4b的性能非常強(qiáng),運(yùn)行Android和win10也毫無(wú)壓力。性能強(qiáng)大,但是價(jià)格卻非常的低,是一款學(xué)習(xí)嵌入式開(kāi)發(fā)、學(xué)習(xí)arm開(kāi)發(fā)的非常不錯(cuò)的開(kāi)發(fā)板。

1.5GHz 4核心64位 ARM Cortex-A72 CPU (~3×倍性能)

1GB/2GB/4GB LPDDR4 SDRAM 內(nèi)存

全吞吐量千兆以太網(wǎng)

雙頻 802.11ac 無(wú)線網(wǎng)絡(luò)

藍(lán)牙 5.0

兩個(gè) USB 3.0 和兩個(gè) USB 2.0 接口

雙顯示器支持,分辨率高達(dá) 4K

VideoCore VI 顯卡,支持 OpenGL ES 3.x

HEVC 視頻 4Kp60 硬解碼

完全兼容早期的樹(shù)莓派產(chǎn)品

3.第一個(gè)基礎(chǔ)工程構(gòu)建

嵌入式代碼編譯開(kāi)發(fā)一般是兩種,一種是通過(guò)IDE進(jìn)行編譯、下載、調(diào)試。這種開(kāi)發(fā)的方式比較簡(jiǎn)單,對(duì)環(huán)境配置的要求很低,只需要安裝IDE需要的環(huán)境即可。這種開(kāi)發(fā)方式在開(kāi)發(fā)單片機(jī)、中低端性能的芯片比較常見(jiàn)。另外一種就是在命令行中輸入相關(guān)的命令,需要自己手動(dòng)的去寫(xiě)編譯腳本。這種常見(jiàn)的就是在Linux的開(kāi)發(fā)過(guò)程中。

樹(shù)莓派程序的開(kāi)發(fā)過(guò)程一般都沒(méi)有IDE,都是直接用GCC,所以我在進(jìn)行工程構(gòu)建的時(shí)候,也會(huì)采用GCC在控制臺(tái)輸入的方式進(jìn)行。工程構(gòu)建就需要自己解決了。目前常用的自動(dòng)化編譯工具就是Makefile。由于當(dāng)前的第一個(gè)項(xiàng)目的工程比較容易,所以當(dāng)前可用采用Makefile進(jìn)行項(xiàng)目工程的構(gòu)建。

3.1 環(huán)境準(zhǔn)備

在不同的平臺(tái)上進(jìn)行工程構(gòu)建的時(shí)候,首先需要準(zhǔn)備下面的環(huán)境:

1.arm交叉編譯工具鏈

2.可用執(zhí)行makefile的工具

交叉編譯工具鏈arm-none-eabi-gcc-5.4.1可以在官網(wǎng)上進(jìn)行下載,也可以到網(wǎng)盤中下載:

鏈接:https://pan.baidu.com/s/1ad3d-pl4YbpgYrxKg6mX9g

提取碼:f3cm

上述網(wǎng)盤中的gcc只適用于windows,如果是其他的系統(tǒng),請(qǐng)自行下載arm的交叉編譯工具鏈。

如果要在windows上使用make命令,可以下載msys2,上面集成了make的環(huán)境。

然后將交叉編譯工具鏈加入到系統(tǒng)的環(huán)境變量中,同時(shí)打開(kāi)msys64文件夾,修改msys2_shell.cmd

雙擊msys2_shell.cmd,打開(kāi)窗口,確保輸入arm然后按下tab鍵可以看到如下的畫(huà)面

這樣系統(tǒng)環(huán)境就準(zhǔn)備完成了。

3.2 源代碼下載

源代碼工程已經(jīng)在GitHub存在了,相關(guān)源碼可以在如下地址中找到:

https://github.com/bigmagic123/raspi4-bare-metal.git

在arm/1.compilation_environment中可以看到相關(guān)的文件列表。

文件名 說(shuō)明
link.ld 鏈接文件
main.c 函數(shù)入口
Makefile 編譯規(guī)則文件
start.S 初始化匯編代碼
uart.c 串口相關(guān)的代碼
uart.h 串口相關(guān)的頭文件

該代碼的功能是啟動(dòng)跳轉(zhuǎn)到c代碼去執(zhí)行,然后串口輸出hello world程序。

3.3 代碼編譯與程序下載

上面兩個(gè)步驟完成之后,在MSYS可以進(jìn)入到工程目錄,輸入make直接編譯即可。

可以看到生成了kernel7.img固件。該固件可以放到板子上運(yùn)行。

3.4 樹(shù)莓派硬件鏈接

樹(shù)莓派4需要準(zhǔn)備一張空的SD卡、一個(gè)串口線輸出信息、一條TYPEC線供電。

首先需要將工程目錄的sd_boot下面的文件放到空的SD卡目錄中。然后將編譯好的kernel7.img放到SD卡中即可。

接著將串口線連接到樹(shù)莓派上。

接著打開(kāi)串口,給開(kāi)發(fā)板上電,可以看到串口的輸出信息:

Helloworld!

此時(shí)一個(gè)簡(jiǎn)單的裸機(jī)程序就執(zhí)行起來(lái)了。

4.優(yōu)化調(diào)試手段

上述過(guò)程已經(jīng)搭建完成環(huán)境,并且可以看到串口輸出信息了。但是由于每次編譯固件后,需要將固件放到sd卡中去執(zhí)行,這樣操作比較的繁瑣,不適合學(xué)習(xí)嵌入式開(kāi)發(fā)。所以可以通過(guò)樹(shù)莓派的uboot自動(dòng)去tftp服務(wù)器中獲取代碼。具體的步驟如下:

4.1 修改sd卡文件中的config.txt文件

將config.txt中的文件改為如下:

enable_uart=1 arm_64bit=0 kernel_addr=0x8000 kernel=u-boot32.bin core_freq=250

其實(shí)就是將kernel=kernel7.img改為kernel=u-boot32.bin。直接啟動(dòng)uboot。

4.2 修改網(wǎng)絡(luò)環(huán)境

如果要開(kāi)發(fā)板從tftp服務(wù)器上獲取代碼,可以將開(kāi)發(fā)板設(shè)置的與pc機(jī)服務(wù)器在同一網(wǎng)段內(nèi)。將網(wǎng)線插上路由器,開(kāi)發(fā)板可以通過(guò)dhcp獲取ip地址。

U-Boot2020.07-rc1-g627e7ce(May112020-1954+0800) DRAM:1.1GiB RPI4ModelB(0xb03112) MMC:emmc2@7e340000:0,mmcnr@7e300000:1 LoadingEnvironmentfromFAT...OK In:serial Out:serial Err:serial Net: Warning:genet@7d580000MACaddressesdon'tmatch: AddressinDTisdc32c1:79 Addressinenvironmentisdc3222:50 eth0:genet@7d580000 Hitanykeytostopautoboot:0 U-Boot>

按照如下步驟進(jìn)行:

1.插上網(wǎng)線到路由器

2.設(shè)置環(huán)境變量

setenvbootcmd"dhcp0x00200000192.168.12.137:kernel7.img;dcacheflush;go0x00200000" saveenv

需要注意的是192.168.12.137為自己的電腦的ip地址。

3.電腦開(kāi)啟TFTP服務(wù)器

注意:

如果是開(kāi)發(fā)板直連電腦的網(wǎng)線,這樣設(shè)置是無(wú)效的,因?yàn)閜c機(jī)上一般不支持dhcp服務(wù)器。必須設(shè)置靜態(tài)ip地址。

然后開(kāi)發(fā)板也需要給定一個(gè)ip地址??梢栽O(shè)置一個(gè)環(huán)境如下:

setenvipaddr10.1.1.100 saveenv reset

其中10.1.1.100是開(kāi)發(fā)板的ip地址,與服務(wù)器是在同一網(wǎng)段。

setenvbootcmd"tftp0x0020000010.1.1.88:kernel7.img;dcacheflush;go0x00200000" saveenv

4.3 修改代碼的鏈接地址

由于uboot的啟動(dòng)地址與裸機(jī)代碼的地址不應(yīng)該在一個(gè)地方,uboot的啟動(dòng)地址為0x8000,而裸機(jī)代碼的地址現(xiàn)改為0x200000。

將該地址進(jìn)行設(shè)置即可。

重新編譯代碼,開(kāi)發(fā)板上電即可。可以看到串口打印出如下的信息。

這樣每次開(kāi)發(fā)板上電后,都會(huì)從tftp服務(wù)器上去獲取代碼執(zhí)行。如果此時(shí)給樹(shù)莓派的供電線加上一個(gè)電源開(kāi)關(guān),這樣這樣就能夠非常方便高效的調(diào)試代碼了。

5.小結(jié)

本文主要介紹樹(shù)莓派裸機(jī)開(kāi)發(fā)的步驟。嵌入式開(kāi)發(fā)過(guò)程中,環(huán)境搭建往往十分的重要,一個(gè)好的開(kāi)發(fā)環(huán)境,一個(gè)高效的驗(yàn)證思路可以大大的節(jié)省開(kāi)發(fā)時(shí)間。所以說(shuō),工欲善其事、必先利其器。想要學(xué)好嵌入式開(kāi)發(fā),學(xué)會(huì)利用各種工作,讓自己的工作效率加倍十分的重要。通過(guò)上述的文章描述,嵌入式的前期的基本環(huán)境可以搭建好,同時(shí)也可以理解系統(tǒng)的啟動(dòng)過(guò)程。我覺(jué)得,萬(wàn)事開(kāi)頭難,只有邁出了第一步,其實(shí)寫(xiě)起代碼也就沒(méi)什么太大的難度了。

- END -

原文標(biāo)題:樹(shù)莓派4裸機(jī)基礎(chǔ)教程:環(huán)境搭建

文章出處:【微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1706

    瀏覽量

    105607
  • 環(huán)境搭建
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    9051

原文標(biāo)題:樹(shù)莓派4裸機(jī)基礎(chǔ)教程:環(huán)境搭建

文章出處:【微信號(hào):Embeded_IoT,微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樹(shù)莓傳感器使用方法 樹(shù)莓 Raspberry Pi 4優(yōu)缺點(diǎn)

    樹(shù)莓傳感器使用方法 樹(shù)莓(Raspberry Pi)是一款由英國(guó)樹(shù)莓基金會(huì)
    的頭像 發(fā)表于 12-06 10:35 ?342次閱讀

    樹(shù)莓開(kāi)發(fā)的最佳編程語(yǔ)言選擇

    樹(shù)莓(Raspberry Pi)是一款由英國(guó)樹(shù)莓基金會(huì)開(kāi)發(fā)的信用卡大小的單板計(jì)算機(jī),它以其低成本、易于編程和靈活性而受到廣泛歡迎。
    的頭像 發(fā)表于 11-11 11:34 ?427次閱讀

    ARM開(kāi)發(fā)板與樹(shù)莓的比較

    ARM開(kāi)發(fā)板和樹(shù)莓都是基于ARM架構(gòu)的單板計(jì)算機(jī),它們?cè)诮逃?、工業(yè)控制、物聯(lián)網(wǎng)等領(lǐng)域有著廣泛的應(yīng)用。 硬件配置 ARM開(kāi)發(fā)板和樹(shù)莓
    的頭像 發(fā)表于 11-05 11:11 ?403次閱讀

    樹(shù)莓gpio有什么用,樹(shù)莓gpio接口及編程方法

    /Output,通用輸入/輸出)是樹(shù)莓提供的一組可編程的引腳,是樹(shù)莓與外部世界進(jìn)行交互的重要橋梁。通過(guò)GPIO,用戶可以控制外部電路,讀取外部信號(hào),實(shí)現(xiàn)與外部電路的交互,從而
    的頭像 發(fā)表于 10-22 18:09 ?765次閱讀

    什么是樹(shù)莓?樹(shù)莓是什么架構(gòu)的

    什么是樹(shù)莓 樹(shù)莓(Raspberry Pi,簡(jiǎn)寫(xiě)為RPi,別名為RasPi/RPI)是由英國(guó)“Raspberry Pi 慈善基金會(huì)”開(kāi)發(fā)
    的頭像 發(fā)表于 10-22 17:33 ?780次閱讀

    樹(shù)莓網(wǎng)關(guān):物聯(lián)網(wǎng)應(yīng)用的新標(biāo)桿

    什么是樹(shù)莓樹(shù)莓(Raspberry Pi)是一種基于Linux的小型單板計(jì)算機(jī),由英國(guó)的樹(shù)莓
    的頭像 發(fā)表于 10-09 16:44 ?291次閱讀
    類<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>網(wǎng)關(guān):物聯(lián)網(wǎng)應(yīng)用的新標(biāo)桿

    樹(shù)莓和51單片機(jī)哪個(gè)有優(yōu)勢(shì)

    樹(shù)莓和51單片機(jī)是兩種不同的硬件平臺(tái),它們各自有其特點(diǎn)和優(yōu)勢(shì)。在決定使用哪一個(gè)之前,我們需要了解它們的基本特性、應(yīng)用場(chǎng)景和開(kāi)發(fā)難度。 1. 簡(jiǎn)介 1.1 樹(shù)莓
    的頭像 發(fā)表于 09-02 09:04 ?789次閱讀

    樹(shù)莓的功能用途是什么

    、科研、工業(yè)控制、物聯(lián)網(wǎng)、多媒體播放、家庭自動(dòng)化等領(lǐng)域。 樹(shù)莓(Raspberry Pi)是一種小型、低成本的單板計(jì)算機(jī),由英國(guó)的Raspberry Pi基金會(huì)開(kāi)發(fā),其功能和用途非常廣泛。以下是
    的頭像 發(fā)表于 08-30 18:01 ?2540次閱讀

    樹(shù)莓gui開(kāi)發(fā)用什么ide

    樹(shù)莓(Raspberry Pi)是一款功能強(qiáng)大的微型計(jì)算機(jī),可以運(yùn)行多種操作系統(tǒng),如Raspbian、Ubuntu等。在樹(shù)莓派上進(jìn)行GUI(圖形用戶界面)開(kāi)發(fā),可以使用多種集成
    的頭像 發(fā)表于 08-30 16:49 ?849次閱讀

    樹(shù)莓是x86還是arm

    樹(shù)莓(Raspberry Pi)是一款由英國(guó)樹(shù)莓基金會(huì)(Raspberry Pi Foundation)開(kāi)發(fā)的微型計(jì)算機(jī)。它基于ARM架
    的頭像 發(fā)表于 08-30 15:42 ?968次閱讀

    樹(shù)莓裝ubuntu和raspbian哪個(gè)更好

    樹(shù)莓(Raspberry Pi)是一款由英國(guó)樹(shù)莓基金會(huì)開(kāi)發(fā)的單板計(jì)算機(jī),廣泛應(yīng)用于教育、科研、物聯(lián)網(wǎng)等領(lǐng)域。
    的頭像 發(fā)表于 08-30 15:41 ?1270次閱讀

    樹(shù)莓和arm開(kāi)發(fā)板的區(qū)別

    樹(shù)莓(Raspberry Pi)和ARM開(kāi)發(fā)板都是基于ARM架構(gòu)的微型計(jì)算機(jī),但它們之間存在一些關(guān)鍵區(qū)別。 一、歷史背景 樹(shù)莓(Rasp
    的頭像 發(fā)表于 08-30 15:36 ?980次閱讀

    linux開(kāi)發(fā)板與樹(shù)莓的區(qū)別

    定義和用途 Linux開(kāi)發(fā)板:Linux開(kāi)發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式開(kāi)發(fā)板,通常用于工業(yè)自動(dòng)化、物聯(lián)網(wǎng)、智能家居等領(lǐng)域。 樹(shù)莓
    的頭像 發(fā)表于 08-30 15:34 ?936次閱讀

    【米爾-瑞米兼容樹(shù)莓擴(kuò)展模塊-試用體驗(yàn)】初始開(kāi)發(fā)板_米爾-瑞米兼容樹(shù)莓擴(kuò)展模塊

    兼容樹(shù)莓擴(kuò)展模塊也有豐富的軟件支持: 為了讓大家對(duì)米爾-瑞米兼容樹(shù)莓擴(kuò)展模塊板有更多的了解,下面是
    發(fā)表于 04-29 11:42

    佰維存儲(chǔ)microSD卡通過(guò)樹(shù)莓AVL認(rèn)證

    樹(shù)莓為英國(guó)樹(shù)莓基金會(huì)開(kāi)發(fā)的微型單板計(jì)算機(jī),其以小尺寸、高性能、低成本和易開(kāi)發(fā)等特點(diǎn),廣泛應(yīng)用
    的頭像 發(fā)表于 01-23 17:19 ?421次閱讀
    佰維存儲(chǔ)microSD卡通過(guò)<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>AVL認(rèn)證
    RM新时代网站-首页