2021-03-20

//非设备数模式

1、arch/arm/mach-smdk6410.c -> smdk6410_uartcfgs[]:ok6410串口版级资源配置数组

2、arch/arm/mach-smdk6410.c -> smdk6410_map_io() -> s3c24xx_init_uarts->{arch/arm/mach-s3c64xx/cpu.c:->s3c6400_common_init_uarts->s3c24xx_init_uartdevs:将板级资源名称添加到platform_device:s3c24xx_uart_devs[]中}

最终注册到platform总线上由arch/arm/plat-samsung/init.c->s3c_arch_init中调用。

 

3、uart_driver: linux/include/serial_core.h     头文件中包含uart驱动结构,包含设备号、名称等信息

uart_port: linux/include/serial_core.h       uart端口,包含在uart_driver下uart_state下的一个指针,用于与driver进行挂载

uart_driver::uart_stat::uart_port->uart_ops

uart_driver 、uart_port :绑定uart_add_one_port      删除:uart_remove_one_port

driver/tty/serial/s3c6400.c->s3c6400_serial_init()注册plateform driver s3c6400_serial_driver

 

plateform_driver与plateform_device经过 .name 匹配之后,调用s3c6400_serial_driver->prob函数

s3c24xx_serial_probe:

1)s3c24xx_serial_init_port:初始化端口(3c24xx_serial_port为端口数据数组

2)uart_add_one_port(&s3c24xx_uart_drv, &ourport->port):(向uart驱动s3c24xx_uart_drv中添加端口)

----------tty_register_device(device_creat设备创建,字符设备生成注册到tty_class)
3)  platform_set_drvdata(dev, &ourport->port);(将端口信息注册到plateform的device中)

4) ret = device_create_file(&dev->dev, &dev_attr_clock_source);(创建device file)

--------- sysfs_create_file(sysfs创建)

*****小结:至此plateform_device和palteform_driver只是将3c24xx_serial_port端口添加到s3c24xx_uart_drv中和创建设备文件,接下来开s3c24xx_uart_drv的处理*******

driver/tty/serial/samsung.c:

s3c24xx_serial_modinit-> uart_register_driver(&s3c24xx_uart_drv)//完成系统中uart_driver的注册

----注册时主要是对uart_driver中的tty_driver进行分配和初始化(一些属性和ops

---tty_register_driver;(tty字符设备创建注册tty设备)

---put_tty_driver

 

~~~~~~~~~~~~~~~~~~~~~~~~

接下来是linux 串口驱动操作过程也就行ttyS*设备操作过程的

主要是通过ttydriver中tty_operations uart_ops(在serial_core.c中定义)

设备操作(open、write。。。。。。)

serial_core->tty_struct(获取uart_drive和uart_state和端口信息)

然后操作具体端口设备

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值