uboot的移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

1、场景需求

X210开发板的SOC中一共有4个串口(串口0~3),并且用DB9接口引出了2个串口,分别是串口0和串口2。其中靠近网口的是串口0,远离网口的是串口2。

因为三星公司推荐使用串口2来作为调试串口,所以三星移植的uboot和内核都使用串口2作为控制台串口的。有时候可能需要将调试串口修改为其他的串口(本次移植改为串口0),这时候就需要修改uboot的代码,让uboot工作在串口0的控制台下。

2、代码分析

由uboot源码——汇编阶段的start.S文件可知,uboot中初始化串口控制器的代码在lowlevel_init.S中的uart_asm_init中,内容如下:

由此可见,其使用ELFIN_UART_CONSOLE_BASE这个宏,作为串口n(这里的n表示那个要进行初始化的串口的编号,另外注意这个初始化只初始化一个串口)这个硬件中所有寄存器的基地址,然后结合偏移量来对串口的寄存器进行寻址,以便执行初始化。

ELFIN_UART_CONSOLE_BASE这个宏定义在/include/s5pc110.h文件中。

因此uart_asm_init函数初始化哪个串口,取决于ELFIN_UART_CONSOLE_BASE这个宏,而这个宏又由CONFIG_SERIALn这个宏来决定(n从1到4,对应着串口0到3)。

上图中的代码说明,uboot默认使用串口2作为控制台串口。

3、移植操作与验证

(1)移植的目的,是将uboot的控制台串口,由原来的串口2改为串口0。

(2)根据上图的代码,其实只需要把CONFIG_SERIAL3这个宏注释掉,就会进到#else下的代码,从而使用串口0作为控制台串口。CONFIG_SERIAL3这个宏定义在/include/configs/smdkv210single.h文件中。

这样修改后编译时报错(因为其他文件中需要定义相关的CONFIG_SERIALn)。

于是根据需要,将CONFIG_SERIAL3改为CONFIG_SERIAL1,编译成功。

 (3)烧录运行,验证结果

1)如果串口线此时还插在串口2上,则SCRT只打印如下内容:

“SD checksum Error”这个iNand校验失败的信息是内部iROM打印出来的。为何会在串口2上显示,内部iROM默认使用串口2吗?可就算是默认,串口2还没有初始化,这怎么显示的?在串口2显示的话,那串口0还会显示这个信息吗?另外“OK”是串口初始化时输出的信息,这里为何在串口2上显示?

2)我们此时将串口线插到串口0上,然后根据实际情况更改SCRT的COM口,重启uboot时发现没有信息输出!这是为何呢?

3)怀疑原来的板子串口0坏了,换一个板子试试,发现还是没有输出信息。

4)怀疑其他内容出错,换九鼎的uboot进行修改,发现还是有输出信息。


待解决!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

充实你的素材库!10款免费的 PSD 素材下载

由于网页设计师没有时间来自己从零开始设计,所以在设计项目中使用网络上已有的设计素材是常见的方式。这就是为什么我们经常会到网上搜索可以免费下载的素材。 今天,我们这里有几套不同的免费的 PSD 素材分享给你,从 iPhone 样机到用户界面等…

position:fixed和scroll实现div浮动【示例】

前言 在自己建站的过程中,要实现一个div随滚动条浮动的效果,网上找了些示例不太好用,还是自己动手,丰衣足食,写的不好请大家谅解,毕竟我不是搞前端的,因为自己建站毕竟每一步都必须自己来&#…

HashMap vs ConcurrentHashMap — 示例及Iterator探秘

2019独角兽企业重金招聘Python工程师标准>>> 如果你是一名Java开发人员,我能够确定你肯定知道ConcurrentModificationException,它是在使用迭代器遍历集合对象时修改集合对象造成的(并发修改)异常。实际上,…

谷歌浏览器跨域报错解决办法

谷歌浏览器跨域报错: 在浏览器属性设置一下就可以了。 最后,先打开浏览器,就可以了。 转载于:https://www.cnblogs.com/fanyun/p/4263363.html

Unable to find the ncurses libraries or the required header files解决

