MT7688 使用 u-boot-2021.01

mt7688 官方的 u-boot 太老太旧,主线 u-boot 似乎已经支持 mt7688 了。

见:https://github.com/u-boot/u-boot/commit/b02f76a83541fe9fe3a2918039b26fc133699c17

下载 u-boot-2021.01 https://sources.openwrt.org/u-boot-2021.01.tar.bz2

编译

解压:

tar xf u-boot-2021.01.tar.bz2
cd u-boot-2021.01

编译:

make linkit-smart-7688_defconfig
make ARCH=mips CROSS_COMPILE=/home/lql/work/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_glibc/bin/mipsel-openwrt-linux-  -j5

问题1.哪个是可以烧到spi nor flash 上的文件?

经过测试, u-boot-with-spl.bin 是可以烧到spi nor flash 上的文件

问题2.如何修改 debug 串口?

  • dts 需要修改

  • xx_defconfig 需要修改

    CONFIG_SPECIFY_CONSOLE_INDEX=y
    CONFIG_CONS_INDEX=1                  // 1 表示 uart0
    

    注意:新版 u-boot 串口波特率默认是 115200

问题3.reset 命令卡死?

可能原因:32M flash 有 4字节地址模式和3字节地址模式, 复位时如果没有从 4B 模式切回 3B 模式,就会出问题。

解决办法:CONFIG_SPI_FLASH_BAR=y 强制使用 3B 模式。

问题4.没有默认启动命令?

u-boot-2021.01 里面 mt7688 的默认env 里没有定义 bootcmd ,需要手动添加。

//board/seeed/linkit-smart-7688/Kconfigif BOARD_LINKIT_SMART_7688config SYS_BOARDdefault "linkit-smart-7688"config SYS_VENDORdefault "seeed"config SYS_CONFIG_NAMEdefault "linkit-smart-7688"                              -------------------------------------------------------o|
endif                                                                                                                   ||
---------------------------------------------------------------------------------------------                           |     |include/config.h  这个是自动生成的                                                    |/* Automatically generated - do not edit */                                         |#define CONFIG_BOARDDIR board/seeed/linkit-smart-7688                              |#include <config_uncmd_spl.h>                                                      |#include <configs/linkit-smart-7688.h>    <----------------------------------------o#include <asm/config.h>#include <linux/kconfig.h>#include <config_fallbacks.h>
-----------------------------------------------------------------------------------------
#include <common.h>                        // 里面 #include <config.h>
#include <bootstage.h>
#include <command.h>
#include <env.h>
#include <env_internal.h>
#include <log.h>
#include <sort.h>
#include <linux/stddef.h>
#include <search.h>
#include <errno.h>
#include <malloc.h>
#include <u-boot/crc.h>DECLARE_GLOBAL_DATA_PTR;/************************************************************************* Default settings to be used when no valid environment is found*/
#include <env_default.h>                   // Z:\opt\u-boot-2017.11.git\include\env_default.h
env_set_default   // Z:\opt\u-boot-2021.01\env\common.c

核心是添加 CONFIG_EXTRA_ENV_SETTINGS

问题5. OpenWrt 下编译u-boot 的各种问题

