OpenWrt--高通平台下适配一个新的Target Profile

OpenWrt下适配Target Profile

  • 概述
  • 目标版型基本参数
  • 内核修改项
  • 配置修改项
  • 注意事项
  • 总结

概述

最近由于工作上的原因,需要在最新的OpenWrt上适配一个新的版型,项目是基于客户定制的双频无线路由器,由于对新的框架了解不是很深入,遇到了一些问题,特别记录下,方便后期定位问题。

目标版型基本参数

这次的项目适配相对来说没什么难度,注意一些细节即可以了,而且已有现成的可作参考。

  1. 基于E1700的mach文件二次调整开发。

内核修改项

  1. 适配make menuconfig菜单选项
    /openwrt/target/linux/ar71xx/image/generic.mk
    	define Device/MGS6900
    		$(Device/e1700ac-v2-16M)
    		DEVICE_TITLE := Mexon MGS6900 board
    		BOARDNAME := MGS6900
    		SUPPORTED_DEVICES := mgs6900 这个信息一定要配置对,在升级时,会嵌入大包信息中,升级前创建相关信息到/tmp/sysupgrade.meta中,进行对比设备名。
    	endef
    	TARGET_DEVICES += MGS6900
    
    	define Device/MR3200
    	  $(Device/e1700ac-v2-16M)
    	  DEVICE_TITLE := Mexon MR3200 board
    	  BOARDNAME := MR3200
    	  SUPPORTED_DEVICES := mr3200
    	endef
    	TARGET_DEVICES += MR3200
    
    OpenWrt--高通平台下适配一个新的Target Profile_第1张图片
  2. 添加新的mach文件,参考mach-e1700ac.c文件,做细节上的修改即可。
    /openwrt/linux-4.14.90/arch/mips/ath79/mach-mgs6900.c
    /openwrt/linux-4.14.90/arch/mips/ath79/mach-mr3200.c
    注意下machine传参即可
    MIPS_MACHINE(ATH79_MACH_MGS6900, "MGS6900", "Mexon MGS6900 board ver 1.0",e1700ac_v2_setup);
    
  3. 修改Makefile以及编译选项
    //修改Makefile文件,编译新添加的mach文件
    /* /openwrt/linux-4.14.90/arch/mips/ath79/Makefile */
    obj-$(CONFIG_ATH79_MACH_MGS6900)		+= mach-mgs6900.o
    obj-$(CONFIG_ATH79_MACH_MR3200)			+= mach-mr3200.o
    
    //添加默认配置,使MGS6900和MR3200配置生效。
    /* /openwrt/target/linux/ar71xx/generic/config-default */
    CONFIG_ATH79_MACH_MGS6900=y
    CONFIG_ATH79_MACH_MR3200=y
    
    //添加内核选项 config ATH79_MACH_MGS6900   config ATH79_MACH_MR3200
    /* /openwrt/linux-4.14.90/arch/mips/ath79/Kconfig.openwrt */
    config ATH79_MACH_MGS6900
    	bool "Mexon MGS6900 support"
    	select SOC_QCA956X
    	select ATH79_DEV_AP9X_PCI if PCI
    	select ATH79_DEV_ETH
    	select ATH79_DEV_GPIO_BUTTONS
    	select ATH79_DEV_LEDS_GPIO
    	select ATH79_DEV_M25P80
    	select ATH79_DEV_USB
    	select ATH79_DEV_WMAC
    
    config ATH79_MACH_MR3200
    	bool "Mexon MR3200 support"
    	select SOC_QCA956X
    	select ATH79_DEV_AP9X_PCI if PCI
    	select ATH79_DEV_ETH
    	select ATH79_DEV_GPIO_BUTTONS
    	select ATH79_DEV_LEDS_GPIO
    	select ATH79_DEV_M25P80
    	select ATH79_DEV_USB
    	select ATH79_DEV_WMAC
    

配置修改项

OpenWrt 配置通用的部分很多,但是不同芯片不同版型又有差异,需要单独根据版型适配。一下几点需要重新配置。

  1. 对新版型命名
    #/openwrt/target/linux/ar71xx/base-file/lib/ar71xx.sh
    ar71xx_board_detect() 索引项下添加。添加规则按照/proc/cpuinfo 输出的信息匹配
    *"MGS6900 board ver 1.0")--------》对应mach文件中的name名字,如果修改名字需要同步修改board name
    	name="mgs6900"-----》对应各个初始化配置文件以及升级校验
    	;;
    *"MR3200 board ver 1.0")
    	name="mr3200"-----》对应各个初始化配置文件以及升级校验
    	;;
    
  2. 配置升级匹配项
    #/openwrt/target/linux/ar71xx/base-file/lib/upgrade/platform.sh
    platform_check_image() {
    local board=$(board_name)
    local magic="$(get_magic_word "$1")"
    local magic_long="$(get_magic_long "$1")"
    
    [ "$#" -gt 1 ] && return 1
    
    case "$board" in
    #找到相关类似版型适配进去即可
    
  3. 配置默认LED灯以及初始化的network配置
    #/openwrt/target/linux/ar71xx/base-file/etc/board.d/
    mgs6900)
    ucidef_set_led_switch "wan"  "WAN" "LED3" "switch0" "0x02"
    ucidef_set_led_switch "lan1" "LAN1" "LED2" "switch0" "0x04"
    ucidef_set_led_switch "lan2" "LAN2" "LED1" "switch0" "0x08"
    ucidef_set_led_switch "lan3" "LAN3" "LED0" "switch0" "0x10"
    ucidef_set_led_timer "run" "RUN" "mgs6900:green:run" "1000" "1000"
    #ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "mgs6900:green:2G" "phy1tpt"
    ;;
    mr3200)
    #ucidef_set_led_switch "wan" "WAN" "mgs6900:green:wan" "switch0" "0x02"
    #ucidef_set_led_switch "lan1" "LAN1" "mgs6900:green:lan1" "switch0" "0x04"
    #ucidef_set_led_switch "lan2" "LAN2" "mgs6900:green:lan2" "switch0" "0x08"
    #ucidef_set_led_switch "lan3" "LAN3" "mgs6900:green:lan3" "switch0" "0x10"
    ucidef_set_led_timer "run" "RUN" "mgs6900:green:run" "1000" "1000"
    #ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "mgs6900:green:2G" "phy1tpt"
    ;;
    
  4. 配置5G用于启动的文件,加载9880校准数据。
    #/openwrt/target/linux/ar71xx/base-file/etc/hotplug.d/firmware/11-ath10k-caldata
    case "$FIRMWARE" in
    "ath10k/cal-pci-0000:00:00.0.bin")
    	case $board in
    	#在相同版型下进行适配即可,采用的都是ath10k的驱动
    

注意事项

整个流程虽然很简单,但是涉及细节部分很多,所以在此记录下,以后遇到问题,随时更新。

总结

针对添加新的Target Profile项,后续结合工作会持续完善。前期做的都是比较简单的工作,以后会逐渐深入。

你可能感兴趣的:(OpenWrt,Profile,OpenWrt,适配新版型,E1700ac-v2)