问题: 解决方法: sudo apt-get install ncurses-dev 参考:Unable to find the ncurses libraries or the required header files解决 转载于:https://www.cnblogs.com/amanlikethis/p/3591353.html

iOS自动布局进阶用法

本文主要介绍几个我遇到并总结的相对高级的用法(当然啦牛人会觉得这也不算什么)。 简单的storyboard中上下左右约束,固定宽高啥的用法在这里就不做赘述了。 autolayout自动布局是iOS6以后出现的,但是在开始的一段时间里大家并不怎…

Windows系统与Linux系统下的硬盘分区操作

以下内容源于网络资源的学习与整理,如有其侵权请告知删除。 之前在uboot中利用fdisk命令对X210开发板的iNand进行分区时, 因为不小心在uboot中利用“fdisk -c 1”(1对应着sd卡,0对应着iNand)对sd卡也分区了&#xff…

您应该了解的 Windows Azure 网站在线工具

编辑人员注释:本文章由Windows Azure 网站团队的软件开发者 Amit Apple 撰写。 如果想要了解并亲身参与计算资源管理,那么您一定会很高兴得知这一消息:Windows Azure 网站现在提供一些非常有用的在线工具&#xff0c…

【自己给自己题目做】:如何在Canvas上实现魔方效果

最终demo -> 3d魔方 体验方法: 浮动鼠标找到合适的位置,按空格键暂停选择要翻转的3*3模块,找到相邻两个正方体,鼠标点击第一个正方体,并且一直保持鼠标按下的状态直到移到第二个正方体后放开,比如下图&…

彻底搞懂硬盘相关的概念

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 硬盘结构(机械硬盘和固态硬盘)详解 简单理解磁盘结构_Guanngxu的博客-CSDN博客_磁盘的结构 硬盘基础知识_Forskamse的博客-CSDN博客 硬盘知识笔记整理_落子摘星的博客-CSDN…

ubuntu下数据库的导入导出

2019独角兽企业重金招聘Python工程师标准>>> 一.导出远程数据库 例如 sudo mysqldump -h 172.16.1.211 -u haha -p123 -P3307 app>app.sql 二.导入.sql文件的 到数据库 1.create database xxx(创建一个名称是xxx的数据库) 2. use xxx(切换到该数据库下) 3. sou…

MBR分区表的简介

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考内容 (1)S5PV210 Uboot开发与移植01:Uboot概述_麦兜的学习笔记的博客-CSDN博客 (2)Linux系统下的硬盘分区、格式化与挂载_天糊土的博客-CSD…

Redis配置文件参数说明

配置文件参数说明: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile …

movi命令(do_movi函数的源码分析)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、do_movi函数分析 当执行movi相关命令时,实际执行的是do_movi函数。 x210 # help movi movi init - Initialize moviNAND and show card info movi read {u-boot | kernel} {addr} - Read …

[LeetCode]Search Insert Position

原题链接:http://oj.leetcode.com/problems/search-insert-position/ 题意描述: Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You …

如何将镜像烧写至iNand(fastboot命令的源码分析)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 u-boot sdfuse命令烧录分析----从SD卡加载内核_white_bugs的博客-CSDN博客 一、将镜像文件烧写至iNand的步骤 步骤1:完成准备工作。 (1)准备fastboot相关软件包…

你知道自己执行的是哪个jre吗?

多个JRE 我在做《Java日志工具之java.util.logging.Logger》的DEMO时,修改java.util.logging.Logger的配置文件,怎么修改都不起作用,因此打印了系统属性"java.home",才知道自己使用的是 C:\Program Files\Java\jre7 &am…

无需写try/catch,也能正常处理异常

对于企业应用的开发者来说,异常处理是一件既简单又复杂的事情。说其简单,是因为相关的编程无外乎try/catch/finallythrow而已;说其复杂,是因为我们往往很难按照我们真正需要的策略来处理异常。我一直有这样的想法,理想…

vs2010插件

转载于:https://www.cnblogs.com/tinytiny/p/3608030.html

leetcode1——两数之和

一、提出问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按…