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,一经查实,立即删除!

相关文章

Oracle初始化参数之memory_target

一、引言: Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整; Oracle 10g引入sga_target,可以自动对SGA进行调整; Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有…

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

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

Linux系统下的硬盘分区、格式化与挂载

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考内容 分区是什么意思_360问答 磁盘分区_360百科 挂载_360百科 fdisk对一个块设备进行分区_XZY028的博客-CSDN博客_块设备分区 怎么创建一个ramdisk块设备_XZY028的博客-CSDN博客 linux磁盘分区和挂载_苍…

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

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

HashMap vs ConcurrentHashMap — 示例及Iterator探秘

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

VMware虚拟机连不上移动硬盘或USB

解决方法: (1)打开虚拟机设置。 (2)选择USB控制器。 (3)USB兼容性选择USB3.0。 (4)重启。

拾遗----javascript一些实用方法

1、 join&#xff08;&#xff09; join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。 var ids []; for(var i 0 ;i <array.length ; i){ ids.push(array[i].id); // 将多个id 加入…

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

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

如何对iNand进行分区?(fdisk命令的源码分析)

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 硬盘分区、寻址和系统启动过程 - 走看看 x210&#xff1a;iNand分区情况_毛裤先生_2的博客-CSDN博客 Linux系统是如何识别硬盘设备和硬盘分区的&#xff1f; uboot之uboot中环境变量_雨于鱼的博客…

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

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

iOS自动布局进阶用法

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

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

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

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

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

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

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

彻底搞懂硬盘相关的概念

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

windows修改远程桌面RDP连接数

windows 2003在默认情况下最多只允许两个用户进行远程终端连接&#xff0c;当达到两个远程桌面连接的到时候&#xff0c;再有人尝试连接&#xff0c;就会提示已经达到最大终端数&#xff0c;无法连上了。 一、windows2003终端连接数修改 1.1终端服务安装和连接数设置 导读&…

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…

烧录文件、复制文件有什么区别?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 镜像数据烧录和复制粘贴有什么区别&#xff1f;用 rufus 将镜像烧录到 U 盘和直接复制粘贴 把程序烧入设备和把程序复制到设备的linux系统中有什么区别&#xff1f; - 知乎 前言 之前思考过&#…

php中preg_match用户名正则实例

例子,字母、数字和汉字 代码如下复制代码 if(preg_match("/[ .,:;*?~!#$%^&)(<>{}]|]|[|/|\|"||/",$user)){ echo 不要在名字里面整些特殊符号&#xff0c;请只使用字母、数字和汉字&#xff0c;当然要你的浏览器要选简体中文GB2312哟&#xff0c;千…

MBR分区表的简介

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