caiwang / board2ihost

0 stars 0 forks source link

kernel 3.0.36 source code -> rt2800usb.ko #59

Open unissoft-bj opened 9 years ago

unissoft-bj commented 9 years ago

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.

unissoft-bj commented 9 years ago

进入 linux-3.0.36

检查交叉编译环境

export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf-

一个最简的配置,只保留rt2800usb相关内容

或者直接从github上复制.config

make menuconfig

编译

make 注意,有一个错误,不影响modules编译 image

在生成modules之前,修改版本号(经测试,不起作用) nano include/generated/utsrelease.h

define UTS_RELEASE "3.0.36+"

编译模块

make modules

安装模块到modules目录

mkdir modules make INSTALL_MOD_PATH=./modules modules_install

image

目标文件

image

unissoft-bj commented 9 years ago

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.

unissoft-bj commented 9 years ago

修改处理器类型 armv7 http://forum.xda-developers.com/showthread.php?t=2231136

修改kernel version http://stevechui.blogspot.com/2011/10/compiling-kernel-modules-tunko-for.html

unissoft-bj commented 9 years ago

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 image

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

unissoft-bj commented 9 years ago

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)

unissoft-bj commented 9 years ago

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] from [74932.112751] from [74932.112816] from [74932.112875] from [74932.112948] from [74932.113013] from [74932.113070] ---[ end trace a3ed6a9a03878392 ]--- 74932.113102 -> rt2x00lib_probe_dev: Error - Failed to initialize hw. [74932.115486] rt2800usb: probe of 2-1.3:1.0 failed with error -22 [74932.115662] usbcore: registered new interface driver rt2800usb root@radxa:/home/rock/rt2x00#

unissoft-bj commented 9 years ago

插拔rt5370

[74932.113013] from [74932.113070] ---[ end trace a3ed6a9a03878392 ]--- 74932.113102 -> rt2x00lib_probe_dev: Error - Failed to initialize hw. [74932.115486] rt2800usb: probe of 2-1.3:1.0 failed with error -22 [74932.115662] usbcore: registered new interface driver rt2800usb

unissoft-bj commented 9 years ago

驱动失败

[ 168.244867] ------------ [ cut here ]------------ [ 168.244895] WARNING: at net/wireless/core.c:565 wiphy_register+0x50c/0x578() [ 168.244928] [] (unwind_backtrace+0x0/0xf8) from [] (warn_slowpath_common+0x4c/0x64) [ 168.244957] [] (warn_slowpath_common+0x4c/0x64) from [] (warn_slowpath_null+0x1c/0x24) [ 168.244991] [] (warn_slowpath_null+0x1c/0x24) from [] (wiphy_register+0x50c/0x578) [ 168.245020] [] (wiphy_register+0x50c/0x578) from [] (ieee80211_register_hw+0x2ac/0x608) [ 168.245056] [] (ieee80211_register_hw+0x2ac/0x608) from [] (rt2x00lib_probe_dev+0x540/0x718 [rt2x00lib]) [ 168.245094] [] (rt2x00lib_probe_dev+0x540/0x718 [rt2x00lib]) from [] (rt2x00usb_probe+0x100/0x1b0 [rt2x00usb]) [ 168.245134] [] (rt2x00usb_probe+0x100/0x1b0 [rt2x00usb]) from [] (usb_probe_interface+0xdc/0x1a8) [ 168.245168] [] (usb_probe_interface+0xdc/0x1a8) from [] (driver_probe_device+0x90/0x1ac) [ 168.245197] [] (driver_probe_device+0x90/0x1ac) from [] (__driver_attach+0x8c/0x90) [ 168.245232] [] (__driver_attach+0x8c/0x90) from [] (bus_for_each_dev+0x5c/0x88) [ 168.245258] [] (bus_for_each_dev+0x5c/0x88) from [] (bus_add_driver+0x180/0x254) [ 168.245284] [] (bus_add_driver+0x180/0x254) from [] (driver_register+0x78/0x13c) [ 168.245311] [] (driver_register+0x78/0x13c) from [] (usb_register_driver+0x6c/0x15c) [ 168.245338] [] (usb_register_driver+0x6c/0x15c) from [] (do_one_initcall+0xfc/0x164) [ 168.245379] [] (do_one_initcall+0xfc/0x164) from [] (sys_init_module+0xcd0/0x1a68) [ 168.245408] [] (sys_init_module+0xcd0/0x1a68) from [] (ret_fast_syscall+0x0/0x30) [ 168.245434] --- [ end trace 235d461d91e298c0 ]--- [ 168.245449] (null) -> rt2x00lib_probe_dev: Error - Failed to initialize hw. [ 168.245644] rt2800usb: probe of 2-1.3:1.0 failed with error -22 [ 168.245732] usbcore: registered new interface driver rt2800usb