您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關PopMetal和PX2上運行upstream linux kernel代碼怎么寫,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Rockchip的平臺,以其強大的性能和豐富的功能,在開源社區大受歡迎,Linux內核對其提供越來越豐富的支持。
Linux內核目前發布的最新穩定版本是Linux 4.2,Linux 4.3的合并窗口已經打開,大概下周會發布rc1版本,最終的穩定版本
會在一兩個月內發布。在Linux內核的每一個版本中,都會合并國內外大量Linux kernel hacker們為Rockchip平臺提交的代碼,使得
upstream對Rockchip平臺的支持越來越完善。
Chipspark打造的兩款開發板PX2和PopMetal,以其豐富的接口和強大的性能,受到了國內外創客的廣泛青睞,在Linux 4.1版本中,
日本的大牛FUKAUMI Naoki就提交了對PX2的支持代碼。同時,PopMetal也在Linux 4.2中得到了支持,成為upstream默認支持的一款開發板。
對于Linux愛好者來說,能時刻follow upstream的最新代碼,是一件很酷的事情,不僅能體會到自己hack的樂趣,還能時刻體驗Linux的最新
特性,無論是對自己的學習還是對新產品的開發 ,都會提供很大的幫助。
下面主要講一下,如何編譯upstream的最新代碼,并使他運行在PopMetal和PX2開發板上。
(1)首先現在代碼,在這里我們下載linux-stable分之的代碼。
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
下載完成后,我們切到最新的穩定分支linux-4.2.y,當然其他分支也可以。
git checkout -b linux-4.2.y origin/linux-4.2.y
(2)配置,Linux upstream目前對ARM的配置采用multi platform的方式,即所有的ARM平臺(無論是Rockchip還是Samsung exynos、TI omap),
他們共用同 一個配置文件,對于ARM Cortex 系列 32位的芯片來說,這個配置文件是multi_v7_defconfig
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make multi_v7_defconfig
為了能夠正常的適用debug 串口的功能,我們還在配置(make menuconfig)里面做如下修改:
make menuconfig
該配置主要是在cmdline里面指定debug的console為ttyS2,并且開啟earlyprintk功能:console=ttyS2,115200 earlyprintk
另外,為了能夠順利進入命令行, 我們這里采用最簡單的initramfs文件系統,initramfs文件系統的制作方法很簡單,想自己
實踐的同學可以去網上查找相關資料,這里直接可以從github上下載我制作好的initramfs:
git clone https://github.com/andyshrk/AndyHack.git
克隆下來的rootfs目錄即是我制作的簡易initramfs,然后在make menuconfig里面做如下配置:
這里需要填寫的是initramfs目錄在本地的相對路徑,請根據自己的實際情況填寫。
PopMetal上使用的PMU是RK808,multi_v7_defconfig默認沒有打開RK808的配置,在這里我們需要自己配置上去,否則emmc會
工作異常:
首先要選上Rockchip RK3xxx I2C adapter
選上RK808的MFD配置
選上RK808 regulator配置:
另外,大家手上的開發板里面應該默認都燒寫了Android系統,這樣Uboo在啟動的時候,會自動把Android的根文件系統boot.img
加載到內存中,為了避免內核自動加載Android的根文件系統(因為upstream的kernel默認配置有很多是和Android 不匹配的,加載會失敗
導致內核崩潰),需要對內核代碼做如下修改:
(3)編譯代碼,這個PopMetal和PX2 有一些差別,主要是因為PopMetal的uboot支持標準的dtb功能,而PX2的uboot不支持該功能
所以對于PX2來說,需要把dtb文件和內核編譯在一起,而PopMetal確實編譯生成獨立的kernel.img和resource.img
make zImage -j8
make dtbs
對于PopMetal,執行如下命令:
./resource_tool arch/arm/boot/dts/rk3288-popmetal.dtb
./mkkrnlimg arch/arm/boot/zImage kernel.img
對于PX2,執行如下命令:
cat arch/arm/boot/zImage arch/arm/boot/dts/rk3066a-rayeager.dtb > dkernel
./mkkrnlimg dkernel kernel.img
其中resource_tool和mkkrnling是Rockchip平臺上生成resource.img和kernel.img的工具,可以直接從chipspark提供的內核代碼里面拷貝
燒寫生成的kernel.img和resource.img(對于PX2,只需要燒寫kernel.img) ,系統就能啟動到命令行狀態。
另外,如果對Android的boot.img里面的init.xxx.rc腳本做少量的修改,也可以用upstream的內核把Android的基本系統跑起來,這個后面再寫。
以上就是PopMetal和PX2上運行upstream linux kernel代碼怎么寫,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。