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

news2024/12/20 0:48:44

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

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、移植操作与验证

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

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

然后编译烧录与运行。

如果串口线此时插在串口2上,则SCRT只打印“SD checksum Error”(这个iNand校验失败的信息是内部iROM打印出来的。为何会在串口2上显示,是默认吗?可就算是默认,串口2毕竟还没有初始化,这怎么显示的?另外串口0还会显示这个信息吗?)

如果串口线插到串口0上,则启动后SCRT显示所有的信息。

这就说明移植成功!

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

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

相关文章

java毕业设计——基于java+java-swing的泡泡堂网络游戏设计与实现(毕业论文+程序源码)——泡泡堂网络游戏

基于javajava-swing的泡泡堂网络游戏设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javajava-swing的泡泡堂网络游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于javajava-…

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制前言构建软件框架编译 cpp构建代码main函数构建构建类的定义订阅无人机里程计信息垂直位置控制串级P控制收敛结果收敛过程串级PID控制前言 无人机(Unmanned Aerial Vehicle&#…

Oracle中分割字符串的方法

Oracle中分割字符串的方法1. 使用 regexp_substr() 函数1.1 方式11.2 方式22. 自定义函数2.1 自定义类型 table2.2 自定义函数2.2.1 自定义函数2.2.2 效果如下:2.3 Oracle查看<Collection> 类型数据3.1. 使用 regexp_substr() 函数 1.1 方式…

日志三个时间,动静态库的建立与使用

文章目录日志时间ModifyChangeAccessmake与g库lddfile静态库动态库静态库静态的制作静态库的使用动态库动态库的制作动态库的使用日志时间 Modify 最近修改文件内容的时间在一定条件下,修改文件内容时,可能修改文件属性:文件大小属性改变了 …

实验2:Numpy手写多层神经网络

引言 这个作业的目的是给你们介绍建立,训练和测试神经系统网络模型。您不仅将接触到使用Python包构建神经系统网络从无到有,还有数学方面的反向传播和梯度下降。但在实际情况下,你不一定要实现神经网络从零开始(你们将在以后的实验和作…

【数据结构与算法】详解快排

目录一、快排的定义及思路二、快排的代码实现一、快排的定义及思路 快排就是快速排序,是通过不断比较和移动交换来进行排序,相当于冒泡排序的一种升级。 其基本思想是: 分而治之,也就是把一组数组分成两个独立数组,再对…

【初学者入门C语言】之结构体(十一)

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 💬 刷题网站:一款立志于C语言的题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com) 特别标注:该博主将长期更新c语言内容,初学c语言的友友们&#xff0c…

【树莓派不吃灰】使用中经常看到的安装命令 wget、rpm、yum、dpkg、apt-get

目录1. 前言2. Linux系统两种主流软件包2.1 rpm包2.2 deb包3. 解决软件依赖问题 —— yum、apt3.1 yum3.2 apt 和 apt-get4. wget 网络文件下载工具5. 总结❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-10-28 ❤️❤️ 本篇…

设计模式之备忘录模式 - 简书

备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 解决方案 我们刚才遇到的所有问题都是封装 “破损” 造成的。 一些对象试图超出其职责范围的工作。 由于在执行某些行为时需要获取数据, 所以它们侵入了其…

ipv6学习笔记221029

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写 ipv6的长度有128位, ipv4的长度是32位 ipv6以冒号:分隔 , ipv4以点.分隔 8个16位等于128位 , 4个十六进制表示16位(一个16进制表示4位) ipv6的128位 由 8 个 16位 16bit 组成 每…

【LeetCode】【两个数组的交集】

力扣 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 示例 2: 输入:num…

基于MATLAB的指纹识别算法仿真实现

目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 在指纹图像预处理部分,论文对预处理的各个步骤包括规格化、图像分割、中值滤波、二值化、细化等以及各个步骤的方法进行了深入的分析和研究,选择了一种图像预处理方案。在指纹特征提取部分…

基于javaweb的医疗挂号管理系统(java+springboot+freemarker+layui+mysql)

基于javaweb的医疗挂号管理系统(javaspringbootfreemarkerlayuimysql) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 基…

幼儿园小程序实战开发教程(终篇)

我们已经写了四篇教程,涵盖了需求分析及各个页面,本篇是我们的最终篇。 咨询信息 我们小程序需要收集家长和孩子的信息,为此我们也规划了数据源。如果按照传统开发思路,那我们是要依次实现信息采集的每个字段,然后再…

<Linux系统复习>文件描述符

一、本章重点 1、进程和打开文件的关系 2、简单复习c语言文件操作 3、介绍系统调用:open、clos、write、read 4、理解文件描述符 5、文件描述符分配规则 6、理解stdin、stdout、stderr与fd的关系 7、理解linux下一切皆文件 8、理解重定向的本质 9、理解stdin和stdou…

《吉师作业》(1)之我是web手为啥让我学C

前言 🍀作者简介:吉师散养学生,为挣钱努力拼搏的一名小学生。 🍁个人主页:吉师职业混子的博客_CSDN博客-python学习,HTML学习,清览题库--C语言程序设计第五版编程题解析领域博主 🫒文章目的:我不…

freeRTOS学习(二)

堆内存管理 先决条件 FreeRTOS是作为一组C源文件提供的,因此成为一个合格的C程序员是使用FreeRTOS的先决条件。 动态内存分配及其与FreeRTOS的相关性 内核对象:如任务、队列、信号量和事件组。为了使FreeRTOS尽可能易于使用,这些内核对象不…

科普一下MTU是什么,如何设置MTU

欢迎来到东用知识小课堂,下面我们就来科普一下一下MTU是什么,如何设置MTUMTU是最大传输单元的意思,代指一类通讯协议某一层上所能通过的最大数据包大小(以byte为单位)。最大传输单元这一主要参数一般与串行通讯接口相关(网络接口卡、串口等)。…

【Vue实用功能】彻底搞懂Vue中的Mixin混入

前言 有些小伙伴接手别人的Vue项目时,看到里面有个Mixin文件夹,可能会云里雾里的状态,今天我们来好好聊聊Mixin,争取以后不再云里雾里。 一、什么是Mixins? Mixins(混入):当我们存在多个组件中的逻辑或者…

MySQL总结

文章目录一.SQL语句简介1.什么是SQL?2.SQL分类二.MySql常用数据类型三.数据库操作1.创建数据库2.查询和删除数据库3.备份/恢复数据库四.表操作1.创建表2.修改/查看表五.CRUD语句1.Insert语句2.Delete语句3.Update语句4.Select语句五.函数1.统计函数count2.字符串相关…