前面說到要編寫linux 2.6的驅動,必須建立核心原始碼樹,前面建立的原始碼樹是針對i686平台的,但是我麼嵌入式系統用的是arm平台,所以也要建立arm平台的核心原始碼樹。
第一步:先解壓源**
tar -jxvf linux-2.6.30.tar.bz2
第二步:進入剛才解壓後的目錄linux-2.6.30
cd linux-2.6.30
然後執行make mrproper命令,該命令確保源**目錄下沒有不正確的.o檔案以及檔案的互相依賴。
把檔案中的
arch ?= $(subarch)改為:
arch =arm
把 cross_compile ?=
改為 cross_compile =arm-linux-
接著就是配置核心,可以使用下面命令中的乙個:
make config(基於文字的最為傳統的配置介面,不推薦使用)
make menuconfig(基於文字選單的配置介面)
make xconfig(要求qt被安裝)
make gconfig(要求gtk+被安裝)
配置內容可參考相關文獻。
第三步:配置過核心之後,就可以進行編譯了。執行以下命令中的一種:
make (生成乙個壓縮的核心影像)
make bzimage(生成乙個使用gzip壓縮的核心)
第四步:
執行make modules(編譯在核心配置時選中的模組)在此過程中可能會遇到某些模組不能編譯通過,把相應模組去除再執行
make modules_install安裝核心
安裝的核心在/lib/modules/2.6.30裡。
至此,針對arm平台的核心樹安裝完成。
核心最上層的makefile在核心編譯過程中起了決定性的作用,在編譯過程中遇到的許多問題都可以在裡面得到解決的思路,希望大家多看看。
在嵌入式系統載入模組時可能會遇到如下錯誤:
embedsky_hello: version magic '2.6.30.4 mod_unload armv4 ' should be '2.6.30.4-embedsky mod_unload armv4 '
insmod: cannot insert 'embedsky_hello.ko': invalid module format
出錯原因:模組版本與核心版本不匹配!
解決辦法:匯入預設配置資訊,進入menuconfig 繼續配置general config ->......local version -> 加入如下內容:「-embedsky 」退出儲存為 .config ,重新編譯核心,將embedsky_hello.ko複製到板子,然後再「#insmod embedsky_hello.ko,然後就congratulations,you succeed啦!
編譯的核心樹最好是生成開發板映象的核心,不然也會編譯出錯,在編譯開發板核心的時候可能會出現
in function 'cx88_audio_initdev':
drivers/media/video/cx88/cx88-alsa.c:806: error: implicit declaration of function 'snd_card_create'
出現這些錯誤的原因是核心配置時多選了幾項重複的模組,只要在device driver-->********** devices-->
video capture adapters中,或再v4l usb devices中去除cx88等模組
或者直接用embedsky的配置檔案
LINUX 構建LNMP平台
2.1 問題 沿用練習一,通過調整nginx服務端配置,實現以下目標 1.配置fast cgi支援php網頁 2.建立php測試頁面,測試使用php連線資料庫的效果 2.2 方案 使用2臺rhel7虛擬機器,其中一台作為lnmp伺服器 192.168.4.5 另外一台作為測試用的linux客戶機 1...
ARM核心板 迅為4412核心板 核心板中的小新潮
itop 4412核心板是迅為電子推出的一款高階四核核心板,配備三星exynos 4412四核處理器,主頻為1.4ghz,內建8gb儲存空間。該板設計小巧。配備三星自家電源管理晶元,具有9路dc dc和28路ldo輸出電源 在 20 至70 範圍的高低溫執行測試中執行良好 這款核心板不僅擁有強大的配...
arm平台linux移植ethtool工具
1.git.kernel.org pub scm network ethtool ethtool.git 2.tar xzf ethtool 3.15.tar.gz cd ethtool 3.15 3.原始碼中是沒有configure檔案的首先要編譯生成該檔案 4.依次執行 aclocal auto...