csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决
已在內(nèi)核代碼中添加EmbedSky_hello驅(qū)動(dòng)為例,進(jìn)行內(nèi)核編譯時(shí)候出現(xiàn)了一下幾個(gè)問(wèn)題:
1、在 /opt/EmbedSky/linux 2.6.30.4/drivers/char目錄下修改“Kconfig”文件,添加如下內(nèi)容:
config EmbedSky_HELLO
tristate "TQ2440/SKY2440 Hello Driver"
depends on ARCH_S3C2440
help
EmbedSky TQ2440/SKY2440 Hello.
后,別忘了在同目錄下的“Makefile”文件中添加如下內(nèi)容:
obj-$(CONFIG_EmbedSky_HELLO) +=EmbedSky_hello.o
將原來(lái)的 obj-$(CONFIG_TQ2440_HELLO) +=EmbedSky_hello.o 一句刪除。
然后,按照常理,在/opt/EmbedSky/linux 2.6.30.4/目錄下運(yùn)行#make menuconfig命令后在內(nèi)核配置界面里選擇Device Drivers -->....Character devices -->后會(huì)出現(xiàn)如下選項(xiàng):
<>TQ2440/SKY2440 Hello Driver
但在剛解壓的內(nèi)核中進(jìn)行上述工作,最后不會(huì)出現(xiàn)上面說(shuō)的配置選項(xiàng),這是為什么呢?原因在于沒(méi)有進(jìn)行系統(tǒng)類型的設(shè)置,也就是沒(méi)有和上面的“depends on ARCH_S3C2440”搭配好。現(xiàn)在需要進(jìn)行如下工作:
#make menuconfig命令進(jìn)入內(nèi)核配置界面,選擇“Load an Alternate Configuration File”,輸入路徑“arch/arm/configs/s3c2440_defconfig”,回車進(jìn)入到“System Type”選項(xiàng)配置菜單,將S3C2440 Machines選項(xiàng)下做如下選擇:只選擇SMDK2440和SMDK2440 withS3C2440 CPU module兩個(gè)選項(xiàng)。然后退回最初的配置菜單,選擇最下面的“Save an Alternate Configuration File”,將其保存為“.config”文件。在編譯系統(tǒng)時(shí)會(huì)自動(dòng)調(diào)用該文件。
再進(jìn)行驅(qū)動(dòng)配置就會(huì)出現(xiàn)“ <>TQ2440/SKY2440 Hello Driver”選項(xiàng)了。
2、在內(nèi)核目錄下運(yùn)行命令“make SUBDIR=drivers/char/ modules”生成EmbedSky_hello.ko文件(在drivers/char/目錄下),將其復(fù)制到開(kāi)發(fā)板 /lib 目錄下,按常理當(dāng)運(yùn)行“#insmod EmbedSky_hello.ko”加載模塊命令后,會(huì)顯示EmbedSky_hello.c文件中printk指令所定義的出輸出內(nèi)容。但是事與愿違,出現(xiàn)了如下錯(cuò)誤提示:
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
出錯(cuò)原因:模塊版本與內(nèi)核版本不匹配!
解決辦法:導(dǎo)入預(yù)設(shè)配置信息,進(jìn)入menuconfig 繼續(xù)配置General config ->......Local version -> 加入如下內(nèi)容:“-EmbedSky ”退出保存為 .config ,重新編譯內(nèi)核,將EmbedSky_hello.ko復(fù)制到板子,然后再“#insmod EmbedSky_hello.ko,然后就congratulations,you succeed啦!^_^
總結(jié)
以上是生活随笔為你收集整理的csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux对当前使用的分区分割,实例解说
- 下一篇: linux 其他常用命令