最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

STM32MP157 Linux系統(tǒng)移植開發(fā)篇8:Linux內(nèi)核配置方法及編譯

2021-08-11 09:15 作者:華清遠見研發(fā)中心  | 我要投稿

本文章為《STM32MP157 Linux系統(tǒng)移植開發(fā)篇》系列中的一篇,筆者使用的開發(fā)平臺為華清遠見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)。stm32mp157是ARM雙核,2個A7核,1個M4核,A7核上可以跑Linux操作系統(tǒng),M4核上可以跑FreeRTOS、RT-Thread等實時操作系統(tǒng),STM32MP157開發(fā)板所以既可以學嵌入式linux,也可以學stm32單片機。


針對FS-MP1A開發(fā)板,除了Linux系統(tǒng)移植篇外,還包括其他多系列教程,包括Cortex-A7開發(fā)篇、Cortex-M4開發(fā)篇、擴展板驅(qū)動移植篇、Linux應用開發(fā)篇、FreeRTOS系統(tǒng)移植篇、Linux驅(qū)動開發(fā)篇、硬件設計篇、人工智能機器視覺篇、Qt應用編程篇、Qt綜合項目實戰(zhàn)篇等。歡迎關(guān)注,更多stm32mp157開發(fā)教程及視頻,可加技術(shù)交流Q群459754978,感謝關(guān)注。


關(guān)于FS-MP1A開發(fā)板:

手機淘寶分享碼:復制本行文字打開手淘?T4FPXn3YYJ2?

鏈接:https://item.taobao.com/item.htm?id=622457259672


Linux內(nèi)核配置及編譯

解壓內(nèi)核

建立源碼目錄

linux@ubuntu:$ cd ~/FS-MP1A/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.31-r0


該目錄下以patch結(jié)尾的文件為ST官方提供的補丁文件,linux-5.4.31.tar.xz為標準linux源碼包。

解壓標準內(nèi)核源碼包

linux@ubuntu:$ tar -xvf linux-5.4.31.tar.xz


進入內(nèi)核源碼目錄下

linux@ubuntu:$ cd linux-5.4.31


添加STMicroelectronics官方補丁

解壓linux內(nèi)核源碼后得到的是Linux社區(qū)的標準內(nèi)核源碼,接下來需要將ST官方提供的源碼補丁添加到標準內(nèi)核中。

linux@ubuntu:$ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done

該命令會將上層目錄下所有的patch補丁文件應用到當前的內(nèi)核中。

生成標準板配置文件

生成multi_v7_defconfig默認配置

linux@ubuntu:$ make ARCH=arm multi_v7_defconfig "fragment*.config"

在默認multi_v7_defconfig配置中加入ST官方提供的fragment config

linux@ubuntu:$ for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r .config $f; done

linux@ubuntu:$ yes '' | make ARCH=arm oldconfig

生成自己的默認配置文件

linux@ubuntu:$ cp .config arch/arm/configs/stm32_fsmp1a_defconfig

取消git中的SHA1

linux@ubuntu:$ echo "" > .scmversion

配置內(nèi)核

導入交叉編譯工具鏈(如果還未安裝SDK可參考《SDK工具鏈安裝》章節(jié)進行安裝)

linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

驗證開發(fā)工具是否安裝正確,顯示版本信息如下圖所示。

linux@ubuntu:$ $CC --version


在編譯前如果需要編譯額外的功能或者驅(qū)動,可以使用meunconfig來對內(nèi)核進行配置。

linux@ubuntu:$ make menuconfig


可以在如上菜單中對內(nèi)核進行詳細的配置。

編譯內(nèi)核

linux@ubuntu:$ make -j4 ARCH=arm uImage vmlinux LOADADDR=0xC2000040


編譯后在內(nèi)核源碼目錄下,能夠在生成一個vmlinux文件,該文件是沒有經(jīng)過壓縮的內(nèi)核鏡像,這個鏡像導出了所有的內(nèi)核符號可以用作仿真調(diào)試。


