嵌入式系统:总线仲裁与S3C2410X结构解析

需积分: 0 0 下载量 163 浏览量 更新于2024-08-17 收藏 1.46MB PPT 举报
"嵌入式系统讲义 - 总线仲裁 - S3C2410X系统结构 - 周国运" 在嵌入式系统中,总线仲裁是一个关键的机制,它确保了多个主设备对共享总线的有序访问。在IIC(Inter-Integrated Circuit)总线协议中,总线仲裁主要涉及到两个主设备之间的竞争。当一个主设备想要发起通信时,它会检查SDA(数据线)的电平状态。如果SDA线在尝试启动传输时检测到低电平,这意味着另一个主设备已经在使用总线,因此该设备必须等待,直至SDA线变为高电平,才能继续进行操作。这个过程可能会持续一段时间,直到总线空闲。 每次IIC总线上的操作都需要进行仲裁,以防止数据冲突。这种仲裁方式简化了系统设计,但同时也要求每个主设备都有能力检测并尊重其他设备的正在进行的通信。 在更广泛的嵌入式系统中,总线仲裁可以采用多种策略,例如集中式仲裁、分布式仲裁或菊花链式仲裁。集中式仲裁通常由一个专门的仲裁器控制,它决定哪个设备可以访问总线。分布式仲裁则允许每个设备独立地决定是否可以访问总线。菊花链式仲裁则通过在总线上的设备之间传递控制权来实现。 以S3C2410X处理器为例,它是一个基于ARM920T内核的嵌入式微处理器,具有丰富的系统结构。在处理寻址方式时,该处理器支持多种寻址模式,包括寄存器、寄存器移位和8位位图立即数作为第二操作数。此外,变址寻址方式允许灵活地访问内存,基地址可以是任何通用寄存器,而偏移地址可以是12位立即数、寄存器或寄存器移位。根据不同的计算方法,如前索引偏移、后索引偏移和程序相对偏移,可以生成不同的总地址。 在实际编程中,例如在存储器操作中,可能需要执行特定的任务,比如将ASCII码转换或比较数据。提供的代码示例展示了如何通过LDR、STR、LDRB、STRB等指令读取和修改存储器中的数据,以及如何利用CMP指令进行比较操作。当需要比较两个无符号字数据时,可以通过LDR指令加载数据,然后使用CMP指令比较,最后根据比较结果使用MOV指令将结果存储在指定位置。 总线仲裁是保证嵌入式系统中多个设备安全、高效共享资源的关键技术,而S3C2410X这样的处理器提供了多种灵活的寻址和数据处理机制,使得开发者能够编写出高效且功能丰富的嵌入式软件。