衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

樹莓派裸機開發步驟

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2020-09-25 15:48 ? 次閱讀

樹莓派4裸機基礎教程:環境搭建

1.文章目的

2.樹莓派4B的硬件配置

3.第一個基礎工程構建

3.1 環境準備

3.2 源代碼下載

3.3 代碼編譯與程序下載

3.4 樹莓派硬件鏈接

4.優化調試手段

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

4.2 修改網絡環境

4.3 修改代碼的鏈接地址

5.小結

1.文章目的

樹莓派4作為一款學習嵌入式arm開發的開發板,是非常不錯的選擇。嵌入式開發往往需要的不僅僅是理論知識,還需要動手操作,然后實際體驗效果。由于目前開發板要么資料太少,要么板子太貴,或者可玩性太低,所以嵌入式的入門和深入一直都是非常困難的問題。我寫樹莓派4裸機基礎教程、樹莓派4驅動進階、樹莓派4的RTOS這一些列的文章,也是希望借此機會,和大家分享一下嵌入式開發過程的方方面面,也希望對學習嵌入式感興趣的人在閱讀完成這些文章中會有所收獲。由于樹莓派4的外設,相對于前代的樹莓派2、樹莓派3等標準許多,完全可以作為學習嵌入式,學習arm編程的不錯選擇。所謂萬變不離其宗,學會樹莓派4的嵌入式開發,以后做其他的芯片的底層開發時,也是可以借鑒這種思想的。

寫這些東西的目的全憑自己的興趣愛好,在工作之余培養自己的文檔寫作能力與專業技能,如果有涉及到不正確的觀點和知識點的地方還請多多指教。

2.樹莓派4B的硬件配置

樹莓派4b的性能非常強,運行Android和win10也毫無壓力。性能強大,但是價格卻非常的低,是一款學習嵌入式開發、學習arm開發的非常不錯的開發板。

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

1GB/2GB/4GB LPDDR4 SDRAM 內存

全吞吐量千兆以太網

雙頻 802.11ac 無線網絡

藍牙 5.0

兩個 USB 3.0 和兩個 USB 2.0 接口

雙顯示器支持,分辨率高達 4K

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

HEVC 視頻 4Kp60 硬解碼

完全兼容早期的樹莓派產品

3.第一個基礎工程構建

嵌入式代碼編譯開發一般是兩種,一種是通過IDE進行編譯、下載、調試。這種開發的方式比較簡單,對環境配置的要求很低,只需要安裝IDE需要的環境即可。這種開發方式在開發單片機、中低端性能的芯片比較常見。另外一種就是在命令行中輸入相關的命令,需要自己手動的去寫編譯腳本。這種常見的就是在Linux的開發過程中。

樹莓派程序的開發過程一般都沒有IDE,都是直接用GCC,所以我在進行工程構建的時候,也會采用GCC在控制臺輸入的方式進行。工程構建就需要自己解決了。目前常用的自動化編譯工具就是Makefile。由于當前的第一個項目的工程比較容易,所以當前可用采用Makefile進行項目工程的構建。

3.1 環境準備

在不同的平臺上進行工程構建的時候,首先需要準備下面的環境:

1.arm交叉編譯工具鏈

2.可用執行makefile的工具

交叉編譯工具鏈arm-none-eabi-gcc-5.4.1可以在官網上進行下載,也可以到網盤中下載:

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

提取碼:f3cm

上述網盤中的gcc只適用于windows,如果是其他的系統,請自行下載arm的交叉編譯工具鏈。

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

然后將交叉編譯工具鏈加入到系統的環境變量中,同時打開msys64文件夾,修改msys2_shell.cmd

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

這樣系統環境就準備完成了。

3.2 源代碼下載

源代碼工程已經在GitHub存在了,相關源碼可以在如下地址中找到:

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

在arm/1.compilation_environment中可以看到相關的文件列表。

文件名 說明
link.ld 鏈接文件
main.c 函數入口
Makefile 編譯規則文件
start.S 初始化匯編代碼
uart.c 串口相關的代碼
uart.h 串口相關的頭文件

該代碼的功能是啟動跳轉到c代碼去執行,然后串口輸出hello world程序。

3.3 代碼編譯與程序下載

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

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

