嵌入式Linux下ARM串口设置与系统设计

需积分: 10 1 下载量 88 浏览量 更新于2024-07-13 收藏 1.11MB PPT 举报
"ARM系统设计相关知识 - 设置串口" 在嵌入式系统设计中,特别是在基于ARM微处理器的系统中,设置串口是一项基础而重要的任务。串口通信是设备间进行数据传输的一种常见方式,尤其在没有操作系统或使用Linux等操作系统时。本文将详细讨论在Linux环境下设置串口的相关知识。 1. 串口初始化设置 在Linux系统中,设置串口主要涉及对`struct termios`结构体的配置。这个结构体包含了控制串口行为的各种属性,例如波特率、校验位和停止位。初始化串口时,我们需要对这些属性进行适当的设定以满足应用的需求。 2. 波特率设置 波特率决定了数据传输的速度,常见的波特率有9600、19200、38400、57600、115200等。通过设置`struct termios`中的`cfspeed`成员可以改变波特率。例如,`cfsetispeed()`和`cfsetospeed()`函数用于设置输入和输出的波特率。 3. 校验位设置 校验位用于检查数据传输的准确性,常见的校验方式有无校验(`PAR_NONE`)、奇校验(`PAR_ODD`)、偶校验(`PAR_EVEN`)和标志位校验(`PAR_MARK`、`PAR_SPACE`)。这可通过设置`c_cflag`中的相关位来实现,例如`PARENB`、`PARODD`等。 4. 停止位设置 停止位用于标记数据帧的结束,通常有1位、1.5位和2位停止位。通过设置`c_cflag`中的`CSTOPB`标志可以选择停止位的数量。 5. 数据格式设置 数据格式通常包括数据位的长度,通常有5、6、7、8位数据位可供选择。`c_cflag`中的`CSIZE`标志可以设置数据位的长度,例如`CS8`表示8位数据位。 6. 编写通用设置函数 为了便于复用和灵活配置,我们可以编写一个函数,接受波特率、校验位和停止位等参数,然后在函数内部根据这些参数来设置`struct termios`的相应成员。这样,只需要改变函数的输入参数,就可以轻松地适应不同的串口配置需求。 7. 嵌入式系统软件结构 - 简单的嵌入式应用:对于功能简单的系统,如基于8051的玩具或家电控制,通常采用裸机开发,不依赖操作系统,系统直接从`main()`函数开始执行,进行初始化后进入无限循环。 - 复杂的嵌入式应用:对于需要图形用户界面、网络管理等功能的系统,如基于ARM的手机或PDA,会使用嵌入式操作系统如Linux,以提高开发效率和系统的可靠性。系统启动流程通常包括引导加载程序(BOOTLOADER)和操作系统的加载。 8. S3C2440启动方式 三星S3C2440芯片支持多种启动方式,通过OM[1:0]引脚的配置,可以选择从NorFlash或NandFlash启动,或者进入测试模式。 9. NandFlash启动 当S3C2440从NandFlash启动时,控制器会自动将前4KB的U-BOOT数据加载到内部SRAM的低地址端,以便进一步执行系统启动过程。 在实际的ARM系统设计中,理解和掌握串口的设置方法对于开发和调试至关重要,同时也需要了解嵌入式系统的软件架构和启动流程,以便更好地构建和维护高效可靠的嵌入式系统。