以前的硬件版本只使用了一个eth口,新的板子增加了一个eth口,并且增加了响应的通信时使用的灯。
led修改涉及到一下的内容:
(1)led 对应的gpio口(这个需要根据原理图来定义)
需要修改的源文件为 target/linux/ar71xx/files/arch/mips/ath79/mach-ap143.c
#define AP143_GPIO_LED_WLAN 0
//#define AP143_GPIO_LED_WAN 4 // 以前使用GPIO4连接wan口
#define AP143_GPIO_LED_LAN1 1 // 一直使用GPIO1连接eth0口
#define AP143_GPIO_LED_LAN2 4 // 现在使用GPIO4连接eth1口
(2)修改配置文件( target/linux/ar71xx/base-files/etc/uci-defaults/01-leds)
添加对lan2的led的定义
然后进行clean命令,重新编译即可。
附录:
ucidef_set_led_netdev() 位于uci-defaults.sh 文件中, 定义如下:ucidef_set_led_netdev() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local dev=$4
uci -q get system.$cfg && return 0 // 首先去/etc/config/system配置文件中查找灯设备(譬如本例中 led_lan2),若查找到,则返回,若无,则进行下面的修改
uci batch <<EOF // 向配置文件中写入配置
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='netdev'
set system.$cfg.dev='$dev'
set system.$cfg.mode='link tx rx'
EOF
UCIDEF_LEDS_CHANGED=1 // 更新标记
}
关于mach-ap143.c中led和gpio相关联的结构体的定义(位于linux-3.10.49/include/linux/leds.h)
/* For the leds-gpio driver */
struct gpio_led {
const char *name; // led名字
const char *default_trigger; // 触发类型
unsigned gpio; // 绑定的GPIO端口
unsigned active_low : 1; // 高低点评有效,为1时低电平有效,为0时高电平有效。
unsigned retain_state_suspended : 1;
unsigned default_state : 2;
/* default_state should be one of LEDS_GPIO_DEFSTATE_(ON | OFF | KEEP) */
};