Open unissoft-bj opened 9 years ago
export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf-
make menuconfig
make
注意,有一个错误,不影响modules编译
在生成modules之前,修改版本号(经测试,不起作用) nano include/generated/utsrelease.h
make modules
mkdir modules make INSTALL_MOD_PATH=./modules modules_install
root@radxa:/lib/modules/3.0.36+/kernel/drivers/net/wireless/rt2x00# insmod -f rt2800usb.ko insmod: ERROR: could not insert module rt2800usb.ko: Invalid module format
root@radxa:/lib/modules/3.0.36+/kernel/drivers/net/wireless/rt2x00# dmesg | tail [41992.235875] rt2800usb: version magic '3.0.36 mod_unload modversions ARMv5 ' should be '3.0.36+ SMP preempt mod_unload ARMv7 '
root@radxa:/lib/modules/3.0.36+/kernel/drivers/net/wireless/rt2x00# modprobe -f rt2800usb modprobe: FATAL: Module rt2800usb not found.
1,检查ihost上的kernel version root@radxa:~# uname -r 3.0.36+ root@radxa:~#
2,下载kernel source 3.0.36,cross compiler
3,复制linux-rockchip下的radxa_rock_linux_defconfig 到sourcecode/arch/arm/configs
4,make radxa_rock_linux_defconfig
5,make menuconfig
修改cpu类型 armv7 修改smp 增加ralink rt2800usb driver
6,修改.config CONFIG_CROSS_COMPILE="arm-linux-gnueabihf-" CONFIG_LOCALVERSION="+"
7,修改 scripts/setlocalversion
echo "+" -> echo ""
8,make modules
9,mkdir modules make INSTALL_MOD_PAHT=./modules modules_install
10, modinfo rt2800usb.ko
11,复制 root@radxa:/home/rock/rt2x00# ls -l total 144 -rw-r--r-- 1 rock rock 44737 Apr 30 09:05 rt2800lib.ko -rw-r--r-- 1 rock rock 36641 Apr 30 09:05 rt2800usb.ko -rw-r--r-- 1 rock rock 46105 Apr 30 09:05 rt2x00lib.ko -rw-r--r-- 1 rock rock 14675 Apr 30 09:05 rt2x00usb.ko
12,复制github board2ihost branch rocklit 下 rt5370下 cp rt2870.bin.029 /lib/firmware/rt2870.bin
13,insmod root@radxa:/home/rock/rt2x00# insmod rt2x00lib.ko root@radxa:/home/rock/rt2x00# insmod rt2x00usb.ko root@radxa:/home/rock/rt2x00# insmod rt2800lib.ko root@radxa:/home/rock/rt2x00# insmod rt2800usb.ko
alias: usb:v07B8p2870d_dc_dsc_dp_ic_isc_ip* depends: rt2x00usb,rt2x00lib,rt2800lib vermagic: 3.0.36+ SMP preempt mod_unload ARMv7 parm: nohwcrypt:Disable hardware encryption. (bool) root@radxa:/home/rock/rt2x00# root@radxa:/home/rock/rt2x00# root@radxa:/home/rock/rt2x00# root@radxa:/home/rock/rt2x00# insmod rt2800usb.ko insmod: ERROR: could not insert module rt2800usb.ko: Unknown symbol in module root@radxa:/home/rock/rt2x00# root@radxa:/home/rock/rt2x00# dmesg | tail -n 30 [74749.062643] rt2800usb: Unknown symbol rt2800_config_intf (err 0) [74749.062693] rt2800usb: Unknown symbol rt2800_set_rts_threshold (err 0) [74749.062745] rt2800usb: Unknown symbol rt2800_wait_wpdma_ready (err 0) [74749.062807] rt2800usb: Unknown symbol rt2x00mac_configure_filter (err 0) [74749.062859] rt2800usb: Unknown symbol rt2x00usb_disconnect (err 0) [74749.062919] rt2800usb: Unknown symbol rt2x00mac_flush (err 0) [74749.062967] rt2800usb: Unknown symbol rt2800_get_tkip_seq (err 0) [74749.063026] rt2800usb: Unknown symbol rt2800_write_tx_data (err 0) [74749.063083] rt2800usb: Unknown symbol rt2800_disable_radio (err 0) [74749.063151] rt2800usb: Unknown symbol rt2800_ampdu_action (err 0) [74749.063201] rt2800usb: Unknown symbol rt2800_config_ant (err 0) [74749.063251] rt2800usb: Unknown symbol rt2x00usb_register_read_async (err 0) [74749.063313] rt2800usb: Unknown symbol rt2x00mac_tx (err 0)
root@radxa:/home/rock/rt2x00# ls
rt2800lib.ko rt2800usb.ko rt2x00lib.ko rt2x00usb.ko
root@radxa:/home/rock/rt2x00# insmod rt2x00lib.ko
root@radxa:/home/rock/rt2x00# insmod rt2800lib.ko
root@radxa:/home/rock/rt2x00# insmod rt2x00usb.ko
root@radxa:/home/rock/rt2x00# insmod rt2800usb.ko
root@radxa:/home/rock/rt2x00# dmesg | tail -n 10
[74932.112693]
插拔rt5370
[74932.113013]
[ 168.244867] ------------ [ cut here ]------------
[ 168.244895] WARNING: at net/wireless/core.c:565 wiphy_register+0x50c/0x578()
[ 168.244928] [
https://launchpad.net/linux/+milestone/3.0.36
https://launchpad.net/linux/trunk/3.0.36/+download/linux-3.0.36.tar.gz
解决3.0.36 / 3.0.36+ moules版本问题: root@radxa:~/rt2x00# insmod rt2800usb.ko insmod: ERROR: could not insert module rt2800usb.ko: Invalid module format
可以用 modprobe –force 也可以修改 : /usr/src/kernels/{your version}/include/generated/utsrelease.h and just add the ‘+’ sign to the end of the version number. E.g.
define UTS_RELEASE "3.3.0-xxx+"
And now all modules compiled against the kernel will load with no issues.