3.4 樹莓派硬件鏈接

樹莓派4需要準備一張空的SD卡、一個串口線輸出信息、一條TYPEC線供電

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

接著將串口線連接到樹莓派上。

接著打開串口,給開發板上電,可以看到串口的輸出信息:

Helloworld!

此時一個簡單的裸機程序就執行起來了。

4.優化調試手段

上述過程已經搭建完成環境,并且可以看到串口輸出信息了。但是由于每次編譯固件后,需要將固件放到sd卡中去執行,這樣操作比較的繁瑣,不適合學習嵌入式開發。所以可以通過樹莓派的uboot自動去tftp服務器中獲取代碼。具體的步驟如下:

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

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

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

其實就是將kernel=kernel7.img改為kernel=u-boot32.bin。直接啟動uboot。

4.2 修改網絡環境

如果要開發板從tftp服務器上獲取代碼,可以將開發板設置的與pc機服務器在同一網段內。將網線插上路由器,開發板可以通過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>

按照如下步驟進行:

1.插上網線到路由器

2.設置環境變量

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

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

3.電腦開啟TFTP服務器

注意:

如果是開發板直連電腦的網線,這樣設置是無效的,因為pc機上一般不支持dhcp服務器。必須設置靜態ip地址。

然后開發板也需要給定一個ip地址。可以設置一個環境如下:

setenvipaddr10.1.1.100 saveenv reset

其中10.1.1.100是開發板的ip地址,與服務器是在同一網段。

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

4.3 修改代碼的鏈接地址

由于uboot的啟動地址與裸機代碼的地址不應該在一個地方,uboot的啟動地址為0x8000,而裸機代碼的地址現改為0x200000。

將該地址進行設置即可。

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

這樣每次開發板上電后,都會從tftp服務器上去獲取代碼執行。如果此時給樹莓派的供電線加上一個電源開關,這樣這樣就能夠非常方便高效的調試代碼了。

5.小結

本文主要介紹樹莓派裸機開發的步驟。嵌入式開發過程中,環境搭建往往十分的重要,一個好的開發環境,一個高效的驗證思路可以大大的節省開發時間。所以說,工欲善其事、必先利其器。想要學好嵌入式開發,學會利用各種工作,讓自己的工作效率加倍十分的重要。通過上述的文章描述,嵌入式的前期的基本環境可以搭建好,同時也可以理解系統的啟動過程。我覺得,萬事開頭難,只有邁出了第一步,其實寫起代碼也就沒什么太大的難度了。

- END -

原文標題:樹莓派4裸機基礎教程:環境搭建

文章出處:【微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105871
  • 環境搭建
    +關注

    關注

    0

    文章

    54

    瀏覽量

    9080

原文標題:樹莓派4裸機基礎教程:環境搭建

