樹莓派3B 核心編譯

2021-09-09 06:46:59 字數 3097 閱讀 2638

選著linux工程**,版本分支選擇rpi-4.14.y

如果已經有核心配置檔案則不需要此步驟。

在當前執行系統中執行如下命令可以獲取config.gz配置檔案,

pi@raspberrypi:~$ sudo modprobe configs

pi@raspberrypi:~$ ls /proc/con*

/proc/config.gz  /proc/consoles

pi@raspberrypi:~$ zcat /proc/config.gz > board.config

將獲得的核心配置檔案取出,用作rpi-4.14.y的配置檔案。

確認交叉編譯工具鏈,可以從github取得,

進入從github取得的核心目錄,

??/linux-rpi-4.14.y

生成.config檔案,

cp board.config .config

檢視核心配置,並確認生成.config,

make menuconfig arch=arm cross_compile=arm-linux-gnueabihf-

接著安裝模組到指定目錄,

make modules_install arch=arm cross_compile=arm-linux-gnueabihf- install_mod_path=??/modules

將核心和打包好的安裝模組,拷貝到樹莓派單板上(測試ip設為了192.168.1.11)。

tar -zcf modules.tar.gz modules/

scp modules.tar.gz pi@

192.168.1.11:~/

scp arch/arm/boot/zimage pi@

192.168.1.11:~/

將modules.tar.gz解壓,放到正確的目錄,

pi@raspberrypi:~$ tar -zxf modules.tar.gz

pi@raspberrypi:~$ sudo cp modules/lib/modules/4.14.93-v7 /lib/modules/

pi@raspberrypi:~$ sudo cp zimage /boot/kernel7.img

pi@raspberrypi:~$ sync

pi@raspberrypi:~$ sudo reboot

重啟,檢視各驅動模組是否正常。如下:

pi@raspberrypi:~$ lsusb

bus 001 device 005: id 1c4f:0002 sigma micro keyboard tracer gamma ivory

bus 001 device 004: id 093a:2510 pixart imaging, inc. optical mouse

bus 001 device 006: id 0424:7800 standard microsystems corp.

bus 001 device 003: id 0424:2514 standard microsystems corp. usb 2.0 hub

bus 001 device 002: id 0424:2514 standard microsystems corp. usb 2.0 hub

bus 001 device 001: id 1d6b:0002 linux foundation 2.0 root hub

還可以觀察桌面圖示是否正常,滑鼠鍵盤是否正常。

直到上一步,基本上沒什麼大問題。幾乎所有外設都能正常使用,除了網絡卡。

pi@raspberrypi:~$ ifconfig -a

lo: flags=73mtu 65536

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10

loop  txqueuelen 1000  (local loopback)

rx packets 0  bytes 0 (0.0 b)

rx errors 0  dropped 0  overruns 0  frame 0

tx packets 0  bytes 0 (0.0 b)

tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099mtu 1500

ether b8:27:eb:b9:48:0a  txqueuelen 1000  (ethernet)

rx packets 0  bytes 0 (0.0 b)

rx errors 0  dropped 0  overruns 0  frame 0

tx packets 0  bytes 0 (0.0 b)

tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到eth0網絡卡並沒有顯示出來。

跟蹤核心原始碼,或者檢視dmesg資訊,可以發現問題所在。檔案lan78xx.c,

node = of_get_child_by_name(dev->udev->dev.of_node, "mdio");獲取裝置樹的mdio節點失敗。

將原裝置樹目標檔案反編譯出來檢視,

pi@raspberrypi:~$ dtc -i dtb -o dts -o rasp.dts /boot/bcm2710-rpi-3-b-plus.dtb

發現usb節點下面沒有mdio相關子節點,相反,它使用了phandle的方式,新編譯進去的核心由於版本的差異,無法解析phandle指向的位址。所以網絡卡沒有驅動成功是當前裝置樹配置的問題。

由於bcm2710-rpi-3-b-plus.dtb檔案不能刪除,或者更名,否則單板啟動失敗。只能在原基礎上修改裝置樹。編輯之前反編譯出來的rasp.dts檔案。作如下修改,可以再原始碼裡面找到bcm283x-rpi-lan7515.dtsi這個檔案,找到mdio的節點。

然後重新編譯dts,生成dtb檔案,替換原來檔案bcm2710-rpi-3-b-plus.dtb。儲存,重啟。

再次檢視網絡卡,發現有線網絡卡已經正常。

樹莓派3B 核心編譯

1.1開發環境系統 ubuntu 16 64 位 linux 樹莓派核心原始碼 tools 樹莓派的交叉編譯工具 儲存路徑為 raspberry 下2.1檢視當前樹莓派編譯器的資訊 root raspberrypi cat proc version linux version 4.4.13 v7 d...

樹莓派3B 核心交叉編譯

使用 unzip 命令解壓核心和交叉編譯工具 加入環境變數 sudo gedit root bashrc 在末尾新增 export path path home lwl raspberry tools master arm bcm2708 gcc linaro arm linux gnueabihf...

樹莓派3B 編譯EMQX

emq是一款國產的高效能訊息 伺服器。功能也挺強大,使用也挺簡單。但是,emq是一款商業軟體,高階功能是需要購買license的。官方 上有詳細的介紹。類別效能 license emq x broker 十萬級開源免費 emq x enterprise 百萬級官網免費30天 emq x platfo...