1.文章目的
2.樹莓派4B的硬件配置
3.第一個基礎工程構建
3.1 環(huán)境準備
3.2 源代碼下載
3.3 代碼編譯與程序下載
3.4 樹莓派硬件鏈接
4.優(yōu)化調(diào)試手段
4.1 修改sd卡文件中的config.txt文件
4.2 修改網(wǎng)絡環(huán)境
4.3 修改代碼的鏈接地址
5.小結(jié)
1.文章目的
樹莓派4作為一款學習嵌入式arm開發(fā)的開發(fā)板,是非常不錯的選擇。嵌入式開發(fā)往往需要的不僅僅是理論知識,還需要動手操作,然后實際體驗效果。由于目前開發(fā)板要么資料太少,要么板子太貴,或者可玩性太低,所以嵌入式的入門和深入一直都是非常困難的問題。我寫樹莓派4裸機基礎教程、樹莓派4驅(qū)動進階、樹莓派4的RTOS這一些列的文章,也是希望借此機會,和大家分享一下嵌入式開發(fā)過程的方方面面,也希望對學習嵌入式感興趣的人在閱讀完成這些文章中會有所收獲。由于樹莓派4的外設,相對于前代的樹莓派2、樹莓派3等標準許多,完全可以作為學習嵌入式,學習arm編程的不錯選擇。所謂萬變不離其宗,學會樹莓派4的嵌入式開發(fā),以后做其他的芯片的底層開發(fā)時,也是可以借鑒這種思想的。
寫這些東西的目的全憑自己的興趣愛好,在工作之余培養(yǎng)自己的文檔寫作能力與專業(yè)技能,如果有涉及到不正確的觀點和知識點的地方還請多多指教。
2.樹莓派4B的硬件配置
樹莓派4b的性能非常強,運行Android和win10也毫無壓力。性能強大,但是價格卻非常的低,是一款學習嵌入式開發(fā)、學習arm開發(fā)的非常不錯的開發(fā)板。
1.5GHz 4核心64位 ARM Cortex-A72 CPU (~3×倍性能)
1GB/2GB/4GB LPDDR4 SDRAM 內(nèi)存
全吞吐量千兆以太網(wǎng)
雙頻 802.11ac 無線網(wǎng)絡
藍牙 5.0
雙顯示器支持,分辨率高達 4K
VideoCore VI 顯卡,支持 OpenGL ES 3.x
HEVC 視頻 4Kp60 硬解碼
完全兼容早期的樹莓派產(chǎn)品
3.第一個基礎工程構建
嵌入式代碼編譯開發(fā)一般是兩種,一種是通過IDE進行編譯、下載、調(diào)試。這種開發(fā)的方式比較簡單,對環(huán)境配置的要求很低,只需要安裝IDE需要的環(huán)境即可。這種開發(fā)方式在開發(fā)單片機、中低端性能的芯片比較常見。另外一種就是在命令行中輸入相關的命令,需要自己手動的去寫編譯腳本。這種常見的就是在Linux的開發(fā)過程中。
樹莓派程序的開發(fā)過程一般都沒有IDE,都是直接用GCC,所以我在進行工程構建的時候,也會采用GCC在控制臺輸入的方式進行。工程構建就需要自己解決了。目前常用的自動化編譯工具就是Makefile。由于當前的第一個項目的工程比較容易,所以當前可用采用Makefile進行項目工程的構建。
3.1 環(huán)境準備
在不同的平臺上進行工程構建的時候,首先需要準備下面的環(huán)境:
1.arm交叉編譯工具鏈
2.可用執(zhí)行makefile的工具
交叉編譯工具鏈arm-none-eabi-gcc-5.4.1可以在官網(wǎng)上進行下載,也可以到網(wǎng)盤中下載:
鏈接:https://pan.baidu.com/s/1ad3d-pl4YbpgYrxKg6mX9g
提取碼:f3cm
上述網(wǎng)盤中的gcc只適用于windows,如果是其他的系統(tǒng),請自行下載arm的交叉編譯工具鏈。
如果要在windows上使用make命令,可以下載msys2,上面集成了make的環(huán)境。
然后將交叉編譯工具鏈加入到系統(tǒng)的環(huán)境變量中,同時打開msys64文件夾,修改msys2_shell.cmd
雙擊msys2_shell.cmd,打開窗口,確保輸入arm然后按下tab鍵可以看到如下的畫面
這樣系統(tǒng)環(huán)境就準備完成了。
3.2 源代碼下載
源代碼工程已經(jīng)在GitHub存在了,相關源碼可以在如下地址中找到:
https://github.com/bigmagic123/raspi4-bare-metal.git
在arm/1.compilation_environment中可以看到相關的文件列表。
文件名 | 說明 |
---|---|
link.ld | 鏈接文件 |
main.c | 函數(shù)入口 |
Makefile | 編譯規(guī)則文件 |
start.S | 初始化匯編代碼 |
uart.c | 串口相關的代碼 |
uart.h | 串口相關的頭文件 |
該代碼的功能是啟動跳轉(zhuǎn)到c代碼去執(zhí)行,然后串口輸出hello world程序。
3.3 代碼編譯與程序下載
上面兩個步驟完成之后,在MSYS可以進入到工程目錄,輸入make直接編譯即可。
可以看到生成了kernel7.img固件。該固件可以放到板子上運行。
3.4 樹莓派硬件鏈接
樹莓派4需要準備一張空的SD卡、一個串口線輸出信息、一條TYPEC線供電。
首先需要將工程目錄的sd_boot下面的文件放到空的SD卡目錄中。然后將編譯好的kernel7.img放到SD卡中即可。
接著將串口線連接到樹莓派上。
接著打開串口,給開發(fā)板上電,可以看到串口的輸出信息:
Helloworld!
此時一個簡單的裸機程序就執(zhí)行起來了。
4.優(yōu)化調(diào)試手段
上述過程已經(jīng)搭建完成環(huán)境,并且可以看到串口輸出信息了。但是由于每次編譯固件后,需要將固件放到sd卡中去執(zhí)行,這樣操作比較的繁瑣,不適合學習嵌入式開發(fā)。所以可以通過樹莓派的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 修改網(wǎng)絡環(huán)境
如果要開發(fā)板從tftp服務器上獲取代碼,可以將開發(fā)板設置的與pc機服務器在同一網(wǎng)段內(nèi)。將網(wǎng)線插上路由器,開發(fā)板可以通過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.插上網(wǎng)線到路由器
2.設置環(huán)境變量
setenvbootcmd"dhcp0x00200000192.168.12.137:kernel7.img;dcacheflush;go0x00200000" saveenv
需要注意的是192.168.12.137為自己的電腦的ip地址。
3.電腦開啟TFTP服務器
注意:
如果是開發(fā)板直連電腦的網(wǎng)線,這樣設置是無效的,因為pc機上一般不支持dhcp服務器。必須設置靜態(tài)ip地址。
然后開發(fā)板也需要給定一個ip地址??梢栽O置一個環(huán)境如下:
setenvipaddr10.1.1.100 saveenv reset
其中10.1.1.100是開發(fā)板的ip地址,與服務器是在同一網(wǎng)段。
setenvbootcmd"tftp0x0020000010.1.1.88:kernel7.img;dcacheflush;go0x00200000" saveenv
4.3 修改代碼的鏈接地址
由于uboot的啟動地址與裸機代碼的地址不應該在一個地方,uboot的啟動地址為0x8000,而裸機代碼的地址現(xiàn)改為0x200000。
將該地址進行設置即可。
重新編譯代碼,開發(fā)板上電即可??梢钥吹酱诖蛴〕鋈缦碌男畔?。
這樣每次開發(fā)板上電后,都會從tftp服務器上去獲取代碼執(zhí)行。如果此時給樹莓派的供電線加上一個電源開關,這樣這樣就能夠非常方便高效的調(diào)試代碼了。
5.小結(jié)
本文主要介紹樹莓派裸機開發(fā)的步驟。嵌入式開發(fā)過程中,環(huán)境搭建往往十分的重要,一個好的開發(fā)環(huán)境,一個高效的驗證思路可以大大的節(jié)省開發(fā)時間。所以說,工欲善其事、必先利其器。想要學好嵌入式開發(fā),學會利用各種工作,讓自己的工作效率加倍十分的重要。通過上述的文章描述,嵌入式的前期的基本環(huán)境可以搭建好,同時也可以理解系統(tǒng)的啟動過程。我覺得,萬事開頭難,只有邁出了第一步,其實寫起代碼也就沒什么太大的難度了。
- END -
原文標題:樹莓派4裸機基礎教程:環(huán)境搭建
文章出處:【微信公眾號:嵌入式IoT】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
樹莓派
+關注
關注
116文章
1686瀏覽量
105439 -
環(huán)境搭建
+關注
關注
0文章
53瀏覽量
9038
原文標題:樹莓派4裸機基礎教程:環(huán)境搭建
文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論