uclinux 和设备驱动程序的必要性
uclinux and necessity for device drivers
通常无MMU的系统也没有MPU(内存保护单元),用户模式和内核模式之间也没有区别。在这种情况下,假设我们有一个无 MMU 的系统,其中一些硬件被映射到 CPU 地址 space,在内核中拥有设备驱动程序真的有意义吗?可以从用户访问硬件资源space?
内核代码对内存的控制是否比用户代码更多?
是的,在没有承载 ucLinux 的 MMU 的平台上,像拥有普通嵌入式 Linux 环境一样做所有事情是有意义的。让用户应用程序和服务通过其正常接口(系统调用等)并让 OS 将这些内核请求路由到设备驱动程序、文件系统、网络堆栈等是一种更简洁的设计
虽然在这些情况下内核对硬件没有更多的控制权,实际的硬件应该只被内核中的系统软件运行触及。不限制对硬件的访问将使调试系统重置和内存损坏等事情变得几乎不可能。这种做法还使您的设计更具可移植性。
例外情况可能是用户模式调试二进制文件,这些二进制文件仅用于 in-house 平台 bring-up 和诊断。
通常无MMU的系统也没有MPU(内存保护单元),用户模式和内核模式之间也没有区别。在这种情况下,假设我们有一个无 MMU 的系统,其中一些硬件被映射到 CPU 地址 space,在内核中拥有设备驱动程序真的有意义吗?可以从用户访问硬件资源space?
内核代码对内存的控制是否比用户代码更多?
是的,在没有承载 ucLinux 的 MMU 的平台上,像拥有普通嵌入式 Linux 环境一样做所有事情是有意义的。让用户应用程序和服务通过其正常接口(系统调用等)并让 OS 将这些内核请求路由到设备驱动程序、文件系统、网络堆栈等是一种更简洁的设计
虽然在这些情况下内核对硬件没有更多的控制权,实际的硬件应该只被内核中的系统软件运行触及。不限制对硬件的访问将使调试系统重置和内存损坏等事情变得几乎不可能。这种做法还使您的设计更具可移植性。
例外情况可能是用户模式调试二进制文件,这些二进制文件仅用于 in-house 平台 bring-up 和诊断。