文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    GPIO在樹莓中的應用

    樹莓(Raspberry Pi)是一款由英國樹莓基金會開發的信用卡大小的單板計算機,它具有強大的功能和靈活性,可以用于各種項目和應用。通
    的頭像 發表于 01-09 09:41 ?195次閱讀

    STM32、Arduino、樹莓開發方式差異大嗎

    最近看到有網友問:STM32、Arduino、樹莓開發方式差異大嗎? ? 要說相同點,它們之間也有很多相同點。但你要說他們之間開發的差異,其實也蠻大的。 ? STM32、Arduin
    的頭像 發表于 01-02 11:33 ?416次閱讀

    樹莓傳感器使用方法 樹莓 Raspberry Pi 4優缺點

    樹莓傳感器使用方法 樹莓(Raspberry Pi)是一款由英國樹莓基金會
    的頭像 發表于 12-06 10:35 ?752次閱讀

    樹莓開發的最佳編程語言選擇

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

    ARM開發板與樹莓的比較

    ARM開發板和樹莓都是基于ARM架構的單板計算機,它們在教育、工業控制、物聯網等領域有著廣泛的應用。 硬件配置 ARM開發板和樹莓
    的頭像 發表于 11-05 11:11 ?628次閱讀

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓提供的一組可編程的引腳,是樹莓與外部世界進行交互的重要橋梁。通過GPIO,用戶可以控制外部電路,讀取外部信號,實現與外部電路的交互,從而
    的頭像 發表于 10-22 18:09 ?1224次閱讀

    什么是樹莓樹莓是什么架構的

    什么是樹莓 樹莓(Raspberry Pi,簡寫為RPi,別名為RasPi/RPI)是由英國“Raspberry Pi 慈善基金會”開發
    的頭像 發表于 10-22 17:33 ?1276次閱讀

    樹莓網關:物聯網應用的新標桿

    什么是樹莓樹莓(Raspberry Pi)是一種基于Linux的小型單板計算機,由英國的樹莓
    的頭像 發表于 10-09 16:44 ?396次閱讀
    類<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>網關:物聯網應用的新標桿

    樹莓的功能用途是什么

    、科研、工業控制、物聯網、多媒體播放、家庭自動化等領域。 樹莓(Raspberry Pi)是一種小型、低成本的單板計算機,由英國的Raspberry Pi基金會開發,其功能和用途非常廣泛。以下是
    的頭像 發表于 08-30 18:01 ?3091次閱讀

    樹莓gui開發用什么ide

    樹莓(Raspberry Pi)是一款功能強大的微型計算機,可以運行多種操作系統,如Raspbian、Ubuntu等。在樹莓派上進行GUI(圖形用戶界面)開發,可以使用多種集成
    的頭像 發表于 08-30 16:49 ?1035次閱讀

    樹莓是x86還是arm

    樹莓(Raspberry Pi)是一款由英國樹莓基金會(Raspberry Pi Foundation)開發的微型計算機。它基于ARM架
    的頭像 發表于 08-30 15:42 ?1366次閱讀

    樹莓裝ubuntu和raspbian哪個更好

    樹莓(Raspberry Pi)是一款由英國樹莓基金會開發的單板計算機,廣泛應用于教育、科研、物聯網等領域。
    的頭像 發表于 08-30 15:41 ?1634次閱讀

    樹莓和arm開發板的區別

    樹莓(Raspberry Pi)和ARM開發板都是基于ARM架構的微型計算機,但它們之間存在一些關鍵區別。 一、歷史背景 樹莓(Rasp
    的頭像 發表于 08-30 15:36 ?1213次閱讀

    linux開發板與樹莓的區別

    定義和用途 Linux開發板:Linux開發板是一種基于Linux操作系統的嵌入式開發板,通常用于工業自動化、物聯網、智能家居等領域。 樹莓
    的頭像 發表于 08-30 15:34 ?1140次閱讀

    【米爾-瑞米兼容樹莓擴展模塊-試用體驗】初始開發板_米爾-瑞米兼容樹莓擴展模塊

    兼容樹莓擴展模塊也有豐富的軟件支持: 為了讓大家對米爾-瑞米兼容樹莓擴展模塊板有更多的了解,下面是
    發表于 04-29 11:42
    百家乐开闲几率| 娱乐城百家乐官网规则| 镇宁| 百家乐官网单跳打法| 百家乐官网论坛博彩拉| 百家乐官网最大的赌局| 欢乐谷百家乐官网的玩法技巧和规则 | 网上百家乐官网游戏哪家信誉度最好| 南和县| 百家乐官网玩法最多的娱乐城| 大世界百家乐官网娱乐| 百家乐博彩开户博彩通| 威尼斯人娱乐场 澳门赌场| 德州扑克术语| 网上百家乐官网新利| 百家乐官网号游戏机| 百家乐出老千视频| 大发888娱乐场下| 516棋牌游戏下载| 永利博国际| 百家乐官网路单规则| 百家乐平台导航| 御匾会娱乐城| 百家乐官网波音平台有假吗| 百家乐网址哪里有| 大发888游戏平台 黄埔网| 澳门百家乐官网棋牌游戏| 百家乐从哪而来| 大发888老虎机| 百家乐官网永利娱乐场开户注册 | 百家乐微笑不倒| 新2娱乐城| 赌博百家乐官网的玩法技巧和规则 | 磨丁黄金城赌场| 闲和庄百家乐官网娱乐网| 精通百家乐的玩法技巧和规则| 易胜博足球开户| 百家乐官网真人游戏| 威尼斯人娱乐场送1688元礼金领取lrm | 百家乐官网博弈之赢者理论坛| 188金宝博|