Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux启动时,我可以多早将数据发送到串行端口?_Linux_Linux Kernel_Grub2_Initramfs - Fatal编程技术网

在Linux启动时,我可以多早将数据发送到串行端口?

在Linux启动时,我可以多早将数据发送到串行端口?,linux,linux-kernel,grub2,initramfs,Linux,Linux Kernel,Grub2,Initramfs,我有一个外部串行外设,需要在嵌入式系统上的Linux引导上进行设置。 我需要的是在系统引导期间尽早发送一个简短的配置字符串,因此我的过程非常简单 将端口设置为115200 bps 发送字符串,如“ABCDE\r\n” 我看到最近的内核支持早期的串行控制台,但我需要的不是控制台(我的外设在那个阶段也可以发送无意义的数据,加上我将以图形模式显示初始屏幕),而是外设的快速初始化 如何做到这一点?这一问题的答案将是主观的,取决于您所说的是什么意思。我将提供一些可能对您有所帮助的可能性 如果您的嵌入

我有一个外部串行外设,需要在嵌入式系统上的Linux引导上进行设置。 我需要的是在系统引导期间尽早发送一个简短的配置字符串,因此我的过程非常简单

  • 将端口设置为115200 bps
  • 发送字符串,如“ABCDE\r\n”
我看到最近的内核支持早期的串行控制台,但我需要的不是控制台(我的外设在那个阶段也可以发送无意义的数据,加上我将以图形模式显示初始屏幕),而是外设的快速初始化


如何做到这一点?

这一问题的答案将是主观的,取决于您所说的是什么意思。我将提供一些可能对您有所帮助的可能性

  • 如果您的嵌入式平台使用任何形式的引导加载程序(例如:U-Boot),那么您可以作为引导加载程序的一部分进行串行(UART)初始化(通常只针对目标平台进行初始化,这样我们就可以看到引导发生的程度)。您可以尝试在引导加载程序中初始化外部串行外围设备。由于引导加载程序将在linux内核加载之前执行,因此您可以轻松实现这一点

  • 如果您的平台不使用任何形式的引导加载程序,则可以通过内核驱动程序(或)系统初始化进程初始化外部串行外围设备

我一直在使用PSFlash程序,它使用基本的帧缓冲区驱动程序进行引导。如果有兴趣,请查看以下回购协议


假设我的系统是整体嵌入式的,更多地嵌入到应用程序中,而不是硬件本身:它是一个功能齐全的双核Atom板,我运行的是amd64 Debian。我只是限制了安装的应用程序,但它现在运行普利茅斯的启动屏幕主题,我甚至没有重新编译标准内核。哦,那么boot是通过grub2发送的。您可以尽早发送。甚至从大会上。这就是串口背后的魔力。那么,问题到底是什么?另外,您可以查看arch./x86/boot文件夹,它可以很早打印一些消息(
earlyprintk
forx86)。