嵌入式linux系统-Kernel串口2做交互终端
1 驱动源码
Kernel中串口的驱动程序使用8250通用驱动,路径在:
drivers/tty/serial/8250/8250_core.c
drivers/tty/serial/8250/8250_dma.c dma实现。
drivers/tty/serial/8250/8250_dw.c design ware ip相关操作。
drivers/tty/serial/8250/8250_early.c early console实现。
drivers/tty/serial/8250/8250_fsl.c
drivers/tty/serial/8250/8250.c
drivers/tty/serial/8250/8250_port.c 端口相关的接口。
drivers/tty/serial/earlycon.c 解析命令行参数,并提供注册early con接口。
默认配置下就是使用了该驱动程序了。
2 内核设备树
内核设备树的路径在(arch/arm64/boot/dts/rockchip):
其中rk3308.dtsi和rk3308k.dtsi是通用配置树,rk3308-evb-xxx是针对某个
硬件型号的配置信息,如果我们需要自定义一个针对自己的硬件外设,可以根据这两个配置树进行参考修改。
驱动起来后会先注册5个ttySx设备。但如果没有经过2.3.1使能的串口,虽然也有设备节点,但是是不能操作的。
在rk3308.dtsi中,可以看到:
驱动会根据aliase,来对应串口编号,如下: serial0最终会生成ttyS0,serial3会生成ttyS3设备。
同样在该配置文件中可以找到如下定义:
rockchip,serial‐id = <2>; /*设置串口id,想换不同的串口就改这个ID*/
rockchip,baudrate = <xxx>; /* 波特率,只能115200或者1500000 */
该节点驱动加载后会注册/dev/ttyFIQ0设备,需要注意的是rockchip,serial-id即便改了,注册的也是ttyFIQ0;接着我们在rk3308-evb-v10.dtsi中可以看到使能该节点:
这里是使能了early printk功能,当kernel启动不了,但又没有什么提示消息时,可以打开early printk查看;这是因为在内核刚启动时,有些打印语句可能在串口还没有注册之前就调用了,那当然不能显示啦,early printk就是实现这个功能,提前注册好串口。
其中0xff0c0000是uart2的物理基地址,不同的串口基地址不一样;地址可以在rk3308.dtsi中的设备节点查看到:
3 补丁更新
默认串口2支持的波特率是1500000,我们用的usb转串口可能无法支持,因此需要修改成115200,为了保持源码的原生性,我们采用打补丁的方式来支持,在目录(/home/lucker/share/patchs/terminal-kernel-uart2):
有个补丁文件:baudrate.patch,和补丁脚本patchloader.sh,只需要运行这个脚本就可以完成补丁,带参数 -u 可以卸载补丁:
打补丁后,进入到kernel中进行编译:
make rk3308_linux_defconfig
make rk3308-evb-amic-v10.img
编译后烧录内核可以看到串口有日志输出而且可以进交互终端:
==================================================================================================================================
交叉编译轻松就学习完啦,就是这样Easy!!
如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648
欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!一起加油!!也可点击
笔者基于嵌入式系统框架内容如下整理编辑:
嵌入式linux系统-Kernel串口2做交互终端相关推荐
- 嵌入式Linux串口终端的定制,基于PC/104平台嵌入式Linux系统定制方法
基于PC/104平台的嵌入式Linux技术在海洋自动观测系统中具有广泛的应用前景,Linux定制方法的研究是嵌入式Linux系统研制的关键工作.本文结合PC/104平台嵌入式Linux系统的研制,详细 ...
- 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...
- 基于qemu-riscv从0开始构建嵌入式linux系统ch3. 添加中断控制器、串口、pflash支持
基于qemu-riscv从0开始构建嵌入式linux系统ch3. 添加中断控制器.串口.pflash支持 添加串口支持 真实板卡的初期调试中,串口打印可谓神器,几乎所有的SOC都会带有串口这个外设,因 ...
- 基于Yocto构建嵌入式Linux系统U-boot、kernel内核、rootfs文件系统
前言 Yocto 是一个很强大的构建工具,其功能不仅仅是用来获取BSP源码和简单地编译源码,开发者还可以使用Yocto对其 开发板添加各种第三方开发库,而不需要每次重新从零开始编译源码,解决第三方依赖 ...
- ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
嵌入式linux系统与主机通过串口传输文件 我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载.但如果网络用不了,只能通过串口下载怎 ...
- 嵌入式Linux系统的构成和启动总结
参考http://mp.weixin.qq.com/s/Yqb99-F5W0n4E-zPXlDu7A 参考https://mp.weixin.qq.com/s/tcYkKyn4CW0EIbR3ceTK ...
- 嵌入式linux系统移植的四大步骤_嵌入式系统移植步骤
在嵌入式系统移植中重要的一部分是操作系统的移植,与其它操作系统相比,Linux大的特点:它是一款遵循GPL的操作系统,我们可以自由地使用.修改.和扩展它.正是由于这一特色,嵌入式系统移植过程中Linu ...
- 基于AT91SAM9G20构建嵌入式Linux系统
本文中使用的目标平台AT91SAM9G20是Atmel公司使用ARM926EJ-S处理器内核开发的一块SoC嵌入式微处理器,主频达到400MHz,具有Atmel 先进的外设DMA 和分布式存储器架构, ...
- 构建一个适合stm32mp157系列开发板的嵌入式Linux系统
在线课堂:https://www.100ask.net/index(课程观看) 论 坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...
最新文章
- shell-sed命令详解(转)
- c语言#include后的尖括号和双引号有什么区别?
- Yii2.X 多语言-类图
- MATLAB机器学习系列-7支持向量机原理及其代码实现
- IDEA中Maven项目使用Junit4单元测试的写法
- Win10用Windows照片查看程序打开图片+更改注册表后导致Win10任务栏Adobe PDF阅读器图标显示异常
- MySQL中创建用户
- 散点图为什么是两组点_SAT数学易错点排雷之scatter plot
- lightNLP:框架功能丰富,开箱即用
- python2.7怎么下载安装_Windows平台下python2.7如何安装Beautiful Soup
- 高通android7.0模块编译.ko
- python数据分析:Matplotlib
- 小乌龟SVN合并分支到主干、合并主干到分支,工具操作
- 如何用python做考勤_用Python编写一个电子考勤系统
- 对接谷歌翻译接口的WordPressSEO插件
- IEEE1284 USB转并口打印线缆配置
- 800个小炒,一天吃一个叫你吃三年
- 全国计算机等级证书和职业资格证书(计算机)哪个好
- python无限制邮件群发软件_有哪些逆天的邮件群发软件推荐?
- 2022制冷与空调设备安装修理特种作业证考试题库及答案
热门文章
- 艾永亮超级产品:企业管理者对企业发展起到什么作用?
- Excel 中多行时快速生成自增长序号
- Pinia:Vue3.js的状态管理器
- 杰理之l播放文件加密后不播放提示音或者正常歌曲问题【篇】
- linux安装mysql8.11_Ubuntu安装MySQL任意版本(18.04亲测)
- CCKS2020事理图谱应用工作:刘焕勇等.面向开放文本的逻辑推理知识抽取与事件影响推理探索
- 财务计算机专业英文怎么说,财务与计算机英文简历
- uni-app实现PDA的离线语音(二)MT-TTS离线语音合成插件下载及集成
- Word不熟练?掌握这些Word技巧和30个快捷键,快速提升工作效率
- 【市场点评】沪深基指终强势反弹 终结六连阴走势