Linux内核移植 part3:串口驱动
来源:互联网 发布:爱动体感运动机 知乎 编辑:程序博客网 时间:2024/05/22 11:46
每日一乐:小美在作文簿里写上长大后的愿望:一、我希望能有一个可爱的孩子;二、我还希望能有一个爱我的丈夫。结果,发现老师写了一句评语:“请注意先后顺序。”
介绍Linux kernel 4.1对exynos 4412串口的支持。
其实这部分工作已经过去很久了,因为以后的重心不在这方面了,今天为了帮一个童鞋解决个问题,正好又看到这个,索性就写篇文章记录一下吧,说不定哪天有人因为看到了这篇文章,能够在工作上节省一点时间,多享受点生活。
串口配置
- dts
这一版的硬件配置基本以dts的形式提供,譬如我的是在arch/arm/boot/dts/exynos4412-landrover.dts
中。
serial@13800000 { status = "diable"; }; serial@13810000 { status = "disable"; }; serial@13820000 { status = "okay"; }; serial@13830000 { status = "disable"; };
- menuconfig
源代码
位于/drivers/tty/serial/samsung.c,已经兼容的很好了,配置一下就可以。
#ifdef CONFIG_OFstatic const struct of_device_id s3c24xx_uart_dt_match[] = { { .compatible = "samsung,s3c2410-uart", .data = (void *)S3C2410_SERIAL_DRV_DATA }, { .compatible = "samsung,s3c2412-uart", .data = (void *)S3C2412_SERIAL_DRV_DATA }, { .compatible = "samsung,s3c2440-uart", .data = (void *)S3C2440_SERIAL_DRV_DATA }, { .compatible = "samsung,s3c6400-uart", .data = (void *)S3C6400_SERIAL_DRV_DATA }, { .compatible = "samsung,s5pv210-uart", .data = (void *)S5PV210_SERIAL_DRV_DATA }, { .compatible = "samsung,exynos4210-uart", .data = (void *)EXYNOS4210_SERIAL_DRV_DATA }, { .compatible = "samsung,exynos5433-uart", .data = (void *)EXYNOS5433_SERIAL_DRV_DATA }, {},};MODULE_DEVICE_TABLE(of, s3c24xx_uart_dt_match);#endifstatic struct platform_driver samsung_serial_driver = { .probe = s3c24xx_serial_probe, .remove = s3c24xx_serial_remove, .id_table = s3c24xx_serial_driver_ids, .driver = { .name = "samsung-uart", .pm = SERIAL_SAMSUNG_PM_OPS, .of_match_table = of_match_ptr(s3c24xx_uart_dt_match), },};module_platform_driver(samsung_serial_driver);
console和串口的关系
Linux内核中的console是虚拟的,它依赖于串口设备;在系统启动的时候,首先会有个earlyconsole用来打印log,这个时候内核中的串口设备还没有probe,通过printascii工作;等到串口初始化结束之后就通过串口设备打印,这个时候prink这类接口也可以用了。
0 0
- Linux内核移植 part3:串口驱动
- Linux内核移植 part3:usb host驱动
- Linux内核移植 part3:sdmmc驱动
- Linux内核移植 part3:pinctrl和gpio驱动
- Linux内核移植 part3:Exynos4412内核编译
- Linux内核移植 part3:Exynos4412 Linux Kernel移植
- 内核移植之Part3
- Linux 2.6 内核驱动移植
- Linux 2.6 内核驱动移植
- linux移植记录(一) - 串口驱动
- linux设备驱动之串口移植
- linux设备驱动之串口移植
- arm linux 移植usb转串口驱动
- Linux-2.6 16c550 串口驱动移植
- Linux-2.6 16c550 串口驱动移植
- arm linux 移植usb转串口驱动
- 【Linux驱动】Linux-2.6.20.4内核移植
- linux-2.6.20内核移植 AX88697 驱动
- Hadoop作业提交多种方案具体流程详解
- 清华EMBA课程系列思考之十七(1) -- 新企业的孵化与创业投资
- JDK并发容器初步认识
- [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
- PopupWindow+ListView并实现点击事件
- Linux内核移植 part3:串口驱动
- MyBatis的集合查询
- 冒泡排序
- c#数据结构之最大子数组问题(分治法)
- eclipse设置背景色为豆沙绿
- 学习Redis从这里开始
- Eclipse 设置编码格式
- 344. Reverse String
- Leetcode 168