c-它是如何制作的,比如digicoder vcr dvd播放器,从开机到用户界面的图形用户界面



我有C/Java知识,但我还不明白一些硬件是如何从通电阶段到用户界面显示自己的屏幕/图形的(它从不显示linux/unix启动屏幕,也不显示windows启动屏幕)。

我的问题是,与VCR/TV数码相机通电到用户界面相比,它是如何制作的?我们是使用普通的linux内核,还是有任何特殊的开源框架允许我们开发这样的内核?

感谢

许多嵌入式系统使用u-boot作为引导加载程序。U-boot提供了在linux内核启动时显示"启动"屏幕的功能。

设备将在CPU复位后立即启动引导加载程序(通常最多在通电后几毫秒)。引导加载程序代码可以初始化显示器,如果需要的话,可以显示一个启动屏幕(就像大多数现代非嵌入式Linux发行版都有一个图形化的grub启动屏幕一样)。内核可以避免更改显示配置,在嵌入式设备上,内核可以很快引导到运行用户空间(至少是initramfs),它可以接管显示并显示任何动画、进度条等,直到完整的UI准备就绪。

像Windows或Linux这样的操作系统既大又通用。他们必须对自己和硬件进行初始化,包括询问所有连接的设备是否"即插即用"。OS事先不知道连接了哪些这样的设备;每次启动时,它都必须"发现"硬件。连接的硬件甚至可能在上次启动后发生了更改。

嵌入式系统通常没有大型操作系统(或者通常根本没有操作系统),并且它们通常具有系统先验已知的非常特定的硬件,因此不需要测试和确定此类设备的正确配置。这些设备通常也要简单得多,而且通常是"片上"外围设备。

也就是说,你的电脑能够立即显示用户界面(只是不是Windows)。BIOS引导过程几乎立即向显示器输出文本,BIOS控制台是一个交互式用户界面,在引导过程中根据请求启动。上一次我在现代电脑上启动MS-DOS时,只花了几秒钟就启动了。

并不是所有的嵌入式系统都是"即时启动"的,我的数字电视PVR在启动时甚至有一个进度条,但由于应用程序的特殊性,它的启动速度仍然比通用计算机快得多。另一方面,我的网络连接存储(NAS)设备是一个运行Linux的嵌入式系统,它需要相当长的时间才能启动,因为它必须启动文件系统、网络、USB接口、打印服务器、DNLA服务器和web服务器。事实上,通用计算机所需的许多东西(但它没有显示器,用户界面是通过网络服务器显示的)

一些具有大型操作系统和复杂硬件的嵌入式系统可以通过从不真正关闭而进入低功耗模式来实现"即时开启",在低功耗模式下,系统状态保留在内存中,而所有高功耗设备(如屏幕、WiFi、蓝牙等)都关闭。

最新更新