Q1: Build error: undefined reference to `pthread_once’

解决办法:修改 u-boot Makefile 加上 -pthread

参考:https://forum.openwrt.org/t/undefined-reference-to-pthread-once/65789/3

Q2:FATAL ERROR: Unrecognized check name “avoid_unnecessary_addr_size”

解决办法:修改 u-boot scripts/Makefile.lib , 用试错法兼容旧 dtc

    解决 openwrt 中编译 u-boot 报错 FATAL ERROR: Unrecognized check name "avoid_unnecessary_addr_size"diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index dfb6722..a7eda10 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -175,6 +175,11 @@ ld-version = $(shell $(LD) --version | $(srctree)/scripts/ld-version.sh)# Usage:  $(call ld-ifversion, -ge, 22252, y)ld-ifversion = $(shell [ $(ld-version) $(1) $(2) ] && echo $(3) || echo $(4))+# dtc-option
+# Usage:  DTC_FLAGS += $(call dtc-option,-Wno-unit_address_vs_reg)
+dtc-option = $(call try-run,\
+       echo '/dts-v1/; / {};' | $(DTC) $(1),$(1),$(2))
+#########
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 56e9d54..1697bc0 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -272,14 +272,16 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \# Disable noisy checks by defaultifeq ($(findstring 1,$(KBUILD_ENABLE_EXTRA_GCC_CHECKS)),)DTC_FLAGS += -Wno-unit_address_vs_reg \
-       -Wno-unit_address_format \
-       -Wno-avoid_unnecessary_addr_size \
-       -Wno-alias_paths \
-       -Wno-graph_child_address \
-       -Wno-graph_port \
-       -Wno-unique_unit_address \
-       -Wno-simple_bus_reg \
-       -Wno-pci_device_reg
+       -Wno-unit_address_format
+
+
+DTC_FLAGS += $(call dtc-option,-Wno-avoid_unnecessary_addr_size)
+DTC_FLAGS += $(call dtc-option,-Wno-alias_paths)
+DTC_FLAGS += $(call dtc-option,-Wno-graph_child_address)
+DTC_FLAGS += $(call dtc-option,-Wno-graph_port)
+DTC_FLAGS += $(call dtc-option,-Wno-unique_unit_address)
+DTC_FLAGS += $(call dtc-option,-Wno-simple_bus_reg)
+DTC_FLAGS += $(call dtc-option,-Wno-pci_device_reg)

参考:https://forum.openwrt.org/t/uboot-builds-failure-with-2020-01-for-openwrt-18-06/56009

Q3.LZMA u-boot.bin.lzma Error: Incorrect command

解决办法:修改 u-boot Makefile

--- a/Makefile
+++ b/Makefile
@@ -1009,7 +1009,7 @@ quiet_cmd_pad_cat = CAT     $@cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@quiet_cmd_lzma = LZMA    $@
-cmd_lzma = lzma -c -z -k -9 $< > $@
+cmd_lzma = xz -F lzma -c -z -k -9 $< > $@cfg: u-boot.cfg

说明:lzma = xz -F lzma

MT7688 使用 u-boot-2021.01相关推荐

  1. PowerBI视觉对象共计271组,2021.01.20日更新

    PowerBI视觉对象共计271组,2021.01.20日更新 内容包含导入文件和图标.预览图.文件名一致,在预览图内找到合适的可以直接在视觉对象文件夹搜索 下载地址:点击下载 超便宜 或者复制链接打 ...

  2. Leetcode刷题 2021.01.22

    Leetcode刷题 2021.01.22 Leetcode1042 不邻接植花 Leetcode1010 总持续时间可被 60 整除的歌曲 Leetcode1091 二进制矩阵中的最短路径 Leet ...

  3. 嬴群的Python程序设计基础学期总结 2021.01.04

    Python程序设计基础学期总结 ## 时光像水中的倒影,一晃大一上学期就过去了.昨日那埋怨时间太慢的情愫似乎还游离在脑际,而今大一下学期生活正向我们走来,蓦然回首,感慨颇多.刚迈入大学的时候对一切似 ...

  4. 2021/01/03 新标日第1课

    2021/01/03(2021/01/04补) 今天完成了新标日第一课的学习.回顾自己从五十音图,到浊音半浊音拗音合拗音拨音促音长音,终于完成了入门.继续努力,或许以后失业了可以做日语翻译. 去年秋夜 ...

  5. 一次挖矿入侵处理记录(2021.01.27)

    https://github.com/bg6cq/ITTS/blob/master/security/mine/README.md 转自上面链接,也是我的亲身经历,供大家学习.网络安全大家引以为戒.爱 ...

  6. 【总结】2021.01.18期末考总结

    2021.01.23期末考总结 友链 前言 D a y Day Day - 10 10 10(体育) D a y Day Day - 3 3 3(英语口语) D a y Day Day 0 0 0 D ...

  7. 2021.01.14【NOIP提高B组】模拟 总结

    2021.01.14[NOIP提高B组]模拟 总结 第一题 Candy 奇奇怪怪的题目. 一开始没有理解题目,其实就是同时变换. 打了一个暴力. 本人随机生成50000组数据,都过了,时间没超.希望出 ...

  8. 2021.01.29小型计算器

    2021.01.29小型计算器 题目描述 模拟程序型计算器,依次输入指令,可能包含的指令有: 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 运算指令:'ADD',' ...

  9. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

    文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...

  10. 2021.01.04 第 1 个工作日反思

    2020.1.4 是上班族 2021 年的第一个工作日. 感觉 2020 年过去很快 . 反思了一下自己的OKR: 2020 年的OKR 有一些未完成的项,但在Q4 OKR有了一些实质性的进展 . 原 ...

最新文章

  1. ps背景不变换字_分享五个超级实用的PS小技巧
  2. java jni demo_Android JNI:让你一眼知之的JNI DEMO
  3. 解决SSH远程执行命令找不到环境变量的问题
  4. linux查看无线网卡频率,查看无线网卡工作模式
  5. 熵权法中计算的熵值与决策树的熵值完全不一样之谜
  6. 【NLP】全面详解 | 深度学习中的注意力机制(一)
  7. 五十二、Java连接Mysql数据库
  8. RASP技术攻防之基础篇
  9. 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试
  10. 拥抱创新二十载,微软“创新杯”持续孵化中国青年开发者智慧创意
  11. 基于YOLOv5的车辆识别系统
  12. Java中的命名规范总结
  13. ios下js复制到粘贴板_js实现复制到剪贴板功能,兼容所有浏览器
  14. 区块链相关技术学习总结(1)——区块链以及区块链技术入门详解
  15. C/C++预处理过程详细梳理(预处理步骤+宏定义#define/#include+inline函数+宏展开顺序+条件预处理+其它预处理定义)
  16. 保存SVM模型并调用
  17. C++中关于数据小数点,取整的方法
  18. 中国家庭收入调查(CHIP)数据88-13年
  19. html文字波浪,javascript实现飘动波浪文字特效 - YangJunwei
  20. 阿里云创建及管理bucket(二)

热门文章

  1. 安装MongoDB报错Verify that you have sufficient privileges to start system services的解决方法
  2. 全面认识Scratch少儿编程
  3. 学习,使用主成分分析 (Principal components analysis,PCA)处理数据必看文章
  4. 实习日志_2022/3/11
  5. html汉子竖着显示,html文字怎么竖排显示
  6. GeoServer入门学习:04-发布Shapfile地图数据
  7. 【idea】idea使用
  8. Linux进程与任务管理
  9. java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY
  10. python学习爬取数据二级页面的数据