问题描述:

一开始上电的时候uart2串口出现了乱码还有部分uboot的log打印信息(通过飞线接到串口抓到),如下图所示:

然后剩下的部分uboot的log打印出现到了debug串口uart4中,

分析修改要达到的目的:让uart4 debug打印正常,uart2上的打印切换到uart4,关闭掉uart2,避免uart2在一上电和uboot状态的时候出现打印乱码和部分uboot的log信息,。

修改如下:

说明:

SDK版本:RK3399 LINUX SDK V0.1_20170117
对比看了下几个版本的SDK,要在安卓10以后的SDK才支持自己配置ddr uart信息,之前的SDK应该是不支持的,所以我这边找到RK3399 android10的SDK来生成自己定制的ddr bin和编译较新版本的loader文件。

涉及的文件:

./rkbin/RKBOOT/RK3399MINIALL.ini
./rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin
./rkbin/tools/ddrbin_tool_user_guide.txt
./rkbin/tools/ddrbin_param.txt

1、通过查看rkbin/RKBOOT/RK3399MINIALL.ini,确认当前uboot使用的是哪个ddr bin,一般rk的SDK代码会默认有三个不通频率值的ddr bin文件备用,我这里修改的ddr bin是rk3399_ddr_800MHz_v1.24.bin文件;

2、修改串口的参数ddrbin_param.txt,我这里使用的是uart4,因此参数设置如下:
uart id=4
uart iomux=0
uart baudrate=115200
具体的参数设置可以查看ddrbin_tool_user_guide.txt文件和cpu的datasheet TRM来修改。

3、然后通过./ddrbin_tool ddrbin_param.txt rk3399_ddr_800MHz_v1.24.bin重新生成rk3399_ddr_800MHz_v1.24.bin,之后把这个bin拷贝到rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin

4、修改RK3399MINIALL.ini配置文件

--- a/rkbin/RKBOOT/RK3399MINIALL.ini
+++ b/rkbin/RKBOOT/RK3399MINIALL.ini
@@ -2,19 +2,19 @@NAME=RK330C[VERSION]MAJOR=1
-MINOR=15
+MINOR=26[CODE471_OPTION]NUM=1
-Path1=tools/rk_tools/bin/rk33/rk3399_ddr_800MHz_v1.15.bin
+Path1=bin/rk33/rk3399_ddr_800MHz_v1.24.binSleep=1[CODE472_OPTION]NUM=1
-Path1=tools/rk_tools/bin/rk33/rk3399_usbplug_v1.15.bin
+Path1=bin/rk33/rk3399_usbplug_v1.26.bin[LOADER_OPTION]NUM=2LOADER1=FlashDataLOADER2=FlashBoot
-FlashData=tools/rk_tools/bin/rk33/rk3399_ddr_800MHz_v1.15.bin
-FlashBoot=tools/rk_tools/bin/rk33/rk3399_miniloader_v1.15.bin
+FlashData=bin/rk33/rk3399_ddr_800MHz_v1.24.bin
+FlashBoot=bin/rk33/rk3399_miniloader_v1.26.bin[OUTPUT]
-PATH=rk3399_loader_v1.15.115.bin
+PATH=rk3399_loader_v1.24.126.bin

5、编译loader文件拷贝到rkbin/bin/rk33/目录

u-boot 下,执行:
./make.sh loader

sdk目录下:
./mkimage.sh
生成到rockdev下

6、修改uboot的编译脚本build/mk-uboot.sh(不同SDK可能有些许区别,新版的SDK好像直接在uboot目录下能编译loader文件即可),我这里是旧版本的LINUX SDK的代码,修改如下:

diff --git a/build/mk-uboot.sh b/build/mk-uboot.sh
index 0e422a6..6925bd4 100755
--- a/build/mk-uboot.sh
+++ b/build/mk-uboot.sh
@@ -80,16 +80,16 @@ EOFelif [ "${CHIP}" == "rk3399" ]; then$TOOLPATH/loaderimage --pack --uboot ./u-boot-dtb.bin uboot.img 0x200000 --size 1024 1-       tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.15.bin idbloader.img
-       cat ../rkbin/bin/rk33/rk3399_miniloader_v1.15.bin >> idbloader.img
+       tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader.img
+       cat ../rkbin/bin/rk33/rk3399_miniloader_v1.26.bin >> idbloader.imgcp idbloader.img ${OUT}/u-boot/-       tools/mkimage -n rk3399 -T rkspi -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.15.bin idbloader-spi.img
+       tools/mkimage -n rk3399 -T rkspi -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.24.bin idbloader-spi.imgcat ../rkbin/bin/rk33/rk3399_miniloader_spinor_v1.14.bin >> idbloader-spi.imgcp idbloader-spi.img ${OUT}/u-boot/spi-       cp ../rkbin/bin/rk33/rk3399_loader_v1.12.112.bin ${OUT}/u-boot/
-       cp ../rkbin/bin/rk33/rk3399_loader_spinor_v1.15.114.bin ${OUT}/u-boot/spi
+       cp ../rkbin/bin/rk33/rk3399_loader_v1.24.126.bin ${OUT}/u-boot/
+       #cp ../rkbin/bin/rk33/rk3399_loader_spinor_v1.15.114.bin ${OUT}/u-boot/spicat >trust.ini <<EOF