此外在arch/arm/boot目錄下還生成了一個uImage文件,這就是經(jīng)過壓縮的內(nèi)核鏡像??梢杂米飨到y(tǒng)啟動。


編譯內(nèi)核模塊

linux@ubuntu:$ make ARCH=arm modules

該操作會將內(nèi)核中配置為模塊的源碼進行編譯,最終得到ko文件。


生成設備樹

以參考板DK1設備樹文件stm32mp15xx-dkx.dtsi和stm32mp157a-dk1.dts為參考,增加stm32mp15xx-fsmp1x.dtsi和stm32mp157a-fsmp1a.dts:

對stm32mp15xx-fsmp1x.dtsi內(nèi)容進行整理,去掉沒有被使用的節(jié)點信息和明顯與FS-MP1A的硬件沒有關(guān)系的節(jié)點信息。下文內(nèi)容是刪掉了所有暫不使用的節(jié)點信息,整理出一個相對簡單的設備樹文件,確保內(nèi)核可以正常啟動。后續(xù)各個外設移植時會陸續(xù)增加文件的相關(guān)內(nèi)容。

在arch/arm/boot/dts/ 目錄下新建

stm32mp15xx-fsmp1x.dtsi:


將編譯好的設備樹文件與內(nèi)核的uImage文件,復制到ubuntu主機的/tftpboot文件夾下,當使用tftp方式下載內(nèi)核與設備樹文件時會用到。

linux@ubuntu:$?cp arch/arm/boot/uImage /tftpboot/

linux@ubuntu:$ cp arch/arm/boot/dts/stm32mp157a-fsmp1a.dtb /tftpboot/

[if !supportLists]1.1?[endif]配置tftp

在linux系統(tǒng)移植中,我們使用tftp下載的方式來驗證結(jié)果。使用tftp下載需要構(gòu)建pxelinux相關(guān)的目錄。此部分可參考《通過tftp方式下載linux內(nèi)核及設備樹》章節(jié)進行搭建。

如果環(huán)境搭建已經(jīng)搭建完成,需要將ubuntu主機中的/tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17文件內(nèi)容,暫時替換為如下內(nèi)容,在后續(xù)的移植過程中會根據(jù)不同的需求進行修改。

?/tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17?

12345678?#?Generic?Distro?Configuration?file?generated?by?OpenEmbeddedmenu?title?Select?the?boot?modeTIMEOUT?20DEFAULT?stm32mp157a-fsmp1a-emmcLABEL?stm32mp157a-fsmp1a-emmc????????KERNEL?/uImage????????FDT?/stm32mp157a-fsmp1a.dtb????????APPEND?root=/dev/mmcblk1p4?rootwait?rw?console=ttySTM0,115200

修改01-00-80-e1-42-60-17文件后,繼續(xù)按照《通過tftp方式下載linux內(nèi)核及設備樹》章節(jié)中的描述進行啟動。

由于目前還未對源碼進行任何修改,在內(nèi)核啟動過程中會停留在如下地方。


后續(xù)會通過對系統(tǒng)源碼的修改,逐漸完成整個系統(tǒng)的啟動和對外圍設備的驅(qū)動。


STM32MP157 Linux系統(tǒng)移植開發(fā)篇8:Linux內(nèi)核配置方法及編譯的評論 (共 條)

分享到微博請遵守國家法律
辉县市| 栖霞市| 阆中市| 苏尼特左旗| 西乡县| 泊头市| 库伦旗| 东丽区| 泽普县| 横山县| 江津市| 光泽县| 铁力市| 乌拉特前旗| 罗源县| 临汾市| 日土县| 武平县| 黔江区| 凉城县| 新乐市| 罗定市| 中阳县| 朝阳市| 天峨县| 顺义区| 江西省| 江都市| 祁阳县| 渭源县| 台东市| 南皮县| 西吉县| 墨江| 临泉县| 加查县| 平山县| 古浪县| 民勤县| 淳化县| 边坝县|