嵌入式Linux应用开发FIFO源码教程

版权申诉
0 下载量 199 浏览量 更新于2024-11-02 收藏 20KB ZIP 举报
资源摘要信息:"这是一个包含嵌入式Linux应用程序开发源程序的压缩包,主要用于学习和参考。压缩包中的文件主要涉及Linux下的FIFO(先进先出)管道的相关知识。" 知识点一:嵌入式Linux应用程序开发 嵌入式Linux应用程序开发是目前嵌入式系统开发领域的重要方向之一。Linux作为一个开源的操作系统,以其高度的可定制性、稳定性和丰富的资源,在嵌入式领域得到了广泛的应用。在Linux系统下进行应用程序开发,需要对Linux的系统架构、内核机制、系统调用以及各种开发工具和环境有深入的理解和掌握。 知识点二:FIFO(先进先出) FIFO是一种特殊的文件类型,属于Linux文件系统中的设备文件,也可以看作是一种特殊的管道。FIFO通常用于具有父子关系的进程间通信,或者是不同进程间的同步和数据交换。FIFO遵循先进先出的原则,先写入的数据将被首先读取。 知识点三:源程序文件 1. pipe.c:该文件主要涉及到Linux系统中的管道(pipe)的使用。管道是一种最基本的IPC(进程间通信)机制,它允许一个进程和另一个进程进行通信。在Linux系统中,管道是一种特殊的文件,可以通过文件描述符进行读写操作。 2. fifo_write.c和fifo_read.c:这两个文件分别涉及到FIFO的写入和读取操作。在Linux系统中,FIFO的写入和读取操作需要使用open、read、write、close等系统调用进行。 ***.png:这可能是一个与嵌入式Linux开发相关的教程或者示例的图片。 4. 教程重要说明.txt:这是一个关于教程的重要说明文件,可能包含一些关于嵌入式Linux开发的学习指南或者注意事项。 知识点四:*** ***是一个提供Linux相关教程和技术文章的网站,提供了大量关于Linux系统管理、开发和应用的教程和资源。通过该网站,可以获取到大量关于Linux系统开发的知识和技能。 知识点五:文件列表 在这个压缩包中,除了源程序文件外,还有教程重要说明.txt和***.png两个文件。这两个文件可能是对源程序文件的补充说明,或者是一些关于嵌入式Linux开发的学习资料。通过对这些文件的学习和理解,可以帮助我们更好的掌握嵌入式Linux开发的知识和技能。

帮我优化一下这段代码配置2M波特率的CANFD :#include "can.h" #include "gd32c10x.h" #include "gd32c10x_eval.h" void can_gpio_config(void) { rcu_periph_clock_enable(RCU_CAN0); rcu_periph_clock_enable(RCU_CAN1); rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_AF); gpio_init(GPIOB,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,GPIO_PIN_8); gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9); gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_5); gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6); gpio_pin_remap_config(GPIO_CAN0_PARTIAL_REMAP , ENABLE); gpio_pin_remap_config(GPIO_CAN1_REMAP, ENABLE); } void can_config(void) { can_parameter_struct can_parameter; can_fdframe_struct can_fd_parameter; can_fd_tdc_struct can_fd_tdc_parameter; can_struct_para_init(CAN_INIT_STRUCT, &can_parameter); can_deinit(CAN0); can_deinit(CAN1); can_parameter.time_triggered = DISABLE; can_parameter.auto_bus_off_recovery = DISABLE; can_parameter.auto_wake_up = DISABLE; can_parameter.auto_retrans = ENABLE; can_parameter.rec_fifo_overwrite = DISABLE; can_parameter.trans_fifo_order = DISABLE; can_parameter.working_mode = CAN_NORMAL_MODE; can_init(CAN0, &can_parameter); can_init(CAN1, &can_parameter); can_frequency_set(CAN0, CAN_BAUD_RATE); can_frequency_set(CAN1, CAN_BAUD_RATE); can_struct_para_init(CAN_FD_FRAME_STRUCT, &can_fd_parameter); can_fd_parameter.fd_frame = ENABLE; can_fd_parameter.excp_event_detect = ENABLE; can_fd_parameter.delay_compensation = ENABLE; can_fd_tdc_parameter.tdc_filter = 0x04; can_fd_tdc_parameter.tdc_mode = CAN_TDCMOD_CALC_AND_OFFSET; can_fd_tdc_parameter.tdc_offset = 0x04; can_fd_parameter.p_delay_compensation = &can_fd_tdc_parameter; can_fd_parameter.iso_bosch = CAN_FDMOD_ISO; can_fd_parameter.esi_mode = CAN_ESIMOD_HARDWARE; can_fd_init(CAN0, &can_fd_parameter); can_fd_init(CAN1, &can_fd_parameter); can_fd_frequency_set(CAN0, CANFD_BAUD_RATE); can_fd_frequency_set(CAN1, CANFD_BAUD_RATE); can1_filter_start_bank(14); can_filter_mask_mode_init(DEV_CAN0_ID, DEV_CAN0_MASK, CAN_EXTENDED_FIFO0, 0); can_filter_mask_mode_init(DEV_CAN1_ID, DEV_CAN1_MASK, CAN_EXTENDED_FIFO0, 15); nvic_irq_enable(CAN0_RX0_IRQn, 7, 0); nvic_irq_enable(CAN1_RX0_IRQn, 7, 0); can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE0); can_interrupt_enable(CAN1, CAN_INTEN_RFNEIE0); }

2023-05-31 上传