6、重新编译uboot即可,烧录的时候使用最新编译出来的loader文件。

rk3399出现UART2串口打印异常问题相关推荐

  1. 读芯片信息出错3_十分钟看懂串口打印信息(1)

    一.软件串口打印信息加载流程 不管何种机芯方案,在上电开机后,软件 总会初始化复位和加载相关内容和应用,这部 分的信息通常我们采用串口工具来进行读写的 操作. 针对我们工作的需求和作为问题处理的可 靠 ...

  2. Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于C SDK的ESP8266开发技术全系列笔记 一.N ...

  3. 基于 Nios II 的串口打印和流水灯设计【使用 Quartus 软件】【掌握 SOPC 开发流程】

    目录 一.前言 二.实验步骤 第一步:硬件部分设计 1)建立新项目 2)进行 Qsys 系统设计 3)完成 Qsys 设计的后续工作 4)原理图设计 5)编译工程及物理针脚分配. 第二步:软件部分设计 ...

  4. Python traceback 模块, 打印异常信息

    Python traceback 模块, 打印异常信息 参考文章: (1)Python traceback 模块, 打印异常信息 (2)https://www.cnblogs.com/xudong-b ...

  5. Java如何打印异常的堆栈?

    Java如何打印异常的堆栈? 参考文章: (1)Java如何打印异常的堆栈? (2)https://www.cnblogs.com/borter/p/9613546.html 备忘一下.

  6. STM32 KEIL 串口打印printf使用详解

    常规打印方法 在STM32的应用中,我们常常对printf进行重定向的方式来把打印信息printf到我们的串口助手. 在MDK环境中,我们常常使用MicroLIB+fputc的方式实现串口打印功能,即 ...

  7. python Intel Real Sense D435 异常检测与抛出(获取/打印异常详细信息 traceback.print_exc())

    文章目录 背景描述 首先熟悉一下python异常处理的几个关键字 摄像头USB断开异常 获取异常详细信息 背景描述 在摄像头运行的时候,有时候会遇到一些错误,比如帧传输错误引起的程序结束, 但更为严重 ...

  8. Struts2 控制台不打印异常的解决方案

    Struts2 控制台不打印异常解决方法 <interceptor-ref name="defaultStack"><param name="excep ...

  9. JVM解惑:消失的异常堆栈,log中打印异常堆栈为空

    最近线上发现很多异常没有堆栈信息,只有一句描述,如下: java.lang.NullPointerException: null 排查问题时受到了一些阻碍.然后发现无论是在本地环境还是测试环境,堆栈信 ...

  10. 打印异常堆栈_定位生产问题时,异常堆栈莫名丢了,何解?

    今天分享的这个知识有点冷,相信很多 Java 程序员很少遇到,废话不多说,直接进入排查问题的真实讨论现场. 小 猿:有个 NPE 异常,有空帮忙看看是哪里出的? 架构师:我没有看到空指针堆栈啊!? 小 ...

最新文章

  1. Effective C++ -- 构造析构赋值运算
  2. Java CountDownLatch的两种常用场景
  3. Tensorflow框架:卷积神经网络实战--Cifar训练集
  4. 高三计算机教学计划,高三教学计划三篇
  5. 小明刚刚看完电影《第39级台阶》离开电影院的时候,他数了一下礼堂前的台阶,刚好是39级 站在台阶前,他突然又想到了一个问题 如果我每步只能迈上一个或者两个台阶,先迈左脚,然后左右交替,也就是说一共
  6. ARM920T(S3C2440)的中断系统
  7. 使用聚合数据接口发送短信
  8. ISO 2675:2021汽车仪表盘,操控台各符号意义,国际标准Road vehicles — Symbols for controls, indicators and tell-tales
  9. 金融市场数据平台的架构设计之道
  10. 网页ssl证书风险怎么解决
  11. 关于ETD.sys的系统蓝屏问题的解决
  12. 重来之大学版|学习篇-为什么要学习?为什么要终身学习?别一上来就“费曼学习法”,先学习学习再学习
  13. 电影院3d是什么模式的_3D的完整形式是什么?
  14. 将STemWin526_CM3_Keil.lib更换成STemWin V5.44版本
  15. 鱼c工作室python课件_我见过最全的python教程鱼C工作室
  16. 【Nginx】【一】Nginx简介
  17. day_01HTML
  18. 单片机php-cgi,STM32: 基于ChibiOS/RT实时系统的LED点阵显示系统 - 基于GD32F150C6T6 MCU...
  19. 用java制作扑克牌_用Java实现扑克牌排序
  20. 梅奥的人际关系理论(1933)--轉

热门文章

  1. java学习笔记(二)图形用户接口
  2. Animation中的scale、rotate、translate、alpha
  3. KindEditor - 代码高亮
  4. NLPCC 2021会议的“面向智能辩论的论辩文本理解”评测比赛综述报告
  5. 【推荐系统】16篇最新推荐系统论文送你
  6. 读《scikiit-learn机器学习》第七章_决策树
  7. Resource stopwords not found. Please use the NLTK Downloader to obtain the resource的解决
  8. 利用python进行数据分析—四、Numpy基础:数组与向量化计算
  9. python—contour绘制轮廓线(等高线)
  10. 4.1 API : MultinomialNB、GaussianNB、BernoulliNB