ILD

IPQ5018 qsdk 12.1 open (ath11k) 版本编译
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2022-7-18 站点:Inside Linux Development

qsdk提供两种软件,私有的和开源的。私有的使用不开源的wifi驱动。开源的(open)使用ath11k驱动。各个路由器厂商使用私有的sdk。openwrt一般使用开源的wifi驱动。


下载的qsdk 12.1 r3,手册里面没有提,以为是不支持open (ath11k)的,以为是ath11.4才支持。编译ath11.4的时候,发现版本太老了,在新的发行版Fedora35上,有数不清的编译错误。gcc版本还是5.x。后面通过查看ath11.4的manifest,发现ath11k是位于qca/feeds/wlan-open。而12.1 r3也有这个目录。


ath11.4编译open的.config生成方法:


512M 32位

$ cp qca/configs/qsdk/ipq_512open.config .config
$ mv prebuilt/ipq50xx/ipq_512open/* prebuilt/ipq50xx/
$ sed -i "s/TARGET_ipq_ipq807x/TARGET_ipq_ipq50xx/g" .config


32位

$ cp qca/configs/qsdk/ipq_open.config .config
$ mv prebuilt/ipq50xx/ipq_open/* prebuilt/ipq50xx/
$ sed -i "s/TARGET_ipq_ipq806x/TARGET_ipq_ipq50xx/g" .config


64位

$ cp qca/configs/qsdk/ipq_open.config .config
$ mv prebuilt/ipq50xx_64/ipq_open/* prebuilt/ipq50xx_64/
$ sed -i "s/TARGET_ipq_ipq806x/TARGET_ipq_ipq50xx_64/g" .config


然后:
make defconfig
sed '/CONFIG_FEED_ath10k_firmware=y/d' -i .config
sed '/ath10k-firmware-qca4019=y/d' -i .config
sed '/ath10k-firmware-qca9887=y/d' -i .config
sed '/ath10k-firmware-qca9888=y/d' -i .config
sed '/ath10k-firmware-qca988x=y/d' -i .config
sed '/ath10k-firmware-qca9984=y/d' -i .config
sed '/rdk-v-wifi-ath10k=y/d' -i .config


make V=s


open配置文件主要有:

CONFIG_TARGET_ipq=y

CONFIG_TARGET_ipq_ipq50xx=y

CONFIG_TARGET_ipq_ipq50xx_QSDK_Open=y


而QSDK的配置文件有:

CONFIG_TARGET_ipq50xx=y

CONFIG_TARGET_ipq50xx_ipq50xx_32=y

CONFIG_TARGET_ipq50xx_ipq50xx_32_QSDK_256=y


在ath11.4的profile中:

target/linux/ipq/profiles/qsdk.mk


define Profile/QSDK_Open
        NAME:=Qualcomm-Atheros SDK Open Profile
        PACKAGES:=$(OPENWRT_STANDARD) $(SWITCH_SSDK_NOHNAT_PKGS) $(QCA_EDMA) \
        $(WIFI_OPEN_PKGS) $(STORAGE) $(USB_ETHERNET) $(UTILS) $(NETWORKING) \
        $(TEST_TOOLS) $(COREBSP_UTILS) $(KPI) $(SHORTCUT_FE) $(EXTRA_NETWORKING) \
        $(USB_DIAG) $(FTM) $(CNSS_DIAG) qca-cnss-daemon qca-wifi-hk-fw-hw1-10.4-asic \
        qrtr $(QMI_SAMPLE_APP) $(FAILSAFE) ath11k-fwtest ath11k-qdss $(MHI_QRTR) \
        -lk-ipq807x -lk-ipq806x -lk-ipq6018 -lk-ipq40xx cfr_tools
endef

define Profile/QSDK_Open/Description
        QSDK Open package set configuration.
        Enables wifi open source packages
endef

$(eval $(call Profile,QSDK_Open))


在qsdk 12.1的target/linux目录下没有搜索到QSDK_Open,以为不支持open。实际上打开:

target/linux/ipq50xx/profiles/qsdk.mk它的内容是:

    include $(TOPDIR)/qsdk-package/profiles/qsdk.mk

打开qsdk-package/profiles/qsdk.mk:


define Profile/QSDK_Open
        NAME:=Qualcomm Technologies, Inc SDK Open Profile
        PACKAGES:=$(OPENWRT_STANDARD) $(STORAGE) $(TEST_TOOLS) $(AUDIO) $(VIDEO) \
                $(COREBSP_UTILS) -qca-thermald $(FAILSAFE) $(USB_DIAG) $(SWITCH_SSDK_NOHNAT_PKGS) \
                $(FTM) $(KPI) $(UTILS) $(NETWORKING) $(EXTRA_NETWORKING) \
                $(WIFI_OPEN_PKGS) $(USB_ETHERNET) $(NSS_COMMON) $(NSS_STANDARD) $(NSS_MESH) \
                $(QCA_ECM_PREMIUM) $(MAP_PKGS) $(IGMPSNOOPING_RSTP) $(IPSEC) $(QOS) -lacpd  \
                qca-cnss-daemon qca-wifi-hk-fw-hw1-10.4-asic $(CNSS_DIAG) athdiag $(EMESH_SP) \
                qrtr $(QMI_SAMPLE_APP) $(NSS_SFE) ath11k-fwtest ath11k-qdss libtirpc cfr_tools kmod-qca-ovsmgr -qca-mcs-apps
endef

#       $(HW_CRYPTO) $(QCA_RFS) \
#       $(AQ_PHY)

define Profile/QSDK_Open/Description
        QSDK Open package set configuration.
        Enables wifi open source packages
endef

$(eval $(call Profile,QSDK_Open))

因此12.1是支持open的。在qca/configs/qsdk/目录下,也有open的配置:

ipq_512open.config

ipq_open.config


12.1 32位open配置生成方法:

$ cp qca/configs/qsdk/ipq_open.config .config

$ sed -i 's/TARGET_ipq807x_generic/TARGET_ipq50xx_ipq50xx_32/g' .config

$ sed -i 's/TARGET_ipq807x/TARGET_ipq50xx/g' .config

$ make defconfig


编译:

$ make -j12

编译过程私有的差不多,也是编译出一个openwrt。应该只有少量package的编译差异。



参考:

ipq5018路由器支持. https://insidelinuxdev.net/article/a0d9qx.html


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.