rtems 4.11 console驱动 (arm, beagle)

本文介绍BeagleBSP中console驱动的核心组件与实现原理,包括主要文件console.c的作用及初始化过程,ns16550兼容串口的具体实现细节,以及如何支持C库的输入输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

console驱动框架主要文件是 c/src/lib/libbsp/shared/console.c,驱动的入口是 console_initialize()主要作用是初始化BSP提供的全局变量 Console_Configuration_Ports[Console_Configuration_Count],初始化termios架构,注册console设备的文件节点。

c/src/lib/libbsp/arm/beagle/console/console-config.c 是beagle BSP提供的有关console驱动的唯一文件,由于am335x提供的串口设备与ns16550寄存器兼容,事情就变得非常简单了,因为ns16550的各种操作函数在libchip中都实现了,具体一的文件是 c/src/libchip/serial/ns16550.c,应该说很多CPU提供的串口都是ns16550兼容的,这个是事实上的标准,即使不幸不兼容,咱也不过是要实现几个操作函数而已~

C库支持

要支持C库的printf和scanf,必须提供输入输出函数,应初始化 BSP_output_char 和 BSP_poll_char 两个函数指针,beagle BSP提供的函数使用了和console相同的串口,并且固定为轮循方式获取或写入字符,感觉可能会出错,以后再研究。

console_initialize调用

cpukit/include/rtems/console.h 中定义了 CONSOLE_DRIVER_TABLE_ENTRY,如果最终应用需要console,则可以通过配置,在 cpukit/sapi/include/confdefs.h 中包含到 _IO_Driver_address_table 中去

转载于:https://www.cnblogs.com/windtail/p/5734371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值