关于mtk-openwrt-sdk-20160324-8f8e4f1e dts的调试过程

先说结论

MTK SDK 不使用 OpenWRT 官方的 dts 定义 ROM 布局,网卡布局。
正式宣告这套源码不支持dts模式
如果要折腾相关驱动,直接改内核文件,把关联的宏打开,menuconfig打不开,手动打开
它,这套源码很多地方耦合性差,所以需要细心一点把牵连的宏都开了。
最后因为是openwrt编译框架,所以改动的地方需要学习补丁制作的方法,把修改之处做成补丁。
补丁的制作方式 检索 “ quilt 工具”

调试过程

第一次开发openwrt,
从供应商拿到这个版本的sdk准备开发openwrt,
在折腾外部时钟的发现mtk一些坑
直接拿最新的openwrt源码什么编译问题都没有,
就是测试出来的wifi不稳定
于是不断的研究mtk这套源码,为啥wifi这么稳定,怎么移植到新的源码上。

下面是mtk-sdk的wifi效果

在这里插入图片描述

开源openwrt21的wifi效果

在这里插入图片描述

1.DTS功能

编译后发现dts文件怎么样都是不加载的,所以即便怎么修改都是没意义的.

1.1发现dts文件加载不了

经过删除和修改文件的方式,发现固件的结果和dts不关连。

1.2一个board加载dts文件的理论位置

在这里插入图片描述

1.3DTS加载的相关宏设置

后面发现DTS功能应该是 DTB DTC DEVICETREE DTS OF 。。。 等这几个宏没打开
在make menuconfig里面尝试打开dtb
发现找不到user_devicetree 这类的宏在什么地方打开
在这里插入图片描述

1.4config的配置文件的用途

经过仔细对比,大概率是在板子定义的 config3.10里面,它会在下载源码后,把这块配置加载到内核配置里面
但每次编译器会把最新config更新到这个文件里,所以如果要加载你想要的config配置,需要在编译器先把源码清掉。不然会被源码的配置反写到这里。
在这里插入图片描述

尝试将别的config3.10带有启动的这个宏配置文件进行加载,还是不生效

1.5通过编译日志发现dts文件加载被默认屏蔽掉

在这里插入图片描述

后面找到 被手动屏蔽掉的地方
在这里插入图片描述

打开还是不行

1.6dtc工具没有被编译

因为相关的宏没法打开,导致dtc工具没有被makefile 加载编译
直接找到dtc的mk文件强制打开它
在这里插入图片描述
在这里插入图片描述

1.7 DTB marker not found! DTB的标签没找到

在这里插入图片描述

这玩意来自于
在这里插入图片描述

1.8 关于OWRTDT补丁

网上找到一个补丁0103-MIPS-OWRTDT.patch
里面有描述这个dtb标志位怎么添加,可是这个补丁打不上,原因是内核版本不一致。
0103-MIPS-OWRTDT.patch

From c174d2250e402399ad7dbdd57d51883d8804bba0 Mon Sep 17 00:00:00 2001
From: John Crispin <blogic@openwrt.org>
Date: Mon, 15 Jul 2013 00:40:37 +0200
Subject: [PATCH 31/33] owrt: MIPS: add OWRTDTB secion

Signed-off-by: John Crispin <blogic@openwrt.org>
---
 arch/mips/kernel/head.S   |    3 +++
 arch/mips/ralink/Makefile |    2 +-
 arch/mips/ralink/of.c     |    4 +++-
 3 files changed, 7 insertions(+), 2 deletions(-)

--- a/arch/mips/kernel/head.S
+++ b/arch/mips/kernel/head.S
@@ -86,6 +86,9 @@ EXPORT(__image_cmdline)
 	.fill	0x400
 #endif /* CONFIG_IMAGE_CMDLINE_HACK */
 
+	.ascii  "OWRTDTB:"
+	EXPORT(__image_dtb)
+	.fill   0x4000
 	__REF
 
 NESTED(kernel_entry, 16, sp)			# kernel entry point
--- a/arch/mips/ralink/of.c
+++ b/arch/mips/ralink/of.c
@@ -66,6 +66,8 @@ static int __init early_init_dt_find_mem
 	return 0;
 }
 
+extern struct boot_param_header __image_dtb;
+
 void __init plat_mem_setup(void)
 {
 	set_io_port_base(KSEG1);
@@ -74,7 +76,7 @@ void __init plat_mem_setup(void)
 	 * Load the builtin devicetree. This causes the chosen node to be
 	 * parsed resulting in our memory appearing
 	 */
-	__dt_setup_arch(__dtb_start);
+	__dt_setup_arch(&__image_dtb);
 
 	strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
 

于是尝试对他进行手动修改

编译通过了,很开心,但内核没起来,但至少DTS文件是加载进去了

在这里插入图片描述

尝试把剩下的补丁也手动进去测试一下,
发现不行,后面的补丁都没打,因为从源码是上就没这个文件,所以可以认定这套源码本身不支持dts,
而且不是官方把一套支持dts 的源码改成他们的结构,而是这芯片的ralink源码本身就不支持这种操作。

在这里插入图片描述

1.9结论

参考https://www.cnblogs.com/JesseFang/p/6961970.html
参考https://blog.csdn.net/kinbo88/article/details/80089809

MTK SDK 不使用 OpenWRT 官方的 dts 定义 ROM 布局,网卡布局。
正式宣告这套源码不支持dts模式
吐了 妈的

现在还剩下:
1.找mtk更新支持dts的额源码
2.给这套源码换内核版本,找一个差不多的但是支持dts的
3.将wifi驱动移植到最新的代码

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交叉编译之王 hahaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值