当前位置: 首页 > news >正文

嘉定郑州阳网站建设可以做游戏的网站有哪些

嘉定郑州阳网站建设,可以做游戏的网站有哪些,河南省交通工程造价信息网,社保网站哪里做转入一、write过程分析 App写#xff1a; 使用行规程来写数据最终存入uart_state-xmit的buffer里 硬件发送#xff1a; 使用硬件驱动中uart_ops-start_tx开始发送具体的发送方式有两种#xff1a;通过DMA、通过中断 中断方式#xff1a; 方法1#xff1a;直接使能tx …一、write过程分析 App写 使用行规程来写数据最终存入uart_state-xmit的buffer里 硬件发送 使用硬件驱动中uart_ops-start_tx开始发送具体的发送方式有两种通过DMA、通过中断 中断方式 方法1直接使能tx empty中断一开始tx buffer为空在中断里填入数据方法2写不封数据到tx fifo使能中断剩下的数据再次中断里继续发送 二、tty_write 文件在driver\tty\tty_io.c static ssize_t tty_write(struct file *file, const char __user *buf,size_t count, loff_t *ppos) {struct tty_struct *tty file_tty(file);struct tty_ldisc *ld;//...if (!ld-ops-write)ret -EIO;elseret do_tty_write(ld-ops-write, tty, file, buf, count); //使用行规程里的惭怍函数进行写入//tty_ldisc-tty_ldisc_ops-writetty_ldisc_deref(ld);return ret; } 三、ldisk write 文件drivers\tty\n_tty.c static struct tty_ldisc_ops n_tty_ops { //tty_ldisc_ops惭怍函数实例结构体n_tty_ops.magic TTY_LDISC_MAGIC,.name n_tty,.open n_tty_open,.close n_tty_close,.flush_buffer n_tty_flush_buffer,.read n_tty_read,.write n_tty_write, //上面ld-ops-write调用的是这个函数//... };static ssize_t n_tty_write(struct tty_struct *tty, struct file *file,const unsigned char *buf, size_t nr) {//...while (1) {//...if (O_OPOST(tty)) {//...} else {struct n_tty_data *ldata tty-disc_data;while (nr 0) {mutex_lock(ldata-output_lock);c tty-ops-write(tty, b, nr); //tty_struct-tty_operationsmutex_unlock(ldata-output_lock);//...}}if (!nr)break;if (file-f_flags O_NONBLOCK) { //非阻塞方式的话直接返回不等数据发送完retval -EAGAIN;break;}up_read(tty-termios_rwsem);wait_woken(wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); //阻塞方式等待发送完毕down_read(tty-termios_rwsem);}//... } 四、uart_write 文件drivers\tty\serial\serial_core.c static const struct tty_operations uart_ops {.open uart_open,.close uart_close,.write uart_write,//.... };static int uart_write(struct tty_struct *tty,const unsigned char *buf, int count) {struct uart_state *state tty-driver_data;struct uart_port *port;struct circ_buf *circ;unsigned long flags;int c, ret 0;//...port uart_port_lock(state, flags);circ state-xmit; //赋值寄存器地址//...while (port) {//...memcpy(circ-buf circ-head, buf, c); //把数据存入xmit buffercirc-head (circ-head c) (UART_XMIT_SIZE - 1);buf c;count - c;ret c;}__uart_start(tty); //启动串口发送数据uart_port_unlock(port, flags);return ret; }static void __uart_start(struct tty_struct *tty) {struct uart_state *state tty-driver_data;struct uart_port *port state-uart_port;if (port !uart_tx_stopped(port))port-ops-start_tx(port); //uart_port-uart_ops-start_tx } 五、硬件相关的发送 相关文件drivers\tty\serial\imx.c static const struct uart_ops imx_uart_pops {.tx_empty imx_uart_tx_empty,.set_mctrl imx_uart_set_mctrl,.get_mctrl imx_uart_get_mctrl,.stop_tx imx_uart_stop_tx,.start_tx imx_uart_start_tx,.stop_rx imx_uart_stop_rx,//... };static void imx_uart_start_tx(struct uart_port *port) {//...if (!sport-dma_is_enabled) { //不适用DMA时比较容易理解以它为例ucr1 imx_uart_readl(sport, UCR1);//Transimiter Empty Interrupt Enable发送buffer为空时就产生中断//在中断函数里发送字符imx_uart_writel(sport, ucr1 | UCR1_TXMPTYEN, UCR1);}if (sport-dma_is_enabled) {//...} }一开始时发送buffer肯定为空就会立即产生中断 static irqreturn_t imx_uart_txint(int irq, void *dev_id) {struct imx_port *sport dev_id;unsigned long flags;spin_lock_irqsave(sport-port.lock, flags);imx_uart_transmit_buffer(sport);spin_unlock_irqrestore(sport-port.lock, flags);return IRQ_HANDLED; }static inline void imx_uart_transmit_buffer(struct imx_port *sport) {struct circ_buf *xmit sport-port.state-xmit;//...while (!uart_circ_empty(xmit) !(imx_uart_readl(sport, imx_uart_uts_reg(sport)) UTS_TXFULL)) {/* send xmit-buf[xmit-tail]* out the port here *///UART TX FIFO未满时从xmit buffer取出数据写入FIFO更新统计信息imx_uart_writel(sport, xmit-buf[xmit-tail], URTX0);xmit-tail (xmit-tail 1) (UART_XMIT_SIZE - 1);sport-port.icount.tx;}if (uart_circ_chars_pending(xmit) WAKEUP_CHARS)uart_write_wakeup(sport-port);if (uart_circ_empty(xmit))imx_uart_stop_tx(sport-port); }
http://www.dnsts.com.cn/news/97296.html

相关文章:

  • 舟山网站建设推荐软件开发公司好的有哪些
  • 影视网站建设教程临沂做网站哪家好
  • 做网站的组要具备哪些素质哈尔滨网站建设丿薇
  • 南城区仿做网站怎么联系地推公司
  • 用外链技术做视频网站西安短视频运营公司
  • 提供网站建设方案服务做自动发货网站
  • 做电影收费网站织梦网站广告代码如何写
  • 南京手机网站制作公司英文网站 模板
  • 海北州网站建设公司哪里的网站可以做围棋死活题
  • 淮北网站建设制作网站建设可以修改吗
  • 广西智能网站建设找哪家365采购网
  • 网站建设与管理大作业具有价值的网站建设
  • 模板王网站官网免费永久网站空间
  • 搭建网站的免费程序网站域名备案注册证书
  • 辽宁专业网站建设大全微信小程序推送消息给用户
  • 深圳商城网站建设公司土木工程毕业设计网站
  • 昆山公司网站建设wordpress注册页模板
  • wordpress做视频播放网站免费建设网站哪个好
  • 河北电子商务网站建设开发商和物业的关系
  • 玉树电子商务网站建设公司小米发布会官网
  • 专业网站设计工作室wordpress 调用评论框
  • 东莞设计网站做最好最全的命理网站
  • 北京垡头网站建设公司网站做贷款许可证
  • 吉林省住房和城乡建设厅网站官网网络营销推广的方式都有哪些
  • 专门做推广的网站吗百度竞价员
  • 福建省建设厅网站投诉网站服务器端口号是什么
  • 台州网站推广技巧付费网页制作的步骤
  • 东莞开发公司网站建设郑州企业网站制作
  • 营销型网站哪家做的好山东外贸网站是什么意思
  • html5网站开发的源码wordpress 无法上传文件