工具与软件:
各位专家、您好!
我要将我们的版本移植到使用新的 SDK 1.0.0.3版本、并注意到了一个问题。
设置:
CPU - AM6231定制电路板
WLAN - CC3300
AM62X PSDK - 09.02.01.10
CC33XX SDK - 1.0.0.3
在将更新的源代码/补丁/二进制文件添加到 Yocto 构建后、我注意到更新后的内核模块会拒绝新的 cc33xx-conf.bin 文件。
root@host:~# dmesg |grep wlcore |grep -v -e "Processing message" -e "Reading control info" [ 13.583149] wlcore: cc33xx_probe :: Start [ 13.592413] wlcore: Wireless Driver Version 1.7.0.27 [ 13.592449] wlcore: WLAN CC33xx platform device probe done [ 13.628595] wlcore: Could not get nvs file ti-connectivity/cc33xx-nvs.bin [ 13.631366] wlcore: ERROR ti-connectivity/cc33xx-conf.bin configuration binary size is wrong, expected 981 got 1353 [ 13.668202] wlcore: WARNING falling back to default config [ 13.684158] wlcore: Chip wakeup [ 13.967361] wlcore: Set BLKsize to 128 [ 13.967505] wlcore: BOOT IRQs: 0x8 [ 13.967786] wlcore: Response len 704, allocated buffer len 712 [ 13.967791] wlcore: CMD# 35, len=712 [ 13.967798] wlcore: CC33XX device info: PG version: 2, Metal version: 0, Boot ROM version: 1 M3 ROM version: 1, MAC address: 0x3468b588b0d7, Device part number: 0 [ 13.967807] wlcore: Downloading ti-connectivity/cc33xx_2nd_loader.bin to device [ 14.071712] wlcore: Suspending IRQ while device reboots [ 14.177913] wlcore: Resuming IRQ [ 14.213018] wlcore: BOOT IRQs: 0x10 [ 14.215259] wlcore: ti-connectivity/cc33xx_2nd_loader.bin loaded successfully [ 14.215311] wlcore: Downloading ti-connectivity/cc33xx_fw.bin to device [ 15.041808] wlcore: Suspending IRQ while device reboots [ 15.148099] wlcore: Resuming IRQ [ 15.450720] wlcore: BOOT IRQs: 0x20 [ 15.450750] wlcore: ti-connectivity/cc33xx_fw.bin loaded successfully [ 15.450820] wlcore: WARNING flow control disable - BLE will not work [ 15.464104] wlcore: Downloading INI Params and Configurations to FW, INI Bin File Payload Length: 981 [ 15.464342] wlcore: ERROR FW is stuck, triggering recovery [ 17.492243] wlcore: Command T.O [ 17.492270] wlcore: CMD# 37, len=1000 [ 17.492281] wlcore: WARNING download INI params to FW command sending failed: -5 [ 17.527923] wlcore: ERROR FW download failed [ 17.563753] wlcore: wlcore_nvs_cb Complete
上面的示例显示内核模块需要一个较小的 conf 文件。 我注意到、此 SDK 版本中有更多配置。 在四处寻思后、我发现 cc33xx_kernel.patch 创建的 conf.h 文件是错误的版本。
$ cd path/to/cc33xx/sdk/1.0.0.3 $ grep -r CC33XX_CONF_VERSION . ./cc33conf_src/conf.h:#define CC33XX_CONF_VERSION 0x01070070 ./cc33conf_src/cc33conf.h:#define DEFAULT_VERSION_SYMBOL "CC33XX_CONF_VERSION" ./patches/cc33xx_kernel.patch:+#define CC33XX_CONF_VERSION 0x01070050 ./patches/cc33xx_kernel.patch:+ header.version = cpu_to_le32(CC33XX_CONF_VERSION); $ hexdump -s 4 -n 4 -C cc33xx_rootfs/lib/firmware/ti-connectivity/cc33xx-conf.bin 00000004 70 00 07 01 |p...| 00000008
上面的示例显示提示补丁创建了错误的 conf.h 文件并确认 SDK 中分发的 cc33xx-conf.bin 文件中使用的 CC33XX_CONF_VERSION。
与 该补丁创建的 conf.h 和 cc33conf_src 中分布的 conf.h (忽略变量的类型差异)不同时、情况会变得更加明显。
为了修复这个问题、我将 cc33conf_src/conf.h 文件丢弃到我的内核源代码树中并重新构建。 一切都很好。
我在故障排除过程中还遇到了使用 cc33xxconf 时遇到的问题、但我将为此创建另一个线程。