学习目标

  • 设计设备接口
  • 实现设备注册
  • 理解回调机制

11.1 思考:如何统一管理设备?

UART、Timer、CLINT… 每个设备都不同,如何统一管理?

答案:抽象

typedef struct {
    const char *name;
    uint32_t base;
    uint32_t size;
    uint32_t (*read)(uint32_t addr);
    void (*write)(uint32_t addr, uint32_t data);
} Device;

11.2 设备注册

Device devices[10];
int dev_count = 0;

void register_device(Device *dev) {
    devices[dev_count++] = *dev;
}

下一步

第 12 章:中断与异常

更新时间: